[3depict] 01/02: New upstream version 0.0.20

D Haley mycae-guest at moszumanska.debian.org
Sun Feb 5 12:54:41 UTC 2017


This is an automated email from the git hooks/post-receive script.

mycae-guest pushed a commit to branch master
in repository 3depict.

commit c1390fc93b3c5dcacc69e9d0a93c82ba7d4b654e
Author: D Haley <mycae at gmx.com>
Date:   Sun Feb 5 13:54:05 2017 +0100

    New upstream version 0.0.20
---
 ChangeLog                                          |    32 +-
 Makefile.in                                        |   826 ++
 TODO                                               |    25 +-
 aclocal.m4                                         |  1434 +++
 compile                                            |   347 +
 configure                                          | 10703 +++++++++++++++++++
 configure.ac                                       |    44 +-
 data/startup-tips.txt                              |    15 +-
 debian/3depict.1                                   |    33 -
 debian/3depict.install                             |     4 -
 debian/changelog                                   |   199 -
 debian/compat                                      |     1 -
 debian/control                                     |    34 -
 debian/copyright                                   |    59 -
 debian/docs                                        |     4 -
 debian/manpages                                    |     1 -
 debian/patches/debian-desktop-naming.patch         |    21 -
 debian/patches/lowercase-textdomain.patch          |    27 -
 debian/patches/series                              |     4 -
 debian/rules                                       |    55 -
 debian/source/format                               |     1 -
 debian/source/local-options                        |     2 -
 debian/watch                                       |     4 -
 depcomp                                            |   791 ++
 TODO => docs/TODO                                  |    25 +-
 docs/manual-latex/build-latex.sh                   |    37 +
 docs/manual-latex/manual.aux                       |    53 +-
 docs/manual-latex/manual.blg                       |     9 +-
 docs/manual-latex/manual.log                       |   263 +-
 docs/manual-latex/manual.pdf                       |   Bin 4523074 -> 4532368 bytes
 docs/manual-latex/manual.tex                       |    60 +-
 docs/manual-latex/manual.toc                       |    29 +-
 install-sh                                         |     0
 locales/de_DE/LC_MESSAGES/3Depict.mo               |   Bin 44640 -> 44558 bytes
 locales/es_ES/LC_MESSAGES/3Depict.mo               |   Bin 0 -> 42093 bytes
 locales/fr_FR/LC_MESSAGES/3Depict.mo               |   Bin 0 -> 46033 bytes
 m4/ax_compiler_vendor.m4                           |    87 +
 m4/ax_compiler_version.m4                          |   492 +
 missing                                            |   367 +
 .../RPM/3Depict-0.0.19-upstream-effd078610a7.patch |   124 +-
 packaging/RPM/3Depict.spec                         |    10 +-
 packaging/debian/3depict.1                         |     0
 packaging/debian/3depict.install                   |     0
 packaging/debian/changelog                         |    21 +-
 packaging/debian/compat                            |     0
 packaging/debian/control                           |    31 +-
 packaging/debian/copyright                         |    31 +-
 packaging/debian/docs                              |     0
 packaging/debian/manpages                          |     0
 packaging/debian/menu                              |     2 -
 packaging/debian/patches/FTGL-lowercase.patch      |    14 -
 .../debian/patches/debian-desktop-naming.patch     |     6 +-
 .../debian}/patches/desktop-category.patch         |     0
 .../debian}/patches/diff_0.0.19_to_effd078610a7    |     0
 .../debian/patches/lowercase-textdomain.patch      |    10 +-
 packaging/debian/patches/series                    |     2 +
 packaging/debian/rules                             |     6 +-
 packaging/debian/source/format                     |     0
 packaging/debian/source/local-options              |     2 -
 packaging/debian/watch                             |     0
 packaging/deps/getDeps                             |     2 +-
 .../macosx/macdylibbundler/DylibBundler-patch.diff |    26 +
 .../macosx/macdylibbundler/Settings-patch.diff     |    20 +
 packaging/howToRelease.txt                         |     1 +
 packaging/mac/3package.sh                          |     6 +-
 packaging/mac/makeMacOSXApp                        |    11 +-
 packaging/makeTarball.sh                           |     3 +
 packaging/mingw-debian-cross/bootstrap.sh          |   231 +-
 .../patches/gettext-disable-tools                  |   132 +-
 packaging/mingw-debian-cross/patches/glew-makefile |    17 +-
 .../mingw-debian-cross/patches/glew-makefile.base  |    17 +-
 .../patches/mathgl-disable-things                  |    28 +-
 .../patches/mathgl-disable-widgets                 |    10 -
 .../patches/mathgl-fix-pthread-and-linking         |    34 -
 .../patches/mathgl-openmp-linker-flag              |    13 -
 .../patches/qhull-2009-configure_ac.patch          |    12 +
 .../patches/vigra-cpp-version.patch                |    15 +
 packaging/mingw-debian-cross/windows-installer.nsi |     2 +-
 packaging/packaging/.howToRelease.txt.swp          |   Bin 0 -> 12288 bytes
 src/3Depict.cpp                                    |     8 +-
 src/Makefile.am                                    |     9 +-
 src/Makefile.in                                    |  2405 +++++
 src/backend/APT/3DapReader.cpp                     |   656 ++
 src/backend/APT/3DapReader.h                       |    59 +
 src/backend/APT/APTFileIO.cpp                      |   319 +-
 src/backend/APT/APTFileIO.h                        |     4 +
 src/backend/APT/APTRanges.cpp                      |    19 +-
 src/backend/APT/APTRanges.h                        |     8 +-
 src/backend/filter.cpp                             |    52 +-
 src/backend/filter.h                               |   285 +-
 src/backend/filters/algorithms/binomial.cpp        |   108 +-
 src/backend/filters/algorithms/binomial.h          |     6 +-
 .../filters/algorithms/{rdf.cpp => spatial.cpp}    |   355 +-
 .../filters/algorithms/{rdf.h => spatial.h}        |    16 +-
 src/backend/filters/annotation.cpp                 |     8 +
 src/backend/filters/boundingBox.cpp                |     8 +-
 src/backend/filters/clusterAnalysis.cpp            |     5 +-
 src/backend/filters/dataLoad.cpp                   |   235 +-
 src/backend/filters/dataLoad.h                     |    12 +-
 src/backend/filters/externalProgram.cpp            |    10 +-
 src/backend/filters/filterCommon.cpp               |   293 +-
 src/backend/filters/filterCommon.h                 |    90 +-
 src/backend/filters/ionColour.cpp                  |   113 +-
 src/backend/filters/ionColour.h                    |     3 +
 src/backend/filters/ionDownsample.cpp              |     6 +-
 src/backend/filters/ionInfo.cpp                    |     5 +-
 src/backend/filters/profile.cpp                    |    18 +-
 src/backend/filters/rangeFile.cpp                  |     8 +-
 src/backend/filters/spatialAnalysis.cpp            |  1163 +-
 src/backend/filters/spatialAnalysis.h              |    10 -
 src/backend/filters/spectrumPlot.cpp               |    10 +-
 src/backend/filters/transform.cpp                  |    41 +-
 src/backend/filters/voxelise.cpp                   |   416 +-
 src/backend/filters/voxelise.h                     |     4 +
 src/backend/filtertree.cpp                         |    52 +-
 src/backend/filtertree.h                           |    16 +-
 src/backend/filtertreeAnalyse.cpp                  |    19 +
 src/backend/filtertreeAnalyse.h                    |     3 +
 src/backend/plot.cpp                               |    67 +-
 src/backend/plot.h                                 |    21 +-
 src/backend/state.cpp                              |   131 +-
 src/backend/state.h                                |    68 +-
 src/backend/viscontrol.cpp                         |    16 +-
 src/common/array2D.h                               |    14 +-
 src/common/basics.cpp                              |   149 +-
 src/common/basics.h                                |     7 +-
 src/common/colourmap.cpp                           |   111 +-
 src/common/colourmap.h                             |    32 +-
 src/common/constants.cpp                           |     2 +-
 src/common/mathfuncs.cpp                           |   216 +-
 src/common/mathfuncs.h                             |    32 +-
 src/common/stringFuncs.cpp                         |   122 +-
 src/common/stringFuncs.h                           |     5 +
 src/common/voxels.cpp                              |   251 +-
 src/common/voxels.h                                |    32 +-
 src/gl/drawables.cpp                               |   245 +-
 src/gl/drawables.h                                 |   131 +-
 src/gl/isoSurface.cpp                              |     2 +-
 src/gl/tr.cpp                                      |     2 +-
 src/gui/dialogs/ExportRngDialog.cpp                |     2 +-
 src/gui/dialogs/animateFilterDialog.cpp            |     1 -
 .../dialogs/animateSubDialogs/realKeyFrameDialog.h |     1 +
 src/gui/dialogs/resolutionDialog.cpp               |     2 +-
 src/gui/mainFrame.cpp                              |   255 +-
 src/gui/mainFrame.h                                |     8 +-
 src/gui/mathglPane.cpp                             |    68 +-
 src/testing/mglTesting.cpp                         |     8 +-
 src/testing/testing.cpp                            |    16 +
 src/wx/wxcomponents.cpp                            |     6 +-
 src/wx/wxcomponents.h                              |     2 +-
 translations/3Depict_base.pot                      |  5704 +++++-----
 translations/3Depict_de_DE.mo                      |   Bin 44640 -> 44558 bytes
 translations/3Depict_de_DE.po                      |  6057 ++++++-----
 translations/3Depict_es_ES.mo                      |   Bin 0 -> 42093 bytes
 .../{3Depict_de_DE.po => 3Depict_es_ES.po}         |  6627 ++++++------
 translations/3Depict_fr_FR.mo                      |   Bin 0 -> 46033 bytes
 .../{3Depict_de_DE.po => 3Depict_fr_FR.po}         |  6719 ++++++------
 translations/3depict_fr_FR.mo                      |   Bin 0 -> 46713 bytes
 translations/makeTranslations                      |     9 +-
 159 files changed, 35789 insertions(+), 15136 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e55657b..016ca0c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,34 @@
-* ?? Jun 2016 : 0.0.19
+* 04 Feb 2016 : 0.0.20
+	Features:
+	- Add "TAPSIM" file loader
+	- All vector input values can now be specified in ISO31-11
+	  spherical co-ordinates, using an angle-bracket notation, like
+	  so: <r,theta,phi> (in degrees), example <1,10,45 >
+	- New "voxel slice" tool (cut voxel data as arbitrary plane)
+
+	User Visible Changes:
+	- Local Concentration has now been renamed to "Local
+	  Chemistry", and the function it computes has changed (was  n/(n+d),  now n/d (n-> numerator, d-> denominator))
+	- Filters in tree can now be moved using a "splice" operation, which moves only the filter
+	- Ion colour now has an "auto-bounds" mode
+	- New colour maps : "Inferno" and "Viridis"
+	- Improve progress during ATO file loading
+	- Binomial mode did not work in many cases, due to grid construction bugs. Now fixed.
+	- Anisotropic scaling now fixed - input data should be able to be given by user
+	 
+
+	Technical Bugfixes/changes:
+	- Fix for crash during drag-drop operations
+	- Fix spatial analysis set operation: Union. Was not implemented
+	- Fix hang in local concentration when using the same elements
+	- Fix Stem/Bar/Step mode when plotting 
+	- Fix morphology plot not showing in cluster analysis
+	- (Source only) "openvdb-isosurf" Branch for OpenVDB based
+	  voxelisation and isosurface construction (thanks to L Gartmair)
+	- Added french and spanish partial translations (fr_FR, es_ES)
+
+
+* 31 May 2016 : 0.0.19
 	Features:
 	- New "Local concentration" algorithm in spatial analysis filter 
 	- Add text and VTK export to Export Pos dialog
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..8cb5051
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,826 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compiler_vendor.m4 \
+	$(top_srcdir)/m4/ax_compiler_version.m4 \
+	$(top_srcdir)/m4/ftgl.m4 $(top_srcdir)/m4/gsl.m4 \
+	$(top_srcdir)/m4/wxwin.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/m4/ax_compare_version.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+	$(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
+	COPYING ChangeLog INSTALL NEWS README TODO compile \
+	config.guess config.rpath config.sub depcomp install-sh \
+	missing
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CONFIG = @FREETYPE_CONFIG@
+FTGL_CFLAGS = @FTGL_CFLAGS@
+FTGL_LIBS = @FTGL_LIBS@
+FT_INCLUDES = @FT_INCLUDES@
+FT_LIBS = @FT_LIBS@
+GETTEXT_LIBS = @GETTEXT_LIBS@
+GL_LIBS = @GL_LIBS@
+GREP = @GREP@
+GSL_CFLAGS = @GSL_CFLAGS@
+GSL_CONFIG = @GSL_CONFIG@
+GSL_LIBS = @GSL_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MGL_CFLAGS = @MGL_CFLAGS@
+MGL_LIBS = @MGL_LIBS@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OPENMP_FLAGS = @OPENMP_FLAGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PNG_CFLAGS = @PNG_CFLAGS@
+PNG_LIBS = @PNG_LIBS@
+QHULL_CFLAGS = @QHULL_CFLAGS@
+QHULL_LIBS = @QHULL_LIBS@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CFLAGS = @WX_CFLAGS@
+WX_CFLAGS_ONLY = @WX_CFLAGS_ONLY@
+WX_CONFIG_PATH = @WX_CONFIG_PATH@
+WX_CPPFLAGS = @WX_CPPFLAGS@
+WX_CXXFLAGS = @WX_CXXFLAGS@
+WX_CXXFLAGS_ONLY = @WX_CXXFLAGS_ONLY@
+WX_LIBS = @WX_LIBS@
+WX_LIBS_STATIC = @WX_LIBS_STATIC@
+WX_RESCOMP = @WX_RESCOMP@
+WX_VERSION = @WX_VERSION@
+XMLCONFIG = @XMLCONFIG@
+XML_CFLAGS = @XML_CFLAGS@
+XML_LIBS = @XML_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = src
+EXTRA_DIST = config.rpath  packaging/ m4/ docs/ translations/ test/ data/
+ACLOCAL_AMFLAGS = -Im4
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__post_remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
+
+dist-tarZ: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__post_remove_distdir)
+
+dist-shar: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__post_remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__post_remove_distdir)
+
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build/sub \
+	  && ../../configure \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=../.. --prefix="$$dc_install_base" \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__post_remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+	am--refresh check check-am clean clean-cscope clean-generic \
+	cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+	dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
+	distcheck distclean distclean-generic distclean-hdr \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/TODO b/TODO
index c0122f7..3f8731f 100644
--- a/TODO
+++ b/TODO
@@ -5,16 +5,20 @@ TODO List - worlds simplest bugtracking system
 --Main app--
 	To Implement:
 		== Next version ==
+		* Fix animation under windows, seems to crash
+	
+		== Eventually == 
+		* XML file loading is a bit iffy if paths are moved
+		 around. A nice convenience feature would be to have an
+		 option to scan for the files in a relative manner if
+		 they are not found using the absolute path
+		* There is no way to get a mass spectrum from clusters with background.
+			- Import clustering w background from posgen?
 		* Voxelisation filter should not show ions disabled in upstream range
 		* VTK voxel data export UI
-		* Bounding box tick values could be improved - scientific
-		  notation, better font size control, absol. coords, etc
 		* Mesh generation/operation?
 			- This is tricky. I don't have a good mesh library
 		* Proxigram?
-		* Theoretical distributions are missing from the binomial algorithm
-	
-		== Eventually == 
 		* Update to qhull 2015's qhull_r (reentrant qhull). 
 			- This requires some refactoring of the doHull wrapper for convex hull computation
 		* Voxel export dialog 
@@ -37,11 +41,15 @@ TODO List - worlds simplest bugtracking system
 		  in trying to interpret where the user wants to drop the object
 		* Plots cannot currently be updated on name change. Need to add "needUpdate" to setUserString
 		* Isotope overlay in normal spectra
-			- Include full atomic species eg 57^Fe18^O in label
+			- Include full atomic species eg 57^Fe18^O in label, and charge state
+		* Poisson error estimation
 	
 	Outstanding bugs:
 		== Next release==
-		* Composition profile progress bad 
+		* There is a nasty crash bug in spatial analysis, when using local concentration mode or binomial
+				- Related to how ionSourceEnabled and ionTargetEnabeld are computed. These
+				  are not the same size as the rangefile's number of ions at this time
+		* Under windows there is a problem with parsing the rss feed. This results in a user-visible error
 	
 		== Eventually==
 		* Cluster filter wont save state correctly if parent
@@ -71,7 +79,6 @@ TODO List - worlds simplest bugtracking system
 		 sampling rates some percentage to be determined (load
 		 file, skip buffer).
 		* Clustering can now be paralellised. 
-			- consider implementing/using sphere grab algorithm, which is much faster
 		* Examine performance characteristics of HULL_GRAB in ioninfo
 		* Conversion of double axis-angle rotations to single axis angle rotations - any value here?
 			- Use TRIAD/ Wahba's problem to solve. Should be a lot faster?
@@ -98,6 +105,8 @@ TODO List - worlds simplest bugtracking system
 	* K3DTree currently requires public access to members of boundcube
 	* Enums should be, where possible, moved into their relevant class' namespace
 	* Better error code behaviour for filters. There is a lot of needless duplication
+	* There is a confusion of responsibility between filter.{cpp,h} and filterCommon.{cpp,h}
+		- what is the division here? this is unclear
 
 -- Deprecate --
 	* On Minor version change:
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..2d07788
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1434 @@
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+dnl serial 11 (pkg-config-0.29)
+dnl
+dnl Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists at gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=m4_default([$1], [0.9.0])
+	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		PKG_CONFIG=""
+	fi
+fi[]dnl
+])dnl PKG_PROG_PKG_CONFIG
+
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes ],
+		     [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])dnl _PKG_CONFIG
+
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
+
+
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+   	AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+	m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+     	AC_MSG_RESULT([no])
+	m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	$3
+fi[]dnl
+])dnl PKG_CHECK_MODULES
+
+
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+    [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_INSTALLDIR
+
+
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+    [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
+
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.15'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.15], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.15])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/ax_compiler_vendor.m4])
+m4_include([m4/ax_compiler_version.m4])
+m4_include([m4/ftgl.m4])
+m4_include([m4/gsl.m4])
+m4_include([m4/wxwin.m4])
+m4_include([acinclude.m4])
diff --git a/compile b/compile
new file mode 100755
index 0000000..a85b723
--- /dev/null
+++ b/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..e64d8d8
--- /dev/null
+++ b/configure
@@ -0,0 +1,10703 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for 3Depict 0.0.20.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='3Depict'
+PACKAGE_TARNAME='3depict'
+PACKAGE_VERSION='0.0.20'
+PACKAGE_STRING='3Depict 0.0.20'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+SED
+DEBUG_FLAGS
+OPENMP_FLAGS
+GETTEXT_LIBS
+GSL_LIBS
+GSL_CFLAGS
+GSL_CONFIG
+MGL_LIBS
+MGL_CFLAGS
+RANLIB
+LN_S
+GL_LIBS
+PNG_LIBS
+PNG_CFLAGS
+QHULL_LIBS
+QHULL_CFLAGS
+CXXCPP
+FTGL_LIBS
+FTGL_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
+FT_LIBS
+FT_INCLUDES
+FREETYPE_CONFIG
+USE_XML_FALSE
+USE_XML_TRUE
+XML_LIBS
+XML_CFLAGS
+XMLCONFIG
+HAVE_WINDRES_FALSE
+HAVE_WINDRES_TRUE
+WX_RESCOMP
+WX_VERSION
+WX_LIBS_STATIC
+WX_LIBS
+WX_CXXFLAGS_ONLY
+WX_CFLAGS_ONLY
+WX_CXXFLAGS
+WX_CFLAGS
+WX_CPPFLAGS
+WX_CONFIG_PATH
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+EGREP
+GREP
+CPP
+USE_PRECOMPILED_HEADERS_FALSE
+USE_PRECOMPILED_HEADERS_TRUE
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+ac_ct_CC
+CFLAGS
+CC
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CXX
+CPPFLAGS
+LDFLAGS
+CXXFLAGS
+CXX
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+runstatedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_ftgl_prefix
+with_ftgl_no_pkg
+enable_silent_rules
+enable_dependency_tracking
+with_wxdir
+with_wx_config
+with_wx_prefix
+with_wx_exec_prefix
+with_xml_config
+with_freetype
+with_libqhull_flags
+with_libqhull_link
+with_libpng_flags
+with_libpng_link
+with_mgl_flags
+with_mgl_libs
+with_gsl_flags
+with_gsl_libs
+with_gsl_prefix
+with_gsl_exec_prefix
+enable_gsltest
+with_intl_libs
+enable_openmp_parallel
+enable_debug_checks
+enable_ubsan
+enable_experimental_cpp11
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC
+CC
+CFLAGS
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+FTGL_CFLAGS
+FTGL_LIBS
+CXXCPP
+PNG_CFLAGS
+PNG_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir runstatedir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures 3Depict 0.0.20 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/3depict]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of 3Depict 0.0.20:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --disable-gsltest       Do not try to compile and run a test GSL program
+  --enable-openmp-parallel  Enable OpenMP multi-CPU usage; requires GCC > 4.2 for parallel STL support
+  --disable-debug-checks Disable any debug checking, provides faster operation, but less information needed to debug internal problems, or to provide problem reports to developers
+ --disable-ubsan Disable undefined behaviour sanitizer. Only takes effect on certain ubsan supporting compilers. Useful for working around ubsan aborts that you cant fix (eg 3rd party libs
+  --enable-experimental-cpp11 Enable experimental C++11 support. Requires a full C++11 compiler (eg gcc/clang).
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+--with-ftgl-prefix : specify prefix dir for FTGL
+--with-ftgl-no-pkg : don't use pkg-config to check for ftgl
+  --with-wxdir=PATH       Use uninstalled version of wxWidgets in PATH
+  --with-wx-config=CONFIG wx-config script to use (optional)
+  --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)
+  --with-wx-exec-prefix=PREFIX
+                          Exec prefix where wxWidgets is installed (optional)
+  --with-xml-config=PATH  use xml-config in PATH to find libxml
+  --with-freetype=DIR     where to find the freetype 2.x library
+  --with-libqhull-flags=PATH : specify compiler flags for libqhull
+  --with-libqhull-link=PATH : specify linker flag (library) for libqhull
+  --with-libpng-flags=PATH : specify compiler flags for libpng
+  --with-libpng-link=PATH : specify linker flag (library) for libpng
+  --with-mgl-flags=PATH : specify compiler flags for mathgl
+  --with-mgl-libs=PATH : specify linker flag (library) for mathgl
+  --with-gsl-flags=PATH : specify compiler flags for gsl
+  --with-gsl-libs=PATH : specify linker flag (library) for gsl
+  --with-gsl-prefix=PFX   Prefix where GSL is installed (optional)
+  --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional)
+  --with-intl-libs=FLAGS: specify linker flags (library) for internationalisation libs
+
+Some influential environment variables:
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  CPP         C preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  FTGL_CFLAGS C compiler flags for FTGL, overriding pkg-config
+  FTGL_LIBS   linker flags for FTGL, overriding pkg-config
+  CXXCPP      C++ preprocessor
+  PNG_CFLAGS  C compiler flags for PNG, overriding pkg-config
+  PNG_LIBS    linker flags for PNG, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+3Depict configure 0.0.20
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+     # Order is important - never check a type that is potentially smaller
+     # than half of the expected target width.
+     for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+	 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  case $ac_type in #(
+  uint$2_t) :
+    eval "$3=yes" ;; #(
+  *) :
+    eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+  break
+fi
+     done
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_uintX_t
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by 3Depict $as_me 0.0.20, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+am__api_version='1.15'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='3depict'
+ VERSION='0.0.20'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+ac_config_files="$ac_config_files Makefile src/Makefile"
+
+
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_compare_version.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+#
+# DESCRIPTION
+#
+#   This macro compares two version strings. Due to the various number of
+#   minor-version numbers that can exist, and the fact that string
+#   comparisons are not compatible with numeric comparisons, this is not
+#   necessarily trivial to do in a autoconf script. This macro makes doing
+#   these comparisons easy.
+#
+#   The six basic comparisons are available, as well as checking equality
+#   limited to a certain number of minor-version levels.
+#
+#   The operator OP determines what type of comparison to do, and can be one
+#   of:
+#
+#    eq  - equal (test A == B)
+#    ne  - not equal (test A != B)
+#    le  - less than or equal (test A <= B)
+#    ge  - greater than or equal (test A >= B)
+#    lt  - less than (test A < B)
+#    gt  - greater than (test A > B)
+#
+#   Additionally, the eq and ne operator can have a number after it to limit
+#   the test to that number of minor versions.
+#
+#    eq0 - equal up to the length of the shorter version
+#    ne0 - not equal up to the length of the shorter version
+#    eqN - equal up to N sub-version levels
+#    neN - not equal up to N sub-version levels
+#
+#   When the condition is true, shell commands ACTION-IF-TRUE are run,
+#   otherwise shell commands ACTION-IF-FALSE are run. The environment
+#   variable 'ax_compare_version' is always set to either 'true' or 'false'
+#   as well.
+#
+#   Examples:
+#
+#     AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8])
+#     AX_COMPARE_VERSION([3.15],[lt],[3.15.8])
+#
+#   would both be true.
+#
+#     AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8])
+#     AX_COMPARE_VERSION([3.15],[gt],[3.15.8])
+#
+#   would both be false.
+#
+#     AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8])
+#
+#   would be true because it is only comparing two minor versions.
+#
+#     AX_COMPARE_VERSION([3.15.7],[eq0],[3.15])
+#
+#   would be true because it is only comparing the lesser number of minor
+#   versions of the two values.
+#
+#   Note: The characters that separate the version numbers do not matter. An
+#   empty string is the same as version 0. OP is evaluated by autoconf, not
+#   configure, so must be a string, not a variable.
+#
+#   The author would like to acknowledge Guido Draheim whose advice about
+#   the m4_case and m4_ifvaln functions make this macro only include the
+#   portions necessary to perform the specific comparison specified by the
+#   OP argument in the final configure script.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Tim Toolan <toolan at ele.uri.edu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 11
+
+
+
+#Ok, lets try using gcc style precompiled headers.
+ if 1; then
+  USE_PRECOMPILED_HEADERS_TRUE=
+  USE_PRECOMPILED_HEADERS_FALSE='#'
+else
+  USE_PRECOMPILED_HEADERS_TRUE='#'
+  USE_PRECOMPILED_HEADERS_FALSE=
+fi
+
+
+#Check sizeof
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+$as_echo_n "checking size of size_t... " >&6; }
+if ${ac_cv_sizeof_size_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_size_t" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (size_t)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_size_t=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
+$as_echo "$ac_cv_sizeof_size_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t
+_ACEOF
+
+
+
+# Support {host_os} variable
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+
+# Check whether --with-wxdir was given.
+if test "${with_wxdir+set}" = set; then :
+  withval=$with_wxdir;  wx_config_name="$withval/wx-config"
+                  wx_config_args="--inplace"
+fi
+
+
+# Check whether --with-wx-config was given.
+if test "${with_wx_config+set}" = set; then :
+  withval=$with_wx_config; wx_config_name="$withval"
+fi
+
+
+# Check whether --with-wx-prefix was given.
+if test "${with_wx_prefix+set}" = set; then :
+  withval=$with_wx_prefix; wx_config_prefix="$withval"
+else
+  wx_config_prefix=""
+fi
+
+
+# Check whether --with-wx-exec-prefix was given.
+if test "${with_wx_exec_prefix+set}" = set; then :
+  withval=$with_wx_exec_prefix; wx_config_exec_prefix="$withval"
+else
+  wx_config_exec_prefix=""
+fi
+
+
+
+case "${host_os}" in
+	*mingw*)
+		#Windows requires 3.1, as there is a bug with wxPropertyGrid modification during events
+		# under GTK we use a hack to workaround, by keeping two grids, and flipping them in and out.
+		#This doesn't work properly under windows. wx3.1 is not available under linux
+		# (using repositories) at this time.
+
+    if test x${WX_CONFIG_NAME+set} != xset ; then
+     WX_CONFIG_NAME=wx-config
+  fi
+
+  if test "x$wx_config_name" != x ; then
+     WX_CONFIG_NAME="$wx_config_name"
+  fi
+
+    if test x$wx_config_exec_prefix != x ; then
+     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
+     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
+  fi
+  if test x$wx_config_prefix != x ; then
+     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
+     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
+  fi
+  if test "$cross_compiling" = "yes"; then
+     wx_config_args="$wx_config_args --host=$host_alias"
+  fi
+
+    if test -x "$WX_CONFIG_NAME" ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5
+$as_echo_n "checking for wx-config... " >&6; }
+     WX_CONFIG_PATH="$WX_CONFIG_NAME"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+  else
+     # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args.
+set dummy $WX_CONFIG_NAME; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WX_CONFIG_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $WX_CONFIG_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy=""$WX_LOOKUP_PATH:$PATH""
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no"
+  ;;
+esac
+fi
+WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH
+if test -n "$WX_CONFIG_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+
+  if test "$WX_CONFIG_PATH" != "no" ; then
+    WX_VERSION=""
+
+    min_wx_version=3.1.0
+    if test -z "" ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version ()" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; }
+    fi
+
+    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args  "
+
+    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
+    wx_config_major_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_config_minor_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_config_micro_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+    wx_requested_major_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_requested_minor_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_requested_micro_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+
+    wx_ver_ok=""
+    if test "x$WX_VERSION" != x ; then
+      if test $wx_config_major_version -gt $wx_requested_major_version; then
+        wx_ver_ok=yes
+      else
+        if test $wx_config_major_version -eq $wx_requested_major_version; then
+           if test $wx_config_minor_version -gt $wx_requested_minor_version; then
+              wx_ver_ok=yes
+           else
+              if test $wx_config_minor_version -eq $wx_requested_minor_version; then
+                 if test $wx_config_micro_version -ge $wx_requested_micro_version; then
+                    wx_ver_ok=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+    fi
+
+
+    if test -n "$wx_ver_ok"; then
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5
+$as_echo "yes (version $WX_VERSION)" >&6; }
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
+
+                              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5
+$as_echo_n "checking for wxWidgets static library... " >&6; }
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
+      if test "x$WX_LIBS_STATIC" = "x"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      fi
+
+            wx_has_cppflags=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_cppflags=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -gt 2; then
+              wx_has_cppflags=yes
+           else
+              if test $wx_config_minor_version -eq 2; then
+                 if test $wx_config_micro_version -ge 6; then
+                    wx_has_cppflags=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+
+            wx_has_rescomp=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_rescomp=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -ge 7; then
+              wx_has_rescomp=yes
+           fi
+        fi
+      fi
+      if test "x$wx_has_rescomp" = x ; then
+                  WX_RESCOMP=
+      else
+         WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp`
+      fi
+
+      if test "x$wx_has_cppflags" = x ; then
+                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+         WX_CPPFLAGS=$WX_CFLAGS
+         WX_CXXFLAGS=$WX_CFLAGS
+
+         WX_CFLAGS_ONLY=$WX_CFLAGS
+         WX_CXXFLAGS_ONLY=$WX_CFLAGS
+      else
+                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+
+         WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
+         WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
+      fi
+
+      wxWin=1
+
+    else
+
+       if test "x$WX_VERSION" = x; then
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       else
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (version $WX_VERSION is not new enough)" >&5
+$as_echo "no (version $WX_VERSION is not new enough)" >&6; }
+       fi
+
+       WX_CFLAGS=""
+       WX_CPPFLAGS=""
+       WX_CXXFLAGS=""
+       WX_LIBS=""
+       WX_LIBS_STATIC=""
+       WX_RESCOMP=""
+       :
+
+    fi
+  else
+
+    WX_CFLAGS=""
+    WX_CPPFLAGS=""
+    WX_CXXFLAGS=""
+    WX_LIBS=""
+    WX_LIBS_STATIC=""
+    WX_RESCOMP=""
+
+    :
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+		;;
+	*)
+
+    if test x${WX_CONFIG_NAME+set} != xset ; then
+     WX_CONFIG_NAME=wx-config
+  fi
+
+  if test "x$wx_config_name" != x ; then
+     WX_CONFIG_NAME="$wx_config_name"
+  fi
+
+    if test x$wx_config_exec_prefix != x ; then
+     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
+     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
+  fi
+  if test x$wx_config_prefix != x ; then
+     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
+     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
+  fi
+  if test "$cross_compiling" = "yes"; then
+     wx_config_args="$wx_config_args --host=$host_alias"
+  fi
+
+    if test -x "$WX_CONFIG_NAME" ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5
+$as_echo_n "checking for wx-config... " >&6; }
+     WX_CONFIG_PATH="$WX_CONFIG_NAME"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+  else
+     # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args.
+set dummy $WX_CONFIG_NAME; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WX_CONFIG_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $WX_CONFIG_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy=""$WX_LOOKUP_PATH:$PATH""
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no"
+  ;;
+esac
+fi
+WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH
+if test -n "$WX_CONFIG_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+
+  if test "$WX_CONFIG_PATH" != "no" ; then
+    WX_VERSION=""
+
+    min_wx_version=3.0.0
+    if test -z "" ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version ()" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; }
+    fi
+
+    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args  "
+
+    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
+    wx_config_major_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_config_minor_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_config_micro_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+    wx_requested_major_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_requested_minor_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_requested_micro_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+
+    wx_ver_ok=""
+    if test "x$WX_VERSION" != x ; then
+      if test $wx_config_major_version -gt $wx_requested_major_version; then
+        wx_ver_ok=yes
+      else
+        if test $wx_config_major_version -eq $wx_requested_major_version; then
+           if test $wx_config_minor_version -gt $wx_requested_minor_version; then
+              wx_ver_ok=yes
+           else
+              if test $wx_config_minor_version -eq $wx_requested_minor_version; then
+                 if test $wx_config_micro_version -ge $wx_requested_micro_version; then
+                    wx_ver_ok=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+    fi
+
+
+    if test -n "$wx_ver_ok"; then
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5
+$as_echo "yes (version $WX_VERSION)" >&6; }
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
+
+                              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5
+$as_echo_n "checking for wxWidgets static library... " >&6; }
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
+      if test "x$WX_LIBS_STATIC" = "x"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      fi
+
+            wx_has_cppflags=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_cppflags=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -gt 2; then
+              wx_has_cppflags=yes
+           else
+              if test $wx_config_minor_version -eq 2; then
+                 if test $wx_config_micro_version -ge 6; then
+                    wx_has_cppflags=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+
+            wx_has_rescomp=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_rescomp=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -ge 7; then
+              wx_has_rescomp=yes
+           fi
+        fi
+      fi
+      if test "x$wx_has_rescomp" = x ; then
+                  WX_RESCOMP=
+      else
+         WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp`
+      fi
+
+      if test "x$wx_has_cppflags" = x ; then
+                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+         WX_CPPFLAGS=$WX_CFLAGS
+         WX_CXXFLAGS=$WX_CFLAGS
+
+         WX_CFLAGS_ONLY=$WX_CFLAGS
+         WX_CXXFLAGS_ONLY=$WX_CFLAGS
+      else
+                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+
+         WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
+         WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
+      fi
+
+      wxWin=1
+
+    else
+
+       if test "x$WX_VERSION" = x; then
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       else
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (version $WX_VERSION is not new enough)" >&5
+$as_echo "no (version $WX_VERSION is not new enough)" >&6; }
+       fi
+
+       WX_CFLAGS=""
+       WX_CPPFLAGS=""
+       WX_CXXFLAGS=""
+       WX_LIBS=""
+       WX_LIBS_STATIC=""
+       WX_RESCOMP=""
+       :
+
+    fi
+  else
+
+    WX_CFLAGS=""
+    WX_CPPFLAGS=""
+    WX_CXXFLAGS=""
+    WX_LIBS=""
+    WX_LIBS_STATIC=""
+    WX_RESCOMP=""
+
+    :
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+esac
+
+if test "$wxWin" != 1; then
+as_fn_error $? "
+		wxWidgets must be installed on your system
+		but wx-config script couldnt be found.
+
+		Please check that wx-config is in path, the directory
+		where wxWidgets libraries are installed (returned by
+		'wx-config --libs' command) is in LD_LIBRARY_PATH or
+		equivalent variable and wxWidgets version is above the minimum specified above.
+" "$LINENO" 5
+fi
+
+
+#Append the --gl-libs flag
+WX_LIBS="$WX_LIBS `$WX_CONFIG_PATH --libs gl,propgrid`"
+
+WANT_WINDRES="no"
+case "${host_os}" in
+	*mingw*)
+		#wx-config is a little unreliable in cross-compile mode
+		# Manually append -DUNICODE to cppflags/cxxflags
+		WX_CXXFLAGS="$WX_CXXFLAGS -DUNICODE"
+		WX_CPPFLAGS="$WX_CPPFLAGS -DUNICODE"
+		WANT_WINDRES="yes"
+		;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Want windres... $WANT_WINDRES" >&5
+$as_echo "Want windres... $WANT_WINDRES" >&6; }
+
+ if  test x"$WANT_WINDRES" == "xyes" ; then
+  HAVE_WINDRES_TRUE=
+  HAVE_WINDRES_FALSE='#'
+else
+  HAVE_WINDRES_TRUE='#'
+  HAVE_WINDRES_FALSE=
+fi
+
+
+
+
+
+
+# Check for xml-config  (libxml2 configuration utility)
+# ------------
+# Test from icecast library (GPL)
+
+# Check whether --with-xml-config was given.
+if test "${with_xml_config+set}" = set; then :
+  withval=$with_xml_config;
+fi
+
+
+have_xml="no"
+if test "$with_xml_config" != "no"
+then
+  if test -n "$with_xml_config" -a "$with_xml_config" != "yes"
+  then
+    XMLCONFIG="$with_xml_config"
+    if ! test -x "$XMLCONFIG"
+    then
+      as_fn_error $? "$with_xml_config cannot be run" "$LINENO" 5
+    fi
+  else
+    for ac_prog in xml2-config xml-config
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_XMLCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$XMLCONFIG"; then
+  ac_cv_prog_XMLCONFIG="$XMLCONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_XMLCONFIG="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+XMLCONFIG=$ac_cv_prog_XMLCONFIG
+if test -n "$XMLCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLCONFIG" >&5
+$as_echo "$XMLCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$XMLCONFIG" && break
+done
+
+  fi
+
+  if test -n "$XMLCONFIG"
+  then
+
+$as_echo "#define HAVE_LIBXML 1" >>confdefs.h
+
+    have_xml="yes"
+  else
+    as_fn_error $? "Unable to locate the configuration utility xml-config: specify with --with-xml-config, or ensure it is your PATH environment variable" "$LINENO" 5
+  fi
+  XML_LIBS="`$XMLCONFIG --libs`"
+  XML_CFLAGS="`$XMLCONFIG --cflags`"
+
+
+
+
+fi
+ if test "$have_xml" = "yes"; then
+  USE_XML_TRUE=
+  USE_XML_FALSE='#'
+else
+  USE_XML_TRUE='#'
+  USE_XML_FALSE=
+fi
+
+#----------------
+
+# Check for FT2
+#FT2 teset from the graphviz library configure.ac
+FREETYPE_DIR="yes"
+
+# Check whether --with-freetype was given.
+if test "${with_freetype+set}" = set; then :
+  withval=$with_freetype; FREETYPE_DIR=$withval
+fi
+
+
+if test "x$FREETYPE_DIR" = "xno"; then
+  as_fn_error $? "FREETYPE2 library disabled" "$LINENO" 5
+else
+
+  if test "x$FREETYPE_DIR" != "xyes"; then
+    # Extract the first word of "freetype-config", so it can be a program name with args.
+set dummy freetype-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FREETYPE_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $FREETYPE_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$FREETYPE_DIR/bin:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG
+if test -n "$FREETYPE_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_CONFIG" >&5
+$as_echo "$FREETYPE_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "freetype-config", so it can be a program name with args.
+set dummy freetype-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FREETYPE_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $FREETYPE_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG
+if test -n "$FREETYPE_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_CONFIG" >&5
+$as_echo "$FREETYPE_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+
+  if test -n "$FREETYPE_CONFIG"; then
+    if test "x$FREETYPE_DIR" != "xyes"; then
+      FT_INCLUDES="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include"
+    else
+      FT_INCLUDES=`$FREETYPE_CONFIG --cflags`
+    fi
+    ft_libtool=`$FREETYPE_CONFIG --libtool`
+    # check that it really exists (FreeBSD apparently forgot to insttall it!)
+    if test -f "$ft_libtool"; then
+	FT_LIBTOOL="$ft_libtool"
+    else
+	FT_LIBTOOL=""
+    fi
+    FT_LIBS=`$FREETYPE_CONFIG --libs`
+    FT_LDFLAGS=`echo " $FT_LIBS" |sed 's/ -l[^ ][^ ]*//g'`
+  else
+    if test "x$FREETYPE_DIR" != "xyes"; then
+      FT_INCLUDES="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include"
+      FT_LDFLAGS="-L$FREETYPE_DIR/lib"
+      FT_LIBS="-lfreetype"
+    else
+      FT_INCLUDES=""
+      FT_LDFLAGS=""
+      FT_LIBS=""
+    fi
+    FT_LIBTOOL=""
+  fi
+
+  save_CPPFLAGS=$CPPFLAGS
+  save_LDFLAGS=$LDFLAGS
+  CPPFLAGS="$CPPFLAGS $FT_INCLUDES"
+  LDFLAGS="$LDFLAGS $FT_LDFLAGS"
+  for ac_header in ft2build.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "ft2build.h" "ac_cv_header_ft2build_h" "$ac_includes_default"
+if test "x$ac_cv_header_ft2build_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FT2BUILD_H 1
+_ACEOF
+
+fi
+
+done
+
+  if test `eval echo '${'$as_ac_Header'}'` = yes; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lfreetype" >&5
+$as_echo_n "checking for main in -lfreetype... " >&6; }
+if ${ac_cv_lib_freetype_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfreetype  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_freetype_main=yes
+else
+  ac_cv_lib_freetype_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_freetype_main" >&5
+$as_echo "$ac_cv_lib_freetype_main" >&6; }
+if test "x$ac_cv_lib_freetype_main" = xyes; then :
+  FT_LIBS="$FT_LIBS"
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBFREETYPE 1
+_ACEOF
+
+else
+  as_fn_error $? "Error: FREETYPE2 library not available - no libfreetype." "$LINENO" 5
+fi
+
+  else
+	as_fn_error $? "Required FREETYPE2 library not available - no ft2build.h" "$LINENO" 5
+  fi
+  CPPFLAGS=$save_CPPFLAGS
+  LDFLAGS=$save_LDFLAGS
+
+
+fi
+
+
+
+#Check for FTGL using custom script.
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftgl" >&5
+$as_echo_n "checking for ftgl... " >&6; }
+
+
+FTGL_CFLAGS=""
+FTGL_LIBS=""
+if test "x$ftgl_prefix" != "x" ; then
+	#use the supplied CFLAGS. assume LIBS
+	FTGL_CFLAGS="-I$ftgl_prefix/include/ -L$ftgl_prefix/lib/"
+	FTGL_LIBS="-lFTGL"
+else
+
+	HAVE_PKG=$(basename $(which pkg-config))
+
+
+	if test $HAVE_PKG != x"pkg-config"  ; then
+		manual_ftgl="yes" ;
+	fi
+
+
+	if test "x$with_ftgl_no_pkg" = "xyes" ; then
+
+$as_echo "#define FTGL_NO_PKG_CONFIG 1" >>confdefs.h
+
+		#well the user doesn't want us to use pkg-config so dont.
+		manual_ftgl=yes
+	else
+		if  ! test x"$manual_ftgl" == x"yes"  ; then
+			#
+			#Use PKG_CONFIG to do the heavy lifting, must be greater than 2.0.0
+			#
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FTGL" >&5
+$as_echo_n "checking for FTGL... " >&6; }
+
+if test -n "$FTGL_CFLAGS"; then
+    pkg_cv_FTGL_CFLAGS="$FTGL_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ftgl >= 2.0.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "ftgl >= 2.0.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_FTGL_CFLAGS=`$PKG_CONFIG --cflags "ftgl >= 2.0.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$FTGL_LIBS"; then
+    pkg_cv_FTGL_LIBS="$FTGL_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ftgl >= 2.0.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "ftgl >= 2.0.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_FTGL_LIBS=`$PKG_CONFIG --libs "ftgl >= 2.0.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        FTGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ftgl >= 2.0.0" 2>&1`
+        else
+	        FTGL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ftgl >= 2.0.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$FTGL_PKG_ERRORS" >&5
+
+	libftgl="no"
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	libftgl="no"
+else
+	FTGL_CFLAGS=$pkg_cv_FTGL_CFLAGS
+	FTGL_LIBS=$pkg_cv_FTGL_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	libftgl="yes"
+fi
+
+			#Check to see if pkg-config did the job
+			if test "x$libftgl" = "xno" ; then
+				#dang, looks like we have to try a manual approach
+				manual_ftgl=yes ;
+			fi
+		fi
+	fi
+
+fi
+
+
+if test "x$manual_ftgl" = "xyes" ; then
+	CFLAGS_ORIG="$CFLAGS"
+	LIBS_ORIG="$LIBS"
+	LIBS="$LIBS $FTGL_LIBS $LDFLAGS"
+
+	if test x$FTGL_LIBS == x""  ; then
+		FTGL_LIBS="-lftgl"
+	fi
+
+	#TODO: see if we can put in some more manual tests for a few common locations for ftgl?
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftglCreateSimpleLayout in -lftgl" >&5
+$as_echo_n "checking for ftglCreateSimpleLayout in -lftgl... " >&6; }
+if ${ac_cv_lib_ftgl_ftglCreateSimpleLayout+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lftgl -lm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ftglCreateSimpleLayout ();
+int
+main ()
+{
+return ftglCreateSimpleLayout ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ftgl_ftglCreateSimpleLayout=yes
+else
+  ac_cv_lib_ftgl_ftglCreateSimpleLayout=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ftgl_ftglCreateSimpleLayout" >&5
+$as_echo "$ac_cv_lib_ftgl_ftglCreateSimpleLayout" >&6; }
+if test "x$ac_cv_lib_ftgl_ftglCreateSimpleLayout" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBFTGL 1
+_ACEOF
+
+  LIBS="-lftgl $LIBS"
+
+else
+  as_fn_error $? "Couldnt find ftgl -- provide base dir or install pkg_config" "$LINENO" 5
+fi
+
+
+	CFLAGS="$CFLAGS_ORIG"
+	LIBS="$LIBS_ORIG"
+fi
+
+#
+# If we get this far, we assume that FTGL_CFLAGS and FTGL_LIBS is set
+# all that remains is to check to see if FTGL.h is in the CFLAGS dir or in
+# the FTGL subdir
+#
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS=$FTGL_CFLAGS
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <FTGL.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+   ftgl_nodir=yes
+else
+   ftgl_nodir=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+if test "x$ftgl_nodir" != "xyes" ; then
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <FTGL/FTGL.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+   ftgl_dir=yes
+else
+   ftgl_dir=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+	if test "x$ftgl_dir" = "xyes" ; then
+								save_FTGL_CFLAGS=$FTGL_CFLAGS
+
+						#scrub the FTGL_CFLAGS for -I and then tack on /FTGL as needed
+		FTGL_CFLAGS=`echo $FTGL_CFLAGS | sed -e 's/-I\([a-z\\\/]*\)/-I\1\/FTGL /'`
+
+		CPPFLAGS=$FTGL_CFLAGS
+		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <FTGL.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+   ftgl_def_dir=yes
+else
+   ftgl_def_dir=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+		if test "x$ftgl_def_dir" = "xno" ; then
+			#try retrieving and modifying gcc's search dirs. - OMG Nasty hack! gcc
+			#has no nice output for include dirs - sigh. got this from gcc-help,
+			#then parsed with greps and tr
+			GCC_SEARCHDIRS=`cpp -x c++ -Wp,-v /dev/null 2>&1 | grep -v ^\# | grep -v "End of search list." | grep -v "ignoring" | tr \\\n \\ `
+			ftgl_search_ok="no"
+			for flag in $GCC_SEARCHDIRS
+			do
+				CPPFLAGS="-I$flag/FTGL/"
+				cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <FTGL.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+   ftgl_def_dir=yes
+else
+   ftgl_def_dir=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+				echo "Checking for FTGL.h in: $CPPFLAGS, result : $ftgl_def_dir"
+				if test "x$ftgl_def_dir" = "xyes"; then
+					ftgl_search_ok="yes"
+					FTGL_CFLAGS="-I$flag/FTGL/"
+					break
+				fi
+			done
+
+			if test "x$ftgl_search_ok" = "xno"; then
+				as_fn_error $? "Unfortuntately whilst this script worked out that you have ftgl,  it couldn't quite work out how to set the CFLAGS" "$LINENO" 5
+			fi
+		fi
+	fi
+fi
+
+CPPFLAGS=$save_CPPFLAGS
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:  yes " >&5
+$as_echo " yes " >&6; }
+
+
+
+
+ #Not doing anything???
+
+
+
+
+
+#Check for qhull
+
+# Check whether --with-libqhull-flags was given.
+if test "${with_libqhull_flags+set}" = set; then :
+  withval=$with_libqhull_flags;
+fi
+
+
+# Check whether --with-libqhull-link was given.
+if test "${with_libqhull_link+set}" = set; then :
+  withval=$with_libqhull_link;
+fi
+
+
+if test x"$with_libqhull_flags" != x"" ; then
+    QHULL_CFLAGS="$with_libqhull_flags"
+fi
+
+
+#Attempt to compile a test program
+CFLAGS_ORIG="$CFLAGS"
+CFLAGS="$CFLAGS $QHULL_CFLAGS"
+ac_fn_c_check_header_mongrel "$LINENO" "qhull/qhull_a.h" "ac_cv_header_qhull_qhull_a_h" "$ac_includes_default"
+if test "x$ac_cv_header_qhull_qhull_a_h" = xyes; then :
+
+$as_echo "#define HAVE_QHULL /**/" >>confdefs.h
+
+else
+  as_fn_error $? "Required libqhull headers not found (looking for qhull/qhull_a.h)" "$LINENO" 5
+fi
+
+
+
+if test x"$with_libqhull_link" != x"" ;
+then
+	QHULL_LIBS="$with_libqhull_link"
+else
+	QHULL_LIBS="-lqhull"
+fi
+LIBS_ORIG="$LIBS"
+LIBS="$LIBS $QHULL_LIBS $LDFLAGS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for qh_qhull in -lqhull" >&5
+$as_echo_n "checking for qh_qhull in -lqhull... " >&6; }
+if ${ac_cv_lib_qhull_qh_qhull+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lqhull  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char qh_qhull ();
+int
+main ()
+{
+return qh_qhull ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_qhull_qh_qhull=yes
+else
+  ac_cv_lib_qhull_qh_qhull=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_qhull_qh_qhull" >&5
+$as_echo "$ac_cv_lib_qhull_qh_qhull" >&6; }
+if test "x$ac_cv_lib_qhull_qh_qhull" = xyes; then :
+
+$as_echo "#define HAVE_QHULL /**/" >>confdefs.h
+
+else
+  as_fn_error $? "You must have libqhull installed and be able to compile a sample program. compiler flags can be set using the with-libqhull-flags and with-libqhull-link parameters " "$LINENO" 5
+fi
+
+CFLAGS="$CFLAGS_ORIG"
+LIBS="$LIBS_ORIG"
+
+
+
+
+#Check for libpng
+
+# Check whether --with-libpng-flags was given.
+if test "${with_libpng_flags+set}" = set; then :
+  withval=$with_libpng_flags;
+fi
+
+
+# Check whether --with-libpng-link was given.
+if test "${with_libpng_link+set}" = set; then :
+  withval=$with_libpng_link;
+fi
+
+
+#set libpng's compiler flags
+if test x"$with_libpng_flags" != x"" ;
+then
+    PNG_CFLAGS="$with_libpng_flags"
+fi
+
+
+#set libpng's link flags
+if test x"$with_libpng_link" != x"" ;
+then
+    PNG_LIBS="$with_libpng_link"
+else
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_create_write_struct_2  in -lpng" >&5
+$as_echo_n "checking for png_create_write_struct_2  in -lpng... " >&6; }
+if ${ac_cv_lib_png_png_create_write_struct_2_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpng -lm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char png_create_write_struct_2  ();
+int
+main ()
+{
+return png_create_write_struct_2  ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_png_png_create_write_struct_2_=yes
+else
+  ac_cv_lib_png_png_create_write_struct_2_=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_create_write_struct_2_" >&5
+$as_echo "$ac_cv_lib_png_png_create_write_struct_2_" >&6; }
+if test "x$ac_cv_lib_png_png_create_write_struct_2_" = xyes; then :
+  PNG_LIBS=-lpng
+else
+  PNG_USE_PKG_CFG=yes
+fi
+
+
+	if test x"$PNG_USE_PKG_CFG" == x"yes" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG" >&5
+$as_echo_n "checking for PNG... " >&6; }
+
+if test -n "$PNG_CFLAGS"; then
+    pkg_cv_PNG_CFLAGS="$PNG_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng >= 1.2\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libpng >= 1.2") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng >= 1.2" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$PNG_LIBS"; then
+    pkg_cv_PNG_LIBS="$PNG_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng >= 1.2\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libpng >= 1.2") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng >= 1.2" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        PNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpng >= 1.2" 2>&1`
+        else
+	        PNG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpng >= 1.2" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$PNG_PKG_ERRORS" >&5
+
+	as_fn_error $? "Package requirements (libpng >= 1.2) were not met:
+
+$PNG_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables PNG_CFLAGS
+and PNG_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables PNG_CFLAGS
+and PNG_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+	PNG_CFLAGS=$pkg_cv_PNG_CFLAGS
+	PNG_LIBS=$pkg_cv_PNG_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+	fi
+fi
+
+
+
+#Attempt to compile a test program
+CFLAGS_ORIG="$CFLAGS"
+CFLAGS="$CFLAGS $PNG_CFLAGS"
+ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
+if test "x$ac_cv_header_png_h" = xyes; then :
+
+$as_echo "#define HAVE_PNG /**/" >>confdefs.h
+
+else
+  as_fn_error $? "Required libpng headers not found (looking for png.h" "$LINENO" 5
+fi
+
+
+
+LIBS_ORIG="$LIBS"
+LIBS="$LIBS $PNG_LIBS $LDFLAGS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_sig_cmp in -lpng" >&5
+$as_echo_n "checking for png_sig_cmp in -lpng... " >&6; }
+if ${ac_cv_lib_png_png_sig_cmp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpng -lz -lm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char png_sig_cmp ();
+int
+main ()
+{
+return png_sig_cmp ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_png_png_sig_cmp=yes
+else
+  ac_cv_lib_png_png_sig_cmp=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_sig_cmp" >&5
+$as_echo "$ac_cv_lib_png_png_sig_cmp" >&6; }
+if test "x$ac_cv_lib_png_png_sig_cmp" = xyes; then :
+
+$as_echo "#define HAVE_PNG /**/" >>confdefs.h
+
+else
+  as_fn_error $? "You must have libpng installed and be able to compile sample program" "$LINENO" 5
+fi
+
+CFLAGS="$CFLAGS_ORIG"
+LIBS="$LIBS_ORIG"
+
+
+
+#Check for opengl
+#------------
+
+
+#Try linking against gluSphere windows usese -lglu32; mac?? ; linux -lGLU
+case "${host_os}" in
+	mingw*|windows*|winnt)
+		#win32 opengl names
+		GL_LIBS="-lglu32 -lopengl32"
+		#Add GLEW dependency for opengl > 1.1
+		GL_LIBS="$GL_LIBS -lglew32"
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+		if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+	    ;;
+	darwin*)
+		#This is handled by the --with-apple-opengl-framework
+		#option already. Nothing to do here
+
+	    ;;
+	 *)
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gluSphere in -lGLU" >&5
+$as_echo_n "checking for gluSphere in -lGLU... " >&6; }
+if ${ac_cv_lib_GLU_gluSphere+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGLU  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gluSphere ();
+int
+main ()
+{
+return gluSphere ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_GLU_gluSphere=yes
+else
+  ac_cv_lib_GLU_gluSphere=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GLU_gluSphere" >&5
+$as_echo "$ac_cv_lib_GLU_gluSphere" >&6; }
+if test "x$ac_cv_lib_GLU_gluSphere" = xyes; then :
+  GL_LIBS="$GL_LIBS -lglu"
+else
+  as_fn_error $? "Could not find GLU library" "$LINENO" 5
+fi
+
+		GL_LIBS="-lGL -lGLU"
+
+
+	   ;;
+esac
+
+
+#------------
+
+#Check for Mathgl
+CFLAGS_ORIG="$CFLAGS"
+LDFLAGS_ORIG="$LDFLAGS"
+
+
+
+# Check whether --with-mgl-flags was given.
+if test "${with_mgl_flags+set}" = set; then :
+  withval=$with_mgl_flags;
+fi
+
+if test x"$with_mgl_flags" != x"" ; then
+	MGL_CFLAGS="$with_mgl_flags"
+
+fi
+CFLAGS="$CFLAGS $MGL_CFLAGS"
+
+
+# Check whether --with-mgl-libs was given.
+if test "${with_mgl_libs+set}" = set; then :
+  withval=$with_mgl_libs;
+fi
+
+if test x"$with_mgl_libs" != x"" ; then
+	MGL_LIBS="$with_mgl_libs"
+else
+	MGL_LIBS="-lmgl"
+fi
+
+LDFLAGS="$LDFLAGS $MGL_LIBS"
+
+#  mathgl2.x uses mgl_cf.h for c functions.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+$as_echo "#define USE_MGL2 1 " >>confdefs.h
+
+#AC_CHECK_HEADER("mgl2/mgl_cf.h",[],[AC_MSG_ERROR(["mgl2 specified, but header mgl2/mgl_cf.h not found"])],[])
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+CFLAGS="$CFLAGS_ORIG"
+LDFLAGS="$LDFLAGS_ORIG"
+
+
+#Check for gsl
+
+
+# Check whether --with-gsl-flags was given.
+if test "${with_gsl_flags+set}" = set; then :
+  withval=$with_gsl_flags;
+fi
+
+
+# Check whether --with-gsl-libs was given.
+if test "${with_gsl_libs+set}" = set; then :
+  withval=$with_gsl_libs;
+fi
+
+
+if test x"$with_gsl_flags" != x"" ; then
+    GSL_CFLAGS="$with_gsl_flags"
+fi
+if test x"$with_gsl_libs" != x"" ; then
+    GSL_LIBS="$with_gsl_libs"
+else
+
+
+# Check whether --with-gsl-prefix was given.
+if test "${with_gsl_prefix+set}" = set; then :
+  withval=$with_gsl_prefix; gsl_prefix="$withval"
+else
+  gsl_prefix=""
+fi
+
+
+# Check whether --with-gsl-exec-prefix was given.
+if test "${with_gsl_exec_prefix+set}" = set; then :
+  withval=$with_gsl_exec_prefix; gsl_exec_prefix="$withval"
+else
+  gsl_exec_prefix=""
+fi
+
+# Check whether --enable-gsltest was given.
+if test "${enable_gsltest+set}" = set; then :
+  enableval=$enable_gsltest;
+else
+  enable_gsltest=yes
+fi
+
+
+  if test "x${GSL_CONFIG+set}" != xset ; then
+     if test "x$gsl_prefix" != x ; then
+         GSL_CONFIG="$gsl_prefix/bin/gsl-config"
+     fi
+     if test "x$gsl_exec_prefix" != x ; then
+        GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config"
+     fi
+  fi
+
+  # Extract the first word of "gsl-config", so it can be a program name with args.
+set dummy gsl-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GSL_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $GSL_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GSL_CONFIG="$GSL_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_GSL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_GSL_CONFIG" && ac_cv_path_GSL_CONFIG="no"
+  ;;
+esac
+fi
+GSL_CONFIG=$ac_cv_path_GSL_CONFIG
+if test -n "$GSL_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GSL_CONFIG" >&5
+$as_echo "$GSL_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  min_gsl_version=1.1
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GSL - version >= $min_gsl_version" >&5
+$as_echo_n "checking for GSL - version >= $min_gsl_version... " >&6; }
+  no_gsl=""
+  if test "$GSL_CONFIG" = "no" ; then
+    no_gsl=yes
+  else
+    GSL_CFLAGS=`$GSL_CONFIG --cflags`
+    GSL_LIBS=`$GSL_CONFIG --libs`
+
+    gsl_major_version=`$GSL_CONFIG --version | \
+           sed 's/^\([0-9]*\).*/\1/'`
+    if test "x${gsl_major_version}" = "x" ; then
+       gsl_major_version=0
+    fi
+
+    gsl_minor_version=`$GSL_CONFIG --version | \
+           sed 's/^\([0-9]*\)\.\{0,1\}\([0-9]*\).*/\2/'`
+    if test "x${gsl_minor_version}" = "x" ; then
+       gsl_minor_version=0
+    fi
+
+    gsl_micro_version=`$GSL_CONFIG --version | \
+           sed 's/^\([0-9]*\)\.\{0,1\}\([0-9]*\)\.\{0,1\}\([0-9]*\).*/\3/'`
+    if test "x${gsl_micro_version}" = "x" ; then
+       gsl_micro_version=0
+    fi
+
+    if test "x$enable_gsltest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GSL_CFLAGS"
+      LIBS="$LIBS $GSL_LIBS"
+
+      rm -f conf.gsltest
+      if test "$cross_compiling" = yes; then :
+  echo $ac_n "cross compiling; assumed OK... $ac_c"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+char* my_strdup (const char *str);
+
+char*
+my_strdup (const char *str)
+{
+  char *new_str;
+
+  if (str)
+    {
+      new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
+      strcpy (new_str, str);
+    }
+  else
+    new_str = NULL;
+
+  return new_str;
+}
+
+int main (void)
+{
+  int major = 0, minor = 0, micro = 0;
+  int n;
+  char *tmp_version;
+
+  system ("touch conf.gsltest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = my_strdup("$min_gsl_version");
+
+  n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) ;
+
+  if (n != 2 && n != 3) {
+     printf("%s, bad version string\n", "$min_gsl_version");
+     exit(1);
+   }
+
+   if (($gsl_major_version > major) ||
+      (($gsl_major_version == major) && ($gsl_minor_version > minor)) ||
+      (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro)))
+     {
+       exit(0);
+     }
+   else
+     {
+       exit(1);
+     }
+}
+
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  no_gsl=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_gsl" = x ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     :
+  else
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+     if test "$GSL_CONFIG" = "no" ; then
+       echo "*** The gsl-config script installed by GSL could not be found"
+       echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the GSL_CONFIG environment variable to the"
+       echo "*** full path to gsl-config."
+     else
+       if test -f conf.gsltest ; then
+        :
+       else
+          echo "*** Could not run GSL test program, checking why..."
+          CFLAGS="$CFLAGS $GSL_CFLAGS"
+          LIBS="$LIBS $GSL_LIBS"
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>
+
+int
+main ()
+{
+ return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+   echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GSL or finding the wrong"
+          echo "*** version of GSL. If it is not finding GSL, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+	  echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+else
+   echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GSL was incorrectly installed"
+          echo "*** or that you have moved GSL since it was installed. In the latter case, you"
+          echo "*** may want to edit the gsl-config script: $GSL_CONFIG"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+#     GSL_CFLAGS=""
+#     GSL_LIBS=""
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Could not find GNU Scientific Library.. You should install this, as it is needed by mathgl. Otherwise, you can override it with --with-gsl-link and --with-gsl-flags. For example you might use the gsl-config program to spit out the needed libs.\"" >&5
+$as_echo "$as_me: WARNING: \"Could not find GNU Scientific Library.. You should install this, as it is needed by mathgl. Otherwise, you can override it with --with-gsl-link and --with-gsl-flags. For example you might use the gsl-config program to spit out the needed libs.\"" >&2;}
+  fi
+
+
+  rm -f conf.gsltest
+
+fi
+
+
+#Check for libintl
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking  for libintl  " >&5
+$as_echo_n "checking  for libintl  ... " >&6; };
+
+
+# Check whether --with-intl-libs was given.
+if test "${with_intl_libs+set}" = set; then :
+  withval=$with_intl_libs;
+fi
+
+
+if test x"$with_intl_libs" != x"" ; then
+    GETTEXT_LIBS="$with_intl_libs"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result:  specified " >&5
+$as_echo " specified " >&6; };
+else
+	case "${host_os}" in
+		darwin*)
+			#Darwin requires explicit libintl
+			GETTEXT_LIBS="-lintl -liconv"
+
+    			{ $as_echo "$as_me:${as_lineno-$LINENO}: result:  $GETTEXT_LIBS " >&5
+$as_echo " $GETTEXT_LIBS " >&6; };
+		    ;;
+		mingw*|windows*|winnt)
+			GETTEXT_LIBS="-lintl"
+
+    			{ $as_echo "$as_me:${as_lineno-$LINENO}: result:  $GETTEXT_LIBS " >&5
+$as_echo " $GETTEXT_LIBS " >&6; };
+		    ;;
+
+		 *)
+			#elsewhere it appears to be part of libc. or something.
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result:  no " >&5
+$as_echo " no " >&6; };
+		   ;;
+	esac
+fi
+
+
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ac_fn_cxx_check_header_mongrel "$LINENO" "vigra/multi_array.hxx" "ac_cv_header_vigra_multi_array_hxx" "$ac_includes_default"
+if test "x$ac_cv_header_vigra_multi_array_hxx" = xyes; then :
+
+$as_echo "#define HAVE_VIGRA /**/" >>confdefs.h
+
+else
+  as_fn_error $? "Required vigra headers not found (looking for vigra/multi_array.hxx)" "$LINENO" 5
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+#Should we compile with openMP?
+# Check whether --enable-openmp-parallel was given.
+if test "${enable_openmp_parallel+set}" = set; then :
+  enableval=$enable_openmp_parallel;
+fi
+
+#Should we enable or disable debug checking?
+# Check whether --enable-debug-checks was given.
+if test "${enable_debug_checks+set}" = set; then :
+  enableval=$enable_debug_checks; enable_debug_checks="no"
+else
+  enable_debug_checks="yes"
+fi
+
+
+# Check whether --enable-ubsan was given.
+if test "${enable_ubsan+set}" = set; then :
+  enableval=$enable_ubsan;  enable_no_ubsan="yes"
+else
+  enable_no_ubsan="no"
+fi
+
+
+# Check whether --enable-experimental-cpp11 was given.
+if test "${enable_experimental_cpp11+set}" = set; then :
+  enableval=$enable_experimental_cpp11;
+fi
+
+
+
+if test x"$enable_openmp_parallel" != x"" ;
+then
+	OPENMP_FLAGS="-fopenmp -D_GLIBCXX_PARALLEL"
+
+fi
+
+if test x"$enable_debug_checks" == x"yes" ;
+then
+	DEBUG_FLAGS="-DDEBUG"
+
+
+
+	if test x"$GCC" == x"yes" ; then
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
+$as_echo_n "checking for C compiler vendor... " >&6; }
+if ${ax_cv_c_compiler_vendor+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    # note: don't check for gcc first since some other compilers define __GNUC__
+  vendors="intel:     __ICC,__ECC,__INTEL_COMPILER
+           ibm:       __xlc__,__xlC__,__IBMC__,__IBMCPP__
+           pathscale: __PATHCC__,__PATHSCALE__
+           clang:     __clang__
+           cray:      _CRAYC
+           fujitsu:   __FUJITSU
+           gnu:       __GNUC__
+           sun:       __SUNPRO_C,__SUNPRO_CC
+           hp:        __HP_cc,__HP_aCC
+           dec:       __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
+           borland:   __BORLANDC__,__CODEGEARC__,__TURBOC__
+           comeau:    __COMO__
+           kai:       __KCC
+           lcc:       __LCC__
+           sgi:       __sgi,sgi
+           microsoft: _MSC_VER
+           metrowerks: __MWERKS__
+           watcom:    __WATCOMC__
+           portland:  __PGI
+	   tcc:       __TINYC__
+           unknown:   UNKNOWN"
+  for ventest in $vendors; do
+    case $ventest in
+      *:) vendor=$ventest; continue ;;
+      *)  vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
+    esac
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+      #if !($vencpp)
+        thisisanerror;
+      #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+  ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1`
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
+$as_echo "$ax_cv_c_compiler_vendor" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+$as_echo_n "checking for C compiler version... " >&6; }
+if ${ax_cv_c_compiler_version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         case $ax_cv_c_compiler_vendor in #(
+  intel) :
+       if ac_fn_c_compute_int "$LINENO" "__INTEL_COMPILER/100" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_INTEL unknown intel compiler version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__INTEL_COMPILER%100)/10" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_INTEL unknown intel compiler version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__INTEL_COMPILER%10)" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_INTEL unknown intel compiler version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  ibm) :
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+
+        #if defined(__COMPILER_VER__)
+        choke me;
+        #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+      if ac_fn_c_compute_int "$LINENO" "__xlC__/100" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "__xlC__%100" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "__xlC_ver__/0x100" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "__xlC_ver__%0x100" "_ax_c_compiler_version_build"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler build version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch.$_ax_c_compiler_version_build"
+
+else
+
+      if ac_fn_c_compute_int "$LINENO" "__xlC__%1000" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "(__xlC__/10000)%10" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "(__xlC__/100000)%10" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;; #(
+  pathscale) :
+
+  if ac_fn_c_compute_int "$LINENO" "__PATHCC__" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_PATHSCALE unknown pathscale major
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__PATHCC_MINOR__" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_PATHSCALE unknown pathscale minor
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__PATHCC_PATCHLEVEL__" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_PATHSCALE unknown pathscale patch level
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  clang) :
+
+  if ac_fn_c_compute_int "$LINENO" "__clang_major__" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_CLANG unknown clang major
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__clang_minor__" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_CLANG unknown clang minor
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__clang_patchlevel__" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  0
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  cray) :
+
+  if ac_fn_c_compute_int "$LINENO" "_RELEASE" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_CRAY unknown crayc release
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "_RELEASE_MINOR" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_CRAY unknown crayc minor
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor"
+   ;; #(
+  fujitsu) :
+
+  if ac_fn_c_compute_int "$LINENO" "__FCC_VERSION" "ax_cv_c_compiler_version"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_FUJITSUunknown fujitsu release
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+   ;; #(
+  gnu) :
+
+  if ac_fn_c_compute_int "$LINENO" "__GNUC__" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_GNU unknown gcc major
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__GNUC_MINOR__" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_GNU unknown gcc minor
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__GNUC_PATCHLEVEL__" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_GNU unknown gcc patch level
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  sun) :
+
+
+  if ac_fn_c_compute_int "$LINENO" "!!(
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	     < 0x1000)" "_ax_c_compiler_version_until59"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun release version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if test "X$_ax_c_compiler_version_until59" = X1; then :
+        if ac_fn_c_compute_int "$LINENO" "
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	     % 0x10" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	     / 0x10) % 0x10" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	     / 0x100)" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+else
+        if ac_fn_c_compute_int "$LINENO" "
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	     % 0x10" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	     / 0x100) % 0x100" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	     / 0x1000)" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+fi
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+ ;; #(
+  hp) :
+
+
+  if ac_fn_c_compute_int "$LINENO" "!!(
+	     #if defined(__HP_cc)
+	     __HP_cc
+	     #else
+	     __HP_aCC
+	     #endif
+	     <= 1)" "_ax_c_compiler_version_untilA0121"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp release version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if test "X$_ax_c_compiler_version_untilA0121" = X1; then :
+             ax_cv_c_compiler_version="01.21.00"
+
+else
+        if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(__HP_cc)
+	     __HP_cc
+	     #else
+	     __HP_aCC
+	     #endif
+	     % 100)" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp release version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "((
+	     #if defined(__HP_cc)
+	     __HP_cc
+	     #else
+	     __HP_aCC
+	     #endif
+	     / 100)%100)" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      if ac_fn_c_compute_int "$LINENO" "((
+	     #if defined(__HP_cc)
+	     __HP_cc
+	     #else
+	     __HP_aCC
+	     #endif
+	     / 10000)%100)" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+      ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+
+fi
+ ;; #(
+  dec) :
+
+  if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(__DECC_VER)
+	     __DECC_VER
+	     #else
+	     __DECCXX_VER
+	     #endif
+	     % 10000)" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_DEC unknown dec release version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "((
+	     #if defined(__DECC_VER)
+	     __DECC_VER
+	     #else
+	     __DECCXX_VER
+	     #endif
+	     / 100000UL)%100)" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_DEC unknown dec minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "((
+	     #if defined(__DECC_VER)
+	     __DECC_VER
+	     #else
+	     __DECCXX_VER
+	     #endif
+	     / 10000000UL)%100)" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_DEC unknown dec major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  borland) :
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+	     #if defined(__TURBOC__)
+	     __TURBOC__
+	     #else
+	     choke me
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+       if ac_fn_c_compute_int "$LINENO" "
+	     #if defined(__TURBOC__)
+	     __TURBOC__
+	     #else
+	     choke me
+	     #endif
+	    " "_ax_c_compiler_version_turboc_raw"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown turboc version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+     if test $_ax_c_compiler_version_turboc_raw -lt 661 || test $_ax_c_compiler_version_turboc_raw -gt 1023; then :
+          if ac_fn_c_compute_int "$LINENO" "
+	     #if defined(__TURBOC__)
+	     __TURBOC__
+	     #else
+	     choke me
+	     #endif
+	     % 0x100" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown turboc minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+	if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(__TURBOC__)
+	     __TURBOC__
+	     #else
+	     choke me
+	     #endif
+	    /0x100)%0x100" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown turboc major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+	ax_cv_c_compiler_version="0turboc:$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor"
+else
+         case $_ax_c_compiler_version_turboc_raw in #(
+  661) :
+    ax_cv_c_compiler_version="0turboc:1.00" ;; #(
+  662) :
+    ax_cv_c_compiler_version="0turboc:1.01" ;; #(
+  663) :
+    ax_cv_c_compiler_version="0turboc:2.00" ;; #(
+  *) :
+
+	 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: [_AX_COMPILER_VERSION_BORLAND] unknown turboc version between 0x295 and 0x400 please report bug" >&5
+$as_echo "$as_me: WARNING: [_AX_COMPILER_VERSION_BORLAND] unknown turboc version between 0x295 and 0x400 please report bug" >&2;}
+	 ax_cv_c_compiler_version=""
+	  ;;
+esac
+
+fi
+
+else
+  # borlandc
+
+    if ac_fn_c_compute_int "$LINENO" "
+	     #if defined(__BORLANDC__)
+	     __BORLANDC__
+	     #else
+	     __CODEGEARC__
+	     #endif
+	    " "_ax_c_compiler_version_borlandc_raw"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown borlandc version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+    case $_ax_c_compiler_version_borlandc_raw in #(
+        512 ) :
+    ax_cv_c_compiler_version="1borlanc:2.00" ;; #(
+  1024) :
+    ax_cv_c_compiler_version="1borlanc:3.00" ;; #(
+  1024) :
+    ax_cv_c_compiler_version="1borlanc:3.00" ;; #(
+  1040) :
+    ax_cv_c_compiler_version="1borlanc:3.1" ;; #(
+  1106) :
+    ax_cv_c_compiler_version="1borlanc:4.0" ;; #(
+  1280) :
+    ax_cv_c_compiler_version="1borlanc:5.0" ;; #(
+  1312) :
+    ax_cv_c_compiler_version="1borlanc:5.02" ;; #(
+        1328) :
+    ax_cv_c_compiler_version="2cppbuilder:3.0" ;; #(
+  1344) :
+    ax_cv_c_compiler_version="2cppbuilder:4.0" ;; #(
+        1360) :
+    ax_cv_c_compiler_version="3borlancpp:5.5" ;; #(
+  1361) :
+    ax_cv_c_compiler_version="3borlancpp:5.51" ;; #(
+  1378) :
+    ax_cv_c_compiler_version="3borlancpp:5.6.4" ;; #(
+        1392) :
+    ax_cv_c_compiler_version="4cppbuilder:2006" ;; #(
+  1424) :
+    ax_cv_c_compiler_version="4cppbuilder:2007" ;; #(
+  1555) :
+    ax_cv_c_compiler_version="4cppbuilder:2009" ;; #(
+  1569) :
+    ax_cv_c_compiler_version="4cppbuilder:2010" ;; #(
+        1584) :
+    ax_cv_c_compiler_version="5xe" ;; #(
+  1600) :
+    ax_cv_c_compiler_version="5xe:2" ;; #(
+  1616) :
+    ax_cv_c_compiler_version="5xe:3" ;; #(
+  1632) :
+    ax_cv_c_compiler_version="5xe:4" ;; #(
+  *) :
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: [_AX_COMPILER_VERSION_BORLAND] Unknow borlanc compiler version $_ax_c_compiler_version_borlandc_raw please report bug" >&5
+$as_echo "$as_me: WARNING: [_AX_COMPILER_VERSION_BORLAND] Unknow borlanc compiler version $_ax_c_compiler_version_borlandc_raw please report bug" >&2;}
+       ;;
+esac
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ;; #(
+  comeau) :
+       if ac_fn_c_compute_int "$LINENO" "__COMO_VERSION__%100" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_COMEAU unknown comeau compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__COMO_VERSION__/100)%10" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_COMEAU unknown comeau compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor"
+   ;; #(
+  kai) :
+
+  if ac_fn_c_compute_int "$LINENO" "__KCC_VERSION%100" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_KAI unknown kay compiler patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__KCC_VERSION/100)%10" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_KAI unknown kay compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__KCC_VERSION/1000)%10" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_KAI unknown kay compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  sgi) :
+
+
+  if ac_fn_c_compute_int "$LINENO" "
+	     #if defined(_COMPILER_VERSION)
+	     _COMPILER_VERSION
+	     #else
+	     _SGI_COMPILER_VERSION
+	     #endif
+	    %10" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SGI unknown SGI compiler patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(_COMPILER_VERSION)
+	     _COMPILER_VERSION
+	     #else
+	     _SGI_COMPILER_VERSION
+	     #endif
+	    /10)%10" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SGI unknown SGI compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(
+	     #if defined(_COMPILER_VERSION)
+	     _COMPILER_VERSION
+	     #else
+	     _SGI_COMPILER_VERSION
+	     #endif
+	    /100)%10" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_SGI unknown SGI compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  microsoft) :
+
+  if ac_fn_c_compute_int "$LINENO" "_MSC_VER%100" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(_MSC_VER/100)%100" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+    _ax_c_compiler_version_patch=0
+  _ax_c_compiler_version_build=0
+  # special case for version 6
+  if test "X$_ax_c_compiler_version_major" = "X12"; then :
+  if ac_fn_c_compute_int "$LINENO" "_MSC_FULL_VER%1000" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  _ax_c_compiler_version_patch=0
+fi
+
+fi
+  # for version 7
+  if test "X$_ax_c_compiler_version_major" = "X13"; then :
+  if ac_fn_c_compute_int "$LINENO" "_MSC_FULL_VER%1000" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+fi
+  # for version > 8
+ if test $_ax_c_compiler_version_major -ge 14; then :
+  if ac_fn_c_compute_int "$LINENO" "_MSC_FULL_VER%10000" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+fi
+ if test $_ax_c_compiler_version_major -ge 15; then :
+  if ac_fn_c_compute_int "$LINENO" "_MSC_BUILD" "_ax_c_compiler_version_build"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler build version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+fi
+ ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch.$_ax_c_compiler_version_build"
+  ;; #(
+  metrowerks) :
+      if ac_fn_c_compute_int "$LINENO" "__MWERKS__%0x100" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_METROWERKS unknown metrowerks compiler patch version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__MWERKS__/0x100)%0x10" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_METROWERKS unknown metrowerks compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__MWERKS__/0x1000)%0x10" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_METROWERKS unknown metrowerks compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  watcom) :
+      if ac_fn_c_compute_int "$LINENO" "__WATCOMC__%100" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_WATCOM unknown watcom compiler minor version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "(__WATCOMC__/100)%100" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_WATCOM unknown watcom compiler major version
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor"
+   ;; #(
+  portland) :
+
+  if ac_fn_c_compute_int "$LINENO" "__PGIC__" "_ax_c_compiler_version_major"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_PORTLAND unknown pgi major
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__PGIC_MINOR__" "_ax_c_compiler_version_minor"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_PORTLAND unknown pgi minor
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  if ac_fn_c_compute_int "$LINENO" "__PGIC_PATCHLEVEL__" "_ax_c_compiler_version_patch"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_AX_COMPILER_VERSION_PORTLAND unknown pgi patch level
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+  ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch"
+   ;; #(
+  tcc) :
+
+  ax_cv_c_compiler_version=`tcc -v | $SED 's/^[ ]*tcc[ ]\+version[ ]\+\([0-9.]\+\).*/\1/g'`
+   ;; #(
+  *) :
+    ax_cv_c_compiler_version="" ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_version" >&5
+$as_echo "$ax_cv_c_compiler_version" >&6; }
+
+		GCC_VERSION=$ax_cv_c_compiler_version
+
+
+
+
+  # Used to indicate true or false condition
+  ax_compare_version=false
+
+  # Convert the two version strings to be compared into a format that
+  # allows a simple string comparison.  The end result is that a version
+  # string of the form 1.12.5-r617 will be converted to the form
+  # 0001001200050617.  In other words, each number is zero padded to four
+  # digits, and non digits are removed.
+
+  ax_compare_version_A=`echo " $GCC_VERSION " | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+  ax_compare_version_B=`echo "6.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+    ax_compare_version=`echo "x$ax_compare_version_A
+x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
+
+
+
+    if test "$ax_compare_version" = "true" ; then
+     DEBUG_FLAGS=" $DEBUG_FLAGS -D_GLIBCXX_ASSERTIONS"
+    else  DUMMY=" "
+  fi
+
+
+		# Strip optimisation flags from debug build
+		#--
+
+		CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9s]*//g'`
+		CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/-O[0-9s]*//g'`
+
+		CFLAGS="$CFLAGS -g"
+		CXXFLAGS="$CXXFLAGS -g"
+		#--
+
+		#Check for UbSan availability
+		#--
+		if test x"${enable_no_ubsan}" == x"no" ; then
+
+			USE_UBSAN="no"
+
+			case "${host_os}" in
+				*inux*)
+
+
+
+
+  # Used to indicate true or false condition
+  ax_compare_version=false
+
+  # Convert the two version strings to be compared into a format that
+  # allows a simple string comparison.  The end result is that a version
+  # string of the form 1.12.5-r617 will be converted to the form
+  # 0001001200050617.  In other words, each number is zero padded to four
+  # digits, and non digits are removed.
+
+  ax_compare_version_A=`echo " $GCC_VERSION " | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+  ax_compare_version_B=`echo "4.9" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+    ax_compare_version=`echo "x$ax_compare_version_A
+x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
+
+
+
+    if test "$ax_compare_version" = "true" ; then
+     USE_UBSAN="yes"
+    else  USE_UBSAN="no"
+  fi
+
+
+
+
+  # Used to indicate true or false condition
+  ax_compare_version=false
+
+  # Convert the two version strings to be compared into a format that
+  # allows a simple string comparison.  The end result is that a version
+  # string of the form 1.12.5-r617 will be converted to the form
+  # 0001001200050617.  In other words, each number is zero padded to four
+  # digits, and non digits are removed.
+
+  ax_compare_version_A=`echo " $GCC_VERSION " | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+  ax_compare_version_B=`echo "6.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+                     -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+                     -e 's/[^0-9]//g'`
+
+
+    ax_compare_version=`echo "x$ax_compare_version_A
+x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
+
+
+
+    if test "$ax_compare_version" = "true" ; then
+     USE_UBSAN_GCC6="yes"
+    else  USE_UBSAN_GCC6="no"
+  fi
+
+				;;
+			esac
+
+			if test x"$USE_UBSAN" == x"yes" ; then
+				CFLAGS="$CFLAGS  -fsanitize=address -fsanitize=undefined -fsanitize=return -fsanitize=integer-divide-by-zero -fsanitize=vla-bound -fsanitize=null -fsanitize=signed-integer-overflow"
+				CXXFLAGS="$CXXFLAGS  -fsanitize=address -fsanitize=undefined -fsanitize=return -fsanitize=integer-divide-by-zero -fsanitize=vla-bound -fsanitize=null -fsanitize=signed-integer-overflow"
+				LDFLAGS="$LDFLAGS  -fsanitize=address -fsanitize=undefined -fsanitize=return "
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"Enabling Gcc-UbSan\"" >&5
+$as_echo "\"Enabling Gcc-UbSan\"" >&6; };
+			fi
+
+#			Disabled until we improve our compiler detection (clang)
+#			if test x"$USE_UBSAN_GCC6" == x"yes" ; then
+#				CFLAGS="$CFLAGS -fsanitize=bounds-strict"
+#				CXXFLAGS="$CXXFLAGS  -fsanitize=bounds-strict"
+#				LDFLAGS="$LDFLAGS  -fsanitize=bounds-strict"
+#				AC_MSG_RESULT(["Enabling More Gcc-UbSan (gcc6)"]);
+#			fi
+		fi
+		#--
+
+	fi
+
+else
+	echo x"$enable_debug_checks"
+	echo x"no"
+
+	if test x"$enable_debug_checks" != x"no" ;
+	then
+		as_fn_error $? "\"Well something isnt right, debug checks should be enabled or disabled (yes/no), was $enable_debug_checks\"" "$LINENO" 5
+	fi
+fi
+
+if test x"$enable_experimental_cpp11" == x"yes" ;
+then
+	#Should work for gcc/clang
+	CXXFLAGS="$CXXFLAGS --std=c++11"
+fi
+
+if test x"$CXX" = xdistcc ; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"Adding distcc link flags\"" >&5
+$as_echo "\"Adding distcc link flags\"" >&6; };
+	#Add -lstdc++ to libs for distcc
+	LIBS="$LIBS -lstdc++"
+fi
+
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+             #include <stdbool.h>
+             #ifndef bool
+              "error: bool is not defined"
+             #endif
+             #ifndef false
+              "error: false is not defined"
+             #endif
+             #if false
+              "error: false is not 0"
+             #endif
+             #ifndef true
+              "error: true is not defined"
+             #endif
+             #if true != 1
+              "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
+              "error: __bool_true_false_are_defined is not defined"
+             #endif
+
+             struct s { _Bool s: 1; _Bool t; } s;
+
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
+
+int
+main ()
+{
+
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+   ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this sort of thing.  */
+  typedef int charset[2];
+  const charset cs = { 0, 0 };
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_const=yes
+else
+  ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t"
+case $ac_cv_c_uint64_t in #(
+  no|yes) ;; #(
+  *)
+
+$as_echo "#define _UINT64_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint64_t $ac_cv_c_uint64_t
+_ACEOF
+;;
+  esac
+
+
+# Checks for library functions.
+for ac_func in atexit sqrt
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+for ac_func in floor getcwd gettimeofday isascii memset
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+for ac_func in pow setlocale strdup sysinfo
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+#check for some headers
+for ac_header in fenv.h libintl.h sys/time.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
+if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PTRDIFF_T 1
+_ACEOF
+
+
+fi
+
+
+#Check platform specific headers
+case "${host_os}" in
+	darwin*)
+		 for ac_header in mach/mach.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default"
+if test "x$ac_cv_header_mach_mach_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MACH_MACH_H 1
+_ACEOF
+
+fi
+
+done
+
+		;;
+	*)
+		;;
+esac
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PRECOMPILED_HEADERS_TRUE}" && test -z "${USE_PRECOMPILED_HEADERS_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PRECOMPILED_HEADERS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_WINDRES_TRUE}" && test -z "${HAVE_WINDRES_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_WINDRES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_XML_TRUE}" && test -z "${USE_XML_FALSE}"; then
+  as_fn_error $? "conditional \"USE_XML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by 3Depict $as_me 0.0.20, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+3Depict config.status 0.0.20
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
diff --git a/configure.ac b/configure.ac
index d1779b8..3b4861e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([3Depict], [0.0.19]) 
+AC_INIT([3Depict], [0.0.20]) 
 AM_INIT_AUTOMAKE([foreign subdir-objects])
 AC_PROG_CXX
 AC_PROG_CC
@@ -319,7 +319,7 @@ LDFLAGS="$LDFLAGS $MGL_LIBS"
 #  mathgl2.x uses mgl_cf.h for c functions.
 AC_LANG_PUSH([C++])
 AC_DEFINE(USE_MGL2, 1 , ["Enable mgl2 support"])
-AC_CHECK_HEADER("mgl2/mgl_cf.h",[],[AC_MSG_ERROR(["mgl2 specified, but header mgl2/mgl_cf.h not found"])],[])
+#AC_CHECK_HEADER("mgl2/mgl_cf.h",[],[AC_MSG_ERROR(["mgl2 specified, but header mgl2/mgl_cf.h not found"])],[])
 AC_LANG_POP([C++])
 
 
@@ -416,20 +416,19 @@ fi
 
 if test x"$enable_debug_checks" == x"yes" ; 
 then
-	if test x"$enable_openmp_parallel" != x"" ;
-	then
-		#Note that GLIBCXX_DEBUG cannot exist with GLIBCXX_PARALLEL
-		DEBUG_FLAGS="-DDEBUG"
+	DEBUG_FLAGS="-DDEBUG"
 
+	AC_SUBST(DEBUG_FLAGS)
 
-	else
-		DEBUG_FLAGS="-DDEBUG -D_GLIBCXX_DEBUG"
-	fi
+	if test x"$GCC" == x"yes" ; then
 
-	AC_SUBST(DEBUG_FLAGS)
+		AX_COMPILER_VERSION
+		GCC_VERSION=$ax_cv_c_compiler_version
 
-	if test x"$GCC" = x"yes" ; then
-		# Strip optimsation flags from debug build
+		AX_COMPARE_VERSION( [ $GCC_VERSION ], ge, 6.0,
+				[ DEBUG_FLAGS=" $DEBUG_FLAGS -D_GLIBCXX_ASSERTIONS" ] , [ DUMMY=" " ])
+		
+		# Strip optimisation flags from debug build
 		#--
 		changequote({,})
 		CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9s]*//g'`
@@ -447,10 +446,10 @@ then
 
 			case "${host_os}" in
 				*inux*)
-					GCC_VER=`gcc --version | head -n 1 | awk '{ print $(NF)}'`
-					AX_COMPARE_VERSION( [ $GCC_VER ], ge, 4.9,
+
+					AX_COMPARE_VERSION( [ $GCC_VERSION ], ge, 4.9,
 							[ USE_UBSAN="yes" ] , [ USE_UBSAN="no" ])
-					AX_COMPARE_VERSION( [ $GCC_VER ], ge, 6.0,
+					AX_COMPARE_VERSION( [ $GCC_VERSION ], ge, 6.0,
 							[ USE_UBSAN_GCC6="yes" ] , [ USE_UBSAN_GCC6="no" ])
 				;;
 			esac
@@ -461,13 +460,14 @@ then
 				LDFLAGS="$LDFLAGS  -fsanitize=address -fsanitize=undefined -fsanitize=return "
 				AC_MSG_RESULT(["Enabling Gcc-UbSan"]);
 			fi
-			
-			if test x"$USE_UBSAN_GCC6" == x"yes" ; then
-				CFLAGS="$CFLAGS -fsanitize=bounds-strict" 
-				CXXFLAGS="$CXXFLAGS  -fsanitize=bounds-strict"
-				LDFLAGS="$LDFLAGS  -fsanitize=bounds-strict"
-				AC_MSG_RESULT(["Enabling More Gcc-UbSan (gcc6)"]);
-			fi
+
+#			Disabled until we improve our compiler detection (clang)
+#			if test x"$USE_UBSAN_GCC6" == x"yes" ; then
+#				CFLAGS="$CFLAGS -fsanitize=bounds-strict" 
+#				CXXFLAGS="$CXXFLAGS  -fsanitize=bounds-strict"
+#				LDFLAGS="$LDFLAGS  -fsanitize=bounds-strict"
+#				AC_MSG_RESULT(["Enabling More Gcc-UbSan (gcc6)"]);
+#			fi
 		fi
 		#--
 	
diff --git a/data/startup-tips.txt b/data/startup-tips.txt
index 9d32607..3736bf7 100644
--- a/data/startup-tips.txt
+++ b/data/startup-tips.txt
@@ -2,23 +2,28 @@
 # each tip must be of the form _("some tip")
 # wx docs say : blank lines, and lines starting with # are skipped
 
-_("You can reset the main view by tapping the space bar. Hold down modifier keys like shift,ctrl to change the axis. Double tap to switch which axis to look down")
+_("You can reset the main view by tapping the space bar. Hold down modifier keys like shift,ctrl to change the axis. Double tap to switch which axis to look the other way (+ve or -ve direction)")
 _("You can delete filters from the tree by selecting them, then tapping delete?")
 _("Multiple languages are supported? You can translate the program into your own language at https://www.transifex.com/projects/p/3depict/")
-_("Package files can be easily shared to allow others to view your analysis, using the File->Export->Package menu item")
+_("Package files can be easily shared to allow others to view your analysis, using the File->Export->Package menu item. This will automatically import all referenced files (eg pos/rng files) into a single shareable folder")
 _("You can export plots to SVG \"Vector\" format, for easier editing - edit your plots in inkscape!")
 _("You can access the manual from the Help menu")
 _("You can change filter defaults using the Edit->Preferences menu item")
 _("You can overlay multiple plots at once, by selecting more than on plot at a time (e.g. using Ctrl)")
 _("Calculations are much faster (more than linear speedup) when working with smaller datasets - try sampling, or clipping out a small region to work faster, then remove the sampling when you are ready")
 _("You can abort most calculations either by pressing Escape (OSX/Linux), or by using the Abort button (Windows)")
-_("That anyone can contribute to improving this program, even without knowing about computer programming?")
-_("You can load more than one file at a time, then either operate on the separately, or together")
+_("That anyone can contribute to improving this program, even without knowing about computer programming? Reporting bugs helps us to prioritise our work, and directs us to fix real problems for all users")
+_("You can load more than one file at a time, then either operate on them separately, or together")
 _("You can have more than one range file for different parts of your dataset")
 _("Cameras can be saved and retrieved whenever you like, using the camera tab")
 _("Subsections of the filter tree can be saved to the \"Stashed filters\" drop-down")
 _("The console tab along the bottom often shows useful messages from filters. When new messages appear, a small symbol is shown on the tab")
 _("The raw data used for any plot can be accessed from the \"Raw\" tab on the bottom panel")
 _("You can ask questions about the program, or using it on your data on our forums (https://sourceforge.net/p/threedepict/discussion/general/)")
-_("By creating a camera, you can switch between orthographic and perspective views")
+_("By creating a camera, you can switch between orthographic (parallel) and perspective views")
 _("You can open multiple files at once, and get a side-by-side view by translating (shifting) one of the datasets to one side")
+_("From version 0.0.20, vector values in filter properties (e.g. \"(1,0,0)\") can be specified using ISO 31-11 spherical coordinates using the following notation <r,theta,phi>, with angles in degrees")
+_("You can change the behavior of filter dragging by holding Ctrl (mac: cmd) or Shift whilst dragging? This switches between move, copy and \"splice"\  operations)
+_("We like to know where we are being helpful? Please consider writing the program and version number in any work you might publish - whether in print or online. Alternatively, link to our website, or write to us to let us know we helped!")
+_("You can merge files by placing two \"Pos Data\" filters in series,  then  saving the result?")
+
diff --git a/debian/3depict.1 b/debian/3depict.1
deleted file mode 100644
index c0f2e1f..0000000
--- a/debian/3depict.1
+++ /dev/null
@@ -1,33 +0,0 @@
-.\"                                      Hey, EMACS: -*- nroff -*-
-.\" First parameter, NAME, should be all caps
-.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
-.\" other parameters are allowed: see man(7), man(1)
-.TH 3DEPICT "1" "July 24, 2011"
-.\" Please adjust this date whenever revising the manpage.
-.SH NAME
-3Depict \- 3D scalar point cloud visualization and analysis
-.SH SYNOPSIS
-.B 3depict
-.RI  <file1> <file2> ...
-.br
-.SH DESCRIPTION
-This manual page documents briefly the
-.B 3Depict command
-.PP
-.\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
-.\" respectively.
-\fB3depict\fP is a program that allows for visualisation and analysis of point datasets with associated spectral data.
-.PP
-Note that the program is a best-effort system. It is by no means guaranteed that the algorithms in this program are free form errors in implementation, or follow conventions for any specific user-application. 
-.SH OPTIONS
-This program has no command line options, other than a sequence of data or XML files to open, the XML files being containing a previous program state (this may be generated from within the program's graphical interface). Currently the program can read "POS" (position) formatted files, which are simply uncompressed sequences of 4-byte floats (IEEE 597) in (x,y,z,value) form. All other work is done through the graphical interface.
-.PP
-As a further note, the XML file format has not been stabilised for the 0.0.x series; and may change between revisions
-.SH AUTHOR
-3Depict was written by D. Haley in 2012 
-.SH HOMEPAGE
-3Depict Project Home : http://threedepict.sourceforge.net
-.PP
-This manual page was written by D Haley <mycae at yahoo.com>,
-for the Debian project (and may be used by others).
diff --git a/debian/3depict.install b/debian/3depict.install
deleted file mode 100644
index 7979f4d..0000000
--- a/debian/3depict.install
+++ /dev/null
@@ -1,4 +0,0 @@
-data/textures/*png usr/share/3depict/textures/
-data/*dtd usr/share/3depict/
-data/*txt usr/share/3depict/
-data/*xml usr/share/3depict/
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index 22ff3ad..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,199 +0,0 @@
-3depict (0.0.19-1) unstable; urgency=low
-
-  * Update to upstream 0.0.19 (Closes: #831200)
-  * Update GSL build dependency (Closes: #807232)
-  * Minor lintian fixes to copyright, menu
-  * Fix build with autoconf != autoconf-1.14
-
- -- D Haley <mycae at gmx.com>  Thu, 04 Aug 2016 00:21:09 +0200
-
-3depict (0.0.18-2) unstable; urgency=medium
-
-  [ Edmund Grimley Evans ]
-  * Team upload.
-  * [f3c653d] Use autotools-dev. (Closes: #787214)
-
- -- Anton Gladky <gladk at debian.org>  Fri, 29 May 2015 21:38:04 +0200
-
-3depict (0.0.18-1) unstable; urgency=medium
-
-  * Update to upstream 0.0.18
-
- -- D Haley <mycae at gmx.com>  Fri, 01 May 2015 23:59:48 +0200
-
-3depict (0.0.17-1) unstable; urgency=medium
-
-  * Update to upstream 0.0.17
-
- -- D Haley <mycae at gmx.com>  Sun, 28 Sep 2014 16:07:00 +0100
-
-3depict (0.0.16-2.1) unstable; urgency=medium
-
-  * Non-maintainer upload at maintainer's request.
-  * Update BD on libwxgtk2.8-dev to libwxgtk3.0-dev | libwxgtk2.8-dev.
-    (Really Closes: #746609)
-
- -- Olly Betts <olly at survex.com>  Fri, 25 Jul 2014 10:55:36 +1200
-
-3depict (0.0.16-2) unstable; urgency=medium
-
-  * Add wx 3.0 startup patch (Closes: #746609)
-
- -- D Haley <mycae at gmx.com>  Mon, 09 Jun 2014 22:54:00 +0100
-
-3depict (0.0.16-1) unstable; urgency=medium
-
-  * Update to upstream 0.0.16
-
- -- D Haley <mycae at gmx.com>  Thu, 24 Apr 2014 00:56:00 +0100
-
-3depict (0.0.15-3) unstable; urgency=medium
-
-  * Adjust dependencies to force mgl>=2 (Closes: #737284)
-
- -- D Haley <mycae at gmx.com>  Wed, 12 Feb 2014 22:14:51 +0100
-
-3depict (0.0.15-2) unstable; urgency=medium
-
-  * Really remove unit tests (Closes: #730100)
-  * Adjust ac_header for mgl detection
-  * Apply upstream patch for cache bug
-  * Add missing files to debian/copyright
-
- -- D Haley <mycae at gmx.com>  Mon, 20 Jan 2014 06:25:38 +0100
-
-3depict (0.0.15-1) unstable; urgency=low
-
-  * update to upstream
-  * Remove unit tests (Closes: #730100)
-  * Upstream has updated autotools (Closes: #727842)
-
- -- D Haley <mycae at gmx.com>  Sun, 01 Dec 2013 18:25:12 +0100
-
-3depict (0.0.14-1) unstable; urgency=low
-
-  * Update to upstream, 0.0.14
-  * Enable mathgl2.x configure option
-  * Modify build-depends, libmgl-dev >= 2.1.32
-
- -- D Haley <mycae at gmx.com>  Sat, 20 Jul 2013 18:31:32 +0200
-
-3depict (0.0.13-1) unstable; urgency=low
-
-  * Upload to unstable 
-
- -- D Haley <mycae at gmx.com>  Fri, 17 May 2013 00:52:39 +0200
-
-3depict (0.0.13-1~exp1) experimental; urgency=low
-
-  * New upstream release
-  * Update maintainer email
-  * Remove README.source
-  * Update to compat level 9
-  * Set standards version to 3.9.4
-  * Drop DM-Upload-Allowed
-  * Update debian copyright to DEP5
-  * Drop debian/dirs
-  * Convert rules to use dh override_
-  * Add DEP3-headers to patches
-
-
- -- D Haley <mycae at gmx.com>  Sat, 13 Apr 2013 02:06:15 +0200
-
-3depict (0.0.12-1) experimental; urgency=low
-
-  [ D Haley ]
-  * New upstream release
-  * upstream-post-0.0.12-fixes.patch: new patch taken from upstream
-
-  [ Sylvestre Ledru ]
-  * Standards-Version updated to version 3.9.3
-
-  [ Sébastien Villemot ]
-  * Refreshed patches
-
- -- D Haley <mycae at yahoo.com>  Sat, 24 Nov 2012 23:54:29 +0100
-
-3depict (0.0.10-1) unstable; urgency=low
-
-  * New upstream release
-
- -- D Haley <mycae at yahoo.com>  Sun, 1 Apr 2012 19:33:32 +0100
-
-3depict (0.0.9-1) unstable; urgency=low
-
-  * Update to upstream 0.0.9 
-  * Close powerpc bug fixed by 0.0.8-1 (Closes: #655682) 
-  * Close mgl font parsing bug fixed by mathgl upstream (Closes: #623431)
-  * Fix unclean source package (Closes: #643039)
-
- -- D Haley <mycae at yahoo.com>  Sun, 18 Dec 2011 19:33:32 +0100
-
-3depict (0.0.8-1) unstable; urgency=low
-
-  * Update to upstream 0.0.8
-  * Fix powerpc build due to overridden define
-
- -- D Haley <mycae at yahoo.com>  Sun, 23 Oct 2011 17:18:41 +0100
-
-3depict (0.0.7-1) unstable; urgency=low
-
-  [ D Haley ]
-  * Update to new upstream version 
-  * Include manual in tarball
-  * Include upstream patches for correcting density profile computation
-    and refresh branch computation
-
-  [ Sylvestre Ledru ]
-  * Switch to dpkg-source 3.0 (quilt) format
-
- -- Sylvestre Ledru <sylvestre at debian.org>  Mon, 15 Aug 2011 23:35:55 +0200
-
-3depict (0.0.6-1) unstable; urgency=low
-
-  * New upstream version
-  * Patch for new debian font dir layout (hierarchy, not flat)
-  * Revert to quilt 1.0 format, as 3.0 does not patch in build
- 
- -- D Haley <mycae at yahoo.com>  Tue, 31 May 2011 22:23:53 +0100
-
-3depict (0.0.5-1) unstable; urgency=low
-
-  [ Sylvestre Ledru ]
-  * watch file added
-  * Switch to dpkg-source 3.0 (quilt) format
-
-  * New upstream version 
-
- -- D Haley <mycae at yahoo.com>  Tue, 12 Apr 2011 17:44:06 +0200
-
-3depict (0.0.4-1) unstable; urgency=low
-
-  * New upstream version 
-
- -- D Haley <mycae at yahoo.com>  Sun, 16 Jan 2011 17:16:31 +0000
-
-3depict (0.0.3-1) unstable; urgency=low
-
-  * New upstream version
-
- -- D Haley <mycae at yahoo.com>  Thu, 25 Nov 2010 23:28:28 +0000
-
-3depict (0.0.2-1) unstable; urgency=low
-
-  * New upstream version
-  * Enable parallel build
-
- -- D Haley <mycae at yahoo.com>  Wed, 22 Sep 2010 20:09:24 +0100
-
-3depict (0.0.1-2) unstable; urgency=low
-
-  * Remove patches for mathgl 1.9 compatibility due to new mathgl 1.10
-
- -- D Haley <mycae at yahoo.com>  Sat, 21 Aug 2010 08:55:13 +1000
-
-3depict (0.0.1-1) unstable; urgency=low
-
-  * Initial release (Closes: #592460) 
-
- -- D Haley <mycae at yahoo.com>  Mon, 09 Aug 2010 21:23:50 +0100
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index ec63514..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/debian/control b/debian/control
deleted file mode 100644
index 3345cad..0000000
--- a/debian/control
+++ /dev/null
@@ -1,34 +0,0 @@
-Source: 3depict
-Maintainer: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
-Uploaders: D Haley <mycae at gmx.com>
-Section: science
-Priority: optional
-Build-Depends: debhelper (>= 9),
-               dh-autoreconf (>=9),
-               dpkg-dev (>= 1.16.1~),
-               libgl1-mesa-dev | libgl-dev,
-               libpng-dev | libpng15-dev,
-               libqhull-dev,
-               libwxgtk3.0-dev,
-               libgsl-dev,
-               libftgl-dev,
-               libxml2-dev,
-               libmgl-dev (>= 2.0),
-               libvigraimpex-dev,
-               automake,
-               autotools-dev,
-               pkg-config
-Standards-Version: 3.9.8
-Vcs-Browser: https://anonscm.debian.org/cgit/debian-science/packages/3depict.git
-Vcs-Git: git://anonscm.debian.org/debian-science/packages/3depict.git
-Homepage: http://threedepict.sourceforge.net/index.html
-
-Package: 3depict
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Description: visualisation and analysis for single valued point data 
- This program provides a graphical interface for the scientific analysis
- of real valued point data (x,y,z,value). This is primarily targeted
- towards Atom probe tomography applications, but may prove useful to
- other applications as well.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index 057eaac..0000000
--- a/debian/copyright
+++ /dev/null
@@ -1,59 +0,0 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: 3Depict
-Upstream: http://threedepict.sourceforge.net
-
-Files: *
-Copyright: 3Depict is Copyright (C) 2013 by D Haley.
-License: GPL-3+
-
-Files: docs/manual-latex/manual.tex
-Copyright: Copyright (C) 2013 by D Haley.
-License: CC-BY-SA-3.0 
- The work (as defined below) is provided under the terms of this creative
- commons public license ("CCPL"; or "license"). The work is protected by
- copyright and/or other applicable law. any use of the work other than as
- authorized under this license or copyright law is prohibited.
- By exercising any rights to the work provided here, you accept and agree
- to be bound by the terms of this license. to the extent this license may
- be considered to be a contract, the licensor grants you the rights
- contained here in consideration of your acceptance of such terms and
- conditions.
-
-Files:data/textures/*rrow*png data/textures/*rrow*svg data/textures/tex-source/*rrow*svg data/textures/*enlarge*png data/textures/tex-source/*enlarge.svg
-Copyright: Copyright 2006, Everaldo Coelho
-Source: https://commons.wikimedia.org/wiki/Crystal_clear
-License: LGPL-2+
- On Debian systems the full text of the Lesser GNU General Public License
- v2 can be found in the `/usr/share/common-licenses/LGPL-2' file.
-
-Files: data/textures/tex-source/*mouse.svg data/textures/*mouse*png
-Copyright: Copyright 2007, User:Darklama
-Source: https://commons.wikimedia.org/wiki/File:Left_clicked_mouse.svg
-License: GFDL-1.2
- On Debian systems the full text of the GNU Free Documentation License
- v1.2 can be found in the `/usr/share/common-licenses/GFDL-1.2' file.
-
-Files: docs/web/style.css
-Copyright: Copyright 2006, Minamalistic-design
-Source: http://www.minimalistic-design.com/minimalistic.zip
-License: GPL-2+
-
-Files: src/gl/tr.cpp src/gl/tr.h
-Copyright: Copyright 2005, Brian Paul 
-Source: http://www.mesa3d.org/brianp/TR.html
-License: GPL-2+
-
-Files: data/naturalAbundance.xml
-Copyright: Copyright 2008, Metamolecular
-Source: http://metamolecular.com 
-License: expat
- On Debian systems the full text of the expat license can be found in the
- `/usr/share/common-licenses/expat' file.
-
-License: GPL-3+
- On Debian systems the full text of the GNU General Public License v3 
- can be found in the `/usr/share/common-licenses/GPL-3' file.
-
-License: GPL-2+
- On Debian systems the full text of the GNU General Public License v2
- can be found in the `/usr/share/common-licenses/GPL-2' file.
diff --git a/debian/docs b/debian/docs
deleted file mode 100644
index c17f037..0000000
--- a/debian/docs
+++ /dev/null
@@ -1,4 +0,0 @@
-AUTHORS
-NEWS
-README
-TODO
diff --git a/debian/manpages b/debian/manpages
deleted file mode 100644
index b454c42..0000000
--- a/debian/manpages
+++ /dev/null
@@ -1 +0,0 @@
-debian/3depict.1
diff --git a/debian/patches/debian-desktop-naming.patch b/debian/patches/debian-desktop-naming.patch
deleted file mode 100644
index 5de7c73..0000000
--- a/debian/patches/debian-desktop-naming.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Description: Debian packages are lowercase, but upstream uses uppercase
- "D"
-Forwarded: not-needed
-Author: D Haley <mycae - gmx - com>
-Index: 3depict-0.0.16/packaging/3Depict.desktop
-===================================================================
---- 3depict-0.0.16.orig/packaging/3Depict.desktop	2014-04-25 00:52:46.982186432 +0200
-+++ 3depict-0.0.16/packaging/3Depict.desktop	2014-04-25 00:52:46.978186482 +0200
-@@ -2,8 +2,8 @@
- Version=1.0
- Type=Application
- Comment=Valued point cloud visualisation and analysis
--TryExec=3Depict
--Exec=3Depict %F
--Icon=3Depict
--Name=3Depict
-+TryExec=3depict
-+Exec=3depict %F
-+Icon=3depict
-+Name=3depict
- 
diff --git a/debian/patches/lowercase-textdomain.patch b/debian/patches/lowercase-textdomain.patch
deleted file mode 100644
index 10fdaf0..0000000
--- a/debian/patches/lowercase-textdomain.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Description: Debian uses different text domain for the lang files
-Forwarded: not-needed
-Author: D Haley <mycae - gmx - com>
-Index: 3depict-0.0.19/src/3Depict.cpp
-===================================================================
---- 3depict-0.0.19.orig/src/3Depict.cpp	2016-08-04 00:12:38.260085712 +0200
-+++ 3depict-0.0.19/src/3Depict.cpp	2016-08-04 00:12:38.256085765 +0200
-@@ -179,7 +179,7 @@
- 		else
- 		{
- 			//Set the gettext language
--			textdomain( PROGRAM_NAME );
-+			textdomain( "3depict");
- 			setlocale (LC_ALL, "");
- #ifdef __WXMAC__
- 			bindtextdomain( PROGRAM_NAME, paths->GetResourcesDir().mb_str(wxConvUTF8) );
-@@ -211,8 +211,8 @@
- 					break;
- 			}			
- #else
--			bindtextdomain( PROGRAM_NAME, "/usr/share/locale" );
--			bind_textdomain_codeset(PROGRAM_NAME, "utf-8");
-+			bindtextdomain( "3depict", "/usr/share/locale" );
-+			bind_textdomain_codeset("3depict", "utf-8");
- #endif
- 		}
- 	}
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index e898cbe..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1,4 +0,0 @@
-diff_0.0.19_to_effd078610a7
-debian-desktop-naming.patch
-lowercase-textdomain.patch
-desktop-category.patch
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index be9d384..0000000
--- a/debian/rules
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/make -f
-
-%:
-	dh $@ --parallel --with autotools-dev --with autoreconf
-
-override_dh_auto_configure: 
-	LDFLAGS="$(LDFLAGS) -Wl,--as-needed" dh_auto_configure -- --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --enable-openmp-parallel --disable-debug-checks --with-libpng-link="-lpng" --with-libpng-flags="-L/lib" --with-ftgl-prefix="/usr" --enable-mgl2
-
-
-override_dh_clean:
-	dh_testdir
-	dh_testroot
-	rm -f build-stamp 
-
-	[ ! -f Makefile ] || $(MAKE) distclean
-	rm -f config.status config.cache
-	#Prevent quilt 3.0 from annoyingly convoluting config.log with
-	#a patch
-	rm -f config.log
-
-	dh_clean 
-
-
-override_dh_auto_install: 
-	dh_auto_install
-	
-	#rename 3Depict (real program name) to debian-friendly 3depict
-	mv $(CURDIR)/debian/3depict/usr/bin/3Depict $(CURDIR)/debian/3depict/usr/bin/3depict
-
-	mkdir -p $(CURDIR)/debian/3depict/usr/share/doc/3depict/
-	echo "Copyright 2013 D Haley <mycae at yahoo.com>" > $(CURDIR)/debian/3depict/usr/share/doc/3depict/copyright
-	echo "See /usr/share/common-licenses/GPL-1 for copyright info" >> $(CURDIR)/debian/3depict/usr/share/doc/3depict/copyright
-
-	#Install files that cannot be handled by .install due to rename
-	#---
-	#Install .desktop file (for XFCE)
-	install -Dp -m 644 $(CURDIR)/packaging/3Depict.desktop $(CURDIR)/debian/3depict/usr/share/applications/3depict.desktop
-	#install icon (both SVG and XPM) into pixmaps
-	install -Dp -m 644 $(CURDIR)/data/3Depict.xpm $(CURDIR)/debian/3depict/usr/share/pixmaps/3depict.xpm
-	install -Dp -m 644 $(CURDIR)/data/textures/tex-source/3Depict-icon.svg $(CURDIR)/debian/3depict/usr/share/pixmaps/3depict.svg
-	install -Dp -m 644 $(CURDIR)/docs/manual-latex/manual.pdf $(CURDIR)/debian/3depict/usr/share/3depict/3depict-manual.pdf
-	#---
-	
-	#Install the pre-built locale files that are shipped with the tarball.
-	#translation sources (.po) files are in the translations/ folder.
-	#remap a few locale names as needed
-	#--
-	sh -c "mv locales/de_DE/ locales/de/"
-	mkdir -p $(CURDIR)/debian/3depict/usr/share/locale/
-	cp -R locales/* $(CURDIR)/debian/3depict/usr/share/locale/
-	#undo locale renaming
-	sh -c "mv locales/de/ locales/de_DE/"
-	# convert installed 3Depict.mo files to lowercase	
-	find $(CURDIR)/debian/3depict/usr/share/locale/ -name 3Depict.mo | xargs rename 's/3Depict.mo/3depict.mo/'
-	#--
diff --git a/debian/source/format b/debian/source/format
deleted file mode 100644
index 163aaf8..0000000
--- a/debian/source/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/debian/source/local-options b/debian/source/local-options
deleted file mode 100644
index 9cdfca9..0000000
--- a/debian/source/local-options
+++ /dev/null
@@ -1,2 +0,0 @@
-unapply-patches
-abort-on-upstream-changes
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index a0f991c..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,4 +0,0 @@
-version=3
-http://sf.net/threedepict/3Depict-(\d+[0-9\-\.r]+)\.tar.gz \
-  debian
-
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..4ebd5b3
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,791 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2013-05-30.07; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+  '')
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the "deleted header file" problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+## Some versions of gcc put a space before the ':'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like '#:fec' to the end of the
+    # dependency line.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
+    echo >> "$depfile"
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' "$nl" < "$tmpdepfile" \
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  set_dir_from "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using '\' :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  set_dir_from  "$object"
+  set_base_from "$object"
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -ne 0; then
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add 'dependent.h:' lines.
+    sed -ne '2,${
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
+  else
+    make_dummy_depfile
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for ':'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  "$@" $dashmflag |
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove '-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E \
+    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    | sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+        set fnord "$@"
+        shift
+        shift
+        ;;
+    *)
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/TODO b/docs/TODO
similarity index 81%
copy from TODO
copy to docs/TODO
index c0122f7..3f8731f 100644
--- a/TODO
+++ b/docs/TODO
@@ -5,16 +5,20 @@ TODO List - worlds simplest bugtracking system
 --Main app--
 	To Implement:
 		== Next version ==
+		* Fix animation under windows, seems to crash
+	
+		== Eventually == 
+		* XML file loading is a bit iffy if paths are moved
+		 around. A nice convenience feature would be to have an
+		 option to scan for the files in a relative manner if
+		 they are not found using the absolute path
+		* There is no way to get a mass spectrum from clusters with background.
+			- Import clustering w background from posgen?
 		* Voxelisation filter should not show ions disabled in upstream range
 		* VTK voxel data export UI
-		* Bounding box tick values could be improved - scientific
-		  notation, better font size control, absol. coords, etc
 		* Mesh generation/operation?
 			- This is tricky. I don't have a good mesh library
 		* Proxigram?
-		* Theoretical distributions are missing from the binomial algorithm
-	
-		== Eventually == 
 		* Update to qhull 2015's qhull_r (reentrant qhull). 
 			- This requires some refactoring of the doHull wrapper for convex hull computation
 		* Voxel export dialog 
@@ -37,11 +41,15 @@ TODO List - worlds simplest bugtracking system
 		  in trying to interpret where the user wants to drop the object
 		* Plots cannot currently be updated on name change. Need to add "needUpdate" to setUserString
 		* Isotope overlay in normal spectra
-			- Include full atomic species eg 57^Fe18^O in label
+			- Include full atomic species eg 57^Fe18^O in label, and charge state
+		* Poisson error estimation
 	
 	Outstanding bugs:
 		== Next release==
-		* Composition profile progress bad 
+		* There is a nasty crash bug in spatial analysis, when using local concentration mode or binomial
+				- Related to how ionSourceEnabled and ionTargetEnabeld are computed. These
+				  are not the same size as the rangefile's number of ions at this time
+		* Under windows there is a problem with parsing the rss feed. This results in a user-visible error
 	
 		== Eventually==
 		* Cluster filter wont save state correctly if parent
@@ -71,7 +79,6 @@ TODO List - worlds simplest bugtracking system
 		 sampling rates some percentage to be determined (load
 		 file, skip buffer).
 		* Clustering can now be paralellised. 
-			- consider implementing/using sphere grab algorithm, which is much faster
 		* Examine performance characteristics of HULL_GRAB in ioninfo
 		* Conversion of double axis-angle rotations to single axis angle rotations - any value here?
 			- Use TRIAD/ Wahba's problem to solve. Should be a lot faster?
@@ -98,6 +105,8 @@ TODO List - worlds simplest bugtracking system
 	* K3DTree currently requires public access to members of boundcube
 	* Enums should be, where possible, moved into their relevant class' namespace
 	* Better error code behaviour for filters. There is a lot of needless duplication
+	* There is a confusion of responsibility between filter.{cpp,h} and filterCommon.{cpp,h}
+		- what is the division here? this is unclear
 
 -- Deprecate --
 	* On Minor version change:
diff --git a/docs/manual-latex/build-latex.sh b/docs/manual-latex/build-latex.sh
new file mode 100755
index 0000000..bebf384
--- /dev/null
+++ b/docs/manual-latex/build-latex.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+LATEXBIN=pdflatex
+BIBTEXBIN=bibtex
+if [ x`which $LATEXBIN` == x"" ] ; then
+	echo "no $LATEXBIN" 
+	exit 1
+fi
+
+if [ x`which $BIBTEXBIN` == x"" ] ; then
+	echo "no $BIBTEXBIN" 
+	exit 1
+fi
+
+MANUAL=manual.tex
+
+#check to see if the manual and its bib file are around
+if [ ! -f $MANUAL  ] ; then
+	echo "$MANUAL is missing"
+	exit 1
+fi
+
+#Remove the old manul
+rm -f manual.pdf
+
+
+
+#run the multi-pass latex build. 
+$LATEXBIN $MANUAL || { echo "failed latex build (pass 1 of 2)"; exit 1 ; }
+$BIBTEXBIN `basename -s .tex $MANUAL` || { echo "failed bibtex build"; exit 1 ; }
+$LATEXBIN $MANUAL || { echo "failed latex build (pass 2 of 2)"; exit 1 ; }
+
+
+if [ ! -f manual.pdf ] ; then
+	echo "latex ran, but somehow we did not output the PDF...."
+	exit 1
+fi
+
diff --git a/docs/manual-latex/manual.aux b/docs/manual-latex/manual.aux
index 8344701..b416811 100644
--- a/docs/manual-latex/manual.aux
+++ b/docs/manual-latex/manual.aux
@@ -142,39 +142,42 @@
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.9}Spatial Analysis}{31}{subsubsection.5.2.9}}
 \@writefile{toc}{\contentsline {paragraph}{Algorithms}{31}{section*.3}}
 \@writefile{toc}{\contentsline {paragraph}{Radial Distribution:}{31}{section*.4}}
+\citation{Chen2014}
+\citation{Stephenson2014}
 \@writefile{toc}{\contentsline {paragraph}{Axial Distribution:}{32}{section*.5}}
 \@writefile{toc}{\contentsline {paragraph}{Binomial:}{32}{section*.6}}
-\@writefile{toc}{\contentsline {paragraph}{Point em/re-placement}{32}{section*.7}}
-\@writefile{lot}{\contentsline {table}{\numberline {9}{\ignorespaces Propagation matrix for Spatial Analysis.}}{32}{table.9}}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.10}Clustering analysis}{32}{subsubsection.5.2.10}}
+\@writefile{toc}{\contentsline {paragraph}{Point em/re-placement :}{32}{section*.7}}
+\@writefile{toc}{\contentsline {paragraph}{Local concentration :}{32}{section*.8}}
 \citation{Stephenson07}
 \citation{Hyde10}
 \citation{Vaumousse03}
+\@writefile{lot}{\contentsline {table}{\numberline {9}{\ignorespaces Propagation matrix for Spatial Analysis.}}{33}{table.9}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.10}Clustering analysis}{33}{subsubsection.5.2.10}}
 \@writefile{lot}{\contentsline {table}{\numberline {10}{\ignorespaces Propagation matrix for Clustering Analysis.}}{34}{table.10}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.11}External Program}{34}{subsubsection.5.2.11}}
-\@writefile{toc}{\contentsline {paragraph}{Command syntax: }{34}{section*.8}}
-\@writefile{toc}{\contentsline {paragraph}{Prior to program execution:}{34}{section*.9}}
-\@writefile{toc}{\contentsline {paragraph}{After program execution:}{34}{section*.10}}
+\@writefile{toc}{\contentsline {paragraph}{Command syntax: }{34}{section*.9}}
+\@writefile{toc}{\contentsline {paragraph}{Prior to program execution:}{34}{section*.10}}
+\@writefile{toc}{\contentsline {paragraph}{After program execution:}{35}{section*.11}}
 \@writefile{lot}{\contentsline {table}{\numberline {11}{\ignorespaces Propagation matrix for External Program.}}{35}{table.11}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.12}Annotation}{35}{subsubsection.5.2.12}}
-\@writefile{toc}{\contentsline {paragraph}{Text}{35}{section*.11}}
-\@writefile{toc}{\contentsline {paragraph}{Arrow, Arrow with Text}{35}{section*.12}}
-\@writefile{toc}{\contentsline {paragraph}{Angle Measurement}{35}{section*.13}}
+\@writefile{toc}{\contentsline {paragraph}{Text}{35}{section*.12}}
+\@writefile{toc}{\contentsline {paragraph}{Arrow, Arrow with Text}{35}{section*.13}}
+\@writefile{toc}{\contentsline {paragraph}{Angle Measurement}{35}{section*.14}}
 \@writefile{lot}{\contentsline {table}{\numberline {12}{\ignorespaces Propagation matrix for Annotation.}}{36}{table.12}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.13}Voxels}{36}{subsubsection.5.2.13}}
-\@writefile{lot}{\contentsline {table}{\numberline {13}{\ignorespaces Propagation matrix for Voxels.}}{36}{table.13}}
 \@writefile{lof}{\contentsline {figure}{\numberline {22}{\ignorespaces Voxelisation filter, showing different representations. Left to right shows point cloud, axial slice and isosurface mode on the same dataset}}{37}{figure.22}}
 \newlabel{fig:voxeliseDisplayType}{{22}{37}{Voxelisation filter, showing different representations. Left to right shows point cloud, axial slice and isosurface mode on the same dataset}{figure.22}{}}
+\@writefile{lot}{\contentsline {table}{\numberline {13}{\ignorespaces Propagation matrix for Voxels.}}{37}{table.13}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.14}Ion Colour}{37}{subsubsection.5.2.14}}
-\@writefile{lot}{\contentsline {table}{\numberline {14}{\ignorespaces Propagation matrix for Ion Colour.}}{37}{table.14}}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.15}Ion Transform}{37}{subsubsection.5.2.15}}
+\@writefile{lot}{\contentsline {table}{\numberline {14}{\ignorespaces Propagation matrix for Ion Colour.}}{38}{table.14}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.15}Ion Transform}{38}{subsubsection.5.2.15}}
 \@writefile{lot}{\contentsline {table}{\numberline {15}{\ignorespaces Propagation matrix for Ion Transform.}}{38}{table.15}}
 \@writefile{toc}{\contentsline {section}{\numberline {6}Attributions}{38}{section.6}}
-\@writefile{toc}{\contentsline {section}{\numberline {7}Licence}{38}{section.7}}
-\@writefile{toc}{\contentsline {section}{\numberline {8}Appendices}{38}{section.8}}
-\newlabel{sec:appendix}{{8}{38}{Appendices}{section.8}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Paths}{38}{subsection.8.1}}
-\newlabel{sec:3DepictPaths}{{8.1}{38}{Paths}{subsection.8.1}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {7}Licence}{39}{section.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {8}Appendices}{39}{section.8}}
+\newlabel{sec:appendix}{{8}{39}{Appendices}{section.8}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Paths}{39}{subsection.8.1}}
+\newlabel{sec:3DepictPaths}{{8.1}{39}{Paths}{subsection.8.1}{}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {8.2}File formats}{39}{subsection.8.2}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {8.2.1}State file}{39}{subsubsection.8.2.1}}
 \newlabel{sec:xmlstatefile}{{8.2.1}{39}{State file}{subsubsection.8.2.1}{}}
@@ -184,14 +187,14 @@
 \newlabel{sec:posformat}{{8.2.3}{41}{POS files}{subsubsection.8.2.3}{}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {8.2.4}Text files}{41}{subsubsection.8.2.4}}
 \newlabel{sec:textformat}{{8.2.4}{41}{Text files}{subsubsection.8.2.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.3}External Program Examples}{41}{subsection.8.3}}
-\newlabel{sec:externalProgExample}{{8.3}{41}{External Program Examples}{subsection.8.3}{}}
-\@writefile{lof}{\contentsline {figure}{\numberline {23}{\ignorespaces Example program screenshot using the \emph  {Scilab} sample script. The \%i value in the command line instructs \emph  {3Depict} to take the first (and only the first) ion stream, and save it as an input file for the external program. }}{42}{figure.23}}
-\newlabel{fig:externalProgScilabSample}{{23}{42}{Example program screenshot using the \emph {Scilab} sample script. The \%i value in the command line instructs \emph {3Depict} to take the first (and only the first) ion stream, and save it as an input file for the external program}{figure.23}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.3}External Program Examples}{42}{subsection.8.3}}
+\newlabel{sec:externalProgExample}{{8.3}{42}{External Program Examples}{subsection.8.3}{}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {8.3.1}Scilab}{42}{subsubsection.8.3.1}}
-\@writefile{lof}{\contentsline {figure}{\numberline {24}{\ignorespaces Example program screenshot without and with the Python test example present. Note that the program merges ion streams into a single pos file, which is re-loaded as a single ion stream, as marked by the arrows.}}{46}{figure.24}}
-\newlabel{fig:externalProgPythonSample}{{24}{46}{Example program screenshot without and with the Python test example present. Note that the program merges ion streams into a single pos file, which is re-loaded as a single ion stream, as marked by the arrows}{figure.24}{}}
+\@writefile{lof}{\contentsline {figure}{\numberline {23}{\ignorespaces Example program screenshot using the \emph  {Scilab} sample script. The \%i value in the command line instructs \emph  {3Depict} to take the first (and only the first) ion stream, and save it as an input file for the external program. }}{43}{figure.23}}
+\newlabel{fig:externalProgScilabSample}{{23}{43}{Example program screenshot using the \emph {Scilab} sample script. The \%i value in the command line instructs \emph {3Depict} to take the first (and only the first) ion stream, and save it as an input file for the external program}{figure.23}{}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {8.3.2}Python}{46}{subsubsection.8.3.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {24}{\ignorespaces Example program screenshot without and with the Python test example present. Note that the program merges ion streams into a single pos file, which is re-loaded as a single ion stream, as marked by the arrows.}}{47}{figure.24}}
+\newlabel{fig:externalProgPythonSample}{{24}{47}{Example program screenshot without and with the Python test example present. Note that the program merges ion streams into a single pos file, which is re-loaded as a single ion stream, as marked by the arrows}{figure.24}{}}
 \@writefile{lof}{\contentsline {figure}{\numberline {25}{\ignorespaces Example program screenshot when using the BASH test example.}}{48}{figure.25}}
 \newlabel{fig:externalProgBashSample}{{25}{48}{Example program screenshot when using the BASH test example}{figure.25}{}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {8.3.3}Bash}{48}{subsubsection.8.3.3}}
@@ -200,11 +203,11 @@
 \newlabel{fig:externalProgCppSample}{{26}{50}{Example program screenshot without and with the C++ test example present.}{figure.26}{}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {8.4}Modifying the program}{54}{subsection.8.4}}
 \@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.1}Development tools}{54}{subsubsection.8.4.1}}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.2}Getting yourself set up}{54}{subsubsection.8.4.2}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.2}Getting yourself set up}{55}{subsubsection.8.4.2}}
+\@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.3}Changing stuff}{55}{subsubsection.8.4.3}}
 \bibstyle{unsrt}
 \bibdata{manual}
 \bibcite{Moody2008}{1}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {8.4.3}Changing stuff}{55}{subsubsection.8.4.3}}
 \bibcite{Gault2012}{2}
 \bibcite{Geiser2007}{3}
 \bibcite{Boll2007}{4}
diff --git a/docs/manual-latex/manual.blg b/docs/manual-latex/manual.blg
index 20e2fba..e5f5fae 100644
--- a/docs/manual-latex/manual.blg
+++ b/docs/manual-latex/manual.blg
@@ -1,11 +1,13 @@
-This is BibTeX, Version 0.99d (TeX Live 2013/Debian)
-Capacity: max_strings=35307, hash_size=35307, hash_prime=30011
+This is BibTeX, Version 0.99d (TeX Live 2016/Debian)
+Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
 The top-level auxiliary file: manual.aux
 The style file: unsrt.bst
 Database file #1: manual.bib
+Warning--I didn't find a database entry for "Chen2014"
+Warning--I didn't find a database entry for "Stephenson2014"
 You've used 7 entries,
             1791 wiz_defined-function locations,
-            493 strings with 4873 characters,
+            497 strings with 4917 characters,
 and the built_in function-call counts, 1680 in all, are:
 = -- 137
 > -- 98
@@ -44,3 +46,4 @@ warning$ -- 0
 while$ -- 13
 width$ -- 8
 write$ -- 78
+(There were 2 warnings)
diff --git a/docs/manual-latex/manual.log b/docs/manual-latex/manual.log
index bf9fb79..0d201f9 100644
--- a/docs/manual-latex/manual.log
+++ b/docs/manual-latex/manual.log
@@ -1,15 +1,15 @@
-This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) (format=pdflatex 2016.5.5)  31 MAY 2016 12:21
+This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2016.11.12)  5 FEB 2017 00:04
 entering extended mode
  restricted \write18 enabled.
  %&-line parsing enabled.
 **manual.tex
 (./manual.tex
-LaTeX2e <2011/06/27>
-Babel <3.9h> and hyphenation patterns for 2 languages loaded.
+LaTeX2e <2016/03/31> patch level 3
+Babel <3.9r> and hyphenation patterns for 3 language(s) loaded.
 (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
 (/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
 )
 \c at part=\count79
 \c at section=\count80
@@ -28,31 +28,31 @@ Package: fullpage 1999/02/23 1.1 (PWD)
 \FP at margin=\skip43
 )
 (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
-Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
 
 (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
-Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
 \KV at toks@=\toks14
 )
 (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
-Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
+Package: graphics 2016/07/10 v1.0t Standard LaTeX Graphics (DPC,SPQR)
 
 (/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
-Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
 )
-(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg
-File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
+(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
 )
-Package graphics Info: Driver file: pdftex.def on input line 91.
+Package graphics Info: Driver file: pdftex.def on input line 99.
 
-(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def
-File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
+(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
+File: pdftex.def 2016/07/10 v0.06j Graphics/color for pdfTeX
 
 (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty
-Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
+Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
 )
 (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
-Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
+Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
 )
 \Gread at gobject=\count87
 ))
@@ -64,96 +64,95 @@ Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
 Package: url 2013/09/16  ver 3.4  Verb mode for urls, etc.
 )
 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
-Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX
+Package: hyperref 2016/06/24 v6.83q Hypertext links for LaTeX
 
 (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
-Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO)
+Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)
 
 
 (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
-Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO)
-Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO)
+Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
+Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
 Package hobsub Info: Skipping package `infwarerr' (already loaded).
 Package hobsub Info: Skipping package `ltxcmds' (already loaded).
-Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
+Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
 Package ifluatex Info: LuaTeX not detected.
-Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO)
+Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
 Package ifvtex Info: VTeX not detected.
-Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO)
-Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
-Package ifpdf Info: pdfTeX in PDF mode is detected.
-Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
+Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
+Package: ifpdf 2016/05/14 v3.1 Provides the ifpdf switch
+Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
 Package etexcmds Info: Could not find \expanded.
 (etexcmds)             That can mean that you are not using pdfTeX 1.50 or
 (etexcmds)             that some package has redefined \expanded.
 (etexcmds)             In the latter case, load this package earlier.
-Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO)
-Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO)
-Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO
+Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
+Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
+Package: pdftexcmds 2016/05/21 v0.22 Utility functions of pdfTeX for LuaTeX (HO
 )
 Package pdftexcmds Info: LuaTeX not detected.
 Package pdftexcmds Info: \pdf at primitive is available.
 Package pdftexcmds Info: \pdf at ifprimitive is available.
 Package pdftexcmds Info: \pdfdraftmode found.
-Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO)
-Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO
+Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
+Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
 )
-Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO)
-Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO)
+Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
+Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
 )
 Package hobsub Info: Skipping package `hobsub' (already loaded).
-Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO)
-Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO)
-Package: xcolor-patch 2011/01/30 xcolor patch
-Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO)
+Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
+Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
+Package: xcolor-patch 2016/05/16 xcolor patch
+Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
 Package atveryend Info: \enddocument detected (standard20110627).
-Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO)
-Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO)
-Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO)
+Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO)
+Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
+Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
 )
 (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty
 Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
 )
 (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty
-Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO)
+Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
 )
 (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
-Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO)
+Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
 )
 \@linkdim=\dimen105
 \Hy at linkcounter=\count88
 \Hy at pagecounter=\count89
 
 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
-File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO)
+File: pd1enc.def 2016/06/24 v6.83q Hyperref: PDFDocEncoding definition (HO)
 )
 \Hy at SavedSpaceFactor=\count90
 
 (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg
 File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
 )
-Package hyperref Info: Hyper figures OFF on input line 4443.
-Package hyperref Info: Link nesting OFF on input line 4448.
-Package hyperref Info: Hyper index ON on input line 4451.
-Package hyperref Info: Plain pages OFF on input line 4458.
-Package hyperref Info: Backreferencing OFF on input line 4463.
+Package hyperref Info: Hyper figures OFF on input line 4486.
+Package hyperref Info: Link nesting OFF on input line 4491.
+Package hyperref Info: Hyper index ON on input line 4494.
+Package hyperref Info: Plain pages OFF on input line 4501.
+Package hyperref Info: Backreferencing OFF on input line 4506.
 Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
-Package hyperref Info: Bookmarks ON on input line 4688.
+Package hyperref Info: Bookmarks ON on input line 4735.
 \c at Hy@tempcnt=\count91
-LaTeX Info: Redefining \url on input line 5041.
+LaTeX Info: Redefining \url on input line 5088.
 \XeTeXLinkMargin=\dimen106
 \Fld at menulength=\count92
 \Field at Width=\dimen107
 \Fld at charsize=\dimen108
-Package hyperref Info: Hyper figures OFF on input line 6295.
-Package hyperref Info: Link nesting OFF on input line 6300.
-Package hyperref Info: Hyper index ON on input line 6303.
-Package hyperref Info: backreferencing OFF on input line 6310.
-Package hyperref Info: Link coloring OFF on input line 6315.
-Package hyperref Info: Link coloring with OCG OFF on input line 6320.
-Package hyperref Info: PDF/A mode OFF on input line 6325.
-LaTeX Info: Redefining \ref on input line 6365.
-LaTeX Info: Redefining \pageref on input line 6369.
+Package hyperref Info: Hyper figures OFF on input line 6342.
+Package hyperref Info: Link nesting OFF on input line 6347.
+Package hyperref Info: Hyper index ON on input line 6350.
+Package hyperref Info: backreferencing OFF on input line 6357.
+Package hyperref Info: Link coloring OFF on input line 6362.
+Package hyperref Info: Link coloring with OCG OFF on input line 6367.
+Package hyperref Info: PDF/A mode OFF on input line 6372.
+LaTeX Info: Redefining \ref on input line 6412.
+LaTeX Info: Redefining \pageref on input line 6416.
 \Hy at abspage=\count93
 \c at Item=\count94
 \c at Hfootnote=\count95
@@ -162,12 +161,12 @@ LaTeX Info: Redefining \pageref on input line 6369.
 Package hyperref Message: Driver (autodetected): hpdftex.
 
 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
-File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX
+File: hpdftex.def 2016/06/24 v6.83q Hyperref driver for pdfTeX
 \Fld at listcount=\count96
 \c at bookmark@seq at number=\count97
 
 (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
-Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO)
+Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
 Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
 82.
 )
@@ -201,7 +200,7 @@ LaTeX Font Info:    ... okay on input line 14.
 LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 14.
 LaTeX Font Info:    ... okay on input line 14.
 
-(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii
+(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
 [Loading MPS to PDF converter (version 2006.09.02).]
 \scratchcounter=\count99
 \scratchdimen=\dimen111
@@ -215,15 +214,17 @@ LaTeX Font Info:    ... okay on input line 14.
 \makeMPintoPDFobject=\count104
 \everyMPtoPDFconversion=\toks17
 ) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
-Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf
+Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf
 
 (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty
-Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO)
+Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)
 )
+Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
+38.
 Package grfext Info: Graphics extension search list:
 (grfext)             [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
 G,.JBIG2,.JB2,.eps]
-(grfext)             \AppendGraphicsExtensions on input line 452.
+(grfext)             \AppendGraphicsExtensions on input line 456.
 
 (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
 File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
@@ -233,10 +234,10 @@ e
 Package hyperref Info: Link coloring OFF on input line 14.
 
 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
-Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section
+Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
 
 (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
-Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO)
+Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
 )
 \c at section@level=\count105
 )
@@ -311,7 +312,7 @@ LaTeX Font Info:    Try loading font information for OMS+cmr on input line 104.
 
 
 (/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
-File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
+File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
 )
 LaTeX Font Info:    Font shape `OMS/cmr/m/n' in size <10> not available
 (Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 104.
@@ -496,72 +497,105 @@ copy)>] [24 <./figures/exportanimDialogFrameView.png (PNG copy)>] [25] [26] [27
 
 LaTeX Warning: `!h' float specifier changed to `!ht'.
 
-[30] [31] [32]
+[30]
 
-LaTeX Warning: `!h' float specifier changed to `!ht'.
+LaTeX Warning: Citation `Moody2008' on page 31 undefined on input line 916.
+
+
+LaTeX Warning: Citation `Gault2012' on page 31 undefined on input line 923.
+
+
+LaTeX Warning: Citation `Geiser2007' on page 31 undefined on input line 927.
+
+
+LaTeX Warning: Citation `Boll2007' on page 31 undefined on input line 927.
+
+[31]
+
+LaTeX Warning: Citation `Chen2014' on page 32 undefined on input line 933.
+
+
+LaTeX Warning: Citation `Stephenson2014' on page 32 undefined on input line 933
+.
 
-[33]
 
 LaTeX Warning: `!h' float specifier changed to `!ht'.
 
-[34] [35]
-<./figures/voxel-representations.png, id=1434, 1615.03375pt x 1027.84pt>
+[32]
+
+LaTeX Warning: Citation `Stephenson07' on page 33 undefined on input line 976.
+
+
+LaTeX Warning: Citation `Hyde10' on page 33 undefined on input line 976.
+
+
+LaTeX Warning: Citation `Vaumousse03' on page 33 undefined on input line 976.
+
+[33] [34] [35]
+<./figures/voxel-representations.png, id=1423, 1615.03375pt x 1027.84pt>
 File: ./figures/voxel-representations.png Graphic file (type png)
 
 <use ./figures/voxel-representations.png>
 Package pdftex.def Info: ./figures/voxel-representations.png used on input line
- 1114.
+ 1128.
 (pdftex.def)             Requested size: 422.77664pt x 269.06708pt.
- [36] [37 <./figures/voxel-representations.png>] [38] [39] [40] [41]
-<./figures/externalProgScilab.png, id=1484, 1686.3pt x 847.165pt>
+
+
+LaTeX Warning: `!h' float specifier changed to `!ht'.
+
+[36]
+
+LaTeX Warning: `!h' float specifier changed to `!ht'.
+
+[37 <./figures/voxel-representations.png>] [38] [39] [40] [41]
+<./figures/externalProgScilab.png, id=1472, 1686.3pt x 847.165pt>
 File: ./figures/externalProgScilab.png Graphic file (type png)
 
 <use ./figures/externalProgScilab.png>
 Package pdftex.def Info: ./figures/externalProgScilab.png used on input line 13
-61.
+75.
 (pdftex.def)             Requested size: 422.77664pt x 212.38535pt.
- [42 <./figures/externalProgScilab.png>]
-[43] [44] [45]
-<./figures/externalProgPython.png, id=1505, 1465.475pt x 856.19875pt>
+ [42] [43 <./figures/externalProgScilab.png>] [44] [45]
+<./figures/externalProgPython.png, id=1493, 1465.475pt x 856.19875pt>
 File: ./figures/externalProgPython.png Graphic file (type png)
 
 <use ./figures/externalProgPython.png>
 Package pdftex.def Info: ./figures/externalProgPython.png used on input line 15
-42.
+56.
 (pdftex.def)             Requested size: 399.29463pt x 233.28014pt.
- [46 <./figures/externalProgPython.png>]
-[47] <./figures/externalProgBash.png, id=1517, 1385.175pt x 876.27374pt>
+ [46] [47 <./figures/externalProgPython.png>] <./figures/externalProgBash.png, 
+id=1505, 1385.175pt x 876.27374pt>
 File: ./figures/externalProgBash.png Graphic file (type png)
 
 <use ./figures/externalProgBash.png>
-Package pdftex.def Info: ./figures/externalProgBash.png used on input line 1616
+Package pdftex.def Info: ./figures/externalProgBash.png used on input line 1630
 .
 (pdftex.def)             Requested size: 399.29463pt x 252.5886pt.
  [48 <./figures/externalProgBash.png>]
-LaTeX Font Info:    Try loading font information for OMS+cmtt on input line 167
-3.
-LaTeX Font Info:    No file OMScmtt.fd. on input line 1673.
+LaTeX Font Info:    Try loading font information for OMS+cmtt on input line 168
+7.
+LaTeX Font Info:    No file OMScmtt.fd. on input line 1687.
 
 
 LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
 (Font)              using `OMS/cmsy/m/n' instead
-(Font)              for symbol `textbraceleft' on input line 1673.
+(Font)              for symbol `textbraceleft' on input line 1687.
 
-<./figures/externalProgCpp.png, id=1524, 2123.935pt x 839.135pt>
+[49] <./figures/externalProgCpp.png, id=1516, 2123.935pt x 839.135pt>
 File: ./figures/externalProgCpp.png Graphic file (type png)
 
 <use ./figures/externalProgCpp.png>
-Package pdftex.def Info: ./figures/externalProgCpp.png used on input line 1681.
+Package pdftex.def Info: ./figures/externalProgCpp.png used on input line 1695.
 
 (pdftex.def)             Requested size: 399.29463pt x 157.74715pt.
- [49] [50 <./figures/externalProgCpp.png>]
-[51] [52] [53] [54] (./manual.bbl [55])
-Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1926.
+ [50 <./figures/externalProgCpp.png>]
+[51] [52] [53] [54] [55] (./manual.bbl)
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1940.
  [56]
-Package atveryend Info: Empty hook `AfterLastShipout' on input line 1926.
+Package atveryend Info: Empty hook `AfterLastShipout' on input line 1940.
  (./manual.aux)
-Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1926.
-Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1926.
+Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1940.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1940.
 
 Package rerunfilecheck Info: File `manual.out' has not changed.
 (rerunfilecheck)             Checksum: 5D9DF5F8101C21D1BE54E57385EA4596;5634.
@@ -569,13 +603,19 @@ Package rerunfilecheck Info: File `manual.out' has not changed.
 
 LaTeX Font Warning: Some font shapes were not available, defaults substituted.
 
-Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1926.
+
+LaTeX Warning: There were undefined references.
+
+
+LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
+
+Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1940.
  ) 
 Here is how much of TeX's memory you used:
- 5703 strings out of 495028
- 86896 string characters out of 6181498
- 165302 words of memory out of 5000000
- 8626 multiletter control sequences out of 15000+600000
+ 5721 strings out of 494945
+ 87217 string characters out of 6181031
+ 166680 words of memory out of 5000000
+ 8727 multiletter control sequences out of 15000+600000
  13156 words of font info for 46 fonts, out of 8000000 for 9000
  14 hyphenation exceptions out of 8191
  29i,11n,28p,1058b,447s stack positions out of 5000i,500n,10000p,200000b,80000s
@@ -590,16 +630,17 @@ pe1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/pub
 lic/amsfonts/cm/cmr6.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsf
 onts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/
 cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.p
-fb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></u
-sr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/sha
-re/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></usr/share/texl
-ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/share/texlive/te
-xmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb></usr/share/texlive/texmf-di
-st/fonts/type1/public/amsfonts/cm/cmtt8.pfb>
-Output written on manual.pdf (60 pages, 4523074 bytes).
+fb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></us
+r/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/shar
+e/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/share/texl
+ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></usr/share/texlive/tex
+mf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/share/texlive/texmf-dis
+t/fonts/type1/public/amsfonts/cm/cmtt12.pfb></usr/share/texlive/texmf-dist/font
+s/type1/public/amsfonts/cm/cmtt8.pfb>
+Output written on manual.pdf (60 pages, 4532368 bytes).
 PDF statistics:
- 1676 PDF objects out of 1728 (max. 8388607)
- 1296 compressed objects within 13 object streams
- 214 named destinations out of 1000 (max. 500000)
+ 1674 PDF objects out of 1728 (max. 8388607)
+ 1293 compressed objects within 13 object streams
+ 215 named destinations out of 1000 (max. 500000)
  816 words of extra memory for PDF output out of 10000 (max. 10000000)
 
diff --git a/docs/manual-latex/manual.pdf b/docs/manual-latex/manual.pdf
index db2ac9b..8c59c15 100644
Binary files a/docs/manual-latex/manual.pdf and b/docs/manual-latex/manual.pdf differ
diff --git a/docs/manual-latex/manual.tex b/docs/manual-latex/manual.tex
index 29a8f0c..93a88ca 100644
--- a/docs/manual-latex/manual.tex
+++ b/docs/manual-latex/manual.tex
@@ -28,7 +28,7 @@
 \vspace{1.0 cm}
 
 
-{ \Huge \bfseries User manual}\\[0.4cm]
+{\Huge \bfseries User manual}\\[0.4cm]
 \vspace{1.0 cm}
 
 
@@ -40,7 +40,7 @@
 \begin{minipage}{0.3\textwidth}
 \begin{flushright} \large
 \emph{Version:} \\
- 0.0.19, May 2016\end{flushright}
+ 0.0.20, Feb 2017\end{flushright}
 \end{minipage}
 
 \vfill
@@ -327,7 +327,7 @@ To see the mass spectrum for a selected data, the ``spectrum'' filter must be us
 \end{figure}
 
 
-To display the ranged spectrum, simply use the sequence \texttt{Data$\rightarrow$Ranging$\rightarrow$Spectrum}, as shown in Figure~\ref{fig:rangedSpectrum}. To see the ions outside existing ranges, untick ``drop unranged`` from the range filter. Note that as the data is converted into a spectrum, the 3D view will disappear. To see both the spectrum and the point data at the same time, use the configuration shown in Figure~\ref{fig:rangedSpectrumWithCloud}.
+To display the ranged spectrum, simply use the sequence \texttt{Data$\rightarrow$Ranging$\rightarrow$Spectrum}, as shown in Figure~\ref{fig:rangedSpectrum}. To see the ions outside existing ranges, untick ``drop unranged'' from the range filter. Note that as the data is converted into a spectrum, the 3D view will disappear. To see both the spectrum and the point data at the same time, use the configuration shown in Figure~\ref{fig:rangedSpectrumWithCloud}.
 
 \begin{figure}[h]
 \centering
@@ -353,7 +353,7 @@ To display a composition profile, you first require a ranged dataset (see Sectio
 
 \subsection{Counting Points and measuring volume}
 
-To compute the absolute counts of the number of ions that are visible in the dataset, use the ``Ion information'' filter, as shown in Figure~\ref{fig:quickStartIonInfoLayout}. To compute the ion count, check the ``count'' box. To compute the dataset volume, select the ''volume'' checkbox, and the desired algorithm (For algorithm details see Section~\ref{sec:FilterIonInformation}). The results are displayed in the console window (Figure~\ref{fig:quickStartIonInfoLayout}).
+To compute the absolute counts of the number of ions that are visible in the dataset, use the ``Ion information'' filter, as shown in Figure~\ref{fig:quickStartIonInfoLayout}. To compute the ion count, check the ``count'' box. To compute the dataset volume, select the ``volume'' checkbox, and the desired algorithm (For algorithm details see Section~\ref{sec:FilterIonInformation}). The results are displayed in the console window (Figure~\ref{fig:quickStartIonInfoLayout}).
 
 \begin{figure}[h]
 \centering
@@ -410,9 +410,9 @@ The basic method for data flow is that a parent gives a copy of the data it has
 
 Using this method, one may create a variety of different analyses; for example, one may wish to subsample data before performing a time-consuming spatial analysis, or one may wish to clip the data to remove unwanted sections before generation of a value spectrum. The flexibility of the filter system supports this concept.
 
-Note that items in the filter tree can be moved. You may move any filter to a new parent by dragging with the mouse. In order to copy instead of move, hold down the \texttt{Ctrl} whilst moving to duplicate the filter, rather than moving it.  
+Note that items in the filter tree can be moved. You may move any filter to a new parent by dragging with the mouse. In order to copy instead of move, hold down the \texttt{Ctrl} whilst moving to duplicate the filter, rather than moving it. You can ``splice'' the node to a new location (change its parent, without moving its children) by holding down \texttt{Shift} whilst dragging.  
 
-You may also rename filters in the tree; The filter name may be used by the filter to generate its output, \emph{e.g.}\ spectrum plots will take the plot title from the filter name. 
+You may also rename filters in the tree by clicking (long-click, or three-times slow). The filter name may be used by the filter to generate its output, \emph{e.g.}\ spectrum plots will take the plot title from the filter name. 
 
 
 
@@ -467,7 +467,7 @@ For plots, you may save in either (Scalable Vector Graphic (SVG)) or ``PNG'' for
 
 Exporting Ion data can be done in several ways; you may export only the visible ions, or alternately, you may export only a subset (for example one or two ranges) of the data, depending upon the filter that the data emerged from (\emph{i.e.}\ per leaf filter). The output format will be in Big-endian ``POS'' format, as  detailed in the Appendix, Section~\ref{sec:posformat}.
 
-Modified range files may be exported in whole. Currently the only supported export format is the oak-ridge``RNG'' format
+Modified range files may be exported in whole. Currently the only supported export format is the oak-ridge ``RNG'' format
 
 Using simple animations of the 3D data can be constructed, where the current camera is orbited 360 degrees around its target location. The result is saved as an image sequence, which can be converted into an AVI using programs such as \emph{ImageJ}, or \emph{ffmpeg} to convert the constructed image sequence into a video file.
 
@@ -478,7 +478,7 @@ Finally one can export the entire analysis state, including all required data us
 \subsubsection{Ranging dialog}
 The ranging dialog allows for the complete editing of range files within the program. The range files can be arbitrarily modified, as desired. To access the range dialog, this can be obtained from the Edit->Range menu. However, this is only accessible if there are range and spectra available from within the range tree. Note that, at this time (0.0.15), the altered ranges will not be persistent between 3Depict sessions. An initial range file that can be loaded into the filter tree is requ [...]
 
-The dialog is split in two, with a tab panel on the left and a spectrum on the right. If there are several spectra that are rangeable, the spectrum can be selected from the tab panel. Once selected, any existing ranges can be moved and interacted with using the right hand view. Unlike the ranging area, the ranges shown in the spectrum can be moved arbitrarily - \emph{i.e.}, they may overlap, or otherwise be moved past one another. This allows for completely unconstrained editing of the s [...]
+The dialog is split in two, with a tab panel on the left and a spectrum on the right. If there are several spectra that are rangeable, the spectrum can be selected from the tab panel. Once selected, any existing ranges can be moved and interacted with using the right hand view. Unlike the ranging area, the ranges shown in the spectrum can be moved arbitrarily - \emph{i.e.}, they may overlap, or otherwise be moved past one another. This allows for completely unconstrained editing of the s [...]
 
 New species and ranges can be added using the Add/Remove buttons in the ``Ranges'' tab. First select the grid you wish to edit, then add the new range. Note that if the range is not fully specified, it will be highlighted in the grid - you must set each field in the grid prior to use. 
 
@@ -546,7 +546,7 @@ By setting the start and end frame of the property, as well as the values desire
 \end{center}
 \end{figure}
 
-The properties selected for a filter will be linearly interpolated from start to finish, so, for example, setting a property at frame 1 to ``1'', and frame 10 to ``10'', each frame between will change as 1,2,3...,9,10. This can be done for multiple properties at any one time. Similarly for colours, the interpolation will be done linearly on the colour's red/green/blue value, so, similarly, colours can also be animated. Whilst linear interpolation can be done for colours, points and digit [...]
+The properties selected for a filter will be linearly interpolated from start to finish, so, for example, setting a property at frame 1 to ``1'', and frame 10 to ``10'', each frame between will change as 1,2,3\ldots,9,10. This can be done for multiple properties at any one time. Similarly for colours, the interpolation will be done linearly on the colour's red/green/blue value, so, similarly, colours can also be animated. Whilst linear interpolation can be done for colours, points and di [...]
 
 
 \begin{figure}
@@ -571,9 +571,9 @@ In this case either each string must be individually specified, as shown in the
 \end{center}
 \end{figure}
 
-Once the desired properties have been set in the filter view, then one proceeds to the frame view in order to review the animation by examining the properties that will be obtained in each filter, frame-by-frame. If you are familiar with this dialog, then it is easy to simply examine this quickly to ensure that the properties that were intended have been obtained. Now, having ensured that this is the case, it can be seen that the "OK" button cannot be pressed at this time. Firstly, the d [...]
+Once the desired properties have been set in the filter view, then one proceeds to the frame view in order to review the animation by examining the properties that will be obtained in each filter, frame-by-frame. If you are familiar with this dialog, then it is easy to simply examine this quickly to ensure that the properties that were intended have been obtained. Now, having ensured that this is the case, it can be seen that the "OK" button cannot be pressed at this time. Firstly, the d [...]
 ,
- 1.0,1.1... , when the sampling value exceeds 1~MB, there is no effect on the computation, thus the program will not save data on frames that do not alter the output.
+ 1.0,1.1\ldots , when the sampling value exceeds 1~MB, there is no effect on the computation, thus the program will not save data on frames that do not alter the output.
 
 \section{Detailed Reference}
 \subsection{Data types}
@@ -620,7 +620,7 @@ The data load filter injects 3D point+value data into the analysis tree. Points
 \item \textbf{Enabled}: Disable/enable the filter.
 
 
-\item \textbf{Monitor}: Monitors the timestamp of the input file for changes -- if the timestamp on the file changes, then the data file will be reloaded, and the filter tree refreshed. This is useful when generating data files programatically.
+\item \textbf{Monitor}: Monitors the timestamp of the input file for changes -- if the timestamp on the file changes, then the data file will be reloaded, and the filter tree refreshed. This is useful when generating data files programmatically.
 \item  \textbf{Ion colour}: Colour of the ions from the 3D view.
 \item  \textbf{Ion size}: Default size of points in 3D view.
 \item  \textbf{Filename}: name of the file to load the data form.
@@ -632,7 +632,7 @@ Information on acceptable data file formats is provided in the Appendix, in Sect
 
 {%
 \newcommand{\mc}[3]{\multicolumn{#1}{#2}{#3}}
-\begin{table}[!Htb]
+\begin{table}[!htb]
 \caption{Propagation matrix for Data load.}
 
 \begin{center}
@@ -846,8 +846,7 @@ If the drawing primitive is set to be shown, then a drawable stream will be emit
 		\item \textbf{Flat TOF} : this mode uses a sqrt-mass (as mass is proportional to the square of the TOF) extract and fit method to estimate the background in the spectrum. This uses the data between the specified start and end mass to perform fitting. If insufficient data has been obtained to validate the fit (binned data must form a gaussian distribution, anderson test), then no corrected spectrum is created, and a message is generated.  
 		\item \textbf{Mass Start} : This specifies the start of the cutoff window for choosing the data. The window must span a region of background.
 		\item \textbf{Mass End} : This specifies the end of the cutoff window for choosing the data. 
-.\end{itemize} 
-e that for 
+	\end{itemize} 
 \end{itemize}
 {%
 \newcommand{\mc}[3]{\multicolumn{#1}{#2}{#3}}
@@ -916,17 +915,32 @@ Drawable will be emitted if the ``Show Primitive'' option is selected.
 \item \textbf{Axial distribution} : Computes the so-called ``directional RDF'' or 1D RDF, which can be used to measure spatial correlations between points. 
 \item \textbf{Binomial distribution} : Computes the binomial distribution probabilities for the dataset, using the method of Moody et al~\cite{Moody2008}.
 \item \textbf{Point em/re-placement} : Replace or load points with specified points from a file, using subtract, intersect and union modes
+\item \textbf{Local concentration} : Compute the local chemistry of selected species around each point in the dataset, and assign this value to the point.
 \end{itemize}
 
+
+
 Local density and density filtering algorithms are relatively simple, and mostly are self-contained concepts. This can be used to identify the local density in your dataset, which in the case of APT, originates due to limitations in the technique. For the Radial Distribution Function (RDF) algorithm , this can be used to examine local correlations between points, which may or may not exist in your dataset. The  RDF technique is covered in several standard textbooks on APT~\cite{Gault2012}. 
 
 \paragraph{Radial Distribution:} The radial distribution function counts pair-pair distances between species. This can be used to find local tests whereby certain point types are more likely to be  present at given distances from one another. Note that the distribution often requires normalisation by $y=x^2$, at this time this is not implemented and needs to be done manually.
 
 \paragraph{Axial Distribution:} Axial distribution functions are covered in technical literature where they find use in APT and be referred to via a number of differing names, such as ``SDM''s~\cite{Geiser2007}, atom-vicinity~\cite{Boll2007}, or directional pair-correlation functions. The axial distribution function implementation in \emph{3Depict}, allows for users to select and drag out the region to be analysed, with the axis of the cylinder providing both the cropping orientation and [...]
 
-\paragraph{Binomial:} The binomial distribution function can be used to test for randomness in the spatial distribution of the points. The program computes a ``p'' value, which is the probability that the observed data was drawn from a  randomly distributed (at the scale of the analysis) set of values on fixed data points. Grouping is performed by a grid-extrusion algorithm, which assigns each set of points in the dataset to a given bin, and thus a given count in the output histogram. Th [...]
+\paragraph{Binomial:} The binomial distribution function can be used to test for randomness in the spatial distribution of the points. The program computes a ``p'' value, which is the probability that the observed data was drawn from a  randomly distributed (at the scale of the analysis) set of values on fixed data points. Grouping is performed by a grid-extrusion algorithm, which assigns each set of points in the dataset to a given bin, and thus a given count in the output histogram. Th [...]
+
+\paragraph{Point em/re-placement :}This function allows for merging points in the current data, $A$ from another file, $B$. There are several operating modes, ``subtract'',``intersect'' and ``union''. In the subtract mode, points which have a matching element in $B$ will be removed. In intersect mode, \emph{only} points that have a matching point in the file will be retained - the value to be assigned to the point is taken from $B$. Similarly, in union mode, both $A$ and $B$ are loaded,  [...]
+
+\paragraph{Local concentration :} This mode computes the local concentration surrounding each atom, by identifying nearest neighbour points species and then using the NN points to assign a concentration value for that atom, similar to the calculations of Chen~\cite{Chen2014} and Stephenson~\cite{Stephenson2014} (Open aces).  To perform this calculation, there are two types of points ``Source'' and ``target'', and there are two sub-types of ``target'' as given below:
+
+\begin{itemize}
+\item \emph{Source} - Points of this species type are used to initiate searching.
+\item \emph{Target} - These points are included in points that are allowed to match. Other points are ignored. Target points can be assigned into either, or both, of two categories: \emph{numerator},$N$ or \emph{denominator}, $D$. The categories can be chosen from a list of items in the filter properties.
+\end{itemize}
+
+The value of the concentration is determined using the equation $C = \frac{||N||}{|||D||} \times 100$, where $C$ is concentration in percent. I.e., the concentration is the number of numerator points divided by the number of numerator and denominator points. Note that all points that are zero distance from the source point skipped for the calculation of $N$ and $D$. If ${ ||D||}$ is zero, then $C$ is undefined according to the previous equation, and in this case $C$ is set to $-1$. In ne [...]
+
+As a consequence of the definition of numerator and denominator, if these selections are the same, then $||N|| == ||D||$, and all ions will be end up being assigned a concentration of $100\%$
 
-\paragraph{Point em/re-placement} : This function allows for merging points in the current data, $A$ from another file, $B$. There are several operating modes, ``subtract'',``intersect'' and ``union''. In the subtract mode, points which have a matching element in $B$ will be removed. In intersect mode, \emph{only} points that have a matching point in the file will be retained - the value to be assigned to the point is taken from $B$. Similarly, in union mode, both $A$ and $B$ are loaded, [...]
 {%
 \newcommand{\mc}[3]{\multicolumn{#1}{#2}{#3}}
 \begin{table}[!h]
@@ -1225,9 +1239,9 @@ This document is licenced under the Creative Commons 3.0 ShareAlike licence. \ur
 \label{sec:3DepictPaths}
 \emph{3Depict} uses one of several different paths for storing configuration and autosave information, depending upon your host operating system. 
 \begin{itemize}
- \item Linux-like : your home directory, in th .3Depict folder. \emph{e.g.} \path{/home/someuser/.3Depict/}
+ \item Linux-like : your home directory, in the .3Depict folder. \emph{e.g.} \path{/home/someuser/.3Depict/}
  \item Mac OSX :\path{/Users/someuser/Documents/.3Depict/}
- \item Windows : usually \path{C:\Documents} \path{and} \path{settings\someuser\Documents\.3Depict\} %Sigh - path macro doesn't work with whitespace!
+ \item Windows : usually \path{C:\Documents} \path{and} \path{settings\someuser\Documents\.3Depict\} , or  \path{C:\Users\someuser\Documents\.3Depict} %Sigh - path macro doesn't work with whitespace!
 \end{itemize}
 
 \subsection{File formats}
@@ -1555,7 +1569,7 @@ import os
 
 #Function to append the contents of one file to another
 def appendFile(sourceFile,targetFile):
-	try : 
+	try :
         fileSrc = open(sourceFile,"rb")
         fileTarget = open(targetFile,"ab")
     
@@ -1652,7 +1666,7 @@ exit 0
 
 The output from running the refresh cycle is given, as it appears on the program console (to replicate this mac/windows users may need to redirect the output to a file in order to see the output text (this can be done in bash), or mac users may launch \emph{3Depict} from terminal.app).
 
-Firstly, note that the \emph{same file} is written to each time - \emph{3Depict} does not delete the ``script-output-3Depict-input.pos``, so if this is named differently between refreshes, multiple pos files would be generated and \emph{3Depict} would load them all. Finally, the statement \texttt{exit 0} is used to ensure that \emph{3Depict} knows that the program terminated successfully. Recall that returning a nonzero value will inform \emph{3Depict} that some error occurred during pro [...]
+Firstly, note that the \emph{same file} is written to each time - \emph{3Depict} does not delete the ``script-output-3Depict-input.pos'', so if this is named differently between refreshes, multiple pos files would be generated and \emph{3Depict} would load them all. Finally, the statement \texttt{exit 0} is used to ensure that \emph{3Depict} knows that the program terminated successfully. Recall that returning a nonzero value will inform \emph{3Depict} that some error occurred during pro [...]
 
 \begin{verbatim}
 Working Directory: /home/username/3Depict/src
@@ -1668,7 +1682,7 @@ appended file to output.pos
 \end{verbatim}
 
 \subsubsection{C/C++}
-For \emph{C/C++}, an example is given. The example here is somewhat more complex than the rest, as in this case, we do not simply treat the data as a series of bytes, bt we additionally perform the data transformation steps required to get it into a usable form (ie as a list of correctly ordered bytes in memory, in a useful variable). This was not done for the previous examples.
+For \emph{C/C++}, an example is given. The example here is somewhat more complex than the rest, as in this case, we do not simply treat the data as a series of bytes, but we additionally perform the data transformation steps required to get it into a usable form (\emph{i.e.} as a list of correctly ordered bytes in memory, in a useful variable). This was not done for the previous examples.
 
 Note that as C/C++ are compiled languages, it is necessary to be able to be able to generate a binary (executable) version of the program - this procedure is not described here, but users are encouraged to be comfortable with this process before attempting to implement the following examples for themselves. The exact procedure for doing this is outside of the scope for this document - you will require a compiler, such as \emph{gcc}'s \emph{g++} compiler, which you will most likely want t [...]
 
@@ -1907,7 +1921,7 @@ If you are running a Debian or Debian derived distribution, all you need to do i
 Once this is done, you can download the latest source code from the website, unzip it, and then run \texttt{./configure \&\& make}. This builds the program. You can now modify any of the files, then recompile it simply running \texttt{make}. By examining the options listed by \texttt{./configure --help}, the configuration of the program can be altered to some extent (\emph{e.g.}, enable/disable debug checks, or computational parallelism).
 
 \subsubsection{Changing stuff}
-As \emph{3Depict} is open source, it can be modified in the case any error fixes, extentions or other alterations to the program are  desired. However, a certain level of prerequisite knowledge is necessary to effectively alter the program. If altering code in \emph{3Depict}, You should be familiar with C++, as well as compiling multi-file programs. Depending upon the modification, you may need to have some familiarity with the mathematical problems you need to solve and with libraries u [...]
+As \emph{3Depict} is open source, it can be modified in the case any error fixes, extensions or other alterations to the program are  desired. However, a certain level of prerequisite knowledge is necessary to effectively alter the program. If altering code in \emph{3Depict}, You should be familiar with C++, as well as compiling multi-file programs. Depending upon the modification, you may need to have some familiarity with the mathematical problems you need to solve and with libraries u [...]
 
 
 The internal structure of the program can be more easily seen from the Doxygen documentation, which is listed online, or can be generated from the source files themselves via the Doxygen tool. If you want to have a play around with the code, try getting it to compile first, before trying to change anything. Feel free to drop us a line on the website to ask about the change you want to make, and how it could be most easily achieved in the code.
diff --git a/docs/manual-latex/manual.toc b/docs/manual-latex/manual.toc
index edb77f1..6876036 100644
--- a/docs/manual-latex/manual.toc
+++ b/docs/manual-latex/manual.toc
@@ -64,34 +64,35 @@
 \contentsline {paragraph}{Radial Distribution:}{31}{section*.4}
 \contentsline {paragraph}{Axial Distribution:}{32}{section*.5}
 \contentsline {paragraph}{Binomial:}{32}{section*.6}
-\contentsline {paragraph}{Point em/re-placement}{32}{section*.7}
-\contentsline {subsubsection}{\numberline {5.2.10}Clustering analysis}{32}{subsubsection.5.2.10}
+\contentsline {paragraph}{Point em/re-placement :}{32}{section*.7}
+\contentsline {paragraph}{Local concentration :}{32}{section*.8}
+\contentsline {subsubsection}{\numberline {5.2.10}Clustering analysis}{33}{subsubsection.5.2.10}
 \contentsline {subsubsection}{\numberline {5.2.11}External Program}{34}{subsubsection.5.2.11}
-\contentsline {paragraph}{Command syntax: }{34}{section*.8}
-\contentsline {paragraph}{Prior to program execution:}{34}{section*.9}
-\contentsline {paragraph}{After program execution:}{34}{section*.10}
+\contentsline {paragraph}{Command syntax: }{34}{section*.9}
+\contentsline {paragraph}{Prior to program execution:}{34}{section*.10}
+\contentsline {paragraph}{After program execution:}{35}{section*.11}
 \contentsline {subsubsection}{\numberline {5.2.12}Annotation}{35}{subsubsection.5.2.12}
-\contentsline {paragraph}{Text}{35}{section*.11}
-\contentsline {paragraph}{Arrow, Arrow with Text}{35}{section*.12}
-\contentsline {paragraph}{Angle Measurement}{35}{section*.13}
+\contentsline {paragraph}{Text}{35}{section*.12}
+\contentsline {paragraph}{Arrow, Arrow with Text}{35}{section*.13}
+\contentsline {paragraph}{Angle Measurement}{35}{section*.14}
 \contentsline {subsubsection}{\numberline {5.2.13}Voxels}{36}{subsubsection.5.2.13}
 \contentsline {subsubsection}{\numberline {5.2.14}Ion Colour}{37}{subsubsection.5.2.14}
-\contentsline {subsubsection}{\numberline {5.2.15}Ion Transform}{37}{subsubsection.5.2.15}
+\contentsline {subsubsection}{\numberline {5.2.15}Ion Transform}{38}{subsubsection.5.2.15}
 \contentsline {section}{\numberline {6}Attributions}{38}{section.6}
-\contentsline {section}{\numberline {7}Licence}{38}{section.7}
-\contentsline {section}{\numberline {8}Appendices}{38}{section.8}
-\contentsline {subsection}{\numberline {8.1}Paths}{38}{subsection.8.1}
+\contentsline {section}{\numberline {7}Licence}{39}{section.7}
+\contentsline {section}{\numberline {8}Appendices}{39}{section.8}
+\contentsline {subsection}{\numberline {8.1}Paths}{39}{subsection.8.1}
 \contentsline {subsection}{\numberline {8.2}File formats}{39}{subsection.8.2}
 \contentsline {subsubsection}{\numberline {8.2.1}State file}{39}{subsubsection.8.2.1}
 \contentsline {subsubsection}{\numberline {8.2.2}Range files}{40}{subsubsection.8.2.2}
 \contentsline {subsubsection}{\numberline {8.2.3}POS files}{41}{subsubsection.8.2.3}
 \contentsline {subsubsection}{\numberline {8.2.4}Text files}{41}{subsubsection.8.2.4}
-\contentsline {subsection}{\numberline {8.3}External Program Examples}{41}{subsection.8.3}
+\contentsline {subsection}{\numberline {8.3}External Program Examples}{42}{subsection.8.3}
 \contentsline {subsubsection}{\numberline {8.3.1}Scilab}{42}{subsubsection.8.3.1}
 \contentsline {subsubsection}{\numberline {8.3.2}Python}{46}{subsubsection.8.3.2}
 \contentsline {subsubsection}{\numberline {8.3.3}Bash}{48}{subsubsection.8.3.3}
 \contentsline {subsubsection}{\numberline {8.3.4}C/C++}{49}{subsubsection.8.3.4}
 \contentsline {subsection}{\numberline {8.4}Modifying the program}{54}{subsection.8.4}
 \contentsline {subsubsection}{\numberline {8.4.1}Development tools}{54}{subsubsection.8.4.1}
-\contentsline {subsubsection}{\numberline {8.4.2}Getting yourself set up}{54}{subsubsection.8.4.2}
+\contentsline {subsubsection}{\numberline {8.4.2}Getting yourself set up}{55}{subsubsection.8.4.2}
 \contentsline {subsubsection}{\numberline {8.4.3}Changing stuff}{55}{subsubsection.8.4.3}
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..e69de29
diff --git a/locales/de_DE/LC_MESSAGES/3Depict.mo b/locales/de_DE/LC_MESSAGES/3Depict.mo
index d746b34..630c294 100644
Binary files a/locales/de_DE/LC_MESSAGES/3Depict.mo and b/locales/de_DE/LC_MESSAGES/3Depict.mo differ
diff --git a/locales/es_ES/LC_MESSAGES/3Depict.mo b/locales/es_ES/LC_MESSAGES/3Depict.mo
new file mode 100644
index 0000000..44879bd
Binary files /dev/null and b/locales/es_ES/LC_MESSAGES/3Depict.mo differ
diff --git a/locales/fr_FR/LC_MESSAGES/3Depict.mo b/locales/fr_FR/LC_MESSAGES/3Depict.mo
new file mode 100644
index 0000000..fd89bc3
Binary files /dev/null and b/locales/fr_FR/LC_MESSAGES/3Depict.mo differ
diff --git a/m4/ax_compiler_vendor.m4 b/m4/ax_compiler_vendor.m4
new file mode 100644
index 0000000..39ca3c0
--- /dev/null
+++ b/m4/ax_compiler_vendor.m4
@@ -0,0 +1,87 @@
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_COMPILER_VENDOR
+#
+# DESCRIPTION
+#
+#   Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
+#   hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
+#   watcom, etc. The vendor is returned in the cache variable
+#   $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj at alum.mit.edu>
+#   Copyright (c) 2008 Matteo Frigo
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 15
+
+AC_DEFUN([AX_COMPILER_VENDOR],
+[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
+  dnl Please add if possible support to ax_compiler_version.m4
+  [# note: don't check for gcc first since some other compilers define __GNUC__
+  vendors="intel:     __ICC,__ECC,__INTEL_COMPILER
+           ibm:       __xlc__,__xlC__,__IBMC__,__IBMCPP__
+           pathscale: __PATHCC__,__PATHSCALE__
+           clang:     __clang__
+           cray:      _CRAYC
+           fujitsu:   __FUJITSU
+           gnu:       __GNUC__
+           sun:       __SUNPRO_C,__SUNPRO_CC
+           hp:        __HP_cc,__HP_aCC
+           dec:       __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
+           borland:   __BORLANDC__,__CODEGEARC__,__TURBOC__
+           comeau:    __COMO__
+           kai:       __KCC
+           lcc:       __LCC__
+           sgi:       __sgi,sgi
+           microsoft: _MSC_VER
+           metrowerks: __MWERKS__
+           watcom:    __WATCOMC__
+           portland:  __PGI
+	   tcc:       __TINYC__
+           unknown:   UNKNOWN"
+  for ventest in $vendors; do
+    case $ventest in
+      *:) vendor=$ventest; continue ;;
+      *)  vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
+    esac
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
+      #if !($vencpp)
+        thisisanerror;
+      #endif
+    ])], [break])
+  done
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
+ ])
+])
diff --git a/m4/ax_compiler_version.m4 b/m4/ax_compiler_version.m4
new file mode 100644
index 0000000..10ac775
--- /dev/null
+++ b/m4/ax_compiler_version.m4
@@ -0,0 +1,492 @@
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_compiler_version.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_COMPILER_VERSION
+#
+# DESCRIPTION
+#
+#   This macro retrieves the compiler version and returns it in the cache
+#   variable $ax_cv_c_compiler_version for C and $ax_cv_cxx_compiler_version
+#   for C++.
+#
+#   Version is returned as epoch:major.minor.patchversion
+#
+#   Epoch is used in order to have an increasing version number in case of
+#   marketing change.
+#
+#   Epoch use: * borland compiler use chronologically 0turboc for turboc
+#   era,
+#
+#     1borlanc BORLANC++ before 5, 2cppbuilder for cppbuilder era,
+#     3borlancpp for return of BORLANC++ (after version 5.5),
+#     4cppbuilder for cppbuilder with year version,
+#     and 5xe for XE era.
+#
+#   An empty string is returned otherwise.
+#
+# LICENSE
+#
+#   Copyright (c) 2014 Bastien ROUCARIES <roucaries.bastien+autoconf at gmail.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 4
+
+# for intel
+AC_DEFUN([_AX_COMPILER_VERSION_INTEL],
+  [ dnl
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    [__INTEL_COMPILER/100],,
+    AC_MSG_FAILURE([[[$0]] unknown intel compiler version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    [(__INTEL_COMPILER%100)/10],,
+    AC_MSG_FAILURE([[[$0]] unknown intel compiler version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    [(__INTEL_COMPILER%10)],,
+    AC_MSG_FAILURE([[[$0]] unknown intel compiler version]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# for IBM
+AC_DEFUN([_AX_COMPILER_VERSION_IBM],
+  [ dnl
+  dnl check between z/OS C/C++  and XL C/C++
+  AC_COMPILE_IFELSE([
+    AC_LANG_PROGRAM([],
+      [
+        #if defined(__COMPILER_VER__)
+        choke me;
+        #endif
+      ])],
+    [
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+        [__xlC__/100],,
+      	AC_MSG_FAILURE([[[$0]] unknown IBM compiler major version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+        [__xlC__%100],,
+      	AC_MSG_FAILURE([[[$0]] unknown IBM compiler minor version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+        [__xlC_ver__/0x100],,
+      	AC_MSG_FAILURE([[[$0]] unknown IBM compiler patch version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_build,
+        [__xlC_ver__%0x100],,
+      	AC_MSG_FAILURE([[[$0]] unknown IBM compiler build version]))
+      ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_build"
+    ],
+    [
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+        [__xlC__%1000],,
+      	AC_MSG_FAILURE([[[$0]] unknown IBM compiler patch version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+        [(__xlC__/10000)%10],,
+      	AC_MSG_FAILURE([[[$0]] unknown IBM compiler minor version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+        [(__xlC__/100000)%10],,
+      	AC_MSG_FAILURE([[[$0]] unknown IBM compiler major version]))
+      ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+    ])
+])
+
+# for pathscale
+AC_DEFUN([_AX_COMPILER_VERSION_PATHSCALE],[
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    __PATHCC__,,
+    AC_MSG_FAILURE([[[$0]] unknown pathscale major]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    __PATHCC_MINOR__,,
+    AC_MSG_FAILURE([[[$0]] unknown pathscale minor]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    [__PATHCC_PATCHLEVEL__],,
+    AC_MSG_FAILURE([[[$0]] unknown pathscale patch level]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# for clang
+AC_DEFUN([_AX_COMPILER_VERSION_CLANG],[
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    __clang_major__,,
+    AC_MSG_FAILURE([[[$0]] unknown clang major]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    __clang_minor__,,
+    AC_MSG_FAILURE([[[$0]] unknown clang minor]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    [__clang_patchlevel__],,0)
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# for crayc
+AC_DEFUN([_AX_COMPILER_VERSION_CRAY],[
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    _RELEASE,,
+    AC_MSG_FAILURE([[[$0]] unknown crayc release]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    _RELEASE_MINOR,,
+    AC_MSG_FAILURE([[[$0]] unknown crayc minor]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor"
+  ])
+
+# for fujitsu
+AC_DEFUN([_AX_COMPILER_VERSION_FUJITSU],[
+  AC_COMPUTE_INT(ax_cv_[]_AC_LANG_ABBREV[]_compiler_version,
+                 __FCC_VERSION,,
+		 AC_MSG_FAILURE([[[$0]]unknown fujitsu release]))
+  ])
+
+# for GNU
+AC_DEFUN([_AX_COMPILER_VERSION_GNU],[
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    __GNUC__,,
+    AC_MSG_FAILURE([[[$0]] unknown gcc major]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    __GNUC_MINOR__,,
+    AC_MSG_FAILURE([[[$0]] unknown gcc minor]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    [__GNUC_PATCHLEVEL__],,
+    AC_MSG_FAILURE([[[$0]] unknown gcc patch level]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# For sun
+AC_DEFUN([_AX_COMPILER_VERSION_SUN],[
+  m4_define([_AX_COMPILER_VERSION_SUN_NUMBER],
+            [
+	     #if defined(__SUNPRO_CC)
+	     __SUNPRO_CC
+	     #else
+	     __SUNPRO_C
+	     #endif
+	    ])
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_until59,
+    !!(_AX_COMPILER_VERSION_SUN_NUMBER < 0x1000),,
+    AC_MSG_FAILURE([[[$0]] unknown sun release version]))
+  AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_until59" = X1],
+    [dnl
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+        _AX_COMPILER_VERSION_SUN_NUMBER % 0x10,,
+	AC_MSG_FAILURE([[[$0]] unknown sun patch version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+        (_AX_COMPILER_VERSION_SUN_NUMBER / 0x10) % 0x10,,
+        AC_MSG_FAILURE([[[$0]] unknown sun minor version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+        (_AX_COMPILER_VERSION_SUN_NUMBER / 0x100),,
+        AC_MSG_FAILURE([[[$0]] unknown sun major version]))
+    ],
+    [dnl
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+        _AX_COMPILER_VERSION_SUN_NUMBER % 0x10,,
+        AC_MSG_FAILURE([[[$0]] unknown sun patch version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+        (_AX_COMPILER_VERSION_SUN_NUMBER / 0x100) % 0x100,,
+        AC_MSG_FAILURE([[[$0]] unknown sun minor version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+        (_AX_COMPILER_VERSION_SUN_NUMBER / 0x1000),,
+        AC_MSG_FAILURE([[[$0]] unknown sun major version]))
+    ])
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+])
+
+AC_DEFUN([_AX_COMPILER_VERSION_HP],[
+  m4_define([_AX_COMPILER_VERSION_HP_NUMBER],
+            [
+	     #if defined(__HP_cc)
+	     __HP_cc
+	     #else
+	     __HP_aCC
+	     #endif
+	    ])
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_untilA0121,
+    !!(_AX_COMPILER_VERSION_HP_NUMBER <= 1),,
+    AC_MSG_FAILURE([[[$0]] unknown hp release version]))
+  AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_untilA0121" = X1],
+    [dnl By default output last version with this behavior.
+     dnl it is so old
+      ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="01.21.00"
+    ],
+    [dnl
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+        (_AX_COMPILER_VERSION_HP_NUMBER % 100),,
+        AC_MSG_FAILURE([[[$0]] unknown hp release version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+        ((_AX_COMPILER_VERSION_HP_NUMBER / 100)%100),,
+        AC_MSG_FAILURE([[[$0]] unknown hp minor version]))
+      AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+        ((_AX_COMPILER_VERSION_HP_NUMBER / 10000)%100),,
+        AC_MSG_FAILURE([[[$0]] unknown hp major version]))
+      ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+    ])
+])
+
+AC_DEFUN([_AX_COMPILER_VERSION_DEC],[dnl
+  m4_define([_AX_COMPILER_VERSION_DEC_NUMBER],
+            [
+	     #if defined(__DECC_VER)
+	     __DECC_VER
+	     #else
+	     __DECCXX_VER
+	     #endif
+	    ])
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    (_AX_COMPILER_VERSION_DEC_NUMBER % 10000),,
+    AC_MSG_FAILURE([[[$0]] unknown dec release version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    ((_AX_COMPILER_VERSION_DEC_NUMBER / 100000UL)%100),,
+    AC_MSG_FAILURE([[[$0]] unknown dec minor version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    ((_AX_COMPILER_VERSION_DEC_NUMBER / 10000000UL)%100),,
+    AC_MSG_FAILURE([[[$0]] unknown dec major version]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# borland
+AC_DEFUN([_AX_COMPILER_VERSION_BORLAND],[dnl
+  m4_define([_AX_COMPILER_VERSION_TURBOC_NUMBER],
+            [
+	     #if defined(__TURBOC__)
+	     __TURBOC__
+	     #else
+	     choke me
+	     #endif
+	    ])
+  m4_define([_AX_COMPILER_VERSION_BORLANDC_NUMBER],
+            [
+	     #if defined(__BORLANDC__)
+	     __BORLANDC__
+	     #else
+	     __CODEGEARC__
+	     #endif
+	    ])
+ AC_COMPILE_IFELSE(
+   [AC_LANG_PROGRAM(,
+     _AX_COMPILER_VERSION_TURBOC_NUMBER)],
+   [dnl TURBOC
+     AC_COMPUTE_INT(
+       _ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw,
+       _AX_COMPILER_VERSION_TURBOC_NUMBER,,
+       AC_MSG_FAILURE([[[$0]] unknown turboc version]))
+     AS_IF(
+       [test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw -lt 661 || test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw -gt 1023],
+       [dnl compute normal version
+        AC_COMPUTE_INT(
+	  _ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+	  _AX_COMPILER_VERSION_TURBOC_NUMBER % 0x100,,
+	  AC_MSG_FAILURE([[[$0]] unknown turboc minor version]))
+	AC_COMPUTE_INT(
+	  _ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+	  (_AX_COMPILER_VERSION_TURBOC_NUMBER/0x100)%0x100,,
+	  AC_MSG_FAILURE([[[$0]] unknown turboc major version]))
+	ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor"],
+      [dnl special version
+       AS_CASE([$_ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw],
+         [661],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:1.00"],
+	 [662],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:1.01"],
+         [663],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:2.00"],
+	 [
+	 AC_MSG_WARN([[[$0]] unknown turboc version between 0x295 and 0x400 please report bug])
+	 ax_cv_[]_AC_LANG_ABBREV[]_compiler_version=""
+	 ])
+      ])
+    ],
+    # borlandc
+    [
+    AC_COMPUTE_INT(
+      _ax_[]_AC_LANG_ABBREV[]_compiler_version_borlandc_raw,
+      _AX_COMPILER_VERSION_BORLANDC_NUMBER,,
+      AC_MSG_FAILURE([[[$0]] unknown borlandc version]))
+    AS_CASE([$_ax_[]_AC_LANG_ABBREV[]_compiler_version_borlandc_raw],
+      dnl BORLANC++ before 5.5
+      [512] ,[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:2.00"],
+      [1024],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:3.00"],
+      [1024],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:3.00"],
+      [1040],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:3.1"],
+      [1106],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:4.0"],
+      [1280],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:5.0"],
+      [1312],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:5.02"],
+      dnl C++ Builder era
+      [1328],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="2cppbuilder:3.0"],
+      [1344],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="2cppbuilder:4.0"],
+      dnl BORLANC++ after 5.5
+      [1360],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="3borlancpp:5.5"],
+      [1361],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="3borlancpp:5.51"],
+      [1378],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="3borlancpp:5.6.4"],
+      dnl C++ Builder with year number
+      [1392],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2006"],
+      [1424],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2007"],
+      [1555],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2009"],
+      [1569],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2010"],
+      dnl XE version
+      [1584],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe"],
+      [1600],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe:2"],
+      [1616],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe:3"],
+      [1632],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe:4"],
+      [
+      AC_MSG_WARN([[[$0]] Unknow borlanc compiler version $_ax_[]_AC_LANG_ABBREV[]_compiler_version_borlandc_raw please report bug])
+      ])
+    ])
+  ])
+
+# COMO
+AC_DEFUN([_AX_COMPILER_VERSION_COMEAU],
+  [ dnl
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    [__COMO_VERSION__%100],,
+    AC_MSG_FAILURE([[[$0]] unknown comeau compiler minor version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    [(__COMO_VERSION__/100)%10],,
+    AC_MSG_FAILURE([[[$0]] unknown comeau compiler major version]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor"
+  ])
+
+# KAI
+AC_DEFUN([_AX_COMPILER_VERSION_KAI],[
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    [__KCC_VERSION%100],,
+    AC_MSG_FAILURE([[[$0]] unknown kay compiler patch version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    [(__KCC_VERSION/100)%10],,
+    AC_MSG_FAILURE([[[$0]] unknown kay compiler minor version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    [(__KCC_VERSION/1000)%10],,
+    AC_MSG_FAILURE([[[$0]] unknown kay compiler major version]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+dnl LCC
+dnl LCC does not output version...
+
+# SGI
+AC_DEFUN([_AX_COMPILER_VERSION_SGI],[
+   m4_define([_AX_COMPILER_VERSION_SGI_NUMBER],
+            [
+	     #if defined(_COMPILER_VERSION)
+	     _COMPILER_VERSION
+	     #else
+	     _SGI_COMPILER_VERSION
+	     #endif
+	    ])
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    [_AX_COMPILER_VERSION_SGI_NUMBER%10],,
+    AC_MSG_FAILURE([[[$0]] unknown SGI compiler patch version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    [(_AX_COMPILER_VERSION_SGI_NUMBER/10)%10],,
+    AC_MSG_FAILURE([[[$0]] unknown SGI compiler minor version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    [(_AX_COMPILER_VERSION_SGI_NUMBER/100)%10],,
+    AC_MSG_FAILURE([[[$0]] unknown SGI compiler major version]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# microsoft
+AC_DEFUN([_AX_COMPILER_VERSION_MICROSOFT],[
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    _MSC_VER%100,,
+    AC_MSG_FAILURE([[[$0]] unknown microsoft compiler minor version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    (_MSC_VER/100)%100,,
+    AC_MSG_FAILURE([[[$0]] unknown microsoft compiler major version]))
+  dnl could be overriden
+  _ax_[]_AC_LANG_ABBREV[]_compiler_version_patch=0
+  _ax_[]_AC_LANG_ABBREV[]_compiler_version_build=0
+  # special case for version 6
+  AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major" = "X12"],
+    [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+       _MSC_FULL_VER%1000,,
+       _ax_[]_AC_LANG_ABBREV[]_compiler_version_patch=0)])
+  # for version 7
+  AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major" = "X13"],
+    [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+       _MSC_FULL_VER%1000,,
+       AC_MSG_FAILURE([[[$0]] unknown microsoft compiler patch version]))
+    ])
+  # for version > 8
+ AS_IF([test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_major -ge 14],
+    [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+       _MSC_FULL_VER%10000,,
+       AC_MSG_FAILURE([[[$0]] unknown microsoft compiler patch version]))
+    ])
+ AS_IF([test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_major -ge 15],
+    [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_build,
+       _MSC_BUILD,,
+       AC_MSG_FAILURE([[[$0]] unknown microsoft compiler build version]))
+    ])
+ ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_build"
+ ])
+
+# for metrowerks
+AC_DEFUN([_AX_COMPILER_VERSION_METROWERKS],[dnl
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    __MWERKS__%0x100,,
+    AC_MSG_FAILURE([[[$0]] unknown metrowerks compiler patch version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    (__MWERKS__/0x100)%0x10,,
+    AC_MSG_FAILURE([[[$0]] unknown metrowerks compiler minor version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    (__MWERKS__/0x1000)%0x10,,
+    AC_MSG_FAILURE([[[$0]] unknown metrowerks compiler major version]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# for watcom
+AC_DEFUN([_AX_COMPILER_VERSION_WATCOM],[dnl
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    __WATCOMC__%100,,
+    AC_MSG_FAILURE([[[$0]] unknown watcom compiler minor version]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    (__WATCOMC__/100)%100,,
+    AC_MSG_FAILURE([[[$0]] unknown watcom compiler major version]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor"
+  ])
+
+# for PGI
+AC_DEFUN([_AX_COMPILER_VERSION_PORTLAND],[
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major,
+    __PGIC__,,
+    AC_MSG_FAILURE([[[$0]] unknown pgi major]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor,
+    __PGIC_MINOR__,,
+    AC_MSG_FAILURE([[[$0]] unknown pgi minor]))
+  AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch,
+    [__PGIC_PATCHLEVEL__],,
+    AC_MSG_FAILURE([[[$0]] unknown pgi patch level]))
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch"
+  ])
+
+# tcc
+AC_DEFUN([_AX_COMPILER_VERSION_TCC],[
+  ax_cv_[]_AC_LANG_ABBREV[]_compiler_version=[`tcc -v | $SED 's/^[ ]*tcc[ ]\+version[ ]\+\([0-9.]\+\).*/\1/g'`]
+  ])
+# main entry point
+AC_DEFUN([AX_COMPILER_VERSION],[dnl
+  AC_REQUIRE([AX_COMPILER_VENDOR])
+  AC_REQUIRE([AC_PROG_SED])
+  AC_CACHE_CHECK([for _AC_LANG compiler version],
+    ax_cv_[]_AC_LANG_ABBREV[]_compiler_version,
+    [ dnl
+      AS_CASE([$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor],
+        [intel],[_AX_COMPILER_VERSION_INTEL],
+	[ibm],[_AX_COMPILER_VERSION_IBM],
+	[pathscale],[_AX_COMPILER_VERSION_PATHSCALE],
+	[clang],[_AX_COMPILER_VERSION_CLANG],
+	[cray],[_AX_COMPILER_VERSION_CRAY],
+	[fujitsu],[_AX_COMPILER_VERSION_FUJITSU],
+        [gnu],[_AX_COMPILER_VERSION_GNU],
+	[sun],[_AX_COMPILER_VERSION_SUN],
+	[hp],[_AX_COMPILER_VERSION_HP],
+	[dec],[_AX_COMPILER_VERSION_DEC],
+	[borland],[_AX_COMPILER_VERSION_BORLAND],
+	[comeau],[_AX_COMPILER_VERSION_COMEAU],
+	[kai],[_AX_COMPILER_VERSION_KAI],
+	[sgi],[_AX_COMPILER_VERSION_SGI],
+	[microsoft],[_AX_COMPILER_VERSION_MICROSOFT],
+	[metrowerks],[_AX_COMPILER_VERSION_METROWERKS],
+	[watcom],[_AX_COMPILER_VERSION_WATCOM],
+	[portland],[_AX_COMPILER_VERSION_PORTLAND],
+	[tcc],[_AX_COMPILER_VERSION_TCC],
+  	[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version=""])
+    ])
+])
diff --git a/missing b/missing
new file mode 100755
index 0000000..1c8ff70
--- /dev/null
+++ b/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+#   Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f y.tab.h; then
+	echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f lex.yy.c; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+	/^@setfilename/{
+	  s/.* \([^ ]*\) *$/\1/
+	  p
+	  q
+	}' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case $firstarg in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case $firstarg in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/debian/patches/diff_0.0.19_to_effd078610a7 b/packaging/RPM/3Depict-0.0.19-upstream-effd078610a7.patch
similarity index 88%
copy from debian/patches/diff_0.0.19_to_effd078610a7
copy to packaging/RPM/3Depict-0.0.19-upstream-effd078610a7.patch
index 27e5e88..d588967 100644
--- a/debian/patches/diff_0.0.19_to_effd078610a7
+++ b/packaging/RPM/3Depict-0.0.19-upstream-effd078610a7.patch
@@ -1,6 +1,6 @@
-diff -r d478204af715 -r effd078610a7 docs/manual-latex/build-latex.sh
+diff -r bcb9acfa66de -r effd078610a7 docs/manual-latex/build-latex.sh
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/docs/manual-latex/build-latex.sh	Tue Jun 21 12:45:20 2016 +0100
++++ docs/manual-latex/build-latex.sh	Tue Jun 21 12:45:20 2016 +0100
 @@ -0,0 +1,37 @@
 +#!/bin/bash
 +LATEXBIN=pdflatex
@@ -39,9 +39,9 @@ diff -r d478204af715 -r effd078610a7 docs/manual-latex/build-latex.sh
 +	exit 1
 +fi
 +
-diff -r d478204af715 -r effd078610a7 src/backend/filter.cpp
---- a/src/backend/filter.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filter.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filter.cpp
+--- src/backend/filter.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filter.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -553,7 +553,7 @@
  		ASSERT(scatterIntensity.empty());
  
@@ -51,9 +51,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filter.cpp
  }
  void RangeStreamData::checkSelfConsistent() const
  {
-diff -r d478204af715 -r effd078610a7 src/backend/filter.h
---- a/src/backend/filter.h	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filter.h	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filter.h
+--- src/backend/filter.h	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filter.h	Tue Jun 21 12:45:20 2016 +0100
 @@ -395,7 +395,7 @@
  		//Label for X, Y axes
  		std::string xLabel,yLabel;
@@ -63,9 +63,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filter.h
  
  		//!Structured XY data pairs for plotting curve
  		Array2D<float> xyData;
-diff -r d478204af715 -r effd078610a7 src/backend/filters/algorithms/rdf.cpp
---- a/src/backend/filters/algorithms/rdf.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/algorithms/rdf.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/algorithms/rdf.cpp
+--- src/backend/filters/algorithms/rdf.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/algorithms/rdf.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -862,6 +862,8 @@
  		return RDF_ABORT_FAIL;
  #endif
@@ -84,9 +84,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/algorithms/rdf.cpp
  	return 0;
  }
  
-diff -r d478204af715 -r effd078610a7 src/backend/filters/annotation.cpp
---- a/src/backend/filters/annotation.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/annotation.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/annotation.cpp
+--- src/backend/filters/annotation.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/annotation.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -167,8 +167,15 @@
  
  	//If we are not enabled, do not draw anything into the output
@@ -111,9 +111,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/annotation.cpp
  	return 0;
  }
  
-diff -r d478204af715 -r effd078610a7 src/backend/filters/boundingBox.cpp
---- a/src/backend/filters/boundingBox.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/boundingBox.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/boundingBox.cpp
+--- src/backend/filters/boundingBox.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/boundingBox.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -510,7 +510,6 @@
  				}
  #endif
@@ -130,9 +130,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/boundingBox.cpp
  	//Append the bounding box if it is valid
  	if(bTotal.isValid())
  	{
-diff -r d478204af715 -r effd078610a7 src/backend/filters/clusterAnalysis.cpp
---- a/src/backend/filters/clusterAnalysis.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/clusterAnalysis.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/clusterAnalysis.cpp
+--- src/backend/filters/clusterAnalysis.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/clusterAnalysis.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -685,7 +685,7 @@
  		Plot2DStreamData *p = new Plot2DStreamData;
  		p->parent=this;
@@ -142,9 +142,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/clusterAnalysis.cpp
  		p->dataLabel=TRANS("Morphology Plot");
  		p->xLabel=TRANS("\\lambda_1:\\lambda_2 ratio");
  		p->yLabel=TRANS("\\lambda_2:\\lambda_3 ratio");
-diff -r d478204af715 -r effd078610a7 src/backend/filters/ionColour.cpp
---- a/src/backend/filters/ionColour.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/ionColour.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/ionColour.cpp
+--- src/backend/filters/ionColour.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/ionColour.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -271,12 +271,14 @@
  	
  
@@ -160,9 +160,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/ionColour.cpp
  	p.key=KEY_IONCOLOURFILTER_ALPHA;
  	stream_cast(p.data,alpha);
  	p.type=PROPERTY_TYPE_REAL;
-diff -r d478204af715 -r effd078610a7 src/backend/filters/ionDownsample.cpp
---- a/src/backend/filters/ionDownsample.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/ionDownsample.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/ionDownsample.cpp
+--- src/backend/filters/ionDownsample.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/ionDownsample.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -88,7 +88,7 @@
  			rsdIncoming = new RangeStreamData;
  			*rsdIncoming=*c;
@@ -182,9 +182,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/ionDownsample.cpp
  	{
  		unsigned int typeVal;
  		if(fixedNumOut)
-diff -r d478204af715 -r effd078610a7 src/backend/filters/ionInfo.cpp
---- a/src/backend/filters/ionInfo.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/ionInfo.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/ionInfo.cpp
+--- src/backend/filters/ionInfo.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/ionInfo.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -398,7 +398,7 @@
  
  
@@ -204,9 +204,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/ionInfo.cpp
  	return 0;
  }
  
-diff -r d478204af715 -r effd078610a7 src/backend/filters/spatialAnalysis.cpp
---- a/src/backend/filters/spatialAnalysis.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/spatialAnalysis.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/spatialAnalysis.cpp
+--- src/backend/filters/spatialAnalysis.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/spatialAnalysis.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -655,115 +655,180 @@
  		return ERR_FILE_READ_FAIL;
  
@@ -812,9 +812,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/spatialAnalysis.cpp
  //--- Local concentration tests --
  const IonStreamData *createLCIonStream()
  {
-diff -r d478204af715 -r effd078610a7 src/backend/filters/spectrumPlot.cpp
---- a/src/backend/filters/spectrumPlot.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/spectrumPlot.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/spectrumPlot.cpp
+--- src/backend/filters/spectrumPlot.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/spectrumPlot.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -517,6 +517,8 @@
  	
  	getOut.push_back(d);
@@ -824,9 +824,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/spectrumPlot.cpp
  	return 0;
  }
  
-diff -r d478204af715 -r effd078610a7 src/backend/filters/transform.cpp
---- a/src/backend/filters/transform.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/filters/transform.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/filters/transform.cpp
+--- src/backend/filters/transform.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/filters/transform.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -998,8 +998,10 @@
  					break;
  				}
@@ -861,9 +861,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/filters/transform.cpp
  			if(!applyPropertyNow(scalarParams[1],value,needUpdate))
  				return false;
  			break;
-diff -r d478204af715 -r effd078610a7 src/backend/plot.cpp
---- a/src/backend/plot.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/plot.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/plot.cpp
+--- src/backend/plot.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/plot.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -29,7 +29,7 @@
  				NTRANS("Moving avg.")
  				};
@@ -1014,9 +1014,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/plot.cpp
  	scatterIntensityLog=false;
  }
  
-diff -r d478204af715 -r effd078610a7 src/backend/plot.h
---- a/src/backend/plot.h	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/plot.h	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/plot.h
+--- src/backend/plot.h	Tue May 31 13:04:58 2016 +1000
++++ src/backend/plot.h	Tue Jun 21 12:45:20 2016 +0100
 @@ -217,7 +217,7 @@
  class PlotBase
  {
@@ -1068,9 +1068,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/plot.h
  
  		//Retrieve the types of visible plots
  		unsigned int getVisibleMode() const;
-diff -r d478204af715 -r effd078610a7 src/backend/viscontrol.cpp
---- a/src/backend/viscontrol.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/backend/viscontrol.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/backend/viscontrol.cpp
+--- src/backend/viscontrol.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/backend/viscontrol.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -249,7 +249,7 @@
  						plotData->yLabel,plotData->dataLabel);
  					
@@ -1089,9 +1089,9 @@ diff -r d478204af715 -r effd078610a7 src/backend/viscontrol.cpp
  					{
  						case PLOT_2D_DENS:
  						{
-diff -r d478204af715 -r effd078610a7 src/common/basics.cpp
---- a/src/common/basics.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/common/basics.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/common/basics.cpp
+--- src/common/basics.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/common/basics.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -1347,7 +1347,8 @@
  	while(CFile.good() && !CFile.eof() && atHeader)
  	{
@@ -1115,9 +1115,9 @@ diff -r d478204af715 -r effd078610a7 src/common/basics.cpp
  	}
  
  	return 0;
-diff -r d478204af715 -r effd078610a7 src/gui/mainFrame.cpp
---- a/src/gui/mainFrame.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/gui/mainFrame.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/gui/mainFrame.cpp
+--- src/gui/mainFrame.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/gui/mainFrame.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -1391,7 +1391,7 @@
  	updateWxTreeCtrl(treeFilters);
  
@@ -1170,9 +1170,9 @@ diff -r d478204af715 -r effd078610a7 src/gui/mainFrame.cpp
  	vector<std::pair<const Filter*, std::string> > consoleMessages;
  	consoleMessages=refreshControl->getConsoleMessages();
  
-diff -r d478204af715 -r effd078610a7 src/gui/mainFrame.h
---- a/src/gui/mainFrame.h	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/gui/mainFrame.h	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/gui/mainFrame.h
+--- src/gui/mainFrame.h	Tue May 31 13:04:58 2016 +1000
++++ src/gui/mainFrame.h	Tue Jun 21 12:45:20 2016 +0100
 @@ -124,7 +124,7 @@
  	//!Update the progress information in the status bar
  	void updateProgressStatus();
@@ -1182,9 +1182,9 @@ diff -r d478204af715 -r effd078610a7 src/gui/mainFrame.h
  	
  	//!Complete the scene update. Returns false if failed
  	void finishSceneUpdate(unsigned int errCode);
-diff -r d478204af715 -r effd078610a7 src/gui/mathglPane.cpp
---- a/src/gui/mathglPane.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/gui/mathglPane.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/gui/mathglPane.cpp
+--- src/gui/mathglPane.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/gui/mathglPane.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -627,7 +627,7 @@
  			thePlot->getRegion(plotId,regionId,r);
  
@@ -1212,9 +1212,9 @@ diff -r d478204af715 -r effd078610a7 src/gui/mathglPane.cpp
  			
  			//Draw "ghost" limits markers for move,
  			//these appear as moving vertical bars to outline
-diff -r d478204af715 -r effd078610a7 src/wx/wxcomponents.cpp
---- a/src/wx/wxcomponents.cpp	Mon Jun 27 11:07:17 2016 +0100
-+++ b/src/wx/wxcomponents.cpp	Tue Jun 21 12:45:20 2016 +0100
+diff -r bcb9acfa66de -r effd078610a7 src/wx/wxcomponents.cpp
+--- src/wx/wxcomponents.cpp	Tue May 31 13:04:58 2016 +1000
++++ src/wx/wxcomponents.cpp	Tue Jun 21 12:45:20 2016 +0100
 @@ -188,14 +188,14 @@
  
  void CopyGrid::saveData()
diff --git a/packaging/RPM/3Depict.spec b/packaging/RPM/3Depict.spec
index 048bada..555a96a 100644
--- a/packaging/RPM/3Depict.spec
+++ b/packaging/RPM/3Depict.spec
@@ -1,6 +1,6 @@
 Name:		3Depict
 Version:	0.0.19
-Release:	1%{?dist}
+Release:	2%{?dist}
 Summary:	Valued 3D point cloud visualization and analysis
 Group:		Applications/Engineering
 
@@ -37,7 +37,8 @@ BuildRequires: qhull-devel
 Patch0: %{name}-%{version}-manual-pdf-loc.patch
 #Fedora specific font dir
 Patch1: %{name}-%{version}-font-path.patch
-
+#Upstream post-release patches from hg repo
+Patch2: %{name}-%{version}-upstream-effd078610a7.patch
 
 %description
 This software is designed to help users visualize and analyze 3D point clouds
@@ -51,6 +52,7 @@ useful for general scalar valued point data purposes.
 
 %patch0
 %patch1
+%patch2
 
 %if 0%{?fedora} > 24
 # Installation directory has changed
@@ -118,9 +120,13 @@ mv docs/manual-latex/manual.pdf %{name}-%{version}-manual.pdf
 
 
 %changelog
+* Sat Jan 14 2017 D Haley <mycae(a!t)gmx.com> - 0.0.19-2
+- Rebuild for libmgl bump
+
 * Wed Jun 01 2016 D Haley <mycae(a!t)gmx.com> - 0.0.19-1
 - Update to 0.0.19
 - Remove gcc patch, fixed upstream
+- Add upstream patch
 
 * Fri Apr 29 2016 Ralf Corsépius <corsepiu at fedoraproject.org> - 0.0.18-7
 - Rebuild for qhull-2015.2-1.
diff --git a/packaging/debian/3depict.1 b/packaging/debian/3depict.1
old mode 100755
new mode 100644
diff --git a/packaging/debian/3depict.install b/packaging/debian/3depict.install
old mode 100755
new mode 100644
diff --git a/packaging/debian/changelog b/packaging/debian/changelog
index c3f7bf2..22ff3ad 100644
--- a/packaging/debian/changelog
+++ b/packaging/debian/changelog
@@ -1,14 +1,25 @@
-3depict (0.0.19-1) unstable; urgency=medium
+3depict (0.0.19-1) unstable; urgency=low
 
-  * 
+  * Update to upstream 0.0.19 (Closes: #831200)
+  * Update GSL build dependency (Closes: #807232)
+  * Minor lintian fixes to copyright, menu
+  * Fix build with autoconf != autoconf-1.14
 
- -- D Haley <mycae at gmx.com>  Tue, 31 May 2016 12:00:39 +1000
+ -- D Haley <mycae at gmx.com>  Thu, 04 Aug 2016 00:21:09 +0200
+
+3depict (0.0.18-2) unstable; urgency=medium
+
+  [ Edmund Grimley Evans ]
+  * Team upload.
+  * [f3c653d] Use autotools-dev. (Closes: #787214)
+
+ -- Anton Gladky <gladk at debian.org>  Fri, 29 May 2015 21:38:04 +0200
 
 3depict (0.0.18-1) unstable; urgency=medium
 
-  * Update to upstream 0.0.17
+  * Update to upstream 0.0.18
 
- -- D Haley <mycae at gmx.com>  Sun, 26 Apr 2014 12:00:00 +0100
+ -- D Haley <mycae at gmx.com>  Fri, 01 May 2015 23:59:48 +0200
 
 3depict (0.0.17-1) unstable; urgency=medium
 
diff --git a/packaging/debian/compat b/packaging/debian/compat
old mode 100755
new mode 100644
diff --git a/packaging/debian/control b/packaging/debian/control
old mode 100755
new mode 100644
index b770948..3345cad
--- a/packaging/debian/control
+++ b/packaging/debian/control
@@ -1,21 +1,34 @@
 Source: 3depict
-Section: science
-Priority: optional
 Maintainer: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
 Uploaders: D Haley <mycae at gmx.com>
-Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.16.1~), libgl1-mesa-dev | libgl-dev, libpng-dev | libpng15-dev, libqhull-dev, libwxgtk3.0-dev, libftgl-dev, libxml2-dev, libmgl-dev (>= 2.0), automake
-Standards-Version: 3.9.5
-Homepage: http://threedepict.sourceforge.net/index.html
+Section: science
+Priority: optional
+Build-Depends: debhelper (>= 9),
+               dh-autoreconf (>=9),
+               dpkg-dev (>= 1.16.1~),
+               libgl1-mesa-dev | libgl-dev,
+               libpng-dev | libpng15-dev,
+               libqhull-dev,
+               libwxgtk3.0-dev,
+               libgsl-dev,
+               libftgl-dev,
+               libxml2-dev,
+               libmgl-dev (>= 2.0),
+               libvigraimpex-dev,
+               automake,
+               autotools-dev,
+               pkg-config
+Standards-Version: 3.9.8
+Vcs-Browser: https://anonscm.debian.org/cgit/debian-science/packages/3depict.git
 Vcs-Git: git://anonscm.debian.org/debian-science/packages/3depict.git
-Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-science/packages/3depict.git
-
+Homepage: http://threedepict.sourceforge.net/index.html
 
 Package: 3depict
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
+Depends: ${shlibs:Depends},
+         ${misc:Depends}
 Description: visualisation and analysis for single valued point data 
  This program provides a graphical interface for the scientific analysis
  of real valued point data (x,y,z,value). This is primarily targeted
  towards Atom probe tomography applications, but may prove useful to
  other applications as well.
-
diff --git a/packaging/debian/copyright b/packaging/debian/copyright
old mode 100755
new mode 100644
index 4b2bee7..057eaac
--- a/packaging/debian/copyright
+++ b/packaging/debian/copyright
@@ -5,12 +5,10 @@ Upstream: http://threedepict.sourceforge.net
 Files: *
 Copyright: 3Depict is Copyright (C) 2013 by D Haley.
 License: GPL-3+
- On Debian systems the full text of the GNU General Public License v3 
- can be found in the `/usr/share/common-licenses/GPL-3' file.
 
 Files: docs/manual-latex/manual.tex
 Copyright: Copyright (C) 2013 by D Haley.
-License: CC-BY-SA 3.0 
+License: CC-BY-SA-3.0 
  The work (as defined below) is provided under the terms of this creative
  commons public license ("CCPL"; or "license"). The work is protected by
  copyright and/or other applicable law. any use of the work other than as
@@ -21,12 +19,6 @@ License: CC-BY-SA 3.0
  contained here in consideration of your acceptance of such terms and
  conditions.
 
-Files: debian/*
-Copyright: Copyright 2013, D Haley <mycae gmx com>
-License: GPL-3+
- On Debian systems the full text of the GNU General Public License v3 
- can be found in the `/usr/share/common-licenses/GPL-3' file.
-
 Files:data/textures/*rrow*png data/textures/*rrow*svg data/textures/tex-source/*rrow*svg data/textures/*enlarge*png data/textures/tex-source/*enlarge.svg
 Copyright: Copyright 2006, Everaldo Coelho
 Source: https://commons.wikimedia.org/wiki/Crystal_clear
@@ -41,30 +33,27 @@ License: GFDL-1.2
  On Debian systems the full text of the GNU Free Documentation License
  v1.2 can be found in the `/usr/share/common-licenses/GFDL-1.2' file.
 
-Files: data/textures/tex-source/*phere.svg data/textures/tex-source/*phere.png
-Copyright: Copyright 2003-2004, David Vignoni
-Source: www.icon-king.com/projects/nuvola//
-License: LGPL-2+
- On Debian systems the full text of the Lesser GNU General Public License
- v2 can be found in the `/usr/share/common-licenses/LGPL-2' file.
-
 Files: docs/web/style.css
 Copyright: Copyright 2006, Minamalistic-design
 Source: http://www.minimalistic-design.com/minimalistic.zip
 License: GPL-2+
- On Debian systems the full text of the Lesser GNU General Public License
- v2 can be found in the `/usr/share/common-licenses/LGPL-2' file.
 
 Files: src/gl/tr.cpp src/gl/tr.h
 Copyright: Copyright 2005, Brian Paul 
 Source: http://www.mesa3d.org/brianp/TR.html
 License: GPL-2+
- On Debian systems the full text of the GNU General Public License v2
- can be found in the `/usr/share/common-licenses/GPL-2' file.
 
 Files: data/naturalAbundance.xml
 Copyright: Copyright 2008, Metamolecular
 Source: http://metamolecular.com 
 License: expat
- On Debian systems the full text of th expat license can be found in the
+ On Debian systems the full text of the expat license can be found in the
  `/usr/share/common-licenses/expat' file.
+
+License: GPL-3+
+ On Debian systems the full text of the GNU General Public License v3 
+ can be found in the `/usr/share/common-licenses/GPL-3' file.
+
+License: GPL-2+
+ On Debian systems the full text of the GNU General Public License v2
+ can be found in the `/usr/share/common-licenses/GPL-2' file.
diff --git a/packaging/debian/docs b/packaging/debian/docs
old mode 100755
new mode 100644
diff --git a/packaging/debian/manpages b/packaging/debian/manpages
old mode 100755
new mode 100644
diff --git a/packaging/debian/menu b/packaging/debian/menu
deleted file mode 100755
index 35ca7f4..0000000
--- a/packaging/debian/menu
+++ /dev/null
@@ -1,2 +0,0 @@
-?package(3depict):needs="X11" section="Applications/Science/Data Analysis"\
-  title="3depict" command="/usr/bin/3depict"
diff --git a/packaging/debian/patches/FTGL-lowercase.patch b/packaging/debian/patches/FTGL-lowercase.patch
deleted file mode 100644
index de67913..0000000
--- a/packaging/debian/patches/FTGL-lowercase.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Description: Debian uses lowercase lib names.
-Forwarded: not-needed
-Author: D Haley <mycae - gmx - com>
---- 3depict-0.0.16.orig/configure
-+++ 3depict-0.0.16/configure
-@@ -6129,7 +6129,7 @@
- if test "x$ftgl_prefix" != "x" ; then
- 	#use the supplied CFLAGS. assume LIBS
- 	FTGL_CFLAGS="-I$ftgl_prefix/include/ -L$ftgl_prefix/lib/"
--	FTGL_LIBS="-lFTGL"
-+	FTGL_LIBS="-lftgl"
- else
- 
- 	HAVE_PKG=$(basename $(which pkg-config))
diff --git a/packaging/debian/patches/debian-desktop-naming.patch b/packaging/debian/patches/debian-desktop-naming.patch
index 63b49e2..5de7c73 100644
--- a/packaging/debian/patches/debian-desktop-naming.patch
+++ b/packaging/debian/patches/debian-desktop-naming.patch
@@ -2,8 +2,10 @@ Description: Debian packages are lowercase, but upstream uses uppercase
  "D"
 Forwarded: not-needed
 Author: D Haley <mycae - gmx - com>
---- 3depict-0.0.16.orig/packaging/3Depict.desktop
-+++ 3depict-0.0.16/packaging/3Depict.desktop
+Index: 3depict-0.0.16/packaging/3Depict.desktop
+===================================================================
+--- 3depict-0.0.16.orig/packaging/3Depict.desktop	2014-04-25 00:52:46.982186432 +0200
++++ 3depict-0.0.16/packaging/3Depict.desktop	2014-04-25 00:52:46.978186482 +0200
 @@ -2,8 +2,8 @@
  Version=1.0
  Type=Application
diff --git a/debian/patches/desktop-category.patch b/packaging/debian/patches/desktop-category.patch
similarity index 100%
rename from debian/patches/desktop-category.patch
rename to packaging/debian/patches/desktop-category.patch
diff --git a/debian/patches/diff_0.0.19_to_effd078610a7 b/packaging/debian/patches/diff_0.0.19_to_effd078610a7
similarity index 100%
rename from debian/patches/diff_0.0.19_to_effd078610a7
rename to packaging/debian/patches/diff_0.0.19_to_effd078610a7
diff --git a/packaging/debian/patches/lowercase-textdomain.patch b/packaging/debian/patches/lowercase-textdomain.patch
index 8817934..10fdaf0 100644
--- a/packaging/debian/patches/lowercase-textdomain.patch
+++ b/packaging/debian/patches/lowercase-textdomain.patch
@@ -1,9 +1,11 @@
 Description: Debian uses different text domain for the lang files
 Forwarded: not-needed
 Author: D Haley <mycae - gmx - com>
---- 3depict-0.0.16.orig/src/3Depict.cpp
-+++ 3depict-0.0.16/src/3Depict.cpp
-@@ -166,7 +166,7 @@
+Index: 3depict-0.0.19/src/3Depict.cpp
+===================================================================
+--- 3depict-0.0.19.orig/src/3Depict.cpp	2016-08-04 00:12:38.260085712 +0200
++++ 3depict-0.0.19/src/3Depict.cpp	2016-08-04 00:12:38.256085765 +0200
+@@ -179,7 +179,7 @@
  		else
  		{
  			//Set the gettext language
@@ -12,7 +14,7 @@ Author: D Haley <mycae - gmx - com>
  			setlocale (LC_ALL, "");
  #ifdef __WXMAC__
  			bindtextdomain( PROGRAM_NAME, paths->GetResourcesDir().mb_str(wxConvUTF8) );
-@@ -198,8 +198,8 @@
+@@ -211,8 +211,8 @@
  					break;
  			}			
  #else
diff --git a/packaging/debian/patches/series b/packaging/debian/patches/series
index a50b6d2..e898cbe 100644
--- a/packaging/debian/patches/series
+++ b/packaging/debian/patches/series
@@ -1,2 +1,4 @@
+diff_0.0.19_to_effd078610a7
 debian-desktop-naming.patch
 lowercase-textdomain.patch
+desktop-category.patch
diff --git a/packaging/debian/rules b/packaging/debian/rules
index 7de271f..be9d384 100755
--- a/packaging/debian/rules
+++ b/packaging/debian/rules
@@ -1,12 +1,10 @@
 #!/usr/bin/make -f
 
 %:
-	dh $@ --parallel 
+	dh $@ --parallel --with autotools-dev --with autoreconf
 
 override_dh_auto_configure: 
-	LDFLAGS="$(LDFLAGS) -Wl,--as-needed" dh_auto_configure -- --prefix=/usr \
-		 --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info \
-		 --enable-openmp-parallel --disable-debug-checks --with-libpng-link="-lpng" --with-libpng-flags="-L/lib" --with-ftgl-prefix="/usr" 
+	LDFLAGS="$(LDFLAGS) -Wl,--as-needed" dh_auto_configure -- --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --enable-openmp-parallel --disable-debug-checks --with-libpng-link="-lpng" --with-libpng-flags="-L/lib" --with-ftgl-prefix="/usr" --enable-mgl2
 
 
 override_dh_clean:
diff --git a/packaging/debian/source/format b/packaging/debian/source/format
old mode 100755
new mode 100644
diff --git a/packaging/debian/source/local-options b/packaging/debian/source/local-options
deleted file mode 100755
index 9cdfca9..0000000
--- a/packaging/debian/source/local-options
+++ /dev/null
@@ -1,2 +0,0 @@
-unapply-patches
-abort-on-upstream-changes
diff --git a/packaging/debian/watch b/packaging/debian/watch
old mode 100755
new mode 100644
diff --git a/packaging/deps/getDeps b/packaging/deps/getDeps
index 87428f3..f69b8ef 100755
--- a/packaging/deps/getDeps
+++ b/packaging/deps/getDeps
@@ -189,7 +189,7 @@ function handleMacDistro()
 	done
 
 
-	# install deps except mathgl
+	# install deps
 	echo "installing some 3Depict dependencies..."
 	sudo port install wget libpng freetype ftgl wxWidgets-3.0 dylibbundler qhull gsl  cmake libtool pkgconfig vigra mathgl
 	if [ $? -ne 0 ] ; then
diff --git a/packaging/deps/patches/macosx/macdylibbundler/DylibBundler-patch.diff b/packaging/deps/patches/macosx/macdylibbundler/DylibBundler-patch.diff
new file mode 100644
index 0000000..e9d54e5
--- /dev/null
+++ b/packaging/deps/patches/macosx/macdylibbundler/DylibBundler-patch.diff
@@ -0,0 +1,26 @@
+diff --git a/src/DylibBundler.cpp b/src/DylibBundler.cpp
+index 8e4926c..71fb795 100644
+--- a/src/DylibBundler.cpp
++++ b/src/DylibBundler.cpp
+@@ -92,7 +92,9 @@ void collectDependencies(std::string filename)
+     {
+         std::cout << "."; fflush(stdout);
+         if(lines[n][0] != '\t') continue; // only lines beginning with a tab interest us
+-        if( lines[n].find(".framework") != std::string::npos ) continue; //Ignore frameworks, we can not handle them
++        if( lines[n].find(".framework") != std::string::npos )
++            if( lines[n].find(".dylib") == std::string::npos )
++                continue; //Ignore frameworks, we can not handle them
+         
+         addDependency( // trim useless info, keep only library name
+                        lines[n].substr(1, lines[n].rfind(" (") - 1)
+@@ -118,7 +120,9 @@ void collectSubDependencies()
+             for(int n=0; n<line_amount; n++)
+             {
+                 if(lines[n][0] != '\t') continue; // only lines beginning with a tab interest us
+-                if( lines[n].find(".framework") != std::string::npos ) continue; //Ignore frameworks, we can not handle them
++                if( lines[n].find(".framework") != std::string::npos )
++                    if( lines[n].find(".dylib") == std::string::npos )
++                        continue; //Ignore frameworks, we can not handle them
+                 
+                 addDependency( // trim useless info, keep only library name
+                                lines[n].substr(1, lines[n].rfind(" (") - 1) 
diff --git a/packaging/deps/patches/macosx/macdylibbundler/Settings-patch.diff b/packaging/deps/patches/macosx/macdylibbundler/Settings-patch.diff
new file mode 100644
index 0000000..87cb37d
--- /dev/null
+++ b/packaging/deps/patches/macosx/macdylibbundler/Settings-patch.diff
@@ -0,0 +1,20 @@
+diff --git a/src/Settings.cpp b/src/Settings.cpp
+index 12cdad3..dee0f46 100644
+--- a/src/Settings.cpp
++++ b/src/Settings.cpp
+@@ -78,7 +78,7 @@ void ignore_prefix(std::string prefix)
+ 
+ bool isPrefixBundled(std::string prefix)
+ {
+-    if(prefix.find(".framework") != std::string::npos) return false;
++    //if(prefix.find(".framework") != std::string::npos) return false;
+     if(prefix.find("@executable_path") != std::string::npos) return false;
+     if(prefix.compare("/usr/lib/") == 0) return false;
+     
+@@ -91,4 +91,4 @@ bool isPrefixBundled(std::string prefix)
+     return true;
+ }
+ 
+-}
+\ No newline at end of file
++}
diff --git a/packaging/howToRelease.txt b/packaging/howToRelease.txt
index 4eb081a..77da616 100644
--- a/packaging/howToRelease.txt
+++ b/packaging/howToRelease.txt
@@ -7,6 +7,7 @@
 * Run coverity, fixing any major issues (extras/coverity.sh)
 * Review any outstanding bug reports
 * Update Changelog
+* Merge transifex translations
 * Run "makeTranslations update" from translations dir to rebuild translation database
 	- remove any dead translations
 * Merge code into "threedepict" sf repository, then work from that repo
diff --git a/packaging/mac/3package.sh b/packaging/mac/3package.sh
index c51a720..524e0d5 100755
--- a/packaging/mac/3package.sh
+++ b/packaging/mac/3package.sh
@@ -46,7 +46,7 @@ fi
 #TODO: Check debug symbols are stripped
 
 #Ensure that program name not screwed up by XCode
-if [ x`grep ${INFO_PLIST} -Depict` != x"" ] ; then
+if [ x`grep '[-]Depict' ${INFO_PLIST}` != x"" ] ; then
 	echo "Program name incorrectly stored in package, is listed as _Depict, rather than $PROGRAM_NAME"
 	exit 1
 fi
@@ -54,7 +54,9 @@ fi
 #ensure that we have some .vfm files in here
 if [ x`find ./ -name \*.vfm` == x"" ] ; then
 	echo "No VFM files (mathgl fonts) found!"
-	exit 1 
+	echo " Have you checked that you installed the font files for mathgl? Do unusual chars (eg \alpeh) work in the plot (try, eg changing title of spectrum)"
+	sleep 5
+#	exit 1 
 fi
 
 #ensure that we have some .pdf files in here
diff --git a/packaging/mac/makeMacOSXApp b/packaging/mac/makeMacOSXApp
index 78dce71..43cec25 100755
--- a/packaging/mac/makeMacOSXApp
+++ b/packaging/mac/makeMacOSXApp
@@ -3,7 +3,7 @@
 #This is configured to be specific to the mac build machine. 
 # Do not assume that this will work on any given mac system
 
-export PATH=/opt/local/bin:$PATH:/opt//local/Library/Frameworks/wxWidgets.framework/Versions/wxWidgets/3.0/bin
+export PATH=/opt/local/bin:/opt/local/Library/Frameworks/wxWidgets.framework/Versions/wxWidgets/3.0/bin:$PATH
 #This will make the mac .app bundle
 
 if [ $1 = '--update-config=yes' ]; then
@@ -19,9 +19,9 @@ if [ $1 = '--update-config=yes' ]; then
 		DISABLE_DEBUG="--disable-debug-checks"
 	fi
 
-	CFLAGS="$CFLAGS -I/opt/local/include " \
+	CFLAGS="$CFLAGS -I/opt/local/include/ " \
 	LDFLAGS="$LDFLAGS -L/opt/local/lib " \
-	CXXFLAGS="$CXXFLAGS -std=c++11 -D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_ -I/opt/local/include " \
+	CXXFLAGS="$CXXFLAGS -std=c++11 -D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_ -I/opt/local/include/ " \
 	./configure $SHOULD_PARALLEL $DISABLE_DEBUG
 
 	if [ $? -ne 0 ]; then
@@ -32,7 +32,7 @@ if [ $1 = '--update-config=yes' ]; then
 
 	make clean
 fi
-read -p "have you changed the makefile?" yn
+#read -p "have you changed the makefile?" yn
 
 	CFLAGS="$CFLAGS -I/opt/local/include " \
 	LDFLAGS="$LDFLAGS -L/opt/local/lib " \
@@ -44,7 +44,6 @@ read -p "have you changed the makefile?" yn
 		exit 1
 	fi
 
-fi
 
 echo "Updating .app bundle..."
 mkdir -p ./3Depict.app/Contents/MacOS/
@@ -55,7 +54,7 @@ cp data/textures/tex-source/3Depict-icon.icns ./3Depict.app/Contents/Resources/3
 touch ./3Depict.app/Contents/PkgInfo
 touch ./3Depict.app/Contents/Info.plist
 #copy all information from data folder
-cp ./data/* ./3Depict.app/Contents/Resources/
+cp -R ./data/* ./3Depict.app/Contents/Resources/
 
 
 #Update gettext translation
diff --git a/packaging/makeTarball.sh b/packaging/makeTarball.sh
index ef89b52..1f19d4f 100755
--- a/packaging/makeTarball.sh
+++ b/packaging/makeTarball.sh
@@ -34,6 +34,8 @@ done
 #-------
 #CONF_ARGS=("--enable-openmp-parallel" "--disable-debug-checks " " --enable-debug-checks " " --enable-openmp-parallel --disable-debug-checks " " --enable-ubsan --enable-openmp-parallel " " --enable-ubsan "  )
 
+make distclean || { exit 1  ; } 
+
 for i in ${CONF_ARGS[*]}
 do
 	if [ -f Makefile ] ; then
@@ -93,6 +95,7 @@ if  [ x"`which clang`" != x"" ]  && [ $USE_CLANG -ne 0 ] ; then
 		# Clang seems to have a lot of problems at link time, 
 		# which we don't see with gcc.
 		echo "Failed to build with clang. Ignoring"
+		sleep 10
 	else	
 		pushd src/
 		./3Depict -t
diff --git a/packaging/mingw-debian-cross/bootstrap.sh b/packaging/mingw-debian-cross/bootstrap.sh
index f9e458b..cdf2b28 100755
--- a/packaging/mingw-debian-cross/bootstrap.sh
+++ b/packaging/mingw-debian-cross/bootstrap.sh
@@ -11,6 +11,50 @@
 #HOST_VAL=x86_64-w64-mingw32 #For mingw64 (windows 64 bit)
 #HOST_VAL=i686-w64-mingw32 #For mingw32 (Windows 32 bit)
 
+#Setup clone of hg repository, if required
+if [ ! -d code ] || [ ! -d code/3Depict ]  ; then
+	read -p "Code dir is missing -- shall we clone it?? (y/n):" answer
+	
+	case $answer in
+		y | Y ) 
+			if [ x`which hg` == x"" ] ; then
+				echo "No mercurial.. Can't clone, aborting."
+				exit 1
+			fi
+
+			DEFCLONEURL="http://hg.code.sf.net/p/threedepict/code"
+
+			read -p "Path to clone (include protocol if url...), blank for default" clonedir
+		
+			if [ x"$clonedir " == x"" ] ; then 
+				CLONEURL=$DEFCLONEURL
+			else
+				CLONEURL=$clonedir	
+			fi
+
+			mkdir code  || { echo "failed to create code dir" ; exit 1 ; }
+			pushd code
+			
+			#Clone code
+			hg clone $CLONEURL  3Depict || { echo "Failed to clone" ; exit 1 ; }
+			popd
+
+			#obtain patches, and then put it into place
+			cp -R code/3Depict/packaging/mingw-debian-cross/patches . || { echo "Failed to obtain patches from mingw packging dir" ; exit 1 ; }
+
+
+
+			;; 
+		n | N )
+			echo "You said no."
+			;;
+		*) 
+			echo "Aborting - please answer Y, or N, or create the \"code\" directory, with "
+			exit 1
+			;;
+	esac #ends the case list
+fi
+
 if [ ! -f host_val ] ; then
 	echo "Please select 32 or 64 bit by typing \"32\" or \"64\" (32/64)"
 	read HOST_VAL
@@ -88,16 +132,19 @@ PATCHES_FTGL_POSTCONF="ftgl-override-configure-2"
 PATCHES_ICONV="iconv-fix-alias2.patch"
 
 #1) gettext-tools fails in various places, but we don't actually need it, so turn it off
-#2) gettext fails to correctly determine windows function call prefix.
-#   should be fixed for gettext > 0.18.1.1 ?
-#   https://lists.gnu.org/archive/html/bug-gettext/2012-12/msg00071.html
-PATCHES_GETTEXT="gettext-fix-configure-versions"    #gettext-win32-prefix
+PATCHES_GETTEXT="gettext-fix-configure-versions gettext-disable-tools"   
 
 PATCHES_GLEW="glew-makefile.base"
 
-PATCHES_MATHGL="mathgl-openmp-linker-flag mathgl-disable-things"
-PATCHES_QHULL="qhull-ptr.patch"
-PATCH_LIST="$PATCHES_WXWIDGETS_POST $PATCHES_GSL $PATCHES_ZLIB $PATCHES_LIBPNG $PATCHES_GETTEXT $PATCHES_FTGL $PATCHES_GLEW $PATCHES_MATHGL $PATCHES_FTGL_POSTCONF $PATCHES_ICONV $PATCHES_QHULL"
+PATCHES_MATHGL="mathgl-disable-things"
+
+PATCHES_QHULL="qhull-ptr.patch qhull-2009-configure_ac.patch"
+
+#Vigra's cmakelists assumes you can execute compiled binaries on the host
+# this obviously won't work for cross compilation
+PATCHES_LIBVIGRA="vigra-cpp-version.patch"
+
+PATCH_LIST="$PATCHES_WXWIDGETS_POST $PATCHES_GSL $PATCHES_ZLIB $PATCHES_LIBPNG $PATCHES_GETTEXT $PATCHES_FTGL $PATCHES_GLEW $PATCHES_MATHGL $PATCHES_FTGL_POSTCONF $PATCHES_ICONV $PATCHES_QHULL $PATCHES_LIBVIGRA"
 
 
 BUILD_STATUS_FILE="$BASE/build-status"
@@ -159,20 +206,27 @@ function grabDeps()
 {
 	pushd deps 2>/dev/null
 
-	DEB_PACKAGES="qhull expat freetype ftgl gettext gsl libpng libxml2 mathgl tiff zlib glew libvigraimpex"
+	DEB_PACKAGES="qhull expat freetype ftgl gettext gsl libxml2 mathgl tiff zlib glew libvigraimpex libpng-dev"
 	if [ x$DIST_NAME == x"Ubuntu" ] || [ x$DIST_NAME == x"LinuxMint" ]  ; then 
        		LIBJPEGNAME="libjpeg6b"
 	else
 		#Libjpeg seems to be forked/renamed very frequently in debian
 		# Likely a new libjpeg will need to be picked each time this script is run
-		LIBJPEGNAME="libjpeg9"
+		LIBJPEGNAME="libjpeg-turbo"
 	fi
 	DEB_PACKAGES="$DEB_PACKAGES $LIBJPEGNAME"
 
 	GET_PACKAGES=""
 	for i in $DEB_PACKAGES
 	do
-		FNAME=`ls packages/${i}_*.orig.* 2> /dev/null`
+
+		#libpng-dev is a virtual package?
+		if [ x"$i" != x"libpng-dev" ] ; then
+			FNAME=`ls packages/${i}_*.orig.* 2> /dev/null`
+		else
+			FNAME=`ls packages/libpng*_*.orig.* 2> /dev/null`
+		fi
+
 		#If filename is empty, we will need to retreive it from
 		# interwebs
 		if [ x"$FNAME" == x"" ] ; then
@@ -269,6 +323,28 @@ function grabDeps()
 		sudo apt-get install nsis || { echo "Failed installation"; exit 1; }
 	fi
 
+	#Download wxwidgets as needed
+	#----
+
+	WXVER=wxWidgets-3.1.0
+	if [ ! -f packages/${WXVER}.tar.bz2 ] ; then
+		wget "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.0/${WXVER}.tar.bz2"
+		mv ${WXVER}.tar.bz2 packages/
+	fi
+
+	#check SHA256
+	if [ x`sha256sum packages/${WXVER}.tar.bz2 | awk '{print $1}'` != x'e082460fb6bf14b7dd6e8ac142598d1d3d0b08a7b5ba402fdbf8711da7e66da8' ] ; then
+		echo "SHA256 sum mismatch for wxwidgets";
+		exit 1
+	fi
+	
+	#Extract
+	if [ ! -d ${WXVER} ] ; then
+		tar -jxf packages/${WXVER}.tar.bz2 || { echo "failed extracting wxwidgets "; exit 1; }
+	fi	
+	#----
+
+
 	popd 2> /dev/null
 
 }
@@ -402,17 +478,28 @@ function build_glew()
 	make clean
 	rm -f configure.log
 	
-	LD=$CC make -j $NUM_PROCS || { echo "glew build failed"; exit 1; } 
+	LD=$CC CC=$CC CXX=$CXX make -j $NUM_PROCS || { echo "glew build failed"; exit 1; } 
 
 	make install DESTDIR="$BASE"|| { echo "glew install failed"; exit 1; } 
 
 	popd >/dev/null
 	popd >/dev/null
 
+
+	#Check that glew built as a dynamic library. this should cause the init funcction
+	# to be preceded by the windows dynamic link prefix, __imp__
+	IMP_PREFIX=`find ./ -name \*dll | xargs x86_64-w64-mingw32-objdump -x | grep Init | grep __imp`
+	if [ x"$IMP_PREFIX" == x"" ] ; then
+		echo " Glew build failed, due to missing __imp__ prefix (dynamic link)"
+		exit 1
+	fi
+
 	#remove static library, as this can be incorrectly caught by linker
 	# leading to confusing messages
 	rm ${BASE}/lib/libglew*.a
 
+	#FIXME: The DLL and the include files are not being installed properly
+
 	echo "glew" >> $BUILD_STATUS_FILE
 }
 
@@ -424,7 +511,7 @@ function build_libpng()
 		return;
 	fi
 	pushd deps >/dev/null
-	pushd libpng-* >/dev/null
+	pushd libpng[0-9.]*-* >/dev/null
 	
 	if [ $? -ne 0 ] ; then
 		echo "libpng dir missing, or duplicated?"
@@ -433,7 +520,7 @@ function build_libpng()
 
 	make clean
 
-	./configure --host=$HOST_VAL --enable-shared --disable-static || { echo "Libpng configure failed"; exit 1; } 
+	./configure --host=$HOST_VAL --prefix=/ --enable-shared --disable-static || { echo "Libpng configure failed"; exit 1; } 
 
 	#Hack to strip linker version script
 	# eg as discussed : 
@@ -642,7 +729,7 @@ function build_qhull2012()
 	make SO="dll" -j $NUM_PROCS 
 	find ./ -name \*dll -exec cp {} ${BASE}/bin/	
 	make SO="dll" -j $NUM_PROCS || { echo "qhull build failed"; exit 1; } 
-	make install DESTDIR="$BASE"|| { echo "qhull install failed"; exit 1; } 
+	make SO="dll" install DESTDIR="$BASE"|| { echo "qhull install failed"; exit 1; } 
 
 	popd >/dev/null
 	popd >/dev/null
@@ -688,7 +775,7 @@ function build_qhull2015()
 	#  IMHO, once I manually alter a cmakefile, the cache should fucking well work out that it is out-of-date, as I keep getting nasty suprises.
 	# https://cmake.org/Bug/view.php?id=14820 .
 	rm -f CMakeCache.txt
-	cmake -DCMAKE_INSTALL_PREFIX="$BASE" -DCMAKE_TOOLCHAIN_FILE=../../patches/cmake-toolchain$BITS_VAL 
+	cmake -DCMAKE_INSTALL_PREFIX="$BASE" -DCMAKE_TOOLCHAIN_FILE=../../patches/cmake-toolchain$BITS_VAL -DWITH_BOOST=0 -DWITH_FFTW=0 -DWITH_LEMON=0 
 
 
 	#TODO: Better test (using c)
@@ -736,16 +823,35 @@ function build_qhull2009()
 		exit 1
 	fi
 
+
+	#The as-distributed version of libtool no longer builds dlls with my gcc, it just fails silently. Rebuild
+	libtoolize --install
+	autoreconf
+	automake --add-missing
+
+	#FIXME: Need to change the ptrT type on 64 bit, in mem.h
+	echo "Need to change ptrT, mem.h..."
+	exit 1
+
+	
+	make distclean
+
 	./configure --host=$HOST_VAL --enable-shared --disable-static --prefix=/ || { echo "$NAME configure failed"; exit 1; } 
 
 	sed -i "s/ gcc$/${HOST_VAL}-gcc/" Makefile
 	sed -i "s/ g++$/${HOST_VAL}-g++/" Makefile
 
+	
 	make SO="dll" -j $NUM_PROCS 
 	find ./ -name \*dll -exec cp {} ${BASE}/bin/	
 	make SO="dll" -j $NUM_PROCS || { echo "qhull build failed"; exit 1; } 
 	make install DESTDIR="$BASE"|| { echo "qhull install failed"; exit 1; } 
 
+	if [ x`find ./ -name \*.dll` == x"" ] ; then
+		echo "Qhull DLL missing, after build. That's not right... (last time due to -no-undefined not given to linker flags, which libtool then decides means should do a static build. Updating libtool makes this more sane, and errors out)"
+		exit 1;
+	fi
+
 	popd >/dev/null
 	popd >/dev/null
 
@@ -759,7 +865,7 @@ function build_qhull2009()
 #FIXME: This does not work. Qhull uses a strange combination of cmake
 # and hand makefiles, so propagating correct cross-compiling 
 # parameters is quite tricky
-function build_qhull2015()
+function build_qhull2015b()
 {
 	NAME="libqhull"
 	ISBUILT_ARG=${NAME}
@@ -884,18 +990,30 @@ function build_wx()
 		echo "wxwidgets dir missing, or duplicated?"
 		exit 1
 	fi
-	WX_VER=`grep "WX_RELEASE =" Makefile`
+	WX_VER=`egrep "WX_RELEASE\s*=" Makefile | awk -F= '{print $2}' | sed 's/\s*//'`
 
-	if [ x"${WX_VER}" == x"3.0" ] ; then
-		echo "WX needs to be at least 3.1, but is 3.0..."
-		exit 1
-	fi
+	case ${WX_VER} in
+		"3.0" )  
+			echo "WX needs to be at least 3.1, but is 3.0..."
+			echo "this is due to a propgrid bug"
+			exit 1
+			;;
+		[0-9].[0-9])
+			;;
+		"" )
+			echo "blah! - wx version not set!"
+			exit 1
+			;;
+	esac
 
 	make clean
 
-	WX_DISABLE="--disable-compat26 --disable-compat28 --disable-ole --disable-dataobj --disable-ipc --disable-apple_ieee --disable-zipstream --disable-protocol_ftp --disable-mshtmlhelp --disable-aui --disable-mdi --disable-postscript --disable-datepick --disable-splash --disable-wizarddlg --disable-joystick --disable-loggui --disable-debug --disable-logwin --disable-logdlg --disable-tarstream --disable-fs_archive --disable-fs_inet --disable-fs_zip --disable-snglinst --disable-sound --disabl [...]
+	#It might be possible to make this more aggressive. WX includes a lot of stuff we don't have any use for.
+	# Linux distributions disale their web stuff (eg disable-webkit), as there are apparently serious security issues with wx's implementation
+	# as a bonus, the more we disable, the less we have to compile!
+	WX_DISABLE="--disable-compat26 --disable-compat28 --disable-ipc --disable-apple_ieee --disable-zipstream --disable-protocol_ftp --disable-mshtmlhelp --disable-aui --disable-mdi --disable-postscript --disable-datepick --disable-splash --disable-wizarddlg --disable-joystick --disable-loggui --disable-debug --disable-logwin --disable-logdlg --disable-tarstream --disable-fs_archive --disable-fs_zip --disable-snglinst --disable-sound --without-regex --disable-stc --disable-bannerwindow --dis [...]
 
-	./configure --host=$HOST_VAL --enable-shared --disable-static --with-opengl --enable-unicode --without-regex --prefix=/ || { echo "wxwidgets configure failed"; exit 1; } 
+	./configure --host=$HOST_VAL --enable-shared --disable-static --with-opengl --enable-unicode $WX_DISABLE --enable-wxurl --prefix=/ || { echo "wxwidgets configure failed"; exit 1; } 
 
        #TODO: Where is this coming from ???
 	for i in `find ./ -name Makefile | grep -v samples | grep -v wxPython`
@@ -913,7 +1031,7 @@ function build_wx()
 
 	pushd ./bin/
 
-	if [ -l wx-config ] ; then
+	if [ -L wx-config ] ; then
 		unlink wx-config
 	fi
 
@@ -926,7 +1044,7 @@ function build_wx()
 	fi
 
 	if [ x"$WX_CONFIG_FILE" == x"" ] ; then
-		WX_CONFIG_FILE=`find ${BASE}/lib/wx/config/ -type f  -executable -name x\*mingw32-msw-unicode-\*`
+		WX_CONFIG_FILE=`find ${BASE}/lib/wx/config/ -type f  -executable -name \*mingw32-msw-unicode-\*`
 	fi	
 
 	if [ x"$WX_CONFIG_FILE" == x"" ] ; then
@@ -941,18 +1059,25 @@ function build_wx()
 	PATCH_LEVEL=1
 	sed -i "s at REPLACE_BASENAME@${BASE}@" wx-config || { echo "Failed to update wx-config with build root,. Aborting";  exit 1; }
 	popd
+	#FIXME : We still need to fix some problems with wx-config, wx-config --rescomp returns empty
 
 	pushd ./lib/
 	ln -s wx-${WX_VER}/wx/ wx
 	popd
 
 	pushd ./include/wx-${WX_VER}/wx/msw/
-	if [ x$BITS_VAL == 64 ] ; then
+	if [ x"$BITS_VAL" == x"64" ] ; then
+		echo "Replacing manifest"
 		cp amd64.manifest wx.manifest
 	fi
 	popd	
 
 
+
+	pushd ./include
+	ln -s wx-${WX_VER}/wx/ wx
+	popd
+
 	echo ${NAME} >> $BUILD_STATUS_FILE
 
 }
@@ -975,13 +1100,28 @@ function build_freetype()
 
 	tar -xjf freetype-[0-9]*bz2  || { echo "freetype decompress failed" ; exit 1; } 
 
-	pushd freetype-[0-9]*
+	#For some reason, the debian package puts freetype in its own self-subdir
+	pushd freetype-[0-9].[0-9].[0-9]
 	make clean
-	./configure --host=$HOST_VAL --enable-shared --disable-static --without-png --with-harfbuzz=no --prefix=/ || { echo "freetype configure failed"; exit 1; } 
+	#Create out-of-tree build zone
+	rm -rf build/
+	mkdir build
+	pushd build
+
+	LIBS=-lpng cmake -DWITH_HarfBuzz=OFF -DWITH_PNG=ON -DWITH_ZLIB=ON -DBUILD_SHARED_LIBS:BOOL=true -DCMAKE_INSTALL_PREFIX="$BASE" -DCMAKE_TOOLCHAIN_FILE=${BASE}/patches/cmake-toolchain$BITS_VAL -DPNG_PNG_INCLUDE_DIR=${BASE}/include/  ../
+
+	if [ $? -ne 0 ] ; then
+		echo "Cmake failed"
+		exit 1
+	fi
+
+	#Old configure-based build system
+#	./configure --host=$HOST_VAL --enable-shared --disable-static --without-png --with-harfbuzz=no --prefix=/ || { echo "freetype configure failed"; exit 1; } 
 
 	make -j $NUM_PROCS || { echo "freetype build failed"; exit 1; } 
 	
-	make install DESTDIR="$BASE"|| { echo "freetype install failed"; exit 1; } 
+	make install || { echo "freetype install failed"; exit 1; } 
+	popd 
 
 	popd >/dev/null
 	
@@ -997,7 +1137,10 @@ function build_freetype()
 	pushd include >/dev/null
 	ln -s freetype2/freetype/
 	popd >/dev/null
-	
+
+	#Freetype does not install .dll properly, do by hand
+	find ./ -name libfreetype*dll -exec cp {} ${BASE}/lib/ \; || { echo "Unable to find freetype dll. Aborting" ; exit 1 ;}
+
 	echo ${NAME} >> $BUILD_STATUS_FILE
 }
 
@@ -1061,7 +1204,10 @@ function build_gettext()
 	applyPatches
 	automake
 
-	./configure --host=$HOST_VAL --disable-threads --enable-shared --disable-static --prefix=/ || { echo "$NAME configure failed"; exit 1; } 
+	#The CFlags/cxxflags thing is due to a really old gettext bug
+	# (who is maintaining that these days? the fix is known for years!) 
+	# http://savannah.gnu.org/bugs/?36443
+	CFLAGS="$CFLAGS -O2" CXXFLAGS="$CXXFLAGS -O2" ./configure --host=$HOST_VAL --disable-threads --enable-shared --disable-static --prefix=/ || { echo "$NAME configure failed"; exit 1; } 
 
 	make -j $NUM_PROCS || { echo "$NAME build failed"; exit 1; } 
 	
@@ -1111,13 +1257,13 @@ function build_mathgl()
 	APPLY_PATCH_ARG=$PATCHES_MATHGL
 	applyPatches
 
-	if [ -d $BASEDIR/include/mgl2 ] ; then
-		echo "there are mgl2 headers already installed. Abort abort!"\
+	if [ -d ${BASE}/include/mgl2 ] ; then
+		echo "there are mgl2 headers already installed. Abort abort!"
 		exit 1
 	fi
 
 	rm -f CMakeCache.txt
-	LIBS=-lpng cmake -Denable-gsl="yes" -Denable-mpi="no"  -DCMAKE_INSTALL_PREFIX="$BASE" -DCMAKE_TOOLCHAIN_FILE=../../patches/cmake-toolchain$BITS_VAL -DPNG_PNG_INCLUDE_DIR=${BASEDIR}/include/
+	LIBS=-lpng cmake -Denable-gsl="yes" -Denable-jpeg="no" -Denable-mpi="no" -Denable-ltdl="no" -Denable-python="no"  -DCMAKE_INSTALL_PREFIX="$BASE" -DCMAKE_TOOLCHAIN_FILE=../../patches/cmake-toolchain$BITS_VAL -DPNG_PNG_INCLUDE_DIR=${BASEDIR}/include/
 
 	make -j $NUM_PROCS
 
@@ -1158,7 +1304,7 @@ function build_libvigra()
 	APPLY_PATCH_ARG=$PATCHES_LIBVIGRA
 	applyPatches
 
-	cmake -DCMAKE_INSTALL_PREFIX="$BASE" -DCMAKE_TOOLCHAIN_FILE=../../patches/cmake-toolchain$BITS_VAL -DPNG_PNG_INCLUDE_DIR=${BASEDIR}/include/
+	cmake -DCMAKE_INSTALL_PREFIX="$BASE" -DCMAKE_TOOLCHAIN_FILE=../../patches/cmake-toolchain$BITS_VAL -DPNG_PNG_INCLUDE_DIR=${BASE}/include/
 
 	make -j $NUM_PROCS
 	
@@ -1211,8 +1357,9 @@ function build_ftgl()
 	sed -i 's/return glBegin(GL_POINTS)/return 0;/' configure
 
 
+	FTFLAG=-I${BASE}/include/freetype2/
 
-	./configure --host=$HOST_VAL --enable-shared --disable-static --prefix=/ || { echo "ftgl configure failed"; exit 1; } 
+	LIBS="-lfreetype -lz" CXXFLAGS=$FTFLAG CFLAG=$FTFLAG ./configure --host=$HOST_VAL --with-ft-prefix=${BASE}---enable-shared --disable-static --prefix=/ || { echo "ftgl configure failed"; exit 1; } 
 
 
 	#MAkefile refers to ECHO variable for reporting completion, which does not exist
@@ -1393,6 +1540,8 @@ function build_3Depict()
 	#HACK - find all -I// and -L// and replace them with something sane
 	find ./ -name Makefile -exec sed -i "s at -I//@-I${BASE}/@" {} \;
 	find ./ -name Makefile -exec sed -i "s at -L//@-L${BASE}/@" {} \;
+	#HACK : remove -lm, which picks up host's lib, rather than mingw build
+	find ./ -name Makefile -exec sed -i "s at -lgslcblas -lm at -lgslcblas@" {} \;
 
 	#Actually perform build	
 	make -j$NUM_PROCS
@@ -1646,21 +1795,21 @@ DESTDIR=${BASE}
 
 build_zlib
 build_libtiff
-build_libpng
+build_libpng 
 build_libjpeg
 build_libxml2
 build_gsl
-build_qhull2012
+build_qhull2009 
 #build_qhull2015
 build_expat
-build_freetype
+build_freetype 
 build_libiconv
 build_gettext 
 build_ftgl 
-build_glew
+build_glew 
 build_libvigra
 
-build_mathgl 
+build_mathgl
 build_wx
 
 build_3Depict
diff --git a/packaging/mingw-debian-cross/patches/gettext-disable-tools b/packaging/mingw-debian-cross/patches/gettext-disable-tools
index 0c847a9..ab7c9be 100644
--- a/packaging/mingw-debian-cross/patches/gettext-disable-tools
+++ b/packaging/mingw-debian-cross/patches/gettext-disable-tools
@@ -1,47 +1,117 @@
-diff -r fc8ef26fbd29 Makefile.am
---- a/Makefile.am	Fri Apr 22 23:17:46 2016 +0100
-+++ b/Makefile.am	Fri Apr 22 23:20:55 2016 +0100
+diff -r 6a9c7304402f Makefile.am
+--- a/Makefile.am	Sun Jan 22 22:59:38 2017 +0000
++++ b/Makefile.am	Mon Jan 23 00:11:20 2017 +0000
 @@ -19,7 +19,7 @@
  AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
  ACLOCAL_AMFLAGS = -I m4
  
 -SUBDIRS = gnulib-local gettext-runtime gettext-tools
-+SUBDIRS = gnulib-local gettext-runtime
++SUBDIRS = gnulib-local gettext-runtime 
  
  changelog_etc = \
    gettext-runtime/ChangeLog.0 \
-@@ -57,10 +57,12 @@
+@@ -30,25 +30,7 @@
+   gettext-runtime/m4/ChangeLog.0 \
+   gettext-runtime/man/ChangeLog.0 \
+   gettext-runtime/src/ChangeLog.0 \
+-  gettext-runtime/tests/ChangeLog.0 \
+-  gettext-tools/ChangeLog.0 \
+-  gettext-tools/doc/ChangeLog.0 \
+-  gettext-tools/doc/ChangeLog.1 \
+-  gettext-tools/examples/ChangeLog.0 \
+-  gettext-tools/gnulib-tests/ChangeLog.0 \
+-  gettext-tools/libgettextpo/ChangeLog.0 \
+-  gettext-tools/libgrep/ChangeLog.0 \
+-  gettext-tools/m4/ChangeLog.0 \
+-  gettext-tools/man/ChangeLog.0 \
+-  gettext-tools/man/ChangeLog.1 \
+-  gettext-tools/misc/ChangeLog.0 \
+-  gettext-tools/projects/ChangeLog.0 \
+-  gettext-tools/src/ChangeLog.0 \
+-  gettext-tools/src/ChangeLog.1 \
+-  gettext-tools/styles/ChangeLog.0 \
+-  gettext-tools/tests/ChangeLog.0 \
+-  gettext-tools/tests/ChangeLog.1 \
+-  gnulib-local/ChangeLog.0
++  gettext-runtime/tests/ChangeLog.0 
+ 
+ EXTRA_DIST = \
+   $(changelog_etc) DEPENDENCIES PACKAGING HACKING ChangeLog.0 autogen.sh \
+@@ -57,76 +39,18 @@
    m4/libtool.m4
  
  # Additional dependencies for configure, due to the use of autoconf --trace.
 -$(srcdir)/configure: $(srcdir)/gettext-runtime/configure.ac $(srcdir)/gettext-tools/configure.ac 
-+$(srcdir)/configure: $(srcdir)/gettext-runtime/configure.ac 
++$(srcdir)/configure: $(srcdir)/gettext-runtime/configure.ac
  
  # Verify that some files are the same.
  distcheck-hook:
-+
-+distcheck-hook-disable:
- 	cmp -s gettext-runtime/po/Makefile.in.in gettext-tools/po/Makefile.in.in
- 	cmp -s gettext-runtime/po/Rules-quot gettext-tools/po/Rules-quot
- 	cmp -s gettext-runtime/po/boldquot.sed gettext-tools/po/boldquot.sed
-diff -r fc8ef26fbd29 Makefile.in
---- a/Makefile.in	Fri Apr 22 23:17:46 2016 +0100
-+++ b/Makefile.in	Fri Apr 22 23:20:55 2016 +0100
-@@ -312,7 +312,7 @@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies
- ACLOCAL_AMFLAGS = -I m4
--SUBDIRS = gnulib-local gettext-runtime gettext-tools
-+SUBDIRS = gnulib-local gettext-runtime
- changelog_etc = \
-   gettext-runtime/ChangeLog.0 \
-   gettext-runtime/doc/ChangeLog.0 \
-@@ -839,6 +839,8 @@
+-	cmp -s gettext-runtime/po/Makefile.in.in gettext-tools/po/Makefile.in.in
+-	cmp -s gettext-runtime/po/Rules-quot gettext-tools/po/Rules-quot
+-	cmp -s gettext-runtime/po/boldquot.sed gettext-tools/po/boldquot.sed
+-	cmp -s gettext-runtime/po/quot.sed gettext-tools/po/quot.sed
+-	cmp -s gettext-runtime/po/en at quot.header gettext-tools/po/en at quot.header
+-	cmp -s gettext-runtime/po/en at boldquot.header gettext-tools/po/en at boldquot.header
+-	cmp -s gettext-runtime/po/insert-header.sin gettext-tools/po/insert-header.sin
+-	cmp -s gettext-runtime/po/remove-potcdate.sin gettext-tools/po/remove-potcdate.sin
+-	cmp -s gettext-runtime/po/remove-potcdate.sin gettext-tools/examples/po/remove-potcdate.sin
+-	cmp -s gettext-runtime/m4/codeset.m4 gettext-tools/gnulib-m4/codeset.m4
+-	cmp -s gettext-runtime/m4/extern-inline.m4 gettext-tools/gnulib-m4/extern-inline.m4
+-	cmp -s gettext-runtime/m4/fcntl-o.m4 gettext-tools/gnulib-m4/fcntl-o.m4
+-	cmp -s gettext-runtime/m4/gettext.m4 gettext-tools/gnulib-m4/gettext.m4
+-	cmp -s gettext-runtime/m4/glibc2.m4 gettext-tools/gnulib-m4/glibc2.m4
+-	cmp -s gettext-runtime/m4/glibc21.m4 gettext-tools/gnulib-m4/glibc21.m4
+-	cmp -s gettext-runtime/m4/iconv.m4 gettext-tools/gnulib-m4/iconv.m4
+-	cmp -s gettext-runtime/m4/intdiv0.m4 gettext-tools/gnulib-m4/intdiv0.m4
+-	cmp -s gettext-runtime/m4/intl.m4 gettext-tools/gnulib-m4/intl.m4
+-	cmp -s gettext-runtime/m4/intldir.m4 gettext-tools/gnulib-m4/intldir.m4
+-	cmp -s gettext-runtime/m4/intlmacosx.m4 gettext-tools/gnulib-m4/intlmacosx.m4
+-	cmp -s gettext-runtime/m4/intmax.m4 gettext-tools/gnulib-m4/intmax.m4
+-	cmp -s gettext-runtime/m4/inttypes-pri.m4 gettext-tools/gnulib-m4/inttypes-pri.m4
+-	cmp -s gettext-runtime/m4/inttypes_h.m4 gettext-tools/gnulib-m4/inttypes_h.m4
+-	cmp -s gettext-runtime/m4/lcmessage.m4 gettext-tools/gnulib-m4/lcmessage.m4
+-	cmp -s gettext-runtime/m4/lock.m4 gettext-tools/gnulib-m4/lock.m4
+-	cmp -s gettext-runtime/m4/longlong.m4 gettext-tools/gnulib-m4/longlong.m4
+-	cmp -s gettext-runtime/m4/nls.m4 gettext-tools/gnulib-m4/nls.m4
+-	cmp -s gettext-runtime/m4/po.m4 gettext-tools/gnulib-m4/po.m4
+-	cmp -s gettext-runtime/m4/gettext.m4 gettext-tools/gnulib-m4/gettext.m4
+-	cmp -s gettext-runtime/m4/printf-posix.m4 gettext-tools/gnulib-m4/printf-posix.m4
+-	cmp -s gettext-runtime/m4/progtest.m4 gettext-tools/gnulib-m4/progtest.m4
+-	cmp -s gettext-runtime/m4/size_max.m4 gettext-tools/gnulib-m4/size_max.m4
+-	cmp -s gettext-runtime/m4/stdint_h.m4 gettext-tools/gnulib-m4/stdint_h.m4
+-	cmp -s gettext-runtime/m4/threadlib.m4 gettext-tools/gnulib-m4/threadlib.m4
+-	cmp -s gettext-runtime/m4/uintmax_t.m4 gettext-tools/gnulib-m4/uintmax_t.m4
+-	cmp -s gettext-runtime/m4/visibility.m4 gettext-tools/gnulib-m4/visibility.m4
+-	cmp -s gettext-runtime/m4/wchar_t.m4 gettext-tools/gnulib-m4/wchar_t.m4
+-	cmp -s gettext-runtime/m4/wint_t.m4 gettext-tools/gnulib-m4/wint_t.m4
+-	cmp -s gettext-runtime/m4/xsize.m4 gettext-tools/gnulib-m4/xsize.m4
+-	cmp -s gettext-runtime/libasprintf/gnulib-m4/intmax_t.m4 gettext-tools/gnulib-m4/intmax_t.m4
+-	test "`sed 1,17d gettext-runtime/intl/config.charset | md5sum`" = "`sed 1,17d gettext-tools/gnulib-lib/config.charset | md5sum`"
+-	test "`sed 1,16d gettext-runtime/intl/localcharset.h | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/localcharset.h | md5sum`"
+-	test "`sed 1,16d gettext-runtime/intl/localcharset.c | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/localcharset.c | md5sum`"
+-	test "`sed 1,16d gettext-runtime/intl/localename.c | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/localename.c | md5sum`"
+-	test "`sed 1,15d gettext-runtime/intl/lock.h | md5sum`" = "`sed 1,15d gettext-tools/gnulib-lib/glthread/lock.h | md5sum`"
+-	test "`sed 1,15d gettext-runtime/intl/lock.c | md5sum`" = "`sed -e 1,15d -e 's,glthread/,,g' gettext-tools/gnulib-lib/glthread/lock.c | md5sum`"
+-	test "`sed 1,16d gettext-runtime/intl/verify.h | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/verify.h | md5sum`"
+ 	cmp -s gettext-runtime/intl/printf-args.h gettext-runtime/libasprintf/printf-args.h
+ 	cmp -s gettext-runtime/intl/printf-args.c gettext-runtime/libasprintf/printf-args.c
+ 	cmp -s gettext-runtime/intl/printf-parse.h gettext-runtime/libasprintf/printf-parse.h
+ 	cmp -s gettext-runtime/intl/printf-parse.c gettext-runtime/libasprintf/printf-parse.c
+ 	cmp -s gettext-runtime/intl/verify.h gettext-runtime/libasprintf/verify.h
+-	test "`sed 1,16d gettext-runtime/intl/ref-add.sin | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/ref-add.sin | md5sum`"
+-	test "`sed 1,16d gettext-runtime/intl/ref-del.sin | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/ref-del.sin | md5sum`"
+-	test "`sed 1,18d gettext-runtime/intl/relocatable.h | md5sum`" = "`sed 1,18d gettext-tools/gnulib-lib/relocatable.h | md5sum`"
+-	test "`sed 1,18d gettext-runtime/intl/relocatable.c | md5sum`" = "`sed 1,18d gettext-tools/gnulib-lib/relocatable.c | md5sum`"
+ 	cmp -s gettext-runtime/intl/vasnprintf.h gettext-runtime/libasprintf/vasnprintf.h
+-	test "`sed 1,16d gettext-runtime/intl/vasnprintf.c | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/vasnprintf.c | md5sum`"
+ 	cmp -s gettext-runtime/intl/vasnprintf.c gettext-runtime/libasprintf/vasnprintf.c
+ 	cmp -s gettext-runtime/intl/xsize.h gettext-runtime/libasprintf/xsize.h
+-	test "`sed 1,16d gettext-runtime/intl/xsize.h | md5sum`" = "`sed 1,16d gettext-tools/gnulib-lib/xsize.h | md5sum`"
+-	cmp -s gettext-runtime/man/help2man gettext-tools/man/help2man
+-	cmp -s gettext-runtime/man/x-to-1.in gettext-tools/man/x-to-1.in
+-	cmp -s gettext-runtime/libasprintf/texi2html gettext-tools/doc/texi2html
+-	cmp -s gettext-tools/examples/hello-java-awt/m4/TestAWT.java gettext-tools/examples/hello-java-swing/m4/TestAWT.java
+-	cmp -s gettext-tools/examples/hello-java-awt/m4/TestAWT.class gettext-tools/examples/hello-java-swing/m4/TestAWT.class
+ 	test "`sed 1,15d gnulib-local/lib/alloca.in.h | md5sum`" = "`sed 1,15d gettext-runtime/libasprintf/alloca.in.h | md5sum`"
  
- # Verify that some files are the same.
- distcheck-hook:
-+
-+distcheck-hook-disable:
- 	cmp -s gettext-runtime/po/Makefile.in.in gettext-tools/po/Makefile.in.in
- 	cmp -s gettext-runtime/po/Rules-quot gettext-tools/po/Rules-quot
- 	cmp -s gettext-runtime/po/boldquot.sed gettext-tools/po/boldquot.sed
+ # DJGPP port.
diff --git a/packaging/mingw-debian-cross/patches/glew-makefile b/packaging/mingw-debian-cross/patches/glew-makefile
index bf34418..e698ad5 100644
--- a/packaging/mingw-debian-cross/patches/glew-makefile
+++ b/packaging/mingw-debian-cross/patches/glew-makefile
@@ -27,13 +27,28 @@ diff -r ec3d3c4b0904 Makefile
  BINDIR    ?= $(GLEW_DEST)/bin
  LIBDIR    ?= $(GLEW_DEST)/lib
  INCDIR    ?= $(GLEW_DEST)/include/GL
+@@ -151,12 +151,12 @@
+ VISUALINFO.BIN.OBJ := $(addprefix tmp/$(SYSTEM)/default/shared/,$(notdir $(VISUALINFO.BIN.SRC)))
+ VISUALINFO.BIN.OBJ := $(VISUALINFO.BIN.OBJ:.c=.o)
+ 
+-# Don't build glewinfo or visualinfo for NaCL, yet.
++# Don't build glewinfo or visualinfo 
+ 
+ ifneq ($(filter nacl%,$(SYSTEM)),)
+ glew.bin: glew.lib bin
+ else
+-glew.bin: glew.lib bin bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN) 
++glew.bin: glew.lib bin 
+ endif
+ 
+ bin:
 diff -r 9bbbd8b43e5b config/Makefile.mingw
 --- a/config/Makefile.mingw	Sun Jun 29 17:24:13 2014 +0100
 +++ b/config/Makefile.mingw	Sun Jun 29 17:25:52 2014 +0100
 @@ -1,7 +1,4 @@
  NAME = glew32
 -# use gcc for linking, with ld it does not work
--CC := gcc
+-CC := gcc -fno-builtin
 -LD := gcc
  LN :=
  CFLAGS.SO = -DGLEW_BUILD
diff --git a/packaging/mingw-debian-cross/patches/glew-makefile.base b/packaging/mingw-debian-cross/patches/glew-makefile.base
index dda9222..fb011c7 100644
--- a/packaging/mingw-debian-cross/patches/glew-makefile.base
+++ b/packaging/mingw-debian-cross/patches/glew-makefile.base
@@ -27,13 +27,28 @@ diff -r ec3d3c4b0904 Makefile
  BINDIR    ?= $(GLEW_DEST)/bin
  LIBDIR    ?= $(GLEW_DEST)/lib
  INCDIR    ?= $(GLEW_DEST)/include/GL
+@@ -151,12 +151,12 @@
+ VISUALINFO.BIN.OBJ := $(addprefix tmp/$(SYSTEM)/default/shared/,$(notdir $(VISUALINFO.BIN.SRC)))
+ VISUALINFO.BIN.OBJ := $(VISUALINFO.BIN.OBJ:.c=.o)
+ 
+-# Don't build glewinfo or visualinfo for NaCL, yet.
++# Don't build glewinfo or visualinfo 
+ 
+ ifneq ($(filter nacl%,$(SYSTEM)),)
+ glew.bin: glew.lib bin
+ else
+-glew.bin: glew.lib bin bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN) 
++glew.bin: glew.lib bin 
+ endif
+ 
+ bin:
 diff -r 9bbbd8b43e5b config/Makefile.mingw
 --- a/config/Makefile.mingw	Sun Jun 29 17:24:13 2014 +0100
 +++ b/config/Makefile.mingw	Sun Jun 29 17:25:52 2014 +0100
 @@ -1,7 +1,4 @@
  NAME = glew32
 -# use gcc for linking, with ld it does not work
--CC := gcc
+-CC := gcc -fno-builtin
 -LD := gcc
  LN :=
  CFLAGS.SO = -DGLEW_BUILD
diff --git a/packaging/mingw-debian-cross/patches/mathgl-disable-things b/packaging/mingw-debian-cross/patches/mathgl-disable-things
index 9de0e5c..cd036d2 100644
--- a/packaging/mingw-debian-cross/patches/mathgl-disable-things
+++ b/packaging/mingw-debian-cross/patches/mathgl-disable-things
@@ -1,6 +1,6 @@
-diff -r 5d7a3ac5d87d CMakeLists.txt
---- a/CMakeLists.txt	Sat Apr 23 01:11:46 2016 +0100
-+++ b/CMakeLists.txt	Sat Apr 23 01:14:12 2016 +0100
+diff -r 943ad5d7d898 CMakeLists.txt
+--- a/CMakeLists.txt	Sun Jan 29 19:44:20 2017 +0000
++++ b/CMakeLists.txt	Sun Jan 29 19:47:00 2017 +0000
 @@ -94,17 +94,17 @@
  set(MGL_LIB_INSTALL_DIR "lib" CACHE STRING "Set library install directory")
  string(TIMESTAMP MGL_NIGHT "%d.%m.%y")
@@ -27,18 +27,23 @@ diff -r 5d7a3ac5d87d CMakeLists.txt
  option(enable-openmp "Enable OpenMP support" OFF)
  
  if(enable-pthread AND enable-openmp)
-@@ -114,7 +114,7 @@
+@@ -113,8 +113,8 @@
+ 
  option(enable-lgpl "Enable only LGPL part of MathGL")
  option(enable-mgl2 "Use names 'libmgl2-*' instead of 'libmgl-*'")
- option(enable-ltdl "Enable loading modules support" ON)
+-option(enable-ltdl "Enable loading modules support" ON)
 -CMAKE_DEPENDENT_OPTION(enable-doc-site "Enable HTML documentation for website" OFF "NOT enable-all-docs" ON)
++option(enable-ltdl "Enable loading modules support" OFF)
 +CMAKE_DEPENDENT_OPTION(enable-doc-site "Enable HTML documentation for website" OFF "NOT enable-all-docs" O)
  CMAKE_DEPENDENT_OPTION(enable-doc-html "Enable HTML documentation" OFF "NOT enable-all-docs" ON)
  CMAKE_DEPENDENT_OPTION(enable-doc-info "Enable INFO documentation" OFF "NOT enable-all-docs" ON)
  CMAKE_DEPENDENT_OPTION(enable-doc-pdf-ru "Enable Russian PDF documentation" OFF "NOT enable-all-docs" ON)
-@@ -128,16 +128,16 @@
+@@ -126,18 +126,18 @@
+ 
+ CMAKE_DEPENDENT_OPTION(enable-zlib "Enable zlib support" ON "NOT enable-all" ON)
  CMAKE_DEPENDENT_OPTION(enable-png "Enable png support" ON "NOT enable-all" ON)
- CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" ON "NOT enable-all" ON)
+-CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" ON "NOT enable-all" ON)
++CMAKE_DEPENDENT_OPTION(enable-jpeg "Enable jpeg support" OFF "NOT enable-all" ON)
  MGL_DEPENDENT_OPTION(enable-gsl "Enable gsl support" ON "NOT enable-lgpl" ON "NOT enable-all" ON)
 -MGL_DEPENDENT_OPTION(enable-hdf4 "Enable hdf4 support" ON "NOT enable-lgpl" ON "NOT enable-all" ON)
 -MGL_DEPENDENT_OPTION(enable-hdf5 "Enable hdf5 support" ON "NOT enable-lgpl" ON "NOT enable-all" ON)
@@ -80,3 +85,12 @@ diff -r 5d7a3ac5d87d CMakeLists.txt
  
  include_directories( ${MathGL_SOURCE_DIR}/include ${MathGL_BINARY_DIR}/include)
  set(MGL_INCLUDE_PATH "${CMAKE_INSTALL_PREFIX}/include/mgl2")
+@@ -263,6 +263,8 @@
+ 		set(MGL_HAVE_OMP 1)
+ 		set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+ 		set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
++		set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fopenmp ")
++
+ 	else(OPENMP_FOUND)
+ 		message(SEND_ERROR "Couldn't find OpenMP. You can enable POSIX threads instead.")
+ 		set(MGL_HAVE_OMP 0)
diff --git a/packaging/mingw-debian-cross/patches/mathgl-disable-widgets b/packaging/mingw-debian-cross/patches/mathgl-disable-widgets
deleted file mode 100644
index db65572..0000000
--- a/packaging/mingw-debian-cross/patches/mathgl-disable-widgets
+++ /dev/null
@@ -1,10 +0,0 @@
-diff -r 87e795f6a771 Makefile.am
---- a/Makefile.am	Sat Nov 16 16:45:55 2013 +0100
-+++ b/Makefile.am	Sat Nov 16 16:46:30 2013 +0100
-@@ -1,5 +1,5 @@
- ACLOCAL_AMFLAGS = -I config
--SUBDIRS = mgl lang widgets utils examples include
-+SUBDIRS = mgl lang utils include
- 
- doctargets =
- 
diff --git a/packaging/mingw-debian-cross/patches/mathgl-fix-pthread-and-linking b/packaging/mingw-debian-cross/patches/mathgl-fix-pthread-and-linking
deleted file mode 100644
index 7f7fe88..0000000
--- a/packaging/mingw-debian-cross/patches/mathgl-fix-pthread-and-linking
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -r 9fbd31e8af49 CMakeLists.txt
---- a/CMakeLists.txt	Sun Sep 20 14:25:16 2015 +0100
-+++ b/CMakeLists.txt	Sun Sep 20 14:26:23 2015 +0100
-@@ -12,9 +12,9 @@
- set(MathGL_VERSION_MINOR 2.2)
- set(MathGL_SOVERSION 7.2.0)
- 
--set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro")
--set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro")
--set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro")
-+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -lpng")
-+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lpng")
-+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpng")
- 
- MACRO(MGL_DEPENDENT_OPTION option doc default depends1 force1 depends2 force2)
-   IF(${option}_ISSET MATCHES "^${option}_ISSET$")
-@@ -61,7 +61,7 @@
- 
- set(MGL_LIB_INSTALL_DIR "lib" CACHE STRING "Set library install directory")
- 
--option(enable-double "Enable double precision in MathGL library" OFF)
-+option(enable-double "Enable double precision in MathGL library" ON)
- option(enable-simple "Slightly increase drawing speed but disable mglDataA class")
- option(enable-mpi "Enable mpi" OFF)
- option(enable-opengl "Enable OpenGL support" OFF)
-@@ -70,7 +70,7 @@
- option(enable-all "Enable all core features")
- option(enable-all-widgets "Enable all Widgets" OFF)
- option(enable-all-swig "Enable all SWIG based interfaces" OFF)
--option(enable-pthread "Enable POSIX threads support" ON)
-+option(enable-pthread "Enable POSIX threads support" OFF)
- option(enable-openmp "Enable OpenMP support" OFF)
- option(enable-lgpl "Enable only LGPL part of MathGL")
- option(enable-mgl2 "Use names 'libmgl2-*' instead of 'libmgl-*'")
diff --git a/packaging/mingw-debian-cross/patches/mathgl-openmp-linker-flag b/packaging/mingw-debian-cross/patches/mathgl-openmp-linker-flag
deleted file mode 100644
index 35dbece..0000000
--- a/packaging/mingw-debian-cross/patches/mathgl-openmp-linker-flag
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b369da1..0bc7547 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -219,6 +219,8 @@ if(enable-openmp)
- 		set(MGL_HAVE_OMP 1)
- 		set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
- 		set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-+		set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fopenmp ")
-+
- 	else(OPENMP_FOUND)
- 		message(SEND_ERROR "Couldn't find OpenMP. You can enable POSIX threads instead.")
- 		set(MGL_HAVE_OMP 0)
diff --git a/packaging/mingw-debian-cross/patches/qhull-2009-configure_ac.patch b/packaging/mingw-debian-cross/patches/qhull-2009-configure_ac.patch
new file mode 100644
index 0000000..0f7812d
--- /dev/null
+++ b/packaging/mingw-debian-cross/patches/qhull-2009-configure_ac.patch
@@ -0,0 +1,12 @@
+diff -r cd83d3689742 configure.ac
+--- a/configure.ac	Sun Jan 29 20:09:34 2017 +0000
++++ b/configure.ac	Sun Jan 29 20:13:28 2017 +0000
+@@ -8,7 +8,7 @@
+ AC_CONFIG_AUX_DIR(config)
+ AC_CONFIG_MACRO_DIR(config)
+ 
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([foreign])
+ 
+ AC_PROG_CC
+ AC_PROG_LIBTOOL
diff --git a/packaging/mingw-debian-cross/patches/vigra-cpp-version.patch b/packaging/mingw-debian-cross/patches/vigra-cpp-version.patch
new file mode 100644
index 0000000..7dbed52
--- /dev/null
+++ b/packaging/mingw-debian-cross/patches/vigra-cpp-version.patch
@@ -0,0 +1,15 @@
+diff -r 54fd61517735 CMakeLists.txt
+--- a/CMakeLists.txt	Sun Jan 29 18:46:17 2017 +0000
++++ b/CMakeLists.txt	Sun Jan 29 18:46:41 2017 +0000
+@@ -163,8 +163,9 @@
+ include(VigraConfigureThreading)
+ 
+ # Should come after VigraDetectThreading, since that updates the -std flag.
+-include(VigraDetectCppVersion)
+-VIGRA_DETECT_CPP_VERSION()
++#include(VigraDetectCppVersion)
++#VIGRA_DETECT_CPP_VERSION()
++SET(VIGRA_CPP_VERSION "201402")
+ 
+ IF(WITH_VIGRANUMPY)
+     FIND_PACKAGE(VIGRANUMPY_DEPENDENCIES)
diff --git a/packaging/mingw-debian-cross/windows-installer.nsi b/packaging/mingw-debian-cross/windows-installer.nsi
index 096855e..0a3f756 100755
--- a/packaging/mingw-debian-cross/windows-installer.nsi
+++ b/packaging/mingw-debian-cross/windows-installer.nsi
@@ -2,7 +2,7 @@
 
 ; HM NIS Edit Wizard helper defines
 !define PRODUCT_NAME "3Depict"
-!define PRODUCT_VERSION "0.0.19"
+!define PRODUCT_VERSION "0.0.20"
 !define PRODUCT_PUBLISHER "D. Haley, A. Ceguerra"
 !define PRODUCT_WEB_SITE "http://threedepict.sourceforge.net"
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\3Depict.exe"
diff --git a/packaging/packaging/.howToRelease.txt.swp b/packaging/packaging/.howToRelease.txt.swp
new file mode 100644
index 0000000..ceb49d7
Binary files /dev/null and b/packaging/packaging/.howToRelease.txt.swp differ
diff --git a/src/3Depict.cpp b/src/3Depict.cpp
index e7a109e..1cd5624 100644
--- a/src/3Depict.cpp
+++ b/src/3Depict.cpp
@@ -248,7 +248,7 @@ int threeDepictApp::FilterEvent(wxEvent& event)
 				{
 					wxCommandEvent cmd;
 					MainFrame->OnProgressAbort( cmd);
-					return true;
+					return  wxEventFilter::Event_Processed ;
 				}
 #ifdef __APPLE__
 				else if(MainFrame->IsFullScreen())
@@ -256,7 +256,7 @@ int threeDepictApp::FilterEvent(wxEvent& event)
 					wxCommandEvent cmd;
 					MainFrame->OnViewFullscreen(cmd);
 					MainFrame->ShowFullScreen(false);
-					return true;
+					return  wxEventFilter::Event_Processed ;
 				}
 #endif
 
@@ -288,7 +288,9 @@ int threeDepictApp::FilterEvent(wxEvent& event)
 
 	}
 
-    return -1;
+
+    //Process event as normal
+    return wxEventFilter::Event_Skip;
 }
 
 //Command line help table and setup
diff --git a/src/Makefile.am b/src/Makefile.am
index de622e3..d0c4fe2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -53,16 +53,15 @@ FILTER_HEADER_FILES = backend/filters/allFilter.h backend/filters/filterCommon.h
 
 BACKEND_SOURCE_FILES = backend/animator.cpp backend/filtertreeAnalyse.cpp backend/filtertree.cpp \
 		     	backend/APT/ionhit.cpp backend/APT/APTFileIO.cpp backend/APT/APTRanges.cpp backend/APT/abundanceParser.cpp \
-			backend/APT/vtk.cpp \
+			backend/APT/vtk.cpp backend/APT/3DapReader.cpp\
 			backend/filters/algorithms/K3DTree.cpp backend/filters/algorithms/K3DTree-mk2.cpp\
-			backend/filter.cpp backend/filters/algorithms/rdf.cpp \
+			backend/filter.cpp backend/filters/algorithms/spatial.cpp \
 		       backend/viscontrol.cpp backend/state.cpp backend/plot.cpp  backend/configFile.cpp 
 
 BACKEND_HEADER_FILES =  backend/animator.h backend/filtertreeAnalyse.h backend/filtertree.h\
 			backend/APT/ionhit.h backend/APT/APTFileIO.h backend/APT/APTRanges.h backend/APT/abundanceParser.h \
-			backend/APT/vtk.h backend/filters/algorithms/K3DTree.h backend/filters/algorithms/K3DTree-mk2.h \
-			backend/filter.h backend/filters/algorithms/rdf.h \
-			backend/viscontrol.h backend/state.h backend/plot.h backend/configFile.h \
+			backend/APT/vtk.h backend/APT/3DapReader.h backend/filters/algorithms/K3DTree.h backend/filters/algorithms/K3DTree-mk2.h \
+			backend/filter.h backend/filters/algorithms/spatial.h backend/viscontrol.h backend/state.h backend/plot.h backend/configFile.h \
 		        backend/tree.hh
 
 #------------
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..6dad813
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,2405 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = 3Depict$(EXEEXT)
+
+#Do we have or need windows-XP "resource" files for look and feel?
+ at HAVE_WINDRES_TRUE@am__append_1 = 3Depict.rc
+ at HAVE_WINDRES_TRUE@am__append_2 = 3Depict.rc.o
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compiler_vendor.m4 \
+	$(top_srcdir)/m4/ax_compiler_version.m4 \
+	$(top_srcdir)/m4/ftgl.m4 $(top_srcdir)/m4/gsl.m4 \
+	$(top_srcdir)/m4/wxwin.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/m4/ax_compare_version.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am__3Depict_SOURCES_DIST = 3Depict.cpp testing/testing.cpp \
+	wx/wxcommon.cpp wx/wxcomponents.cpp winconsole.cpp \
+	wx/propertyGridUpdater.cpp testing/testing.h wx/wxcommon.h \
+	wx/wxcomponents.h winconsole.h wx/propertyGridUpdater.h \
+	gui/mainFrame.cpp gui/mathglPane.cpp gui/cropPanel.cpp \
+	gui/glPane.cpp gui/dialogs/ExportPos.cpp \
+	gui/dialogs/ExportRngDialog.cpp gui/dialogs/prefDialog.cpp \
+	gui/dialogs/resolutionDialog.cpp gui/dialogs/StashDialog.cpp \
+	gui/dialogs/autosaveDialog.cpp \
+	gui/dialogs/filterErrorDialog.cpp \
+	gui/dialogs/animateFilterDialog.cpp \
+	gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp \
+	gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp \
+	gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp \
+	gui/dialogs/rangeEditDialog.cpp gui/mainFrame.h \
+	gui/mathglPane.h gui/cropPanel.h gui/art.h gui/glPane.h \
+	gui/dialogs/ExportPos.h gui/dialogs/ExportRngDialog.h \
+	gui/dialogs/prefDialog.h gui/dialogs/StashDialog.h \
+	gui/dialogs/resolutionDialog.h gui/dialogs/autosaveDialog.h \
+	gui/dialogs/filterErrorDialog.h \
+	gui/dialogs/animateFilterDialog.h \
+	gui/dialogs/animateSubDialogs/realKeyFrameDialog.h \
+	gui/dialogs/animateSubDialogs/colourKeyFrameDialog.h \
+	gui/dialogs/animateSubDialogs/stringKeyFrameDialog.h \
+	gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.h \
+	gui/dialogs/rangeEditDialog.h backend/filters/allFilter.cpp \
+	backend/filters/filterCommon.cpp backend/filters/dataLoad.cpp \
+	backend/filters/ionDownsample.cpp \
+	backend/filters/rangeFile.cpp backend/filters/voxelise.cpp \
+	backend/filters/spectrumPlot.cpp backend/filters/transform.cpp \
+	backend/filters/externalProgram.cpp \
+	backend/filters/ionClip.cpp backend/filters/ionColour.cpp \
+	backend/filters/boundingBox.cpp backend/filters/profile.cpp \
+	backend/filters/spatialAnalysis.cpp \
+	backend/filters/clusterAnalysis.cpp \
+	backend/filters/ionInfo.cpp backend/filters/annotation.cpp \
+	backend/filters/geometryHelpers.cpp \
+	backend/filters/algorithms/binomial.cpp \
+	backend/filters/algorithms/mass.cpp \
+	backend/filters/allFilter.h backend/filters/filterCommon.h \
+	backend/filters/dataLoad.h backend/filters/ionDownsample.h \
+	backend/filters/rangeFile.h backend/filters/voxelise.h \
+	backend/filters/spectrumPlot.h backend/filters/transform.h \
+	backend/filters/externalProgram.h backend/filters/ionClip.h \
+	backend/filters/ionColour.h backend/filters/boundingBox.h \
+	backend/filters/profile.h backend/filters/spatialAnalysis.h \
+	backend/filters/clusterAnalysis.h backend/filters/ionInfo.h \
+	backend/filters/annotation.h backend/filters/geometryHelpers.h \
+	backend/filters/algorithms/binomial.h \
+	backend/filters/algorithms/mass.h backend/animator.cpp \
+	backend/filtertreeAnalyse.cpp backend/filtertree.cpp \
+	backend/APT/ionhit.cpp backend/APT/APTFileIO.cpp \
+	backend/APT/APTRanges.cpp backend/APT/abundanceParser.cpp \
+	backend/APT/vtk.cpp backend/APT/3DapReader.cpp \
+	backend/filters/algorithms/K3DTree.cpp \
+	backend/filters/algorithms/K3DTree-mk2.cpp backend/filter.cpp \
+	backend/filters/algorithms/spatial.cpp backend/viscontrol.cpp \
+	backend/state.cpp backend/plot.cpp backend/configFile.cpp \
+	backend/animator.h backend/filtertreeAnalyse.h \
+	backend/filtertree.h backend/APT/ionhit.h \
+	backend/APT/APTFileIO.h backend/APT/APTRanges.h \
+	backend/APT/abundanceParser.h backend/APT/vtk.h \
+	backend/APT/3DapReader.h backend/filters/algorithms/K3DTree.h \
+	backend/filters/algorithms/K3DTree-mk2.h backend/filter.h \
+	backend/filters/algorithms/spatial.h backend/viscontrol.h \
+	backend/state.h backend/plot.h backend/configFile.h \
+	backend/tree.hh gl/scene.cpp gl/drawables.cpp gl/effect.cpp \
+	gl/textures.cpp gl/select.cpp gl/cameras.cpp gl/isoSurface.cpp \
+	gl/tr.cpp gl/scene.h gl/drawables.h gl/effect.h gl/textures.h \
+	gl/select.h gl/cameras.h gl/isoSurface.h gl/tr.h gl/glDebug.h \
+	common/pngread.c common/stringFuncs.cpp common/constants.cpp \
+	common/xmlHelper.cpp common/colourmap.cpp common/voxels.cpp \
+	common/mathfuncs.cpp common/basics.cpp common/assertion.cpp \
+	common/mesh.cpp common/gsl_helper.cpp common/pngread.h \
+	common/stringFuncs.h common/constants.h common/xmlHelper.h \
+	common/colourmap.h common/mathfuncs.h common/basics.h \
+	common/translation.h common/endianTest.h common/assertion.h \
+	common/voxels.h common/array2D.h common/mesh.h \
+	common/gsl_helper.h testing/mglTesting.cpp \
+	testing/mglTesting.h 3Depict.rc
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = 3Depict-3Depict.$(OBJEXT) \
+	testing/3Depict-testing.$(OBJEXT) \
+	wx/3Depict-wxcommon.$(OBJEXT) \
+	wx/3Depict-wxcomponents.$(OBJEXT) 3Depict-winconsole.$(OBJEXT) \
+	wx/3Depict-propertyGridUpdater.$(OBJEXT)
+am__objects_2 =
+am__objects_3 = gui/dialogs/3Depict-ExportPos.$(OBJEXT) \
+	gui/dialogs/3Depict-ExportRngDialog.$(OBJEXT) \
+	gui/dialogs/3Depict-prefDialog.$(OBJEXT) \
+	gui/dialogs/3Depict-resolutionDialog.$(OBJEXT) \
+	gui/dialogs/3Depict-StashDialog.$(OBJEXT) \
+	gui/dialogs/3Depict-autosaveDialog.$(OBJEXT) \
+	gui/dialogs/3Depict-filterErrorDialog.$(OBJEXT) \
+	gui/dialogs/3Depict-animateFilterDialog.$(OBJEXT) \
+	gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.$(OBJEXT) \
+	gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.$(OBJEXT) \
+	gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.$(OBJEXT) \
+	gui/dialogs/3Depict-rangeEditDialog.$(OBJEXT)
+am__objects_4 = gui/3Depict-mainFrame.$(OBJEXT) \
+	gui/3Depict-mathglPane.$(OBJEXT) \
+	gui/3Depict-cropPanel.$(OBJEXT) gui/3Depict-glPane.$(OBJEXT) \
+	$(am__objects_3)
+am__objects_5 = $(am__objects_2)
+am__objects_6 = backend/filters/3Depict-allFilter.$(OBJEXT) \
+	backend/filters/3Depict-filterCommon.$(OBJEXT) \
+	backend/filters/3Depict-dataLoad.$(OBJEXT) \
+	backend/filters/3Depict-ionDownsample.$(OBJEXT) \
+	backend/filters/3Depict-rangeFile.$(OBJEXT) \
+	backend/filters/3Depict-voxelise.$(OBJEXT) \
+	backend/filters/3Depict-spectrumPlot.$(OBJEXT) \
+	backend/filters/3Depict-transform.$(OBJEXT) \
+	backend/filters/3Depict-externalProgram.$(OBJEXT) \
+	backend/filters/3Depict-ionClip.$(OBJEXT) \
+	backend/filters/3Depict-ionColour.$(OBJEXT) \
+	backend/filters/3Depict-boundingBox.$(OBJEXT) \
+	backend/filters/3Depict-profile.$(OBJEXT) \
+	backend/filters/3Depict-spatialAnalysis.$(OBJEXT) \
+	backend/filters/3Depict-clusterAnalysis.$(OBJEXT) \
+	backend/filters/3Depict-ionInfo.$(OBJEXT) \
+	backend/filters/3Depict-annotation.$(OBJEXT) \
+	backend/filters/3Depict-geometryHelpers.$(OBJEXT) \
+	backend/filters/algorithms/3Depict-binomial.$(OBJEXT) \
+	backend/filters/algorithms/3Depict-mass.$(OBJEXT)
+am__objects_7 = backend/3Depict-animator.$(OBJEXT) \
+	backend/3Depict-filtertreeAnalyse.$(OBJEXT) \
+	backend/3Depict-filtertree.$(OBJEXT) \
+	backend/APT/3Depict-ionhit.$(OBJEXT) \
+	backend/APT/3Depict-APTFileIO.$(OBJEXT) \
+	backend/APT/3Depict-APTRanges.$(OBJEXT) \
+	backend/APT/3Depict-abundanceParser.$(OBJEXT) \
+	backend/APT/3Depict-vtk.$(OBJEXT) \
+	backend/APT/3Depict-3DapReader.$(OBJEXT) \
+	backend/filters/algorithms/3Depict-K3DTree.$(OBJEXT) \
+	backend/filters/algorithms/3Depict-K3DTree-mk2.$(OBJEXT) \
+	backend/3Depict-filter.$(OBJEXT) \
+	backend/filters/algorithms/3Depict-spatial.$(OBJEXT) \
+	backend/3Depict-viscontrol.$(OBJEXT) \
+	backend/3Depict-state.$(OBJEXT) backend/3Depict-plot.$(OBJEXT) \
+	backend/3Depict-configFile.$(OBJEXT)
+am__objects_8 = gl/3Depict-scene.$(OBJEXT) \
+	gl/3Depict-drawables.$(OBJEXT) gl/3Depict-effect.$(OBJEXT) \
+	gl/3Depict-textures.$(OBJEXT) gl/3Depict-select.$(OBJEXT) \
+	gl/3Depict-cameras.$(OBJEXT) gl/3Depict-isoSurface.$(OBJEXT) \
+	gl/3Depict-tr.$(OBJEXT)
+am__objects_9 = common/3Depict-pngread.$(OBJEXT) \
+	common/3Depict-stringFuncs.$(OBJEXT) \
+	common/3Depict-constants.$(OBJEXT) \
+	common/3Depict-xmlHelper.$(OBJEXT) \
+	common/3Depict-colourmap.$(OBJEXT) \
+	common/3Depict-voxels.$(OBJEXT) \
+	common/3Depict-mathfuncs.$(OBJEXT) \
+	common/3Depict-basics.$(OBJEXT) \
+	common/3Depict-assertion.$(OBJEXT) \
+	common/3Depict-mesh.$(OBJEXT) \
+	common/3Depict-gsl_helper.$(OBJEXT)
+am__objects_10 = testing/3Depict-mglTesting.$(OBJEXT)
+am__objects_11 = $(am__objects_1) $(am__objects_2) $(am__objects_4) \
+	$(am__objects_5) $(am__objects_6) $(am__objects_2) \
+	$(am__objects_7) $(am__objects_2) $(am__objects_8) \
+	$(am__objects_2) $(am__objects_9) $(am__objects_2) \
+	$(am__objects_10) $(am__objects_2)
+am_3Depict_OBJECTS = $(am__objects_11) $(am__objects_2)
+3Depict_OBJECTS = $(am_3Depict_OBJECTS)
+am__DEPENDENCIES_1 =
+3Depict_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__append_2)
+3Depict_LINK = $(CXXLD) $(3Depict_CXXFLAGS) $(CXXFLAGS) \
+	$(3Depict_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
+SOURCES = $(3Depict_SOURCES)
+DIST_SOURCES = $(am__3Depict_SOURCES_DIST)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG_FLAGS = @DEBUG_FLAGS@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FREETYPE_CONFIG = @FREETYPE_CONFIG@
+FTGL_CFLAGS = @FTGL_CFLAGS@
+FTGL_LIBS = @FTGL_LIBS@
+FT_INCLUDES = @FT_INCLUDES@
+FT_LIBS = @FT_LIBS@
+GETTEXT_LIBS = @GETTEXT_LIBS@
+GL_LIBS = @GL_LIBS@
+GREP = @GREP@
+GSL_CFLAGS = @GSL_CFLAGS@
+GSL_CONFIG = @GSL_CONFIG@
+GSL_LIBS = @GSL_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MGL_CFLAGS = @MGL_CFLAGS@
+MGL_LIBS = @MGL_LIBS@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OPENMP_FLAGS = @OPENMP_FLAGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PNG_CFLAGS = @PNG_CFLAGS@
+PNG_LIBS = @PNG_LIBS@
+QHULL_CFLAGS = @QHULL_CFLAGS@
+QHULL_LIBS = @QHULL_LIBS@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CFLAGS = @WX_CFLAGS@
+WX_CFLAGS_ONLY = @WX_CFLAGS_ONLY@
+WX_CONFIG_PATH = @WX_CONFIG_PATH@
+WX_CPPFLAGS = @WX_CPPFLAGS@
+WX_CXXFLAGS = @WX_CXXFLAGS@
+WX_CXXFLAGS_ONLY = @WX_CXXFLAGS_ONLY@
+WX_LIBS = @WX_LIBS@
+WX_LIBS_STATIC = @WX_LIBS_STATIC@
+WX_RESCOMP = @WX_RESCOMP@
+WX_VERSION = @WX_VERSION@
+XMLCONFIG = @XMLCONFIG@
+XML_CFLAGS = @XML_CFLAGS@
+XML_LIBS = @XML_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+MSYS_PATH = /c/msys/1.0/local/include/
+3Depict_LDFLAGS = $(LDFLAGS) $(FT_LDFLAGS) $(GSL_LIBS) $(MGL_LIBS)
+3Depict_CXXFLAGS = $(CXXFLAGS) $(FT_INCLUDES) $(FTGL_CFLAGS) $(WX_CPPFLAGS) \
+	$(GL_FLAGS) $(GSL_CFLAGS) $(MGL_CFLAGS) $(XML_CFLAGS) $(PNG_CFLAGS)  \
+	$(OPENMP_FLAGS) $(DEBUG_FLAGS) -pipe 
+
+3Depict_CFLAGS = $(CFLAGS) $(FT_INCLUDES) $(FTGL_CFLAGS) \
+	       $(XML_CFLAGS) $(GSL_CFLAGS)  $(MGL_CFLAGS) $(PNG_CFLAGS) $(QHULL_CFLAGS) \
+	      $(OPENMP_FLAGS) $(DEBUG_FLAGS) -pipe
+
+3Depict_LDADD = $(LIBS) $(GETTEXT_LIBS) $(WX_LIBS) $(MGL_LIBS) \
+	$(FTGL_LIBS) $(FT_LIBS) $(XML_LIBS) $(GSL_LIBS) $(GL_LIBS) \
+	$(GLU_LIBS) $(QHULL_LIBS) $(PNG_LIBS) $(am__append_2)
+
+#------- Common header files for all sub-modules
+COMMON_SOURCE_FILES = common/pngread.c common/stringFuncs.cpp common/constants.cpp common/xmlHelper.cpp\
+			 common/colourmap.cpp common/voxels.cpp common/mathfuncs.cpp common/basics.cpp common/assertion.cpp \
+			common/mesh.cpp common/gsl_helper.cpp
+
+COMMON_HEADER_FILES = common/pngread.h common/stringFuncs.h  common/constants.h  common/xmlHelper.h common/colourmap.h \
+		      	common/mathfuncs.h common/basics.h common/translation.h common/endianTest.h common/assertion.h common/voxels.h \
+			common/array2D.h common/mesh.h common/gsl_helper.h
+
+
+#-----------
+
+#------- "Backend" calculation files (non-ui) ----------
+FILTER_FILES = backend/filters/allFilter.cpp backend/filters/filterCommon.cpp \
+	        backend/filters/dataLoad.cpp backend/filters/ionDownsample.cpp \
+		backend/filters/rangeFile.cpp backend/filters/voxelise.cpp \
+		backend/filters/spectrumPlot.cpp backend/filters/transform.cpp \
+		backend/filters/externalProgram.cpp backend/filters/ionClip.cpp \
+		backend/filters/ionColour.cpp backend/filters/boundingBox.cpp  \
+		backend/filters/profile.cpp backend/filters/spatialAnalysis.cpp \
+		backend/filters/clusterAnalysis.cpp backend/filters/ionInfo.cpp \
+		backend/filters/annotation.cpp backend/filters/geometryHelpers.cpp \
+		backend/filters/algorithms/binomial.cpp  backend/filters/algorithms/mass.cpp  
+
+FILTER_HEADER_FILES = backend/filters/allFilter.h backend/filters/filterCommon.h \
+		backend/filters/dataLoad.h backend/filters/ionDownsample.h \
+		backend/filters/rangeFile.h backend/filters/voxelise.h backend/filters/spectrumPlot.h \
+	       	backend/filters/transform.h backend/filters/externalProgram.h backend/filters/ionClip.h \
+		backend/filters/ionColour.h backend/filters/boundingBox.h  \
+		backend/filters/profile.h backend/filters/spatialAnalysis.h \
+		backend/filters/clusterAnalysis.h backend/filters/ionInfo.h \
+		backend/filters/annotation.h backend/filters/geometryHelpers.h \
+		backend/filters/algorithms/binomial.h backend/filters/algorithms/mass.h
+
+BACKEND_SOURCE_FILES = backend/animator.cpp backend/filtertreeAnalyse.cpp backend/filtertree.cpp \
+		     	backend/APT/ionhit.cpp backend/APT/APTFileIO.cpp backend/APT/APTRanges.cpp backend/APT/abundanceParser.cpp \
+			backend/APT/vtk.cpp backend/APT/3DapReader.cpp\
+			backend/filters/algorithms/K3DTree.cpp backend/filters/algorithms/K3DTree-mk2.cpp\
+			backend/filter.cpp backend/filters/algorithms/spatial.cpp \
+		       backend/viscontrol.cpp backend/state.cpp backend/plot.cpp  backend/configFile.cpp 
+
+BACKEND_HEADER_FILES = backend/animator.h backend/filtertreeAnalyse.h backend/filtertree.h\
+			backend/APT/ionhit.h backend/APT/APTFileIO.h backend/APT/APTRanges.h backend/APT/abundanceParser.h \
+			backend/APT/vtk.h backend/APT/3DapReader.h backend/filters/algorithms/K3DTree.h backend/filters/algorithms/K3DTree-mk2.h \
+			backend/filter.h backend/filters/algorithms/spatial.h backend/viscontrol.h backend/state.h backend/plot.h backend/configFile.h \
+		        backend/tree.hh
+
+
+#------------
+
+#------------ OpenGL interface files
+OPENGL_HEADER_FILES = gl/scene.h gl/drawables.h gl/effect.h gl/textures.h gl/select.h gl/cameras.h gl/isoSurface.h gl/tr.h gl/glDebug.h 
+OPENGL_SOURCE_FILES = gl/scene.cpp gl/drawables.cpp gl/effect.cpp gl/textures.cpp gl/select.cpp gl/cameras.cpp gl/isoSurface.cpp gl/tr.cpp 
+#------------
+
+#------------ Frontend (linked to UI in some way) files ---
+DIALOG_SOURCE_FILES = gui/dialogs/ExportPos.cpp  gui/dialogs/ExportRngDialog.cpp gui/dialogs/prefDialog.cpp  \
+		gui/dialogs/resolutionDialog.cpp  gui/dialogs/StashDialog.cpp \
+		gui/dialogs/autosaveDialog.cpp gui/dialogs/filterErrorDialog.cpp \
+		gui/dialogs/animateFilterDialog.cpp \
+		gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp \
+		gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp \
+		gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp \
+		gui/dialogs/rangeEditDialog.cpp
+
+DIALOG_HEADER_FILES = gui/dialogs/ExportPos.h gui/dialogs/ExportRngDialog.h gui/dialogs/prefDialog.h \
+		gui/dialogs/StashDialog.h gui/dialogs/resolutionDialog.h \
+		gui/dialogs/autosaveDialog.h gui/dialogs/filterErrorDialog.h \
+		gui/dialogs/animateFilterDialog.h \
+		gui/dialogs/animateSubDialogs/realKeyFrameDialog.h \
+		gui/dialogs/animateSubDialogs/colourKeyFrameDialog.h \
+		gui/dialogs/animateSubDialogs/stringKeyFrameDialog.h \
+		gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.h \
+		gui/dialogs/rangeEditDialog.h
+
+GUI_SOURCE_FILES = gui/mainFrame.cpp gui/mathglPane.cpp gui/cropPanel.cpp gui/glPane.cpp  $(DIALOG_SOURCE_FILES)
+GUI_HEADER_FILES = gui/mainFrame.h gui/mathglPane.h gui/cropPanel.h gui/art.h gui/glPane.h $(DIALOG_HEADER_FILES)
+BASE_SOURCE_FILES = 3Depict.cpp testing/testing.cpp wx/wxcommon.cpp  wx/wxcomponents.cpp winconsole.cpp  wx/propertyGridUpdater.cpp
+BASE_HEADER_FILES = testing/testing.h  wx/wxcommon.h  wx/wxcomponents.h   winconsole.h wx/propertyGridUpdater.h
+TEST_SOURCE_FILES = testing/mglTesting.cpp
+TEST_HEADER_FILES = testing/mglTesting.h
+#-----------
+SOURCE_FILES = $(BASE_SOURCE_FILES) $(BASE_HEADER_FILES) $(GUI_SOURCE_FILES) $(GUI_HEADER_FILES) \
+	       $(FILTER_FILES) $(FILTER_HEADER_FILES) \
+	       ${BACKEND_SOURCE_FILES} ${BACKEND_HEADER_FILES} $(OPENGL_SOURCE_FILES) $(OPENGL_HEADER_FILES) \
+	       $(COMMON_SOURCE_FILES) $(COMMON_HEADER_FILES) $(TEST_SOURCE_FILES) $(TEST_HEADER_FILES)
+
+3Depict_SOURCES = $(SOURCE_FILES) $(am__append_1)
+
+#Tarball options
+EXTRA_DIST = gui/glade-skeleton myAppIcon.ico testing/filtertesting.cpp 
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+testing/$(am__dirstamp):
+	@$(MKDIR_P) testing
+	@: > testing/$(am__dirstamp)
+testing/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) testing/$(DEPDIR)
+	@: > testing/$(DEPDIR)/$(am__dirstamp)
+testing/3Depict-testing.$(OBJEXT): testing/$(am__dirstamp) \
+	testing/$(DEPDIR)/$(am__dirstamp)
+wx/$(am__dirstamp):
+	@$(MKDIR_P) wx
+	@: > wx/$(am__dirstamp)
+wx/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) wx/$(DEPDIR)
+	@: > wx/$(DEPDIR)/$(am__dirstamp)
+wx/3Depict-wxcommon.$(OBJEXT): wx/$(am__dirstamp) \
+	wx/$(DEPDIR)/$(am__dirstamp)
+wx/3Depict-wxcomponents.$(OBJEXT): wx/$(am__dirstamp) \
+	wx/$(DEPDIR)/$(am__dirstamp)
+wx/3Depict-propertyGridUpdater.$(OBJEXT): wx/$(am__dirstamp) \
+	wx/$(DEPDIR)/$(am__dirstamp)
+gui/$(am__dirstamp):
+	@$(MKDIR_P) gui
+	@: > gui/$(am__dirstamp)
+gui/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gui/$(DEPDIR)
+	@: > gui/$(DEPDIR)/$(am__dirstamp)
+gui/3Depict-mainFrame.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/3Depict-mathglPane.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/3Depict-cropPanel.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/3Depict-glPane.$(OBJEXT): gui/$(am__dirstamp) \
+	gui/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/$(am__dirstamp):
+	@$(MKDIR_P) gui/dialogs
+	@: > gui/dialogs/$(am__dirstamp)
+gui/dialogs/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gui/dialogs/$(DEPDIR)
+	@: > gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-ExportPos.$(OBJEXT): gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-ExportRngDialog.$(OBJEXT):  \
+	gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-prefDialog.$(OBJEXT): gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-resolutionDialog.$(OBJEXT):  \
+	gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-StashDialog.$(OBJEXT):  \
+	gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-autosaveDialog.$(OBJEXT):  \
+	gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-filterErrorDialog.$(OBJEXT):  \
+	gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-animateFilterDialog.$(OBJEXT):  \
+	gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/animateSubDialogs/$(am__dirstamp):
+	@$(MKDIR_P) gui/dialogs/animateSubDialogs
+	@: > gui/dialogs/animateSubDialogs/$(am__dirstamp)
+gui/dialogs/animateSubDialogs/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gui/dialogs/animateSubDialogs/$(DEPDIR)
+	@: > gui/dialogs/animateSubDialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.$(OBJEXT):  \
+	gui/dialogs/animateSubDialogs/$(am__dirstamp) \
+	gui/dialogs/animateSubDialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.$(OBJEXT):  \
+	gui/dialogs/animateSubDialogs/$(am__dirstamp) \
+	gui/dialogs/animateSubDialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.$(OBJEXT):  \
+	gui/dialogs/animateSubDialogs/$(am__dirstamp) \
+	gui/dialogs/animateSubDialogs/$(DEPDIR)/$(am__dirstamp)
+gui/dialogs/3Depict-rangeEditDialog.$(OBJEXT):  \
+	gui/dialogs/$(am__dirstamp) \
+	gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+backend/filters/$(am__dirstamp):
+	@$(MKDIR_P) backend/filters
+	@: > backend/filters/$(am__dirstamp)
+backend/filters/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) backend/filters/$(DEPDIR)
+	@: > backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-allFilter.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-filterCommon.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-dataLoad.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-ionDownsample.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-rangeFile.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-voxelise.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-spectrumPlot.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-transform.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-externalProgram.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-ionClip.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-ionColour.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-boundingBox.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-profile.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-spatialAnalysis.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-clusterAnalysis.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-ionInfo.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-annotation.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/3Depict-geometryHelpers.$(OBJEXT):  \
+	backend/filters/$(am__dirstamp) \
+	backend/filters/$(DEPDIR)/$(am__dirstamp)
+backend/filters/algorithms/$(am__dirstamp):
+	@$(MKDIR_P) backend/filters/algorithms
+	@: > backend/filters/algorithms/$(am__dirstamp)
+backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) backend/filters/algorithms/$(DEPDIR)
+	@: > backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp)
+backend/filters/algorithms/3Depict-binomial.$(OBJEXT):  \
+	backend/filters/algorithms/$(am__dirstamp) \
+	backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp)
+backend/filters/algorithms/3Depict-mass.$(OBJEXT):  \
+	backend/filters/algorithms/$(am__dirstamp) \
+	backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp)
+backend/$(am__dirstamp):
+	@$(MKDIR_P) backend
+	@: > backend/$(am__dirstamp)
+backend/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) backend/$(DEPDIR)
+	@: > backend/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-animator.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-filtertreeAnalyse.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-filtertree.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+backend/APT/$(am__dirstamp):
+	@$(MKDIR_P) backend/APT
+	@: > backend/APT/$(am__dirstamp)
+backend/APT/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) backend/APT/$(DEPDIR)
+	@: > backend/APT/$(DEPDIR)/$(am__dirstamp)
+backend/APT/3Depict-ionhit.$(OBJEXT): backend/APT/$(am__dirstamp) \
+	backend/APT/$(DEPDIR)/$(am__dirstamp)
+backend/APT/3Depict-APTFileIO.$(OBJEXT): backend/APT/$(am__dirstamp) \
+	backend/APT/$(DEPDIR)/$(am__dirstamp)
+backend/APT/3Depict-APTRanges.$(OBJEXT): backend/APT/$(am__dirstamp) \
+	backend/APT/$(DEPDIR)/$(am__dirstamp)
+backend/APT/3Depict-abundanceParser.$(OBJEXT):  \
+	backend/APT/$(am__dirstamp) \
+	backend/APT/$(DEPDIR)/$(am__dirstamp)
+backend/APT/3Depict-vtk.$(OBJEXT): backend/APT/$(am__dirstamp) \
+	backend/APT/$(DEPDIR)/$(am__dirstamp)
+backend/APT/3Depict-3DapReader.$(OBJEXT): backend/APT/$(am__dirstamp) \
+	backend/APT/$(DEPDIR)/$(am__dirstamp)
+backend/filters/algorithms/3Depict-K3DTree.$(OBJEXT):  \
+	backend/filters/algorithms/$(am__dirstamp) \
+	backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp)
+backend/filters/algorithms/3Depict-K3DTree-mk2.$(OBJEXT):  \
+	backend/filters/algorithms/$(am__dirstamp) \
+	backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-filter.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+backend/filters/algorithms/3Depict-spatial.$(OBJEXT):  \
+	backend/filters/algorithms/$(am__dirstamp) \
+	backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-viscontrol.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-state.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-plot.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+backend/3Depict-configFile.$(OBJEXT): backend/$(am__dirstamp) \
+	backend/$(DEPDIR)/$(am__dirstamp)
+gl/$(am__dirstamp):
+	@$(MKDIR_P) gl
+	@: > gl/$(am__dirstamp)
+gl/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) gl/$(DEPDIR)
+	@: > gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-scene.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-drawables.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-effect.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-textures.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-select.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-cameras.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-isoSurface.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+gl/3Depict-tr.$(OBJEXT): gl/$(am__dirstamp) \
+	gl/$(DEPDIR)/$(am__dirstamp)
+common/$(am__dirstamp):
+	@$(MKDIR_P) common
+	@: > common/$(am__dirstamp)
+common/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) common/$(DEPDIR)
+	@: > common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-pngread.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-stringFuncs.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-constants.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-xmlHelper.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-colourmap.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-voxels.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-mathfuncs.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-basics.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-assertion.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-mesh.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+common/3Depict-gsl_helper.$(OBJEXT): common/$(am__dirstamp) \
+	common/$(DEPDIR)/$(am__dirstamp)
+testing/3Depict-mglTesting.$(OBJEXT): testing/$(am__dirstamp) \
+	testing/$(DEPDIR)/$(am__dirstamp)
+
+3Depict$(EXEEXT): $(3Depict_OBJECTS) $(3Depict_DEPENDENCIES) $(EXTRA_3Depict_DEPENDENCIES) 
+	@rm -f 3Depict$(EXEEXT)
+	$(AM_V_CXXLD)$(3Depict_LINK) $(3Depict_OBJECTS) $(3Depict_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f backend/*.$(OBJEXT)
+	-rm -f backend/APT/*.$(OBJEXT)
+	-rm -f backend/filters/*.$(OBJEXT)
+	-rm -f backend/filters/algorithms/*.$(OBJEXT)
+	-rm -f common/*.$(OBJEXT)
+	-rm -f gl/*.$(OBJEXT)
+	-rm -f gui/*.$(OBJEXT)
+	-rm -f gui/dialogs/*.$(OBJEXT)
+	-rm -f gui/dialogs/animateSubDialogs/*.$(OBJEXT)
+	-rm -f testing/*.$(OBJEXT)
+	-rm -f wx/*.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/3Depict-3Depict.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/3Depict-winconsole.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-animator.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-configFile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-filter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-filtertree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-filtertreeAnalyse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-plot.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-state.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/$(DEPDIR)/3Depict-viscontrol.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/APT/$(DEPDIR)/3Depict-3DapReader.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/APT/$(DEPDIR)/3Depict-APTFileIO.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/APT/$(DEPDIR)/3Depict-APTRanges.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/APT/$(DEPDIR)/3Depict-abundanceParser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/APT/$(DEPDIR)/3Depict-ionhit.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/APT/$(DEPDIR)/3Depict-vtk.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-allFilter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-annotation.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-boundingBox.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-clusterAnalysis.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-dataLoad.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-externalProgram.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-filterCommon.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-geometryHelpers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-ionClip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-ionColour.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-ionDownsample.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-ionInfo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-profile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-rangeFile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-spatialAnalysis.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-spectrumPlot.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-transform.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/$(DEPDIR)/3Depict-voxelise.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree-mk2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/algorithms/$(DEPDIR)/3Depict-binomial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/algorithms/$(DEPDIR)/3Depict-mass.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at backend/filters/algorithms/$(DEPDIR)/3Depict-spatial.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-assertion.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-basics.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-colourmap.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-constants.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-gsl_helper.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-mathfuncs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-mesh.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-pngread.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-stringFuncs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-voxels.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at common/$(DEPDIR)/3Depict-xmlHelper.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-cameras.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-drawables.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-effect.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-isoSurface.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-scene.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-select.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-textures.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gl/$(DEPDIR)/3Depict-tr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/$(DEPDIR)/3Depict-cropPanel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/$(DEPDIR)/3Depict-glPane.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/$(DEPDIR)/3Depict-mainFrame.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/$(DEPDIR)/3Depict-mathglPane.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-ExportPos.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-ExportRngDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-StashDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-animateFilterDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-autosaveDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-filterErrorDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-prefDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-rangeEditDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/$(DEPDIR)/3Depict-resolutionDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-choiceKeyFrameDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-colourKeyFrameDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-stringKeyFrameDialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at testing/$(DEPDIR)/3Depict-mglTesting.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at testing/$(DEPDIR)/3Depict-testing.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at wx/$(DEPDIR)/3Depict-propertyGridUpdater.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at wx/$(DEPDIR)/3Depict-wxcommon.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at wx/$(DEPDIR)/3Depict-wxcomponents.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+common/3Depict-pngread.o: common/pngread.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CFLAGS) $(CFLAGS) -MT common/3Depict-pngread.o -MD -MP -MF common/$(DEPDIR)/3Depict-pngread.Tpo -c -o common/3Depict-pngread.o `test -f 'common/pngread.c' || echo '$(srcdir)/'`common/pngread.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-pngread.Tpo common/$(DEPDIR)/3Depict-pngread.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='common/pngread.c' object='common/3Depict-pngread.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CFLAGS) $(CFLAGS) -c -o common/3Depict-pngread.o `test -f 'common/pngread.c' || echo '$(srcdir)/'`common/pngread.c
+
+common/3Depict-pngread.obj: common/pngread.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CFLAGS) $(CFLAGS) -MT common/3Depict-pngread.obj -MD -MP -MF common/$(DEPDIR)/3Depict-pngread.Tpo -c -o common/3Depict-pngread.obj `if test -f 'common/pngread.c'; then $(CYGPATH_W) 'common/pngread.c'; else $(CYGPATH_W) '$(srcdir)/common/pngread.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-pngread.Tpo common/$(DEPDIR)/3Depict-pngread.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='common/pngread.c' object='common/3Depict-pngread.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CFLAGS) $(CFLAGS) -c -o common/3Depict-pngread.obj `if test -f 'common/pngread.c'; then $(CYGPATH_W) 'common/pngread.c'; else $(CYGPATH_W) '$(srcdir)/common/pngread.c'; fi`
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+3Depict-3Depict.o: 3Depict.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT 3Depict-3Depict.o -MD -MP -MF $(DEPDIR)/3Depict-3Depict.Tpo -c -o 3Depict-3Depict.o `test -f '3Depict.cpp' || echo '$(srcdir)/'`3Depict.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/3Depict-3Depict.Tpo $(DEPDIR)/3Depict-3Depict.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='3Depict.cpp' object='3Depict-3Depict.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o 3Depict-3Depict.o `test -f '3Depict.cpp' || echo '$(srcdir)/'`3Depict.cpp
+
+3Depict-3Depict.obj: 3Depict.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT 3Depict-3Depict.obj -MD -MP -MF $(DEPDIR)/3Depict-3Depict.Tpo -c -o 3Depict-3Depict.obj `if test -f '3Depict.cpp'; then $(CYGPATH_W) '3Depict.cpp'; else $(CYGPATH_W) '$(srcdir)/3Depict.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/3Depict-3Depict.Tpo $(DEPDIR)/3Depict-3Depict.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='3Depict.cpp' object='3Depict-3Depict.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o 3Depict-3Depict.obj `if test -f '3Depict.cpp'; then $(CYGPATH_W) '3Depict.cpp'; else $(CYGPATH_W) '$(srcdir)/3Depict.cpp'; fi`
+
+testing/3Depict-testing.o: testing/testing.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT testing/3Depict-testing.o -MD -MP -MF testing/$(DEPDIR)/3Depict-testing.Tpo -c -o testing/3Depict-testing.o `test -f 'testing/testing.cpp' || echo '$(srcdir)/'`testing/testing.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) testing/$(DEPDIR)/3Depict-testing.Tpo testing/$(DEPDIR)/3Depict-testing.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='testing/testing.cpp' object='testing/3Depict-testing.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o testing/3Depict-testing.o `test -f 'testing/testing.cpp' || echo '$(srcdir)/'`testing/testing.cpp
+
+testing/3Depict-testing.obj: testing/testing.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT testing/3Depict-testing.obj -MD -MP -MF testing/$(DEPDIR)/3Depict-testing.Tpo -c -o testing/3Depict-testing.obj `if test -f 'testing/testing.cpp'; then $(CYGPATH_W) 'testing/testing.cpp'; else $(CYGPATH_W) '$(srcdir)/testing/testing.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) testing/$(DEPDIR)/3Depict-testing.Tpo testing/$(DEPDIR)/3Depict-testing.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='testing/testing.cpp' object='testing/3Depict-testing.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o testing/3Depict-testing.obj `if test -f 'testing/testing.cpp'; then $(CYGPATH_W) 'testing/testing.cpp'; else $(CYGPATH_W) '$(srcdir)/testing/testing.cpp'; fi`
+
+wx/3Depict-wxcommon.o: wx/wxcommon.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT wx/3Depict-wxcommon.o -MD -MP -MF wx/$(DEPDIR)/3Depict-wxcommon.Tpo -c -o wx/3Depict-wxcommon.o `test -f 'wx/wxcommon.cpp' || echo '$(srcdir)/'`wx/wxcommon.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) wx/$(DEPDIR)/3Depict-wxcommon.Tpo wx/$(DEPDIR)/3Depict-wxcommon.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='wx/wxcommon.cpp' object='wx/3Depict-wxcommon.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o wx/3Depict-wxcommon.o `test -f 'wx/wxcommon.cpp' || echo '$(srcdir)/'`wx/wxcommon.cpp
+
+wx/3Depict-wxcommon.obj: wx/wxcommon.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT wx/3Depict-wxcommon.obj -MD -MP -MF wx/$(DEPDIR)/3Depict-wxcommon.Tpo -c -o wx/3Depict-wxcommon.obj `if test -f 'wx/wxcommon.cpp'; then $(CYGPATH_W) 'wx/wxcommon.cpp'; else $(CYGPATH_W) '$(srcdir)/wx/wxcommon.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) wx/$(DEPDIR)/3Depict-wxcommon.Tpo wx/$(DEPDIR)/3Depict-wxcommon.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='wx/wxcommon.cpp' object='wx/3Depict-wxcommon.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o wx/3Depict-wxcommon.obj `if test -f 'wx/wxcommon.cpp'; then $(CYGPATH_W) 'wx/wxcommon.cpp'; else $(CYGPATH_W) '$(srcdir)/wx/wxcommon.cpp'; fi`
+
+wx/3Depict-wxcomponents.o: wx/wxcomponents.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT wx/3Depict-wxcomponents.o -MD -MP -MF wx/$(DEPDIR)/3Depict-wxcomponents.Tpo -c -o wx/3Depict-wxcomponents.o `test -f 'wx/wxcomponents.cpp' || echo '$(srcdir)/'`wx/wxcomponents.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) wx/$(DEPDIR)/3Depict-wxcomponents.Tpo wx/$(DEPDIR)/3Depict-wxcomponents.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='wx/wxcomponents.cpp' object='wx/3Depict-wxcomponents.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o wx/3Depict-wxcomponents.o `test -f 'wx/wxcomponents.cpp' || echo '$(srcdir)/'`wx/wxcomponents.cpp
+
+wx/3Depict-wxcomponents.obj: wx/wxcomponents.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT wx/3Depict-wxcomponents.obj -MD -MP -MF wx/$(DEPDIR)/3Depict-wxcomponents.Tpo -c -o wx/3Depict-wxcomponents.obj `if test -f 'wx/wxcomponents.cpp'; then $(CYGPATH_W) 'wx/wxcomponents.cpp'; else $(CYGPATH_W) '$(srcdir)/wx/wxcomponents.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) wx/$(DEPDIR)/3Depict-wxcomponents.Tpo wx/$(DEPDIR)/3Depict-wxcomponents.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='wx/wxcomponents.cpp' object='wx/3Depict-wxcomponents.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o wx/3Depict-wxcomponents.obj `if test -f 'wx/wxcomponents.cpp'; then $(CYGPATH_W) 'wx/wxcomponents.cpp'; else $(CYGPATH_W) '$(srcdir)/wx/wxcomponents.cpp'; fi`
+
+3Depict-winconsole.o: winconsole.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT 3Depict-winconsole.o -MD -MP -MF $(DEPDIR)/3Depict-winconsole.Tpo -c -o 3Depict-winconsole.o `test -f 'winconsole.cpp' || echo '$(srcdir)/'`winconsole.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/3Depict-winconsole.Tpo $(DEPDIR)/3Depict-winconsole.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='winconsole.cpp' object='3Depict-winconsole.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o 3Depict-winconsole.o `test -f 'winconsole.cpp' || echo '$(srcdir)/'`winconsole.cpp
+
+3Depict-winconsole.obj: winconsole.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT 3Depict-winconsole.obj -MD -MP -MF $(DEPDIR)/3Depict-winconsole.Tpo -c -o 3Depict-winconsole.obj `if test -f 'winconsole.cpp'; then $(CYGPATH_W) 'winconsole.cpp'; else $(CYGPATH_W) '$(srcdir)/winconsole.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/3Depict-winconsole.Tpo $(DEPDIR)/3Depict-winconsole.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='winconsole.cpp' object='3Depict-winconsole.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o 3Depict-winconsole.obj `if test -f 'winconsole.cpp'; then $(CYGPATH_W) 'winconsole.cpp'; else $(CYGPATH_W) '$(srcdir)/winconsole.cpp'; fi`
+
+wx/3Depict-propertyGridUpdater.o: wx/propertyGridUpdater.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT wx/3Depict-propertyGridUpdater.o -MD -MP -MF wx/$(DEPDIR)/3Depict-propertyGridUpdater.Tpo -c -o wx/3Depict-propertyGridUpdater.o `test -f 'wx/propertyGridUpdater.cpp' || echo '$(srcdir)/'`wx/propertyGridUpdater.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) wx/$(DEPDIR)/3Depict-propertyGridUpdater.Tpo wx/$(DEPDIR)/3Depict-propertyGridUpdater.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='wx/propertyGridUpdater.cpp' object='wx/3Depict-propertyGridUpdater.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o wx/3Depict-propertyGridUpdater.o `test -f 'wx/propertyGridUpdater.cpp' || echo '$(srcdir)/'`wx/propertyGridUpdater.cpp
+
+wx/3Depict-propertyGridUpdater.obj: wx/propertyGridUpdater.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT wx/3Depict-propertyGridUpdater.obj -MD -MP -MF wx/$(DEPDIR)/3Depict-propertyGridUpdater.Tpo -c -o wx/3Depict-propertyGridUpdater.obj `if test -f 'wx/propertyGridUpdater.cpp'; then $(CYGPATH_W) 'wx/propertyGridUpdater.cpp'; else $(CYGPATH_W) '$(srcdir)/wx/propertyGridUpdater.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) wx/$(DEPDIR)/3Depict-propertyGridUpdater.Tpo wx/$(DEPDIR)/3Depict-propertyGridUpdater.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='wx/propertyGridUpdater.cpp' object='wx/3Depict-propertyGridUpdater.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o wx/3Depict-propertyGridUpdater.obj `if test -f 'wx/propertyGridUpdater.cpp'; then $(CYGPATH_W) 'wx/propertyGridUpdater.cpp'; else $(CYGPATH_W) '$(srcdir)/wx/propertyGridUpdater.cpp'; fi`
+
+gui/3Depict-mainFrame.o: gui/mainFrame.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-mainFrame.o -MD -MP -MF gui/$(DEPDIR)/3Depict-mainFrame.Tpo -c -o gui/3Depict-mainFrame.o `test -f 'gui/mainFrame.cpp' || echo '$(srcdir)/'`gui/mainFrame.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-mainFrame.Tpo gui/$(DEPDIR)/3Depict-mainFrame.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/mainFrame.cpp' object='gui/3Depict-mainFrame.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-mainFrame.o `test -f 'gui/mainFrame.cpp' || echo '$(srcdir)/'`gui/mainFrame.cpp
+
+gui/3Depict-mainFrame.obj: gui/mainFrame.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-mainFrame.obj -MD -MP -MF gui/$(DEPDIR)/3Depict-mainFrame.Tpo -c -o gui/3Depict-mainFrame.obj `if test -f 'gui/mainFrame.cpp'; then $(CYGPATH_W) 'gui/mainFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/mainFrame.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-mainFrame.Tpo gui/$(DEPDIR)/3Depict-mainFrame.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/mainFrame.cpp' object='gui/3Depict-mainFrame.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-mainFrame.obj `if test -f 'gui/mainFrame.cpp'; then $(CYGPATH_W) 'gui/mainFrame.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/mainFrame.cpp'; fi`
+
+gui/3Depict-mathglPane.o: gui/mathglPane.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-mathglPane.o -MD -MP -MF gui/$(DEPDIR)/3Depict-mathglPane.Tpo -c -o gui/3Depict-mathglPane.o `test -f 'gui/mathglPane.cpp' || echo '$(srcdir)/'`gui/mathglPane.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-mathglPane.Tpo gui/$(DEPDIR)/3Depict-mathglPane.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/mathglPane.cpp' object='gui/3Depict-mathglPane.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-mathglPane.o `test -f 'gui/mathglPane.cpp' || echo '$(srcdir)/'`gui/mathglPane.cpp
+
+gui/3Depict-mathglPane.obj: gui/mathglPane.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-mathglPane.obj -MD -MP -MF gui/$(DEPDIR)/3Depict-mathglPane.Tpo -c -o gui/3Depict-mathglPane.obj `if test -f 'gui/mathglPane.cpp'; then $(CYGPATH_W) 'gui/mathglPane.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/mathglPane.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-mathglPane.Tpo gui/$(DEPDIR)/3Depict-mathglPane.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/mathglPane.cpp' object='gui/3Depict-mathglPane.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-mathglPane.obj `if test -f 'gui/mathglPane.cpp'; then $(CYGPATH_W) 'gui/mathglPane.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/mathglPane.cpp'; fi`
+
+gui/3Depict-cropPanel.o: gui/cropPanel.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-cropPanel.o -MD -MP -MF gui/$(DEPDIR)/3Depict-cropPanel.Tpo -c -o gui/3Depict-cropPanel.o `test -f 'gui/cropPanel.cpp' || echo '$(srcdir)/'`gui/cropPanel.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-cropPanel.Tpo gui/$(DEPDIR)/3Depict-cropPanel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/cropPanel.cpp' object='gui/3Depict-cropPanel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-cropPanel.o `test -f 'gui/cropPanel.cpp' || echo '$(srcdir)/'`gui/cropPanel.cpp
+
+gui/3Depict-cropPanel.obj: gui/cropPanel.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-cropPanel.obj -MD -MP -MF gui/$(DEPDIR)/3Depict-cropPanel.Tpo -c -o gui/3Depict-cropPanel.obj `if test -f 'gui/cropPanel.cpp'; then $(CYGPATH_W) 'gui/cropPanel.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/cropPanel.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-cropPanel.Tpo gui/$(DEPDIR)/3Depict-cropPanel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/cropPanel.cpp' object='gui/3Depict-cropPanel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-cropPanel.obj `if test -f 'gui/cropPanel.cpp'; then $(CYGPATH_W) 'gui/cropPanel.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/cropPanel.cpp'; fi`
+
+gui/3Depict-glPane.o: gui/glPane.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-glPane.o -MD -MP -MF gui/$(DEPDIR)/3Depict-glPane.Tpo -c -o gui/3Depict-glPane.o `test -f 'gui/glPane.cpp' || echo '$(srcdir)/'`gui/glPane.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-glPane.Tpo gui/$(DEPDIR)/3Depict-glPane.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/glPane.cpp' object='gui/3Depict-glPane.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-glPane.o `test -f 'gui/glPane.cpp' || echo '$(srcdir)/'`gui/glPane.cpp
+
+gui/3Depict-glPane.obj: gui/glPane.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/3Depict-glPane.obj -MD -MP -MF gui/$(DEPDIR)/3Depict-glPane.Tpo -c -o gui/3Depict-glPane.obj `if test -f 'gui/glPane.cpp'; then $(CYGPATH_W) 'gui/glPane.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/glPane.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/$(DEPDIR)/3Depict-glPane.Tpo gui/$(DEPDIR)/3Depict-glPane.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/glPane.cpp' object='gui/3Depict-glPane.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/3Depict-glPane.obj `if test -f 'gui/glPane.cpp'; then $(CYGPATH_W) 'gui/glPane.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/glPane.cpp'; fi`
+
+gui/dialogs/3Depict-ExportPos.o: gui/dialogs/ExportPos.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-ExportPos.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-ExportPos.Tpo -c -o gui/dialogs/3Depict-ExportPos.o `test -f 'gui/dialogs/ExportPos.cpp' || echo '$(srcdir)/'`gui/dialogs/ExportPos.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-ExportPos.Tpo gui/dialogs/$(DEPDIR)/3Depict-ExportPos.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/ExportPos.cpp' object='gui/dialogs/3Depict-ExportPos.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-ExportPos.o `test -f 'gui/dialogs/ExportPos.cpp' || echo '$(srcdir)/'`gui/dialogs/ExportPos.cpp
+
+gui/dialogs/3Depict-ExportPos.obj: gui/dialogs/ExportPos.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-ExportPos.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-ExportPos.Tpo -c -o gui/dialogs/3Depict-ExportPos.obj `if test -f 'gui/dialogs/ExportPos.cpp'; then $(CYGPATH_W) 'gui/dialogs/ExportPos.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/ExportPos.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-ExportPos.Tpo gui/dialogs/$(DEPDIR)/3Depict-ExportPos.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/ExportPos.cpp' object='gui/dialogs/3Depict-ExportPos.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-ExportPos.obj `if test -f 'gui/dialogs/ExportPos.cpp'; then $(CYGPATH_W) 'gui/dialogs/ExportPos.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/ExportPos.cpp'; fi`
+
+gui/dialogs/3Depict-ExportRngDialog.o: gui/dialogs/ExportRngDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-ExportRngDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-ExportRngDialog.Tpo -c -o gui/dialogs/3Depict-ExportRngDialog.o `test -f 'gui/dialogs/ExportRngDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/ExportRngDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-ExportRngDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-ExportRngDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/ExportRngDialog.cpp' object='gui/dialogs/3Depict-ExportRngDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-ExportRngDialog.o `test -f 'gui/dialogs/ExportRngDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/ExportRngDialog.cpp
+
+gui/dialogs/3Depict-ExportRngDialog.obj: gui/dialogs/ExportRngDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-ExportRngDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-ExportRngDialog.Tpo -c -o gui/dialogs/3Depict-ExportRngDialog.obj `if test -f 'gui/dialogs/ExportRngDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/ExportRngDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/ExportRngDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-ExportRngDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-ExportRngDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/ExportRngDialog.cpp' object='gui/dialogs/3Depict-ExportRngDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-ExportRngDialog.obj `if test -f 'gui/dialogs/ExportRngDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/ExportRngDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/ExportRngDialog.cpp'; fi`
+
+gui/dialogs/3Depict-prefDialog.o: gui/dialogs/prefDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-prefDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-prefDialog.Tpo -c -o gui/dialogs/3Depict-prefDialog.o `test -f 'gui/dialogs/prefDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/prefDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-prefDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-prefDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/prefDialog.cpp' object='gui/dialogs/3Depict-prefDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-prefDialog.o `test -f 'gui/dialogs/prefDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/prefDialog.cpp
+
+gui/dialogs/3Depict-prefDialog.obj: gui/dialogs/prefDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-prefDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-prefDialog.Tpo -c -o gui/dialogs/3Depict-prefDialog.obj `if test -f 'gui/dialogs/prefDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/prefDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/prefDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-prefDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-prefDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/prefDialog.cpp' object='gui/dialogs/3Depict-prefDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-prefDialog.obj `if test -f 'gui/dialogs/prefDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/prefDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/prefDialog.cpp'; fi`
+
+gui/dialogs/3Depict-resolutionDialog.o: gui/dialogs/resolutionDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-resolutionDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-resolutionDialog.Tpo -c -o gui/dialogs/3Depict-resolutionDialog.o `test -f 'gui/dialogs/resolutionDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/resolutionDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-resolutionDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-resolutionDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/resolutionDialog.cpp' object='gui/dialogs/3Depict-resolutionDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-resolutionDialog.o `test -f 'gui/dialogs/resolutionDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/resolutionDialog.cpp
+
+gui/dialogs/3Depict-resolutionDialog.obj: gui/dialogs/resolutionDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-resolutionDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-resolutionDialog.Tpo -c -o gui/dialogs/3Depict-resolutionDialog.obj `if test -f 'gui/dialogs/resolutionDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/resolutionDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/resolutionDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-resolutionDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-resolutionDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/resolutionDialog.cpp' object='gui/dialogs/3Depict-resolutionDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-resolutionDialog.obj `if test -f 'gui/dialogs/resolutionDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/resolutionDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/resolutionDialog.cpp'; fi`
+
+gui/dialogs/3Depict-StashDialog.o: gui/dialogs/StashDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-StashDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-StashDialog.Tpo -c -o gui/dialogs/3Depict-StashDialog.o `test -f 'gui/dialogs/StashDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/StashDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-StashDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-StashDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/StashDialog.cpp' object='gui/dialogs/3Depict-StashDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-StashDialog.o `test -f 'gui/dialogs/StashDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/StashDialog.cpp
+
+gui/dialogs/3Depict-StashDialog.obj: gui/dialogs/StashDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-StashDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-StashDialog.Tpo -c -o gui/dialogs/3Depict-StashDialog.obj `if test -f 'gui/dialogs/StashDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/StashDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/StashDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-StashDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-StashDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/StashDialog.cpp' object='gui/dialogs/3Depict-StashDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-StashDialog.obj `if test -f 'gui/dialogs/StashDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/StashDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/StashDialog.cpp'; fi`
+
+gui/dialogs/3Depict-autosaveDialog.o: gui/dialogs/autosaveDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-autosaveDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-autosaveDialog.Tpo -c -o gui/dialogs/3Depict-autosaveDialog.o `test -f 'gui/dialogs/autosaveDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/autosaveDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-autosaveDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-autosaveDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/autosaveDialog.cpp' object='gui/dialogs/3Depict-autosaveDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-autosaveDialog.o `test -f 'gui/dialogs/autosaveDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/autosaveDialog.cpp
+
+gui/dialogs/3Depict-autosaveDialog.obj: gui/dialogs/autosaveDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-autosaveDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-autosaveDialog.Tpo -c -o gui/dialogs/3Depict-autosaveDialog.obj `if test -f 'gui/dialogs/autosaveDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/autosaveDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/autosaveDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-autosaveDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-autosaveDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/autosaveDialog.cpp' object='gui/dialogs/3Depict-autosaveDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-autosaveDialog.obj `if test -f 'gui/dialogs/autosaveDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/autosaveDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/autosaveDialog.cpp'; fi`
+
+gui/dialogs/3Depict-filterErrorDialog.o: gui/dialogs/filterErrorDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-filterErrorDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-filterErrorDialog.Tpo -c -o gui/dialogs/3Depict-filterErrorDialog.o `test -f 'gui/dialogs/filterErrorDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/filterErrorDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-filterErrorDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-filterErrorDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/filterErrorDialog.cpp' object='gui/dialogs/3Depict-filterErrorDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-filterErrorDialog.o `test -f 'gui/dialogs/filterErrorDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/filterErrorDialog.cpp
+
+gui/dialogs/3Depict-filterErrorDialog.obj: gui/dialogs/filterErrorDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-filterErrorDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-filterErrorDialog.Tpo -c -o gui/dialogs/3Depict-filterErrorDialog.obj `if test -f 'gui/dialogs/filterErrorDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/filterErrorDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/filterErrorDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-filterErrorDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-filterErrorDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/filterErrorDialog.cpp' object='gui/dialogs/3Depict-filterErrorDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-filterErrorDialog.obj `if test -f 'gui/dialogs/filterErrorDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/filterErrorDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/filterErrorDialog.cpp'; fi`
+
+gui/dialogs/3Depict-animateFilterDialog.o: gui/dialogs/animateFilterDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-animateFilterDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-animateFilterDialog.Tpo -c -o gui/dialogs/3Depict-animateFilterDialog.o `test -f 'gui/dialogs/animateFilterDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateFilterDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-animateFilterDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-animateFilterDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateFilterDialog.cpp' object='gui/dialogs/3Depict-animateFilterDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-animateFilterDialog.o `test -f 'gui/dialogs/animateFilterDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateFilterDialog.cpp
+
+gui/dialogs/3Depict-animateFilterDialog.obj: gui/dialogs/animateFilterDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-animateFilterDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-animateFilterDialog.Tpo -c -o gui/dialogs/3Depict-animateFilterDialog.obj `if test -f 'gui/dialogs/animateFilterDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateFilterDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/animateFilterDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-animateFilterDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-animateFilterDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateFilterDialog.cpp' object='gui/dialogs/3Depict-animateFilterDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-animateFilterDialog.obj `if test -f 'gui/dialogs/animateFilterDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateFilterDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/animateFilterDialog.cpp'; fi`
+
+gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.o: gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.o -MD -MP -MF gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-colourKeyFrameDialog.Tpo -c -o gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.o `test -f 'gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-colourKeyFrameDialog.Tpo gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-colourKeyFrameDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp' object='gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.o `test -f 'gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp
+
+gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.obj: gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.obj -MD -MP -MF gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-colourKeyFrameDialog.Tpo -c -o gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.obj `if test -f 'gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateSubDialogs/colourKeyFram [...]
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-colourKeyFrameDialog.Tpo gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-colourKeyFrameDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp' object='gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/animateSubDialogs/3Depict-colourKeyFrameDialog.obj `if test -f 'gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp'; fi`
+
+gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.o: gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.o -MD -MP -MF gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-stringKeyFrameDialog.Tpo -c -o gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.o `test -f 'gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-stringKeyFrameDialog.Tpo gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-stringKeyFrameDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp' object='gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.o `test -f 'gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp
+
+gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.obj: gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.obj -MD -MP -MF gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-stringKeyFrameDialog.Tpo -c -o gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.obj `if test -f 'gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateSubDialogs/stringKeyFram [...]
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-stringKeyFrameDialog.Tpo gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-stringKeyFrameDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp' object='gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/animateSubDialogs/3Depict-stringKeyFrameDialog.obj `if test -f 'gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp'; fi`
+
+gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.o: gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.o -MD -MP -MF gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-choiceKeyFrameDialog.Tpo -c -o gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.o `test -f 'gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-choiceKeyFrameDialog.Tpo gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-choiceKeyFrameDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp' object='gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.o `test -f 'gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp
+
+gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.obj: gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.obj -MD -MP -MF gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-choiceKeyFrameDialog.Tpo -c -o gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.obj `if test -f 'gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateSubDialogs/choiceKeyFram [...]
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-choiceKeyFrameDialog.Tpo gui/dialogs/animateSubDialogs/$(DEPDIR)/3Depict-choiceKeyFrameDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp' object='gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/animateSubDialogs/3Depict-choiceKeyFrameDialog.obj `if test -f 'gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/animateSubDialogs/choiceKeyFrameDialog.cpp'; fi`
+
+gui/dialogs/3Depict-rangeEditDialog.o: gui/dialogs/rangeEditDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-rangeEditDialog.o -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-rangeEditDialog.Tpo -c -o gui/dialogs/3Depict-rangeEditDialog.o `test -f 'gui/dialogs/rangeEditDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/rangeEditDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-rangeEditDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-rangeEditDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/rangeEditDialog.cpp' object='gui/dialogs/3Depict-rangeEditDialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-rangeEditDialog.o `test -f 'gui/dialogs/rangeEditDialog.cpp' || echo '$(srcdir)/'`gui/dialogs/rangeEditDialog.cpp
+
+gui/dialogs/3Depict-rangeEditDialog.obj: gui/dialogs/rangeEditDialog.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gui/dialogs/3Depict-rangeEditDialog.obj -MD -MP -MF gui/dialogs/$(DEPDIR)/3Depict-rangeEditDialog.Tpo -c -o gui/dialogs/3Depict-rangeEditDialog.obj `if test -f 'gui/dialogs/rangeEditDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/rangeEditDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/rangeEditDialog.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gui/dialogs/$(DEPDIR)/3Depict-rangeEditDialog.Tpo gui/dialogs/$(DEPDIR)/3Depict-rangeEditDialog.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gui/dialogs/rangeEditDialog.cpp' object='gui/dialogs/3Depict-rangeEditDialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gui/dialogs/3Depict-rangeEditDialog.obj `if test -f 'gui/dialogs/rangeEditDialog.cpp'; then $(CYGPATH_W) 'gui/dialogs/rangeEditDialog.cpp'; else $(CYGPATH_W) '$(srcdir)/gui/dialogs/rangeEditDialog.cpp'; fi`
+
+backend/filters/3Depict-allFilter.o: backend/filters/allFilter.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-allFilter.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-allFilter.Tpo -c -o backend/filters/3Depict-allFilter.o `test -f 'backend/filters/allFilter.cpp' || echo '$(srcdir)/'`backend/filters/allFilter.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-allFilter.Tpo backend/filters/$(DEPDIR)/3Depict-allFilter.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/allFilter.cpp' object='backend/filters/3Depict-allFilter.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-allFilter.o `test -f 'backend/filters/allFilter.cpp' || echo '$(srcdir)/'`backend/filters/allFilter.cpp
+
+backend/filters/3Depict-allFilter.obj: backend/filters/allFilter.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-allFilter.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-allFilter.Tpo -c -o backend/filters/3Depict-allFilter.obj `if test -f 'backend/filters/allFilter.cpp'; then $(CYGPATH_W) 'backend/filters/allFilter.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/allFilter.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-allFilter.Tpo backend/filters/$(DEPDIR)/3Depict-allFilter.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/allFilter.cpp' object='backend/filters/3Depict-allFilter.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-allFilter.obj `if test -f 'backend/filters/allFilter.cpp'; then $(CYGPATH_W) 'backend/filters/allFilter.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/allFilter.cpp'; fi`
+
+backend/filters/3Depict-filterCommon.o: backend/filters/filterCommon.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-filterCommon.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-filterCommon.Tpo -c -o backend/filters/3Depict-filterCommon.o `test -f 'backend/filters/filterCommon.cpp' || echo '$(srcdir)/'`backend/filters/filterCommon.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-filterCommon.Tpo backend/filters/$(DEPDIR)/3Depict-filterCommon.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/filterCommon.cpp' object='backend/filters/3Depict-filterCommon.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-filterCommon.o `test -f 'backend/filters/filterCommon.cpp' || echo '$(srcdir)/'`backend/filters/filterCommon.cpp
+
+backend/filters/3Depict-filterCommon.obj: backend/filters/filterCommon.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-filterCommon.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-filterCommon.Tpo -c -o backend/filters/3Depict-filterCommon.obj `if test -f 'backend/filters/filterCommon.cpp'; then $(CYGPATH_W) 'backend/filters/filterCommon.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/filterCommon.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-filterCommon.Tpo backend/filters/$(DEPDIR)/3Depict-filterCommon.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/filterCommon.cpp' object='backend/filters/3Depict-filterCommon.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-filterCommon.obj `if test -f 'backend/filters/filterCommon.cpp'; then $(CYGPATH_W) 'backend/filters/filterCommon.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/filterCommon.cpp'; fi`
+
+backend/filters/3Depict-dataLoad.o: backend/filters/dataLoad.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-dataLoad.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-dataLoad.Tpo -c -o backend/filters/3Depict-dataLoad.o `test -f 'backend/filters/dataLoad.cpp' || echo '$(srcdir)/'`backend/filters/dataLoad.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-dataLoad.Tpo backend/filters/$(DEPDIR)/3Depict-dataLoad.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/dataLoad.cpp' object='backend/filters/3Depict-dataLoad.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-dataLoad.o `test -f 'backend/filters/dataLoad.cpp' || echo '$(srcdir)/'`backend/filters/dataLoad.cpp
+
+backend/filters/3Depict-dataLoad.obj: backend/filters/dataLoad.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-dataLoad.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-dataLoad.Tpo -c -o backend/filters/3Depict-dataLoad.obj `if test -f 'backend/filters/dataLoad.cpp'; then $(CYGPATH_W) 'backend/filters/dataLoad.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/dataLoad.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-dataLoad.Tpo backend/filters/$(DEPDIR)/3Depict-dataLoad.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/dataLoad.cpp' object='backend/filters/3Depict-dataLoad.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-dataLoad.obj `if test -f 'backend/filters/dataLoad.cpp'; then $(CYGPATH_W) 'backend/filters/dataLoad.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/dataLoad.cpp'; fi`
+
+backend/filters/3Depict-ionDownsample.o: backend/filters/ionDownsample.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionDownsample.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionDownsample.Tpo -c -o backend/filters/3Depict-ionDownsample.o `test -f 'backend/filters/ionDownsample.cpp' || echo '$(srcdir)/'`backend/filters/ionDownsample.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionDownsample.Tpo backend/filters/$(DEPDIR)/3Depict-ionDownsample.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionDownsample.cpp' object='backend/filters/3Depict-ionDownsample.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionDownsample.o `test -f 'backend/filters/ionDownsample.cpp' || echo '$(srcdir)/'`backend/filters/ionDownsample.cpp
+
+backend/filters/3Depict-ionDownsample.obj: backend/filters/ionDownsample.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionDownsample.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionDownsample.Tpo -c -o backend/filters/3Depict-ionDownsample.obj `if test -f 'backend/filters/ionDownsample.cpp'; then $(CYGPATH_W) 'backend/filters/ionDownsample.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionDownsample.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionDownsample.Tpo backend/filters/$(DEPDIR)/3Depict-ionDownsample.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionDownsample.cpp' object='backend/filters/3Depict-ionDownsample.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionDownsample.obj `if test -f 'backend/filters/ionDownsample.cpp'; then $(CYGPATH_W) 'backend/filters/ionDownsample.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionDownsample.cpp'; fi`
+
+backend/filters/3Depict-rangeFile.o: backend/filters/rangeFile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-rangeFile.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-rangeFile.Tpo -c -o backend/filters/3Depict-rangeFile.o `test -f 'backend/filters/rangeFile.cpp' || echo '$(srcdir)/'`backend/filters/rangeFile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-rangeFile.Tpo backend/filters/$(DEPDIR)/3Depict-rangeFile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/rangeFile.cpp' object='backend/filters/3Depict-rangeFile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-rangeFile.o `test -f 'backend/filters/rangeFile.cpp' || echo '$(srcdir)/'`backend/filters/rangeFile.cpp
+
+backend/filters/3Depict-rangeFile.obj: backend/filters/rangeFile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-rangeFile.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-rangeFile.Tpo -c -o backend/filters/3Depict-rangeFile.obj `if test -f 'backend/filters/rangeFile.cpp'; then $(CYGPATH_W) 'backend/filters/rangeFile.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/rangeFile.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-rangeFile.Tpo backend/filters/$(DEPDIR)/3Depict-rangeFile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/rangeFile.cpp' object='backend/filters/3Depict-rangeFile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-rangeFile.obj `if test -f 'backend/filters/rangeFile.cpp'; then $(CYGPATH_W) 'backend/filters/rangeFile.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/rangeFile.cpp'; fi`
+
+backend/filters/3Depict-voxelise.o: backend/filters/voxelise.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-voxelise.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-voxelise.Tpo -c -o backend/filters/3Depict-voxelise.o `test -f 'backend/filters/voxelise.cpp' || echo '$(srcdir)/'`backend/filters/voxelise.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-voxelise.Tpo backend/filters/$(DEPDIR)/3Depict-voxelise.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/voxelise.cpp' object='backend/filters/3Depict-voxelise.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-voxelise.o `test -f 'backend/filters/voxelise.cpp' || echo '$(srcdir)/'`backend/filters/voxelise.cpp
+
+backend/filters/3Depict-voxelise.obj: backend/filters/voxelise.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-voxelise.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-voxelise.Tpo -c -o backend/filters/3Depict-voxelise.obj `if test -f 'backend/filters/voxelise.cpp'; then $(CYGPATH_W) 'backend/filters/voxelise.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/voxelise.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-voxelise.Tpo backend/filters/$(DEPDIR)/3Depict-voxelise.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/voxelise.cpp' object='backend/filters/3Depict-voxelise.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-voxelise.obj `if test -f 'backend/filters/voxelise.cpp'; then $(CYGPATH_W) 'backend/filters/voxelise.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/voxelise.cpp'; fi`
+
+backend/filters/3Depict-spectrumPlot.o: backend/filters/spectrumPlot.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-spectrumPlot.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-spectrumPlot.Tpo -c -o backend/filters/3Depict-spectrumPlot.o `test -f 'backend/filters/spectrumPlot.cpp' || echo '$(srcdir)/'`backend/filters/spectrumPlot.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-spectrumPlot.Tpo backend/filters/$(DEPDIR)/3Depict-spectrumPlot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/spectrumPlot.cpp' object='backend/filters/3Depict-spectrumPlot.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-spectrumPlot.o `test -f 'backend/filters/spectrumPlot.cpp' || echo '$(srcdir)/'`backend/filters/spectrumPlot.cpp
+
+backend/filters/3Depict-spectrumPlot.obj: backend/filters/spectrumPlot.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-spectrumPlot.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-spectrumPlot.Tpo -c -o backend/filters/3Depict-spectrumPlot.obj `if test -f 'backend/filters/spectrumPlot.cpp'; then $(CYGPATH_W) 'backend/filters/spectrumPlot.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/spectrumPlot.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-spectrumPlot.Tpo backend/filters/$(DEPDIR)/3Depict-spectrumPlot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/spectrumPlot.cpp' object='backend/filters/3Depict-spectrumPlot.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-spectrumPlot.obj `if test -f 'backend/filters/spectrumPlot.cpp'; then $(CYGPATH_W) 'backend/filters/spectrumPlot.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/spectrumPlot.cpp'; fi`
+
+backend/filters/3Depict-transform.o: backend/filters/transform.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-transform.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-transform.Tpo -c -o backend/filters/3Depict-transform.o `test -f 'backend/filters/transform.cpp' || echo '$(srcdir)/'`backend/filters/transform.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-transform.Tpo backend/filters/$(DEPDIR)/3Depict-transform.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/transform.cpp' object='backend/filters/3Depict-transform.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-transform.o `test -f 'backend/filters/transform.cpp' || echo '$(srcdir)/'`backend/filters/transform.cpp
+
+backend/filters/3Depict-transform.obj: backend/filters/transform.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-transform.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-transform.Tpo -c -o backend/filters/3Depict-transform.obj `if test -f 'backend/filters/transform.cpp'; then $(CYGPATH_W) 'backend/filters/transform.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/transform.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-transform.Tpo backend/filters/$(DEPDIR)/3Depict-transform.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/transform.cpp' object='backend/filters/3Depict-transform.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-transform.obj `if test -f 'backend/filters/transform.cpp'; then $(CYGPATH_W) 'backend/filters/transform.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/transform.cpp'; fi`
+
+backend/filters/3Depict-externalProgram.o: backend/filters/externalProgram.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-externalProgram.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-externalProgram.Tpo -c -o backend/filters/3Depict-externalProgram.o `test -f 'backend/filters/externalProgram.cpp' || echo '$(srcdir)/'`backend/filters/externalProgram.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-externalProgram.Tpo backend/filters/$(DEPDIR)/3Depict-externalProgram.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/externalProgram.cpp' object='backend/filters/3Depict-externalProgram.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-externalProgram.o `test -f 'backend/filters/externalProgram.cpp' || echo '$(srcdir)/'`backend/filters/externalProgram.cpp
+
+backend/filters/3Depict-externalProgram.obj: backend/filters/externalProgram.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-externalProgram.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-externalProgram.Tpo -c -o backend/filters/3Depict-externalProgram.obj `if test -f 'backend/filters/externalProgram.cpp'; then $(CYGPATH_W) 'backend/filters/externalProgram.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/externalProgram.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-externalProgram.Tpo backend/filters/$(DEPDIR)/3Depict-externalProgram.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/externalProgram.cpp' object='backend/filters/3Depict-externalProgram.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-externalProgram.obj `if test -f 'backend/filters/externalProgram.cpp'; then $(CYGPATH_W) 'backend/filters/externalProgram.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/externalProgram.cpp'; fi`
+
+backend/filters/3Depict-ionClip.o: backend/filters/ionClip.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionClip.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionClip.Tpo -c -o backend/filters/3Depict-ionClip.o `test -f 'backend/filters/ionClip.cpp' || echo '$(srcdir)/'`backend/filters/ionClip.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionClip.Tpo backend/filters/$(DEPDIR)/3Depict-ionClip.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionClip.cpp' object='backend/filters/3Depict-ionClip.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionClip.o `test -f 'backend/filters/ionClip.cpp' || echo '$(srcdir)/'`backend/filters/ionClip.cpp
+
+backend/filters/3Depict-ionClip.obj: backend/filters/ionClip.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionClip.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionClip.Tpo -c -o backend/filters/3Depict-ionClip.obj `if test -f 'backend/filters/ionClip.cpp'; then $(CYGPATH_W) 'backend/filters/ionClip.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionClip.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionClip.Tpo backend/filters/$(DEPDIR)/3Depict-ionClip.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionClip.cpp' object='backend/filters/3Depict-ionClip.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionClip.obj `if test -f 'backend/filters/ionClip.cpp'; then $(CYGPATH_W) 'backend/filters/ionClip.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionClip.cpp'; fi`
+
+backend/filters/3Depict-ionColour.o: backend/filters/ionColour.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionColour.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionColour.Tpo -c -o backend/filters/3Depict-ionColour.o `test -f 'backend/filters/ionColour.cpp' || echo '$(srcdir)/'`backend/filters/ionColour.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionColour.Tpo backend/filters/$(DEPDIR)/3Depict-ionColour.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionColour.cpp' object='backend/filters/3Depict-ionColour.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionColour.o `test -f 'backend/filters/ionColour.cpp' || echo '$(srcdir)/'`backend/filters/ionColour.cpp
+
+backend/filters/3Depict-ionColour.obj: backend/filters/ionColour.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionColour.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionColour.Tpo -c -o backend/filters/3Depict-ionColour.obj `if test -f 'backend/filters/ionColour.cpp'; then $(CYGPATH_W) 'backend/filters/ionColour.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionColour.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionColour.Tpo backend/filters/$(DEPDIR)/3Depict-ionColour.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionColour.cpp' object='backend/filters/3Depict-ionColour.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionColour.obj `if test -f 'backend/filters/ionColour.cpp'; then $(CYGPATH_W) 'backend/filters/ionColour.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionColour.cpp'; fi`
+
+backend/filters/3Depict-boundingBox.o: backend/filters/boundingBox.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-boundingBox.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-boundingBox.Tpo -c -o backend/filters/3Depict-boundingBox.o `test -f 'backend/filters/boundingBox.cpp' || echo '$(srcdir)/'`backend/filters/boundingBox.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-boundingBox.Tpo backend/filters/$(DEPDIR)/3Depict-boundingBox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/boundingBox.cpp' object='backend/filters/3Depict-boundingBox.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-boundingBox.o `test -f 'backend/filters/boundingBox.cpp' || echo '$(srcdir)/'`backend/filters/boundingBox.cpp
+
+backend/filters/3Depict-boundingBox.obj: backend/filters/boundingBox.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-boundingBox.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-boundingBox.Tpo -c -o backend/filters/3Depict-boundingBox.obj `if test -f 'backend/filters/boundingBox.cpp'; then $(CYGPATH_W) 'backend/filters/boundingBox.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/boundingBox.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-boundingBox.Tpo backend/filters/$(DEPDIR)/3Depict-boundingBox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/boundingBox.cpp' object='backend/filters/3Depict-boundingBox.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-boundingBox.obj `if test -f 'backend/filters/boundingBox.cpp'; then $(CYGPATH_W) 'backend/filters/boundingBox.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/boundingBox.cpp'; fi`
+
+backend/filters/3Depict-profile.o: backend/filters/profile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-profile.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-profile.Tpo -c -o backend/filters/3Depict-profile.o `test -f 'backend/filters/profile.cpp' || echo '$(srcdir)/'`backend/filters/profile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-profile.Tpo backend/filters/$(DEPDIR)/3Depict-profile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/profile.cpp' object='backend/filters/3Depict-profile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-profile.o `test -f 'backend/filters/profile.cpp' || echo '$(srcdir)/'`backend/filters/profile.cpp
+
+backend/filters/3Depict-profile.obj: backend/filters/profile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-profile.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-profile.Tpo -c -o backend/filters/3Depict-profile.obj `if test -f 'backend/filters/profile.cpp'; then $(CYGPATH_W) 'backend/filters/profile.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/profile.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-profile.Tpo backend/filters/$(DEPDIR)/3Depict-profile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/profile.cpp' object='backend/filters/3Depict-profile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-profile.obj `if test -f 'backend/filters/profile.cpp'; then $(CYGPATH_W) 'backend/filters/profile.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/profile.cpp'; fi`
+
+backend/filters/3Depict-spatialAnalysis.o: backend/filters/spatialAnalysis.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-spatialAnalysis.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-spatialAnalysis.Tpo -c -o backend/filters/3Depict-spatialAnalysis.o `test -f 'backend/filters/spatialAnalysis.cpp' || echo '$(srcdir)/'`backend/filters/spatialAnalysis.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-spatialAnalysis.Tpo backend/filters/$(DEPDIR)/3Depict-spatialAnalysis.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/spatialAnalysis.cpp' object='backend/filters/3Depict-spatialAnalysis.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-spatialAnalysis.o `test -f 'backend/filters/spatialAnalysis.cpp' || echo '$(srcdir)/'`backend/filters/spatialAnalysis.cpp
+
+backend/filters/3Depict-spatialAnalysis.obj: backend/filters/spatialAnalysis.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-spatialAnalysis.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-spatialAnalysis.Tpo -c -o backend/filters/3Depict-spatialAnalysis.obj `if test -f 'backend/filters/spatialAnalysis.cpp'; then $(CYGPATH_W) 'backend/filters/spatialAnalysis.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/spatialAnalysis.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-spatialAnalysis.Tpo backend/filters/$(DEPDIR)/3Depict-spatialAnalysis.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/spatialAnalysis.cpp' object='backend/filters/3Depict-spatialAnalysis.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-spatialAnalysis.obj `if test -f 'backend/filters/spatialAnalysis.cpp'; then $(CYGPATH_W) 'backend/filters/spatialAnalysis.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/spatialAnalysis.cpp'; fi`
+
+backend/filters/3Depict-clusterAnalysis.o: backend/filters/clusterAnalysis.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-clusterAnalysis.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-clusterAnalysis.Tpo -c -o backend/filters/3Depict-clusterAnalysis.o `test -f 'backend/filters/clusterAnalysis.cpp' || echo '$(srcdir)/'`backend/filters/clusterAnalysis.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-clusterAnalysis.Tpo backend/filters/$(DEPDIR)/3Depict-clusterAnalysis.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/clusterAnalysis.cpp' object='backend/filters/3Depict-clusterAnalysis.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-clusterAnalysis.o `test -f 'backend/filters/clusterAnalysis.cpp' || echo '$(srcdir)/'`backend/filters/clusterAnalysis.cpp
+
+backend/filters/3Depict-clusterAnalysis.obj: backend/filters/clusterAnalysis.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-clusterAnalysis.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-clusterAnalysis.Tpo -c -o backend/filters/3Depict-clusterAnalysis.obj `if test -f 'backend/filters/clusterAnalysis.cpp'; then $(CYGPATH_W) 'backend/filters/clusterAnalysis.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/clusterAnalysis.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-clusterAnalysis.Tpo backend/filters/$(DEPDIR)/3Depict-clusterAnalysis.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/clusterAnalysis.cpp' object='backend/filters/3Depict-clusterAnalysis.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-clusterAnalysis.obj `if test -f 'backend/filters/clusterAnalysis.cpp'; then $(CYGPATH_W) 'backend/filters/clusterAnalysis.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/clusterAnalysis.cpp'; fi`
+
+backend/filters/3Depict-ionInfo.o: backend/filters/ionInfo.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionInfo.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionInfo.Tpo -c -o backend/filters/3Depict-ionInfo.o `test -f 'backend/filters/ionInfo.cpp' || echo '$(srcdir)/'`backend/filters/ionInfo.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionInfo.Tpo backend/filters/$(DEPDIR)/3Depict-ionInfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionInfo.cpp' object='backend/filters/3Depict-ionInfo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionInfo.o `test -f 'backend/filters/ionInfo.cpp' || echo '$(srcdir)/'`backend/filters/ionInfo.cpp
+
+backend/filters/3Depict-ionInfo.obj: backend/filters/ionInfo.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-ionInfo.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-ionInfo.Tpo -c -o backend/filters/3Depict-ionInfo.obj `if test -f 'backend/filters/ionInfo.cpp'; then $(CYGPATH_W) 'backend/filters/ionInfo.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionInfo.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-ionInfo.Tpo backend/filters/$(DEPDIR)/3Depict-ionInfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/ionInfo.cpp' object='backend/filters/3Depict-ionInfo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-ionInfo.obj `if test -f 'backend/filters/ionInfo.cpp'; then $(CYGPATH_W) 'backend/filters/ionInfo.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/ionInfo.cpp'; fi`
+
+backend/filters/3Depict-annotation.o: backend/filters/annotation.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-annotation.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-annotation.Tpo -c -o backend/filters/3Depict-annotation.o `test -f 'backend/filters/annotation.cpp' || echo '$(srcdir)/'`backend/filters/annotation.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-annotation.Tpo backend/filters/$(DEPDIR)/3Depict-annotation.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/annotation.cpp' object='backend/filters/3Depict-annotation.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-annotation.o `test -f 'backend/filters/annotation.cpp' || echo '$(srcdir)/'`backend/filters/annotation.cpp
+
+backend/filters/3Depict-annotation.obj: backend/filters/annotation.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-annotation.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-annotation.Tpo -c -o backend/filters/3Depict-annotation.obj `if test -f 'backend/filters/annotation.cpp'; then $(CYGPATH_W) 'backend/filters/annotation.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/annotation.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-annotation.Tpo backend/filters/$(DEPDIR)/3Depict-annotation.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/annotation.cpp' object='backend/filters/3Depict-annotation.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-annotation.obj `if test -f 'backend/filters/annotation.cpp'; then $(CYGPATH_W) 'backend/filters/annotation.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/annotation.cpp'; fi`
+
+backend/filters/3Depict-geometryHelpers.o: backend/filters/geometryHelpers.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-geometryHelpers.o -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-geometryHelpers.Tpo -c -o backend/filters/3Depict-geometryHelpers.o `test -f 'backend/filters/geometryHelpers.cpp' || echo '$(srcdir)/'`backend/filters/geometryHelpers.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-geometryHelpers.Tpo backend/filters/$(DEPDIR)/3Depict-geometryHelpers.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/geometryHelpers.cpp' object='backend/filters/3Depict-geometryHelpers.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-geometryHelpers.o `test -f 'backend/filters/geometryHelpers.cpp' || echo '$(srcdir)/'`backend/filters/geometryHelpers.cpp
+
+backend/filters/3Depict-geometryHelpers.obj: backend/filters/geometryHelpers.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/3Depict-geometryHelpers.obj -MD -MP -MF backend/filters/$(DEPDIR)/3Depict-geometryHelpers.Tpo -c -o backend/filters/3Depict-geometryHelpers.obj `if test -f 'backend/filters/geometryHelpers.cpp'; then $(CYGPATH_W) 'backend/filters/geometryHelpers.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/geometryHelpers.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/$(DEPDIR)/3Depict-geometryHelpers.Tpo backend/filters/$(DEPDIR)/3Depict-geometryHelpers.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/geometryHelpers.cpp' object='backend/filters/3Depict-geometryHelpers.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/3Depict-geometryHelpers.obj `if test -f 'backend/filters/geometryHelpers.cpp'; then $(CYGPATH_W) 'backend/filters/geometryHelpers.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/geometryHelpers.cpp'; fi`
+
+backend/filters/algorithms/3Depict-binomial.o: backend/filters/algorithms/binomial.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-binomial.o -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-binomial.Tpo -c -o backend/filters/algorithms/3Depict-binomial.o `test -f 'backend/filters/algorithms/binomial.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/binomial.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-binomial.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-binomial.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/binomial.cpp' object='backend/filters/algorithms/3Depict-binomial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-binomial.o `test -f 'backend/filters/algorithms/binomial.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/binomial.cpp
+
+backend/filters/algorithms/3Depict-binomial.obj: backend/filters/algorithms/binomial.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-binomial.obj -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-binomial.Tpo -c -o backend/filters/algorithms/3Depict-binomial.obj `if test -f 'backend/filters/algorithms/binomial.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/binomial.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/binom [...]
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-binomial.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-binomial.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/binomial.cpp' object='backend/filters/algorithms/3Depict-binomial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-binomial.obj `if test -f 'backend/filters/algorithms/binomial.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/binomial.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/binomial.cpp'; fi`
+
+backend/filters/algorithms/3Depict-mass.o: backend/filters/algorithms/mass.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-mass.o -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-mass.Tpo -c -o backend/filters/algorithms/3Depict-mass.o `test -f 'backend/filters/algorithms/mass.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/mass.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-mass.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-mass.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/mass.cpp' object='backend/filters/algorithms/3Depict-mass.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-mass.o `test -f 'backend/filters/algorithms/mass.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/mass.cpp
+
+backend/filters/algorithms/3Depict-mass.obj: backend/filters/algorithms/mass.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-mass.obj -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-mass.Tpo -c -o backend/filters/algorithms/3Depict-mass.obj `if test -f 'backend/filters/algorithms/mass.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/mass.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/mass.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-mass.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-mass.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/mass.cpp' object='backend/filters/algorithms/3Depict-mass.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-mass.obj `if test -f 'backend/filters/algorithms/mass.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/mass.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/mass.cpp'; fi`
+
+backend/3Depict-animator.o: backend/animator.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-animator.o -MD -MP -MF backend/$(DEPDIR)/3Depict-animator.Tpo -c -o backend/3Depict-animator.o `test -f 'backend/animator.cpp' || echo '$(srcdir)/'`backend/animator.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-animator.Tpo backend/$(DEPDIR)/3Depict-animator.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/animator.cpp' object='backend/3Depict-animator.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-animator.o `test -f 'backend/animator.cpp' || echo '$(srcdir)/'`backend/animator.cpp
+
+backend/3Depict-animator.obj: backend/animator.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-animator.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-animator.Tpo -c -o backend/3Depict-animator.obj `if test -f 'backend/animator.cpp'; then $(CYGPATH_W) 'backend/animator.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/animator.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-animator.Tpo backend/$(DEPDIR)/3Depict-animator.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/animator.cpp' object='backend/3Depict-animator.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-animator.obj `if test -f 'backend/animator.cpp'; then $(CYGPATH_W) 'backend/animator.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/animator.cpp'; fi`
+
+backend/3Depict-filtertreeAnalyse.o: backend/filtertreeAnalyse.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-filtertreeAnalyse.o -MD -MP -MF backend/$(DEPDIR)/3Depict-filtertreeAnalyse.Tpo -c -o backend/3Depict-filtertreeAnalyse.o `test -f 'backend/filtertreeAnalyse.cpp' || echo '$(srcdir)/'`backend/filtertreeAnalyse.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-filtertreeAnalyse.Tpo backend/$(DEPDIR)/3Depict-filtertreeAnalyse.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filtertreeAnalyse.cpp' object='backend/3Depict-filtertreeAnalyse.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-filtertreeAnalyse.o `test -f 'backend/filtertreeAnalyse.cpp' || echo '$(srcdir)/'`backend/filtertreeAnalyse.cpp
+
+backend/3Depict-filtertreeAnalyse.obj: backend/filtertreeAnalyse.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-filtertreeAnalyse.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-filtertreeAnalyse.Tpo -c -o backend/3Depict-filtertreeAnalyse.obj `if test -f 'backend/filtertreeAnalyse.cpp'; then $(CYGPATH_W) 'backend/filtertreeAnalyse.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filtertreeAnalyse.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-filtertreeAnalyse.Tpo backend/$(DEPDIR)/3Depict-filtertreeAnalyse.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filtertreeAnalyse.cpp' object='backend/3Depict-filtertreeAnalyse.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-filtertreeAnalyse.obj `if test -f 'backend/filtertreeAnalyse.cpp'; then $(CYGPATH_W) 'backend/filtertreeAnalyse.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filtertreeAnalyse.cpp'; fi`
+
+backend/3Depict-filtertree.o: backend/filtertree.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-filtertree.o -MD -MP -MF backend/$(DEPDIR)/3Depict-filtertree.Tpo -c -o backend/3Depict-filtertree.o `test -f 'backend/filtertree.cpp' || echo '$(srcdir)/'`backend/filtertree.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-filtertree.Tpo backend/$(DEPDIR)/3Depict-filtertree.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filtertree.cpp' object='backend/3Depict-filtertree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-filtertree.o `test -f 'backend/filtertree.cpp' || echo '$(srcdir)/'`backend/filtertree.cpp
+
+backend/3Depict-filtertree.obj: backend/filtertree.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-filtertree.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-filtertree.Tpo -c -o backend/3Depict-filtertree.obj `if test -f 'backend/filtertree.cpp'; then $(CYGPATH_W) 'backend/filtertree.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filtertree.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-filtertree.Tpo backend/$(DEPDIR)/3Depict-filtertree.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filtertree.cpp' object='backend/3Depict-filtertree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-filtertree.obj `if test -f 'backend/filtertree.cpp'; then $(CYGPATH_W) 'backend/filtertree.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filtertree.cpp'; fi`
+
+backend/APT/3Depict-ionhit.o: backend/APT/ionhit.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-ionhit.o -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-ionhit.Tpo -c -o backend/APT/3Depict-ionhit.o `test -f 'backend/APT/ionhit.cpp' || echo '$(srcdir)/'`backend/APT/ionhit.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-ionhit.Tpo backend/APT/$(DEPDIR)/3Depict-ionhit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/ionhit.cpp' object='backend/APT/3Depict-ionhit.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-ionhit.o `test -f 'backend/APT/ionhit.cpp' || echo '$(srcdir)/'`backend/APT/ionhit.cpp
+
+backend/APT/3Depict-ionhit.obj: backend/APT/ionhit.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-ionhit.obj -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-ionhit.Tpo -c -o backend/APT/3Depict-ionhit.obj `if test -f 'backend/APT/ionhit.cpp'; then $(CYGPATH_W) 'backend/APT/ionhit.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/ionhit.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-ionhit.Tpo backend/APT/$(DEPDIR)/3Depict-ionhit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/ionhit.cpp' object='backend/APT/3Depict-ionhit.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-ionhit.obj `if test -f 'backend/APT/ionhit.cpp'; then $(CYGPATH_W) 'backend/APT/ionhit.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/ionhit.cpp'; fi`
+
+backend/APT/3Depict-APTFileIO.o: backend/APT/APTFileIO.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-APTFileIO.o -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-APTFileIO.Tpo -c -o backend/APT/3Depict-APTFileIO.o `test -f 'backend/APT/APTFileIO.cpp' || echo '$(srcdir)/'`backend/APT/APTFileIO.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-APTFileIO.Tpo backend/APT/$(DEPDIR)/3Depict-APTFileIO.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/APTFileIO.cpp' object='backend/APT/3Depict-APTFileIO.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-APTFileIO.o `test -f 'backend/APT/APTFileIO.cpp' || echo '$(srcdir)/'`backend/APT/APTFileIO.cpp
+
+backend/APT/3Depict-APTFileIO.obj: backend/APT/APTFileIO.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-APTFileIO.obj -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-APTFileIO.Tpo -c -o backend/APT/3Depict-APTFileIO.obj `if test -f 'backend/APT/APTFileIO.cpp'; then $(CYGPATH_W) 'backend/APT/APTFileIO.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/APTFileIO.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-APTFileIO.Tpo backend/APT/$(DEPDIR)/3Depict-APTFileIO.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/APTFileIO.cpp' object='backend/APT/3Depict-APTFileIO.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-APTFileIO.obj `if test -f 'backend/APT/APTFileIO.cpp'; then $(CYGPATH_W) 'backend/APT/APTFileIO.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/APTFileIO.cpp'; fi`
+
+backend/APT/3Depict-APTRanges.o: backend/APT/APTRanges.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-APTRanges.o -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-APTRanges.Tpo -c -o backend/APT/3Depict-APTRanges.o `test -f 'backend/APT/APTRanges.cpp' || echo '$(srcdir)/'`backend/APT/APTRanges.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-APTRanges.Tpo backend/APT/$(DEPDIR)/3Depict-APTRanges.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/APTRanges.cpp' object='backend/APT/3Depict-APTRanges.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-APTRanges.o `test -f 'backend/APT/APTRanges.cpp' || echo '$(srcdir)/'`backend/APT/APTRanges.cpp
+
+backend/APT/3Depict-APTRanges.obj: backend/APT/APTRanges.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-APTRanges.obj -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-APTRanges.Tpo -c -o backend/APT/3Depict-APTRanges.obj `if test -f 'backend/APT/APTRanges.cpp'; then $(CYGPATH_W) 'backend/APT/APTRanges.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/APTRanges.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-APTRanges.Tpo backend/APT/$(DEPDIR)/3Depict-APTRanges.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/APTRanges.cpp' object='backend/APT/3Depict-APTRanges.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-APTRanges.obj `if test -f 'backend/APT/APTRanges.cpp'; then $(CYGPATH_W) 'backend/APT/APTRanges.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/APTRanges.cpp'; fi`
+
+backend/APT/3Depict-abundanceParser.o: backend/APT/abundanceParser.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-abundanceParser.o -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-abundanceParser.Tpo -c -o backend/APT/3Depict-abundanceParser.o `test -f 'backend/APT/abundanceParser.cpp' || echo '$(srcdir)/'`backend/APT/abundanceParser.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-abundanceParser.Tpo backend/APT/$(DEPDIR)/3Depict-abundanceParser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/abundanceParser.cpp' object='backend/APT/3Depict-abundanceParser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-abundanceParser.o `test -f 'backend/APT/abundanceParser.cpp' || echo '$(srcdir)/'`backend/APT/abundanceParser.cpp
+
+backend/APT/3Depict-abundanceParser.obj: backend/APT/abundanceParser.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-abundanceParser.obj -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-abundanceParser.Tpo -c -o backend/APT/3Depict-abundanceParser.obj `if test -f 'backend/APT/abundanceParser.cpp'; then $(CYGPATH_W) 'backend/APT/abundanceParser.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/abundanceParser.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-abundanceParser.Tpo backend/APT/$(DEPDIR)/3Depict-abundanceParser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/abundanceParser.cpp' object='backend/APT/3Depict-abundanceParser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-abundanceParser.obj `if test -f 'backend/APT/abundanceParser.cpp'; then $(CYGPATH_W) 'backend/APT/abundanceParser.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/abundanceParser.cpp'; fi`
+
+backend/APT/3Depict-vtk.o: backend/APT/vtk.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-vtk.o -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-vtk.Tpo -c -o backend/APT/3Depict-vtk.o `test -f 'backend/APT/vtk.cpp' || echo '$(srcdir)/'`backend/APT/vtk.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-vtk.Tpo backend/APT/$(DEPDIR)/3Depict-vtk.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/vtk.cpp' object='backend/APT/3Depict-vtk.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-vtk.o `test -f 'backend/APT/vtk.cpp' || echo '$(srcdir)/'`backend/APT/vtk.cpp
+
+backend/APT/3Depict-vtk.obj: backend/APT/vtk.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-vtk.obj -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-vtk.Tpo -c -o backend/APT/3Depict-vtk.obj `if test -f 'backend/APT/vtk.cpp'; then $(CYGPATH_W) 'backend/APT/vtk.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/vtk.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-vtk.Tpo backend/APT/$(DEPDIR)/3Depict-vtk.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/vtk.cpp' object='backend/APT/3Depict-vtk.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-vtk.obj `if test -f 'backend/APT/vtk.cpp'; then $(CYGPATH_W) 'backend/APT/vtk.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/vtk.cpp'; fi`
+
+backend/APT/3Depict-3DapReader.o: backend/APT/3DapReader.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-3DapReader.o -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-3DapReader.Tpo -c -o backend/APT/3Depict-3DapReader.o `test -f 'backend/APT/3DapReader.cpp' || echo '$(srcdir)/'`backend/APT/3DapReader.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-3DapReader.Tpo backend/APT/$(DEPDIR)/3Depict-3DapReader.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/3DapReader.cpp' object='backend/APT/3Depict-3DapReader.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-3DapReader.o `test -f 'backend/APT/3DapReader.cpp' || echo '$(srcdir)/'`backend/APT/3DapReader.cpp
+
+backend/APT/3Depict-3DapReader.obj: backend/APT/3DapReader.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/APT/3Depict-3DapReader.obj -MD -MP -MF backend/APT/$(DEPDIR)/3Depict-3DapReader.Tpo -c -o backend/APT/3Depict-3DapReader.obj `if test -f 'backend/APT/3DapReader.cpp'; then $(CYGPATH_W) 'backend/APT/3DapReader.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/3DapReader.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/APT/$(DEPDIR)/3Depict-3DapReader.Tpo backend/APT/$(DEPDIR)/3Depict-3DapReader.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/APT/3DapReader.cpp' object='backend/APT/3Depict-3DapReader.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/APT/3Depict-3DapReader.obj `if test -f 'backend/APT/3DapReader.cpp'; then $(CYGPATH_W) 'backend/APT/3DapReader.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/APT/3DapReader.cpp'; fi`
+
+backend/filters/algorithms/3Depict-K3DTree.o: backend/filters/algorithms/K3DTree.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-K3DTree.o -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree.Tpo -c -o backend/filters/algorithms/3Depict-K3DTree.o `test -f 'backend/filters/algorithms/K3DTree.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/K3DTree.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/K3DTree.cpp' object='backend/filters/algorithms/3Depict-K3DTree.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-K3DTree.o `test -f 'backend/filters/algorithms/K3DTree.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/K3DTree.cpp
+
+backend/filters/algorithms/3Depict-K3DTree.obj: backend/filters/algorithms/K3DTree.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-K3DTree.obj -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree.Tpo -c -o backend/filters/algorithms/3Depict-K3DTree.obj `if test -f 'backend/filters/algorithms/K3DTree.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/K3DTree.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/K3DTree.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/K3DTree.cpp' object='backend/filters/algorithms/3Depict-K3DTree.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-K3DTree.obj `if test -f 'backend/filters/algorithms/K3DTree.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/K3DTree.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/K3DTree.cpp'; fi`
+
+backend/filters/algorithms/3Depict-K3DTree-mk2.o: backend/filters/algorithms/K3DTree-mk2.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-K3DTree-mk2.o -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree-mk2.Tpo -c -o backend/filters/algorithms/3Depict-K3DTree-mk2.o `test -f 'backend/filters/algorithms/K3DTree-mk2.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/K3DTree-mk2.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree-mk2.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree-mk2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/K3DTree-mk2.cpp' object='backend/filters/algorithms/3Depict-K3DTree-mk2.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-K3DTree-mk2.o `test -f 'backend/filters/algorithms/K3DTree-mk2.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/K3DTree-mk2.cpp
+
+backend/filters/algorithms/3Depict-K3DTree-mk2.obj: backend/filters/algorithms/K3DTree-mk2.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-K3DTree-mk2.obj -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree-mk2.Tpo -c -o backend/filters/algorithms/3Depict-K3DTree-mk2.obj `if test -f 'backend/filters/algorithms/K3DTree-mk2.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/K3DTree-mk2.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/a [...]
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree-mk2.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-K3DTree-mk2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/K3DTree-mk2.cpp' object='backend/filters/algorithms/3Depict-K3DTree-mk2.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-K3DTree-mk2.obj `if test -f 'backend/filters/algorithms/K3DTree-mk2.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/K3DTree-mk2.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/K3DTree-mk2.cpp'; fi`
+
+backend/3Depict-filter.o: backend/filter.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-filter.o -MD -MP -MF backend/$(DEPDIR)/3Depict-filter.Tpo -c -o backend/3Depict-filter.o `test -f 'backend/filter.cpp' || echo '$(srcdir)/'`backend/filter.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-filter.Tpo backend/$(DEPDIR)/3Depict-filter.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filter.cpp' object='backend/3Depict-filter.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-filter.o `test -f 'backend/filter.cpp' || echo '$(srcdir)/'`backend/filter.cpp
+
+backend/3Depict-filter.obj: backend/filter.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-filter.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-filter.Tpo -c -o backend/3Depict-filter.obj `if test -f 'backend/filter.cpp'; then $(CYGPATH_W) 'backend/filter.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filter.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-filter.Tpo backend/$(DEPDIR)/3Depict-filter.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filter.cpp' object='backend/3Depict-filter.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-filter.obj `if test -f 'backend/filter.cpp'; then $(CYGPATH_W) 'backend/filter.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filter.cpp'; fi`
+
+backend/filters/algorithms/3Depict-spatial.o: backend/filters/algorithms/spatial.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-spatial.o -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-spatial.Tpo -c -o backend/filters/algorithms/3Depict-spatial.o `test -f 'backend/filters/algorithms/spatial.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/spatial.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-spatial.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-spatial.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/spatial.cpp' object='backend/filters/algorithms/3Depict-spatial.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-spatial.o `test -f 'backend/filters/algorithms/spatial.cpp' || echo '$(srcdir)/'`backend/filters/algorithms/spatial.cpp
+
+backend/filters/algorithms/3Depict-spatial.obj: backend/filters/algorithms/spatial.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/filters/algorithms/3Depict-spatial.obj -MD -MP -MF backend/filters/algorithms/$(DEPDIR)/3Depict-spatial.Tpo -c -o backend/filters/algorithms/3Depict-spatial.obj `if test -f 'backend/filters/algorithms/spatial.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/spatial.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/spatial.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/filters/algorithms/$(DEPDIR)/3Depict-spatial.Tpo backend/filters/algorithms/$(DEPDIR)/3Depict-spatial.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/filters/algorithms/spatial.cpp' object='backend/filters/algorithms/3Depict-spatial.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/filters/algorithms/3Depict-spatial.obj `if test -f 'backend/filters/algorithms/spatial.cpp'; then $(CYGPATH_W) 'backend/filters/algorithms/spatial.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/filters/algorithms/spatial.cpp'; fi`
+
+backend/3Depict-viscontrol.o: backend/viscontrol.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-viscontrol.o -MD -MP -MF backend/$(DEPDIR)/3Depict-viscontrol.Tpo -c -o backend/3Depict-viscontrol.o `test -f 'backend/viscontrol.cpp' || echo '$(srcdir)/'`backend/viscontrol.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-viscontrol.Tpo backend/$(DEPDIR)/3Depict-viscontrol.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/viscontrol.cpp' object='backend/3Depict-viscontrol.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-viscontrol.o `test -f 'backend/viscontrol.cpp' || echo '$(srcdir)/'`backend/viscontrol.cpp
+
+backend/3Depict-viscontrol.obj: backend/viscontrol.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-viscontrol.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-viscontrol.Tpo -c -o backend/3Depict-viscontrol.obj `if test -f 'backend/viscontrol.cpp'; then $(CYGPATH_W) 'backend/viscontrol.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/viscontrol.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-viscontrol.Tpo backend/$(DEPDIR)/3Depict-viscontrol.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/viscontrol.cpp' object='backend/3Depict-viscontrol.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-viscontrol.obj `if test -f 'backend/viscontrol.cpp'; then $(CYGPATH_W) 'backend/viscontrol.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/viscontrol.cpp'; fi`
+
+backend/3Depict-state.o: backend/state.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-state.o -MD -MP -MF backend/$(DEPDIR)/3Depict-state.Tpo -c -o backend/3Depict-state.o `test -f 'backend/state.cpp' || echo '$(srcdir)/'`backend/state.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-state.Tpo backend/$(DEPDIR)/3Depict-state.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/state.cpp' object='backend/3Depict-state.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-state.o `test -f 'backend/state.cpp' || echo '$(srcdir)/'`backend/state.cpp
+
+backend/3Depict-state.obj: backend/state.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-state.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-state.Tpo -c -o backend/3Depict-state.obj `if test -f 'backend/state.cpp'; then $(CYGPATH_W) 'backend/state.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/state.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-state.Tpo backend/$(DEPDIR)/3Depict-state.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/state.cpp' object='backend/3Depict-state.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-state.obj `if test -f 'backend/state.cpp'; then $(CYGPATH_W) 'backend/state.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/state.cpp'; fi`
+
+backend/3Depict-plot.o: backend/plot.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-plot.o -MD -MP -MF backend/$(DEPDIR)/3Depict-plot.Tpo -c -o backend/3Depict-plot.o `test -f 'backend/plot.cpp' || echo '$(srcdir)/'`backend/plot.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-plot.Tpo backend/$(DEPDIR)/3Depict-plot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/plot.cpp' object='backend/3Depict-plot.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-plot.o `test -f 'backend/plot.cpp' || echo '$(srcdir)/'`backend/plot.cpp
+
+backend/3Depict-plot.obj: backend/plot.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-plot.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-plot.Tpo -c -o backend/3Depict-plot.obj `if test -f 'backend/plot.cpp'; then $(CYGPATH_W) 'backend/plot.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/plot.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-plot.Tpo backend/$(DEPDIR)/3Depict-plot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/plot.cpp' object='backend/3Depict-plot.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-plot.obj `if test -f 'backend/plot.cpp'; then $(CYGPATH_W) 'backend/plot.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/plot.cpp'; fi`
+
+backend/3Depict-configFile.o: backend/configFile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-configFile.o -MD -MP -MF backend/$(DEPDIR)/3Depict-configFile.Tpo -c -o backend/3Depict-configFile.o `test -f 'backend/configFile.cpp' || echo '$(srcdir)/'`backend/configFile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-configFile.Tpo backend/$(DEPDIR)/3Depict-configFile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/configFile.cpp' object='backend/3Depict-configFile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-configFile.o `test -f 'backend/configFile.cpp' || echo '$(srcdir)/'`backend/configFile.cpp
+
+backend/3Depict-configFile.obj: backend/configFile.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT backend/3Depict-configFile.obj -MD -MP -MF backend/$(DEPDIR)/3Depict-configFile.Tpo -c -o backend/3Depict-configFile.obj `if test -f 'backend/configFile.cpp'; then $(CYGPATH_W) 'backend/configFile.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/configFile.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) backend/$(DEPDIR)/3Depict-configFile.Tpo backend/$(DEPDIR)/3Depict-configFile.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='backend/configFile.cpp' object='backend/3Depict-configFile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o backend/3Depict-configFile.obj `if test -f 'backend/configFile.cpp'; then $(CYGPATH_W) 'backend/configFile.cpp'; else $(CYGPATH_W) '$(srcdir)/backend/configFile.cpp'; fi`
+
+gl/3Depict-scene.o: gl/scene.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-scene.o -MD -MP -MF gl/$(DEPDIR)/3Depict-scene.Tpo -c -o gl/3Depict-scene.o `test -f 'gl/scene.cpp' || echo '$(srcdir)/'`gl/scene.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-scene.Tpo gl/$(DEPDIR)/3Depict-scene.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/scene.cpp' object='gl/3Depict-scene.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-scene.o `test -f 'gl/scene.cpp' || echo '$(srcdir)/'`gl/scene.cpp
+
+gl/3Depict-scene.obj: gl/scene.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-scene.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-scene.Tpo -c -o gl/3Depict-scene.obj `if test -f 'gl/scene.cpp'; then $(CYGPATH_W) 'gl/scene.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/scene.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-scene.Tpo gl/$(DEPDIR)/3Depict-scene.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/scene.cpp' object='gl/3Depict-scene.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-scene.obj `if test -f 'gl/scene.cpp'; then $(CYGPATH_W) 'gl/scene.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/scene.cpp'; fi`
+
+gl/3Depict-drawables.o: gl/drawables.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-drawables.o -MD -MP -MF gl/$(DEPDIR)/3Depict-drawables.Tpo -c -o gl/3Depict-drawables.o `test -f 'gl/drawables.cpp' || echo '$(srcdir)/'`gl/drawables.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-drawables.Tpo gl/$(DEPDIR)/3Depict-drawables.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/drawables.cpp' object='gl/3Depict-drawables.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-drawables.o `test -f 'gl/drawables.cpp' || echo '$(srcdir)/'`gl/drawables.cpp
+
+gl/3Depict-drawables.obj: gl/drawables.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-drawables.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-drawables.Tpo -c -o gl/3Depict-drawables.obj `if test -f 'gl/drawables.cpp'; then $(CYGPATH_W) 'gl/drawables.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/drawables.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-drawables.Tpo gl/$(DEPDIR)/3Depict-drawables.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/drawables.cpp' object='gl/3Depict-drawables.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-drawables.obj `if test -f 'gl/drawables.cpp'; then $(CYGPATH_W) 'gl/drawables.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/drawables.cpp'; fi`
+
+gl/3Depict-effect.o: gl/effect.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-effect.o -MD -MP -MF gl/$(DEPDIR)/3Depict-effect.Tpo -c -o gl/3Depict-effect.o `test -f 'gl/effect.cpp' || echo '$(srcdir)/'`gl/effect.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-effect.Tpo gl/$(DEPDIR)/3Depict-effect.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/effect.cpp' object='gl/3Depict-effect.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-effect.o `test -f 'gl/effect.cpp' || echo '$(srcdir)/'`gl/effect.cpp
+
+gl/3Depict-effect.obj: gl/effect.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-effect.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-effect.Tpo -c -o gl/3Depict-effect.obj `if test -f 'gl/effect.cpp'; then $(CYGPATH_W) 'gl/effect.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/effect.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-effect.Tpo gl/$(DEPDIR)/3Depict-effect.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/effect.cpp' object='gl/3Depict-effect.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-effect.obj `if test -f 'gl/effect.cpp'; then $(CYGPATH_W) 'gl/effect.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/effect.cpp'; fi`
+
+gl/3Depict-textures.o: gl/textures.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-textures.o -MD -MP -MF gl/$(DEPDIR)/3Depict-textures.Tpo -c -o gl/3Depict-textures.o `test -f 'gl/textures.cpp' || echo '$(srcdir)/'`gl/textures.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-textures.Tpo gl/$(DEPDIR)/3Depict-textures.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/textures.cpp' object='gl/3Depict-textures.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-textures.o `test -f 'gl/textures.cpp' || echo '$(srcdir)/'`gl/textures.cpp
+
+gl/3Depict-textures.obj: gl/textures.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-textures.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-textures.Tpo -c -o gl/3Depict-textures.obj `if test -f 'gl/textures.cpp'; then $(CYGPATH_W) 'gl/textures.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/textures.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-textures.Tpo gl/$(DEPDIR)/3Depict-textures.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/textures.cpp' object='gl/3Depict-textures.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-textures.obj `if test -f 'gl/textures.cpp'; then $(CYGPATH_W) 'gl/textures.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/textures.cpp'; fi`
+
+gl/3Depict-select.o: gl/select.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-select.o -MD -MP -MF gl/$(DEPDIR)/3Depict-select.Tpo -c -o gl/3Depict-select.o `test -f 'gl/select.cpp' || echo '$(srcdir)/'`gl/select.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-select.Tpo gl/$(DEPDIR)/3Depict-select.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/select.cpp' object='gl/3Depict-select.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-select.o `test -f 'gl/select.cpp' || echo '$(srcdir)/'`gl/select.cpp
+
+gl/3Depict-select.obj: gl/select.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-select.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-select.Tpo -c -o gl/3Depict-select.obj `if test -f 'gl/select.cpp'; then $(CYGPATH_W) 'gl/select.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/select.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-select.Tpo gl/$(DEPDIR)/3Depict-select.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/select.cpp' object='gl/3Depict-select.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-select.obj `if test -f 'gl/select.cpp'; then $(CYGPATH_W) 'gl/select.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/select.cpp'; fi`
+
+gl/3Depict-cameras.o: gl/cameras.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-cameras.o -MD -MP -MF gl/$(DEPDIR)/3Depict-cameras.Tpo -c -o gl/3Depict-cameras.o `test -f 'gl/cameras.cpp' || echo '$(srcdir)/'`gl/cameras.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-cameras.Tpo gl/$(DEPDIR)/3Depict-cameras.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/cameras.cpp' object='gl/3Depict-cameras.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-cameras.o `test -f 'gl/cameras.cpp' || echo '$(srcdir)/'`gl/cameras.cpp
+
+gl/3Depict-cameras.obj: gl/cameras.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-cameras.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-cameras.Tpo -c -o gl/3Depict-cameras.obj `if test -f 'gl/cameras.cpp'; then $(CYGPATH_W) 'gl/cameras.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/cameras.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-cameras.Tpo gl/$(DEPDIR)/3Depict-cameras.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/cameras.cpp' object='gl/3Depict-cameras.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-cameras.obj `if test -f 'gl/cameras.cpp'; then $(CYGPATH_W) 'gl/cameras.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/cameras.cpp'; fi`
+
+gl/3Depict-isoSurface.o: gl/isoSurface.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-isoSurface.o -MD -MP -MF gl/$(DEPDIR)/3Depict-isoSurface.Tpo -c -o gl/3Depict-isoSurface.o `test -f 'gl/isoSurface.cpp' || echo '$(srcdir)/'`gl/isoSurface.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-isoSurface.Tpo gl/$(DEPDIR)/3Depict-isoSurface.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/isoSurface.cpp' object='gl/3Depict-isoSurface.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-isoSurface.o `test -f 'gl/isoSurface.cpp' || echo '$(srcdir)/'`gl/isoSurface.cpp
+
+gl/3Depict-isoSurface.obj: gl/isoSurface.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-isoSurface.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-isoSurface.Tpo -c -o gl/3Depict-isoSurface.obj `if test -f 'gl/isoSurface.cpp'; then $(CYGPATH_W) 'gl/isoSurface.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/isoSurface.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-isoSurface.Tpo gl/$(DEPDIR)/3Depict-isoSurface.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/isoSurface.cpp' object='gl/3Depict-isoSurface.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-isoSurface.obj `if test -f 'gl/isoSurface.cpp'; then $(CYGPATH_W) 'gl/isoSurface.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/isoSurface.cpp'; fi`
+
+gl/3Depict-tr.o: gl/tr.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-tr.o -MD -MP -MF gl/$(DEPDIR)/3Depict-tr.Tpo -c -o gl/3Depict-tr.o `test -f 'gl/tr.cpp' || echo '$(srcdir)/'`gl/tr.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-tr.Tpo gl/$(DEPDIR)/3Depict-tr.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/tr.cpp' object='gl/3Depict-tr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-tr.o `test -f 'gl/tr.cpp' || echo '$(srcdir)/'`gl/tr.cpp
+
+gl/3Depict-tr.obj: gl/tr.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT gl/3Depict-tr.obj -MD -MP -MF gl/$(DEPDIR)/3Depict-tr.Tpo -c -o gl/3Depict-tr.obj `if test -f 'gl/tr.cpp'; then $(CYGPATH_W) 'gl/tr.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/tr.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) gl/$(DEPDIR)/3Depict-tr.Tpo gl/$(DEPDIR)/3Depict-tr.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gl/tr.cpp' object='gl/3Depict-tr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o gl/3Depict-tr.obj `if test -f 'gl/tr.cpp'; then $(CYGPATH_W) 'gl/tr.cpp'; else $(CYGPATH_W) '$(srcdir)/gl/tr.cpp'; fi`
+
+common/3Depict-stringFuncs.o: common/stringFuncs.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-stringFuncs.o -MD -MP -MF common/$(DEPDIR)/3Depict-stringFuncs.Tpo -c -o common/3Depict-stringFuncs.o `test -f 'common/stringFuncs.cpp' || echo '$(srcdir)/'`common/stringFuncs.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-stringFuncs.Tpo common/$(DEPDIR)/3Depict-stringFuncs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/stringFuncs.cpp' object='common/3Depict-stringFuncs.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-stringFuncs.o `test -f 'common/stringFuncs.cpp' || echo '$(srcdir)/'`common/stringFuncs.cpp
+
+common/3Depict-stringFuncs.obj: common/stringFuncs.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-stringFuncs.obj -MD -MP -MF common/$(DEPDIR)/3Depict-stringFuncs.Tpo -c -o common/3Depict-stringFuncs.obj `if test -f 'common/stringFuncs.cpp'; then $(CYGPATH_W) 'common/stringFuncs.cpp'; else $(CYGPATH_W) '$(srcdir)/common/stringFuncs.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-stringFuncs.Tpo common/$(DEPDIR)/3Depict-stringFuncs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/stringFuncs.cpp' object='common/3Depict-stringFuncs.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-stringFuncs.obj `if test -f 'common/stringFuncs.cpp'; then $(CYGPATH_W) 'common/stringFuncs.cpp'; else $(CYGPATH_W) '$(srcdir)/common/stringFuncs.cpp'; fi`
+
+common/3Depict-constants.o: common/constants.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-constants.o -MD -MP -MF common/$(DEPDIR)/3Depict-constants.Tpo -c -o common/3Depict-constants.o `test -f 'common/constants.cpp' || echo '$(srcdir)/'`common/constants.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-constants.Tpo common/$(DEPDIR)/3Depict-constants.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/constants.cpp' object='common/3Depict-constants.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-constants.o `test -f 'common/constants.cpp' || echo '$(srcdir)/'`common/constants.cpp
+
+common/3Depict-constants.obj: common/constants.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-constants.obj -MD -MP -MF common/$(DEPDIR)/3Depict-constants.Tpo -c -o common/3Depict-constants.obj `if test -f 'common/constants.cpp'; then $(CYGPATH_W) 'common/constants.cpp'; else $(CYGPATH_W) '$(srcdir)/common/constants.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-constants.Tpo common/$(DEPDIR)/3Depict-constants.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/constants.cpp' object='common/3Depict-constants.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-constants.obj `if test -f 'common/constants.cpp'; then $(CYGPATH_W) 'common/constants.cpp'; else $(CYGPATH_W) '$(srcdir)/common/constants.cpp'; fi`
+
+common/3Depict-xmlHelper.o: common/xmlHelper.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-xmlHelper.o -MD -MP -MF common/$(DEPDIR)/3Depict-xmlHelper.Tpo -c -o common/3Depict-xmlHelper.o `test -f 'common/xmlHelper.cpp' || echo '$(srcdir)/'`common/xmlHelper.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-xmlHelper.Tpo common/$(DEPDIR)/3Depict-xmlHelper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/xmlHelper.cpp' object='common/3Depict-xmlHelper.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-xmlHelper.o `test -f 'common/xmlHelper.cpp' || echo '$(srcdir)/'`common/xmlHelper.cpp
+
+common/3Depict-xmlHelper.obj: common/xmlHelper.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-xmlHelper.obj -MD -MP -MF common/$(DEPDIR)/3Depict-xmlHelper.Tpo -c -o common/3Depict-xmlHelper.obj `if test -f 'common/xmlHelper.cpp'; then $(CYGPATH_W) 'common/xmlHelper.cpp'; else $(CYGPATH_W) '$(srcdir)/common/xmlHelper.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-xmlHelper.Tpo common/$(DEPDIR)/3Depict-xmlHelper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/xmlHelper.cpp' object='common/3Depict-xmlHelper.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-xmlHelper.obj `if test -f 'common/xmlHelper.cpp'; then $(CYGPATH_W) 'common/xmlHelper.cpp'; else $(CYGPATH_W) '$(srcdir)/common/xmlHelper.cpp'; fi`
+
+common/3Depict-colourmap.o: common/colourmap.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-colourmap.o -MD -MP -MF common/$(DEPDIR)/3Depict-colourmap.Tpo -c -o common/3Depict-colourmap.o `test -f 'common/colourmap.cpp' || echo '$(srcdir)/'`common/colourmap.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-colourmap.Tpo common/$(DEPDIR)/3Depict-colourmap.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/colourmap.cpp' object='common/3Depict-colourmap.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-colourmap.o `test -f 'common/colourmap.cpp' || echo '$(srcdir)/'`common/colourmap.cpp
+
+common/3Depict-colourmap.obj: common/colourmap.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-colourmap.obj -MD -MP -MF common/$(DEPDIR)/3Depict-colourmap.Tpo -c -o common/3Depict-colourmap.obj `if test -f 'common/colourmap.cpp'; then $(CYGPATH_W) 'common/colourmap.cpp'; else $(CYGPATH_W) '$(srcdir)/common/colourmap.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-colourmap.Tpo common/$(DEPDIR)/3Depict-colourmap.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/colourmap.cpp' object='common/3Depict-colourmap.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-colourmap.obj `if test -f 'common/colourmap.cpp'; then $(CYGPATH_W) 'common/colourmap.cpp'; else $(CYGPATH_W) '$(srcdir)/common/colourmap.cpp'; fi`
+
+common/3Depict-voxels.o: common/voxels.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-voxels.o -MD -MP -MF common/$(DEPDIR)/3Depict-voxels.Tpo -c -o common/3Depict-voxels.o `test -f 'common/voxels.cpp' || echo '$(srcdir)/'`common/voxels.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-voxels.Tpo common/$(DEPDIR)/3Depict-voxels.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/voxels.cpp' object='common/3Depict-voxels.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-voxels.o `test -f 'common/voxels.cpp' || echo '$(srcdir)/'`common/voxels.cpp
+
+common/3Depict-voxels.obj: common/voxels.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-voxels.obj -MD -MP -MF common/$(DEPDIR)/3Depict-voxels.Tpo -c -o common/3Depict-voxels.obj `if test -f 'common/voxels.cpp'; then $(CYGPATH_W) 'common/voxels.cpp'; else $(CYGPATH_W) '$(srcdir)/common/voxels.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-voxels.Tpo common/$(DEPDIR)/3Depict-voxels.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/voxels.cpp' object='common/3Depict-voxels.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-voxels.obj `if test -f 'common/voxels.cpp'; then $(CYGPATH_W) 'common/voxels.cpp'; else $(CYGPATH_W) '$(srcdir)/common/voxels.cpp'; fi`
+
+common/3Depict-mathfuncs.o: common/mathfuncs.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-mathfuncs.o -MD -MP -MF common/$(DEPDIR)/3Depict-mathfuncs.Tpo -c -o common/3Depict-mathfuncs.o `test -f 'common/mathfuncs.cpp' || echo '$(srcdir)/'`common/mathfuncs.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-mathfuncs.Tpo common/$(DEPDIR)/3Depict-mathfuncs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/mathfuncs.cpp' object='common/3Depict-mathfuncs.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-mathfuncs.o `test -f 'common/mathfuncs.cpp' || echo '$(srcdir)/'`common/mathfuncs.cpp
+
+common/3Depict-mathfuncs.obj: common/mathfuncs.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-mathfuncs.obj -MD -MP -MF common/$(DEPDIR)/3Depict-mathfuncs.Tpo -c -o common/3Depict-mathfuncs.obj `if test -f 'common/mathfuncs.cpp'; then $(CYGPATH_W) 'common/mathfuncs.cpp'; else $(CYGPATH_W) '$(srcdir)/common/mathfuncs.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-mathfuncs.Tpo common/$(DEPDIR)/3Depict-mathfuncs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/mathfuncs.cpp' object='common/3Depict-mathfuncs.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-mathfuncs.obj `if test -f 'common/mathfuncs.cpp'; then $(CYGPATH_W) 'common/mathfuncs.cpp'; else $(CYGPATH_W) '$(srcdir)/common/mathfuncs.cpp'; fi`
+
+common/3Depict-basics.o: common/basics.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-basics.o -MD -MP -MF common/$(DEPDIR)/3Depict-basics.Tpo -c -o common/3Depict-basics.o `test -f 'common/basics.cpp' || echo '$(srcdir)/'`common/basics.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-basics.Tpo common/$(DEPDIR)/3Depict-basics.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/basics.cpp' object='common/3Depict-basics.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-basics.o `test -f 'common/basics.cpp' || echo '$(srcdir)/'`common/basics.cpp
+
+common/3Depict-basics.obj: common/basics.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-basics.obj -MD -MP -MF common/$(DEPDIR)/3Depict-basics.Tpo -c -o common/3Depict-basics.obj `if test -f 'common/basics.cpp'; then $(CYGPATH_W) 'common/basics.cpp'; else $(CYGPATH_W) '$(srcdir)/common/basics.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-basics.Tpo common/$(DEPDIR)/3Depict-basics.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/basics.cpp' object='common/3Depict-basics.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-basics.obj `if test -f 'common/basics.cpp'; then $(CYGPATH_W) 'common/basics.cpp'; else $(CYGPATH_W) '$(srcdir)/common/basics.cpp'; fi`
+
+common/3Depict-assertion.o: common/assertion.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-assertion.o -MD -MP -MF common/$(DEPDIR)/3Depict-assertion.Tpo -c -o common/3Depict-assertion.o `test -f 'common/assertion.cpp' || echo '$(srcdir)/'`common/assertion.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-assertion.Tpo common/$(DEPDIR)/3Depict-assertion.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/assertion.cpp' object='common/3Depict-assertion.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-assertion.o `test -f 'common/assertion.cpp' || echo '$(srcdir)/'`common/assertion.cpp
+
+common/3Depict-assertion.obj: common/assertion.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-assertion.obj -MD -MP -MF common/$(DEPDIR)/3Depict-assertion.Tpo -c -o common/3Depict-assertion.obj `if test -f 'common/assertion.cpp'; then $(CYGPATH_W) 'common/assertion.cpp'; else $(CYGPATH_W) '$(srcdir)/common/assertion.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-assertion.Tpo common/$(DEPDIR)/3Depict-assertion.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/assertion.cpp' object='common/3Depict-assertion.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-assertion.obj `if test -f 'common/assertion.cpp'; then $(CYGPATH_W) 'common/assertion.cpp'; else $(CYGPATH_W) '$(srcdir)/common/assertion.cpp'; fi`
+
+common/3Depict-mesh.o: common/mesh.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-mesh.o -MD -MP -MF common/$(DEPDIR)/3Depict-mesh.Tpo -c -o common/3Depict-mesh.o `test -f 'common/mesh.cpp' || echo '$(srcdir)/'`common/mesh.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-mesh.Tpo common/$(DEPDIR)/3Depict-mesh.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/mesh.cpp' object='common/3Depict-mesh.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-mesh.o `test -f 'common/mesh.cpp' || echo '$(srcdir)/'`common/mesh.cpp
+
+common/3Depict-mesh.obj: common/mesh.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-mesh.obj -MD -MP -MF common/$(DEPDIR)/3Depict-mesh.Tpo -c -o common/3Depict-mesh.obj `if test -f 'common/mesh.cpp'; then $(CYGPATH_W) 'common/mesh.cpp'; else $(CYGPATH_W) '$(srcdir)/common/mesh.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-mesh.Tpo common/$(DEPDIR)/3Depict-mesh.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/mesh.cpp' object='common/3Depict-mesh.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-mesh.obj `if test -f 'common/mesh.cpp'; then $(CYGPATH_W) 'common/mesh.cpp'; else $(CYGPATH_W) '$(srcdir)/common/mesh.cpp'; fi`
+
+common/3Depict-gsl_helper.o: common/gsl_helper.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-gsl_helper.o -MD -MP -MF common/$(DEPDIR)/3Depict-gsl_helper.Tpo -c -o common/3Depict-gsl_helper.o `test -f 'common/gsl_helper.cpp' || echo '$(srcdir)/'`common/gsl_helper.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-gsl_helper.Tpo common/$(DEPDIR)/3Depict-gsl_helper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/gsl_helper.cpp' object='common/3Depict-gsl_helper.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-gsl_helper.o `test -f 'common/gsl_helper.cpp' || echo '$(srcdir)/'`common/gsl_helper.cpp
+
+common/3Depict-gsl_helper.obj: common/gsl_helper.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT common/3Depict-gsl_helper.obj -MD -MP -MF common/$(DEPDIR)/3Depict-gsl_helper.Tpo -c -o common/3Depict-gsl_helper.obj `if test -f 'common/gsl_helper.cpp'; then $(CYGPATH_W) 'common/gsl_helper.cpp'; else $(CYGPATH_W) '$(srcdir)/common/gsl_helper.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) common/$(DEPDIR)/3Depict-gsl_helper.Tpo common/$(DEPDIR)/3Depict-gsl_helper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='common/gsl_helper.cpp' object='common/3Depict-gsl_helper.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o common/3Depict-gsl_helper.obj `if test -f 'common/gsl_helper.cpp'; then $(CYGPATH_W) 'common/gsl_helper.cpp'; else $(CYGPATH_W) '$(srcdir)/common/gsl_helper.cpp'; fi`
+
+testing/3Depict-mglTesting.o: testing/mglTesting.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT testing/3Depict-mglTesting.o -MD -MP -MF testing/$(DEPDIR)/3Depict-mglTesting.Tpo -c -o testing/3Depict-mglTesting.o `test -f 'testing/mglTesting.cpp' || echo '$(srcdir)/'`testing/mglTesting.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) testing/$(DEPDIR)/3Depict-mglTesting.Tpo testing/$(DEPDIR)/3Depict-mglTesting.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='testing/mglTesting.cpp' object='testing/3Depict-mglTesting.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o testing/3Depict-mglTesting.o `test -f 'testing/mglTesting.cpp' || echo '$(srcdir)/'`testing/mglTesting.cpp
+
+testing/3Depict-mglTesting.obj: testing/mglTesting.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -MT testing/3Depict-mglTesting.obj -MD -MP -MF testing/$(DEPDIR)/3Depict-mglTesting.Tpo -c -o testing/3Depict-mglTesting.obj `if test -f 'testing/mglTesting.cpp'; then $(CYGPATH_W) 'testing/mglTesting.cpp'; else $(CYGPATH_W) '$(srcdir)/testing/mglTesting.cpp'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) testing/$(DEPDIR)/3Depict-mglTesting.Tpo testing/$(DEPDIR)/3Depict-mglTesting.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='testing/mglTesting.cpp' object='testing/3Depict-mglTesting.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(3Depict_CXXFLAGS) $(CXXFLAGS) -c -o testing/3Depict-mglTesting.obj `if test -f 'testing/mglTesting.cpp'; then $(CYGPATH_W) 'testing/mglTesting.cpp'; else $(CYGPATH_W) '$(srcdir)/testing/mglTesting.cpp'; fi`
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f backend/$(DEPDIR)/$(am__dirstamp)
+	-rm -f backend/$(am__dirstamp)
+	-rm -f backend/APT/$(DEPDIR)/$(am__dirstamp)
+	-rm -f backend/APT/$(am__dirstamp)
+	-rm -f backend/filters/$(DEPDIR)/$(am__dirstamp)
+	-rm -f backend/filters/$(am__dirstamp)
+	-rm -f backend/filters/algorithms/$(DEPDIR)/$(am__dirstamp)
+	-rm -f backend/filters/algorithms/$(am__dirstamp)
+	-rm -f common/$(DEPDIR)/$(am__dirstamp)
+	-rm -f common/$(am__dirstamp)
+	-rm -f gl/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gl/$(am__dirstamp)
+	-rm -f gui/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gui/$(am__dirstamp)
+	-rm -f gui/dialogs/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gui/dialogs/$(am__dirstamp)
+	-rm -f gui/dialogs/animateSubDialogs/$(DEPDIR)/$(am__dirstamp)
+	-rm -f gui/dialogs/animateSubDialogs/$(am__dirstamp)
+	-rm -f testing/$(DEPDIR)/$(am__dirstamp)
+	-rm -f testing/$(am__dirstamp)
+	-rm -f wx/$(DEPDIR)/$(am__dirstamp)
+	-rm -f wx/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR) backend/$(DEPDIR) backend/APT/$(DEPDIR) backend/filters/$(DEPDIR) backend/filters/algorithms/$(DEPDIR) common/$(DEPDIR) gl/$(DEPDIR) gui/$(DEPDIR) gui/dialogs/$(DEPDIR) gui/dialogs/animateSubDialogs/$(DEPDIR) testing/$(DEPDIR) wx/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR) backend/$(DEPDIR) backend/APT/$(DEPDIR) backend/filters/$(DEPDIR) backend/filters/algorithms/$(DEPDIR) common/$(DEPDIR) gl/$(DEPDIR) gui/$(DEPDIR) gui/dialogs/$(DEPDIR) gui/dialogs/animateSubDialogs/$(DEPDIR) testing/$(DEPDIR) wx/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+	distclean distclean-compile distclean-generic distclean-tags \
+	distdir dvi dvi-am html html-am info info-am install \
+	install-am install-binPROGRAMS install-data install-data-am \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-binPROGRAMS
+
+.PRECIOUS: Makefile
+
+
+%.rc.o: 
+	$(WX_RESCOMP) $^ -o $@ 3Depict.rc
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/backend/APT/3DapReader.cpp b/src/backend/APT/3DapReader.cpp
new file mode 100644
index 0000000..4a05dbb
--- /dev/null
+++ b/src/backend/APT/3DapReader.cpp
@@ -0,0 +1,656 @@
+/* 
+ * 3DapReader.cpp - File parser for 3DAP systems 
+ * Copyright (C) 2015  D Haley
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "3DapReader.h"
+#include <vector>
+#include <iostream>
+#include <cstdlib>
+#include <fstream>
+
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_fit.h>
+#include <gsl/gsl_multifit.h>
+
+
+
+#include "common/basics.h"
+
+using std::vector;
+using std::endl;
+using std::string;
+
+
+//TODO: We may have to deal with 2 or 3 delay line configurations	
+//3Dap uses hexanode detector??
+const unsigned int NUM_XY=2;
+		
+
+//Charge on an electron (coulombs -- aka A.s)
+const float CHARGE_ELECTRON= 1.602176e-19;
+//Atomic mass units per kilo
+const float AMU_PER_KG =  6.0221409e26;
+
+const char *OPS_ENUM_ERRSTRINGS[] =
+{
+       	"\"C\" line (exp. parameters) not in expected format",
+	"\"I\"	line (Detector parameters) not in expected format",
+	"\"-\" line (Time-of-flights) not in expected format",
+	"\"V\" line (voltage data) not in expected format",
+	"Error interpreting \"V\" line (voltage data) data",
+	"Missing beta value from \"V\" line - needs to be in voltage, or in system header (\"C\" line",
+	"Incorrect number of \"V\" line (voltage data) data entries",
+	"Unknown linetype in data file",
+	"\"P\" line (detector channels) not in expected format",
+	"Unable to interpret channels line",
+	"Incorrect number of events in \"S\" (hit position) line",
+	"Unable to interpret event data on \"S\" (hit position) line",
+	"Unable to parse \"S\" (hit position) line event count (eg 8 in S8 ...)",
+	"\"S\" (hit position) line data not preceded by TOF data, as it should have been",
+	"Duplicate system data/experiment setup (\"C\") entry found -- there can only be one",
+	"Duplicate detector (\"I\") data entry found -- there can only be one",
+	"Trailing \"-\" line found -- should have be followed by a \"S\" line, but wasn't.",
+	"Duplicate\"-\" line found -- should have be followed by a \"S\" line, but wasn't.",
+	"Unable to open file",
+	"unable to read file, after opening",
+	"Abort requested"
+};
+//Single 3DAP hit event
+struct SINGLE_HIT
+{
+	float x,y;
+	float tof;
+	float massToCharge;
+};
+
+//Voltage data structure -- these updates occur during the experiment
+struct VOLTAGE_DATA
+{
+	size_t nextHitGroupOffset;
+	float voltage;
+	float pulseVolt;
+	float beta; //For some reason, OPS files seem to have duplicate beta data
+};
+
+//experimental setup data
+struct THREEDAP_DATA
+{
+	float flightPath; //in mm
+	float alpha; //Pulse coupling coefficient
+	float beta; 
+	float tZero; // in ns
+	float detectorRadius;// in mm	
+	unsigned int detectorChannels;
+};
+
+//Hits obtained on same pulse
+struct THREEDAP_EXPERIMENT
+{
+	THREEDAP_DATA params;	
+	vector<vector<SINGLE_HIT> > eventData;
+	vector<VOLTAGE_DATA> voltageData;
+	vector<unsigned long long> eventPulseNumber;
+};
+
+float evaluate_polyBase(float x, float y, 
+	unsigned int baseNum, unsigned int order);
+
+//Polynomial fit via GSL
+unsigned int polyFitData(const vector<float> &obsX, const vector<float> &obsY,
+	       		const vector<float> &obsZ, vector<float> &coeff, unsigned int polyOrder);
+
+//Function to read POSAP "OPS" files, which contain data
+//on voltage, positioned hits and time of flights
+//as well as some instrument parameters
+unsigned int readOps(const char *file, 
+		THREEDAP_EXPERIMENT &data, 
+			unsigned int &badLine, unsigned int &progress, 
+			ATOMIC_BOOL &wantAbort, bool strictMode=false)
+{
+
+	COMPILE_ASSERT(THREEDEP_ARRAYSIZE(OPS_ENUM_ERRSTRINGS) == OPSREADER_ENUM_END);
+
+	const char COMMENT_MARKER='*';
+
+	badLine=0;
+
+	size_t totalFilesize;
+	if(!getFilesize(file,totalFilesize))
+		return OPSREADER_OPEN_ERR;
+
+	std::ifstream f(file);
+
+	if(!f)
+		return OPSREADER_OPEN_ERR;
+
+
+	enum
+	{
+		OPS_LINE_DASH,
+		OPS_LINE_OTHER_OR_NONE
+	};
+
+	bool haveSystemParams=false;
+	bool haveDetectorSize=false;
+
+	unsigned int lastLine=OPS_LINE_OTHER_OR_NONE;	
+
+	vector<string> strVec;
+	while(!f.eof())
+	{
+		std::string strLine;
+		getline(f,strLine);
+		badLine++;
+
+
+		if(f.eof())
+			break;
+
+		if(!f.good())
+			return OPSREADER_READ_ERR;
+
+		//If user wants to abort, please do so
+		if(wantAbort)
+			return OPSREADER_ABORT_ERR;
+
+		//Remove any ws delimiters
+		stripWhite(strLine);
+
+		//Is a blank or comment? Don't process line
+		if(!strLine.size() || strLine[0] == COMMENT_MARKER)
+			continue;
+
+		//Check to see what type of line this is
+		strVec.clear();
+
+		splitStrsRef(strLine.c_str(),"\t ",strVec);
+		switch(strLine[0])
+		{
+			//"C" line contains the system parameters
+			// flight path, pulse coupling coefficients (alpha, beta -- see Sebastien et al) and time zero offset.
+			// "New method for the calibration of three-dimensional atom-probe mass"
+			// Review of Scientific Instruments, 2001
+			case 'C':
+			{
+				if(haveSystemParams)
+					return OPSREADER_FORMAT_DUPLICATE_SYSDATA;
+
+				haveSystemParams = true;
+
+				//Should have something eg
+				// C 123 1.01 0.8 -123 
+				if(strVec.size() != 5)
+					return OPSREADER_FORMAT_CLINE_ERR;
+
+				if(stream_cast(	data.params.flightPath,strVec[1]))
+					return OPSREADER_FORMAT_CLINE_ERR;
+
+				if(stream_cast(	data.params.alpha,strVec[2]))
+					return OPSREADER_FORMAT_CLINE_ERR;
+				
+				if(stream_cast(	data.params.beta,strVec[3]))
+					return OPSREADER_FORMAT_CLINE_ERR;
+
+				if(stream_cast(	data.params.tZero,strVec[4]))
+					return OPSREADER_FORMAT_CLINE_ERR;
+
+				lastLine=OPS_LINE_OTHER_OR_NONE;
+				break;
+			}
+			//"I" Line contains detector radius
+			case 'I':
+			{
+				if(haveDetectorSize)
+					return OPSREADER_FORMAT_DUPLICATE_DETECTORSIZE;
+
+				haveDetectorSize=true;
+
+				//Should have I or IR
+				//I - No reflectron
+				//IR - reflectron
+				//and a floating pt number
+				if(strVec.size() != 2)
+					return OPSREADER_FORMAT_DETECTORLINE_ERR;
+
+				if(stream_cast(data.params.detectorRadius,strVec[1]))
+					return OPSREADER_FORMAT_DETECTORLINE_ERR;
+				lastLine=OPS_LINE_OTHER_OR_NONE;
+
+				break;
+			}
+			//"S" line contains the hit TOFs, and hit frequency
+			case 'S':
+			{
+				//OK, so this is the actual data -- each "S"" line should be
+				//preceded by a "-" line.
+				if(lastLine !=OPS_LINE_DASH)
+				{
+					if(strictMode)
+						return OPSREADER_FORMAT_SLINE_PREFIX_ERR;
+					else
+					{
+						//FIXME: better warning mechanism
+						//cerr << "WARNING : S line not preceded by \"-\" line; skipping" << endl;
+						continue; //oK, this is kinda a confusing situation, lets just get to the next line, which we hope is an S.
+					}
+				}
+
+
+
+				//If we have less positions than TOFs, then something is wrong 
+				//-- we have to discard the previous "-" line
+				// could have a wierd line that makes no sense (for eg, I found this):
+				//
+				//-151 13
+				//S0
+				// I assume that this means that 
+				if((strVec.size()-1) /(NUM_XY+1)< data.eventData.back().size())
+				{
+					ASSERT(data.eventData.size())
+					//We have to discard the previous hit sequence
+					data.eventData.pop_back();
+					lastLine=OPS_LINE_OTHER_OR_NONE;
+					break;
+				}
+
+
+				//OK, so the event numbers are coded like
+				//"S8", where S indicates it is an event
+				//line, and the next numbers indicate the
+				//number of observed events
+				strVec[0]= strVec[0].substr(1);
+
+				unsigned int numEvents;
+				if(stream_cast(numEvents,strVec[0]))
+				{
+					if(strictMode)
+						return OPSREADER_FORMAT_SLINE_FORMAT_ERR;
+					else
+					{
+						//FIXME : better warn mechanism
+						//cerr << "Warning : skipping S-line  at file line:" << badLine << " unable to interpret event count" << endl;
+						data.eventData.pop_back();
+						lastLine=OPS_LINE_OTHER_OR_NONE;
+						break;
+					}
+				}
+
+
+				if(numEvents != (strVec.size()-1)/(NUM_XY+1))
+					return OPSREADER_FORMAT_SLINE_EVENTCOUNT_ERR;
+
+				
+				vector<SINGLE_HIT> &curHits=data.eventData.back();
+			
+				//The TOF must be preset by a "-" line, as checked above.
+				//The contents of this "S" line must have at least enough elements
+				//to cover the TOFs. The other hits are assigned a zero TOF
+				if(curHits.size()> numEvents)
+				{
+					if(strictMode)
+						return OPSREADER_FORMAT_SLINE_EVENTCOUNT_ERR;
+					else
+					{
+						//FIXME: Better warning mechanism
+						//cerr << "Warning : skipping S-line  at file line:" << badLine << " unable to interpret event count" << endl;
+						data.eventData.pop_back();
+						lastLine=OPS_LINE_OTHER_OR_NONE;
+						break;
+					}
+				}
+
+
+				SINGLE_HIT h;
+				h.tof=0;
+				curHits.resize(numEvents,h);
+				vector<float> tofs;
+
+				//Retrieve the TOF values, so we can redirect them
+				//as the TOF values above's correspondence map
+				//is stored at the end of the hit sequence, one 
+				//entry per hit
+				//zero means untimed, otherwise TOF
+				tofs.resize(curHits.size());
+				for(unsigned int ui=0;ui<curHits.size();ui++)
+					tofs[ui]=curHits[ui].tof;
+
+
+				//Read up until the TOF timing map
+				bool everythingOK=true;
+				unsigned int timingIndex=curHits.size()*2+1;
+				for(unsigned int ui=1;ui<timingIndex;ui+=2)
+				{
+					//Push the current hit into a vector 
+					unsigned int offset;
+					offset=ui/2;
+
+					if(stream_cast(curHits[offset].x,strVec[ui]))
+					{
+						if(strictMode)
+							return OPSREADER_FORMAT_SLINE_EVENTDATA_ERR;
+						else
+						{
+							everythingOK=false;
+							break;
+						}
+
+					}
+					
+					if(stream_cast(curHits[offset].y,strVec[ui+1]))
+					{
+						if(strictMode)
+							return OPSREADER_FORMAT_SLINE_EVENTDATA_ERR;
+						else
+						{
+							everythingOK=false;
+							break;
+						}
+					}
+				}
+
+				if(!everythingOK)
+				{
+					//FIXME: Better warning mechanism
+					//cerr << "WARNING : problem interpeting s line at file line :" << badLine << "Skipping." << endl;
+					data.eventData.pop_back();
+					lastLine=OPS_LINE_OTHER_OR_NONE;
+					break;
+				}	
+
+				vector<unsigned int> timeMap;
+				//Read the TOF timing map
+				for(unsigned int ui=timingIndex; ui<strVec.size();ui++)
+				{
+					unsigned int mapEntry;
+					if(stream_cast(mapEntry,strVec[ui]))
+					{
+						if(strictMode)
+							return OPSREADER_FORMAT_SLINE_EVENTDATA_ERR;
+						else
+						{
+							everythingOK=false;
+							break;
+
+						}
+					}
+
+					timeMap.push_back(mapEntry);
+				}
+
+				if(!everythingOK)
+				{
+					//FIXME: Better warn method
+					//cerr << "WARNING : problem interpreting timing data in s line at file line :" << badLine << "Skipping." << endl;
+					data.eventData.pop_back();
+					lastLine=OPS_LINE_OTHER_OR_NONE;
+					break;
+				}	
+				ASSERT(timeMap.size() == curHits.size());
+
+				//use the TOF timing map to assign TOF values
+				//to observed TOF entries from the "-" line
+				for(unsigned int ui=0;ui<curHits.size();ui++)
+				{
+					if(timeMap[ui])
+						curHits[ui].tof=tofs[timeMap[ui]-1];
+					else
+						curHits[ui].tof=0;
+				}
+				
+				lastLine=OPS_LINE_OTHER_OR_NONE;
+				break;
+			}
+			//"-" line contains the detector hit positions
+			case '-':
+			{
+				if(lastLine==OPS_LINE_DASH)
+					return OPSREADER_FORMAT_DOUBLEDASH;
+
+				if(strVec.size() < 2)
+					return OPSREADER_FORMAT_LINE_DASH_ERR;
+
+
+				size_t pulseDelta;
+				if(stream_cast(pulseDelta,strVec[0].substr(1)))
+					return OPSREADER_FORMAT_LINE_DASH_ERR;
+
+				//First bit of string is the number of pulses
+				//preceding this event
+				if(data.eventPulseNumber.empty())
+					data.eventPulseNumber.push_back(pulseDelta+1);
+				else
+				{
+					data.eventPulseNumber.push_back(
+						data.eventPulseNumber.back()+pulseDelta+1);
+				}
+
+				vector<float> tofs;
+				for(unsigned int ui=1; ui< strVec.size(); ui++)
+				{
+					float timeOfFlight;
+					if(stream_cast(timeOfFlight,strVec[ui]))
+						return OPSREADER_FORMAT_LINE_DASH_ERR;
+
+					tofs.push_back(timeOfFlight);
+				}
+
+				vector<SINGLE_HIT> s;
+
+				s.resize(tofs.size());
+				for(unsigned int ui=0;ui<tofs.size();ui++)
+					s[ui].tof =tofs[ui]; 
+				data.eventData.push_back(s);
+
+				lastLine=OPS_LINE_DASH;
+				break;
+			}
+			//\"V\" voltage data
+			case 'V':
+			{
+
+				//V line may have
+				if(! (strVec.size() == 4 || strVec.size() == 3) )
+					return OPSREADER_FORMAT_LINE_VOLTAGE_DATACOUNT_ERR;
+
+				VOLTAGE_DATA vDat;
+				if(stream_cast(vDat.voltage,strVec[1]))
+					return OPSREADER_FORMAT_LINE_VOLTAGE_DATA_ERR;
+
+				float pulseV;
+				if(stream_cast(pulseV,strVec[2]))
+					return OPSREADER_FORMAT_LINE_VOLTAGE_DATA_ERR;
+				vDat.pulseVolt=pulseV;
+
+				if(strVec.size() ==4)
+				{
+					if(stream_cast(vDat.beta,strVec[3]))
+						return OPSREADER_FORMAT_LINE_VOLTAGE_DATA_ERR;
+				}
+				else // 3 items
+				{
+					//If we have not seen the system parameter's beta, then we cannot compute a good effective voltage
+					if(!haveSystemParams)
+						return OPSREADER_FORMAT_LINE_VOLTAGE_NOBETA;
+					vDat.beta = data.params.beta;
+				}
+
+				vDat.nextHitGroupOffset=data.eventData.size();
+				data.voltageData.push_back(vDat);
+				lastLine=OPS_LINE_OTHER_OR_NONE;
+				break;
+			}
+			case 'P':
+			{
+				if(strVec.size() != 2)
+					return OPSREADER_FORMAT_CHANNELS_ERR;
+				
+				if(stream_cast(data.params.detectorChannels,strVec[1]))
+					return OPSREADER_CHANNELS_DATA_ERR;
+				break;
+			}
+			case 'T':
+			{
+				//This is a timing,  temperature and pressure line.
+				// ignore.
+				break;
+			}
+			default:
+				return OPSREADER_FORMAT_LINETYPE_ERR;
+		}
+
+		progress=(float)f.tellg()/(float)totalFilesize*100.0f;
+	}
+
+	if(lastLine==OPS_LINE_DASH)
+	{
+		//Damn, we have a problem. We saw a "-" line,
+		//but failed to find the next "S" line, which should have been there.
+		//Something is wrong.
+		if(strictMode)
+			return OPSREADER_FORMAT_TRAILING_DASH_ERR;
+		
+		data.eventData.pop_back();
+		
+	}
+
+	return 0;
+}
+
+void computeMToC(THREEDAP_EXPERIMENT &experiment)
+{
+
+	const VOLTAGE_DATA *v,*vNext;
+	v=vNext=0;
+
+	unsigned int voltageOffset=0;
+	for(size_t ui=0;ui<experiment.eventData.size();ui++)
+	{
+
+		vector<float> curMTocs;
+
+		curMTocs.clear();
+		//Ensure that we are pointing to the *previous* voltage
+		// that we have seen
+		if (!v || (vNext && ui >=vNext->nextHitGroupOffset+1))
+		{
+			ASSERT(voltageOffset <=experiment.voltageData.size());
+			v=&(experiment.voltageData[voltageOffset]);
+			if(voltageOffset <experiment.voltageData.size() )
+			{
+				vNext=&(experiment.voltageData[voltageOffset+1]);
+				voltageOffset++;
+			}
+			else
+				vNext=0;
+		}
+
+		for(size_t uj=0;uj<experiment.eventData[ui].size();uj++)
+		{
+
+			//if the corresponding TOF value is zero, then it is not a valid hit
+			if(experiment.eventData[ui][uj].tof 
+					< std::numeric_limits<float>::epsilon())
+				continue;
+			
+			//effective voltage
+			float rat;
+			//Inverse Velocity
+			rat=(experiment.eventData[ui][uj].tof - experiment.params.tZero)/(experiment.params.flightPath);
+
+			//Corrected voltage (kV)
+			//FIXME: Where are these magic numbers coming from?
+			float tmpVoltage;
+			tmpVoltage=0.983*(v->voltage+105);
+			float tmpPulse;
+
+			tmpPulse=1.07*(v->pulseVolt-85);
+			tmpVoltage=(tmpVoltage+tmpPulse*v->beta)*experiment.params.alpha/1.0e3;
+
+			//Compute m/c information
+			experiment.eventData[ui][uj].massToCharge=0.1929796*tmpVoltage*rat*rat;
+		}
+
+	}
+}
+
+//Reconstruct onto an imaginary cylinder
+// - this may not be ideal as 3dap systems use unmasked, square detectors.
+void cylinderReconstruct(const THREEDAP_EXPERIMENT &experiment,
+				float ionVolume, float scaleRadius,
+				std::vector<IonHit> &ions)
+{
+
+	//Detector radius in
+	const float dz = ionVolume/(scaleRadius*scaleRadius);
+
+	ASSERT(ions.empty());
+
+	float zOff=0;
+	ions.reserve(experiment.eventData.size());
+	for(unsigned int ui=0;ui<experiment.eventData.size();ui++)
+	{
+		for(unsigned int uj=0;uj<experiment.eventData[ui].size();uj++)
+		{
+			//Check that the tof that corresponds to this position
+			//is valid
+		
+			//Convert to fractional	
+			float unitVx=experiment.eventData[ui][uj].x;
+			float unitVy=experiment.eventData[ui][uj].y;
+			unitVx/=(float)experiment.params.detectorChannels;
+			unitVy/=(float)experiment.params.detectorChannels;
+
+			unitVx-=0.5;
+			unitVy-=0.5;
+
+			IonHit h;
+			h.setPos(Point3D(unitVx*scaleRadius,
+					 unitVy*scaleRadius,zOff));
+
+			
+			h.setMassToCharge(experiment.eventData[ui][uj].massToCharge);
+
+			zOff+=dz;
+			ions.push_back(h);
+		}
+	}
+}
+
+
+unsigned int reconstruct3DapData(const char *file, const THREEDAP_RECON_PARAMS &params,unsigned int &progress, ATOMIC_BOOL &wantAbort, std::vector<IonHit> &ionData)
+{
+	unsigned int errCode;
+	unsigned int badLine;
+	THREEDAP_EXPERIMENT experimentData;
+	errCode=readOps(file,experimentData,badLine,progress,wantAbort);
+	if(errCode)
+		return errCode;
+
+	computeMToC(experimentData); 
+
+	//TODO: Would be sensible to range the data first, then
+	// perform reconstruction later. This however requires a more
+	// complex UI	
+	//RangeData(...)
+
+	cylinderReconstruct(experimentData,params.ionVolume/params.detectionEfficiency,params.radiusCylinder, ionData); 
+	
+	
+	return 0;	
+}
+
diff --git a/src/backend/APT/3DapReader.h b/src/backend/APT/3DapReader.h
new file mode 100644
index 0000000..5f15982
--- /dev/null
+++ b/src/backend/APT/3DapReader.h
@@ -0,0 +1,59 @@
+#ifndef THREEDAPREADER_H
+#define THREEDAPREADER_H
+
+#include <vector>
+
+#include "ionhit.h"
+#include "common/stringFuncs.h"
+
+enum
+{
+	OPSREADER_FORMAT_CLINE_ERR,
+	OPSREADER_FORMAT_DETECTORLINE_ERR,
+	OPSREADER_FORMAT_LINE_DASH_ERR,
+	OPSREADER_FORMAT_LINE_VOLTAGE_ERR,
+	OPSREADER_FORMAT_LINE_VOLTAGE_NOBETA,
+	OPSREADER_FORMAT_LINE_VOLTAGE_DATA_ERR,
+	OPSREADER_FORMAT_LINE_VOLTAGE_DATACOUNT_ERR,
+	OPSREADER_FORMAT_LINETYPE_ERR,
+	OPSREADER_FORMAT_CHANNELS_ERR,
+	OPSREADER_CHANNELS_DATA_ERR,
+	OPSREADER_FORMAT_SLINE_EVENTCOUNT_ERR,
+	OPSREADER_FORMAT_SLINE_EVENTDATA_ERR,
+	OPSREADER_FORMAT_SLINE_FORMAT_ERR,
+	OPSREADER_FORMAT_SLINE_PREFIX_ERR,
+	OPSREADER_FORMAT_DUPLICATE_SYSDATA,
+	OPSREADER_FORMAT_DUPLICATE_DETECTORSIZE,
+	OPSREADER_FORMAT_TRAILING_DASH_ERR,
+	OPSREADER_FORMAT_DOUBLEDASH,
+	OPSREADER_OPEN_ERR,
+	OPSREADER_READ_ERR,
+	OPSREADER_ABORT_ERR,
+	OPSREADER_ENUM_END
+};
+
+extern const char *OPS_ENUM_ERRSTRINGS[]; 
+
+struct THREEDAP_RECON_PARAMS
+{
+	//Do we want to use TOF correction?
+	bool useTOFDistortion;
+	// Minimum and maximum m/c values to use
+	// when performing TOF correction
+	float minMtoCDistort, maxMtoCDistort;
+	//radius of cylinder to use for reconstruction
+	float radiusCylinder;
+
+	//Detection efficiency
+	float detectionEfficiency;
+	//volume of ion to use
+	float ionVolume;
+};
+
+//!Reconstruct an "OPS" formatted file (from a 3Dap) to an IonHit vector
+unsigned int reconstruct3DapData(const char *file, 
+	const THREEDAP_RECON_PARAMS &params, 
+	unsigned int &progress, ATOMIC_BOOL &wantAbort,
+	std::vector<IonHit> &ionData);
+
+#endif
diff --git a/src/backend/APT/APTFileIO.cpp b/src/backend/APT/APTFileIO.cpp
index 7b3d54d..8af87ef 100644
--- a/src/backend/APT/APTFileIO.cpp
+++ b/src/backend/APT/APTFileIO.cpp
@@ -1,5 +1,5 @@
 /* 
- * APTClasses.h - Generic APT components code
+ * APTFileIO.cpp - Generic APT components code
  * Copyright (C) 2015  D Haley
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -109,11 +109,28 @@ const char *LAWATAP_ATO_ERR_STRINGS[] = { "",
 				};
 //---------
 
+//TAPSIM binary errors and associated error strings
+enum
+{
+	TAPSIM_ERR_FILE_FORMAT_FAIL,
+	TAPSIM_ERR_FILE_OPEN_FAIL,
+	TAPSIM_ERR_ABORTED
+};
+	
+
+const char *TAPSIM_ERR_STRINGS[] = {"",
+			NTRANS("Error interpreting file contents"),
+			NTRANS("Error opening file"),
+			NTRANS("Aborted opening file"),
+			};
+
+//This is a performance tunable option. Some systems seek slowly
+#define USE_SEEKING_LIMITLOAD
+#if defined(USE_SEEKING_LIMITLOAD)
 unsigned int LimitLoadPosFile(unsigned int inputnumcols, unsigned int outputnumcols, const unsigned int index[], vector<IonHit> &posIons,const char *posFile, size_t limitCount,
 	       	unsigned int &progress, ATOMIC_BOOL &wantAbort,bool strongSampling)
 {
 
-
 	//Function is only defined for 4 columns here.
 	ASSERT(outputnumcols == 4);
 	//buffersize must be a power of two and at least outputnumcols*sizeof(float)
@@ -274,6 +291,165 @@ unsigned int LimitLoadPosFile(unsigned int inputnumcols, unsigned int outputnumc
 	delete[] buffer2;
 	return 0;
 }
+#else
+unsigned int LimitLoadPosFile(unsigned int inputnumcols, unsigned int outputnumcols, const unsigned int index[], vector<IonHit> &posIons,const char *posFile, size_t limitCount,
+	       	unsigned int &progress, ATOMIC_BOOL &wantAbort,bool strongSampling)
+{
+	//Function is only defined for 4 columns here.
+	ASSERT(outputnumcols == 4);
+	//buffersize must be a power of two and at least outputnumcols*sizeof(float)
+	const unsigned int BUFFERSIZE=inputnumcols * sizeof(float);
+	const unsigned int BUFFERSIZE2=outputnumcols * sizeof(float);
+
+
+	//Obtain size of file
+	size_t fileSize;
+	if(!getFilesize(posFile,fileSize))
+		return POS_OPEN_FAIL;
+	
+	if(!fileSize)
+		return POS_EMPTY_FAIL;
+	
+	//calculate the number of points stored in the POS file
+	size_t pointCount=0;
+	size_t maxIons;
+	size_t maxCols = inputnumcols * sizeof(float);
+	//regular case
+	if(fileSize % maxCols)
+		return POS_SIZE_MODULUS_ERR;	
+	maxIons =fileSize/maxCols;
+	limitCount=std::min(limitCount,maxIons);
+
+	//If we are going to load the whole file, don't use a sampling method to do it.
+	if(limitCount == maxIons)
+		return GenericLoadFloatFile(inputnumcols, outputnumcols, index, posIons,posFile,progress, wantAbort);
+	 
+	//open pos file
+	std::ifstream CFile(posFile,std::ios::binary);
+	if(!CFile)
+		return POS_OPEN_FAIL;
+
+	//Allocate buffers
+	//--
+	char *buffer,*buffer2;
+	try
+	{
+		buffer=new char[BUFFERSIZE];
+	}
+	catch(std::bad_alloc &m)
+	{
+		return POS_ALLOC_FAIL;
+	}
+		
+	try
+	{
+		buffer2=new char[BUFFERSIZE2];
+	}
+	catch(std::bad_alloc &m)
+	{
+		delete[] buffer;
+		return POS_ALLOC_FAIL;
+	}
+	//--
+
+
+	//Use a sampling method to load the pos file
+	std::vector<size_t> ionsToLoad;
+	try
+	{
+		posIons.resize(limitCount);
+
+		RandNumGen rng;
+		rng.initTimer();
+		unsigned int dummy;
+		randomDigitSelection(ionsToLoad,maxIons,rng,
+				limitCount,dummy,strongSampling);
+	}
+	catch(std::bad_alloc)
+	{
+		delete[] buffer;
+		delete[] buffer2;
+		return POS_ALLOC_FAIL;
+	}
+
+	//sort again
+	//NOTE: I tried to use a functor here to get progress
+	// It was not stable with parallel sort.
+	// Can we use several partial_sorts to get progress?
+	std::sort(ionsToLoad.begin(),ionsToLoad.end());
+	unsigned int curProg = PROGRESS_REDUCE;	
+
+	size_t curPos=0, curIon=0;
+	while( (CFile.tellg() < fileSize) && curIon < ionsToLoad.size())
+	{
+		//Read in a single input entry
+		
+		if(!CFile.good())
+		{
+			delete[] buffer;
+			delete[] buffer2;
+			return POS_READ_FAIL;
+		}
+		CFile.read(buffer,BUFFERSIZE);
+
+		if(curPos != ionsToLoad[curIon])
+		{
+			curPos++;
+			continue;
+		}
+		curPos++;
+		 
+		
+		for (size_t i = 0; i < outputnumcols; i++) // iterate through floats
+			memcpy(&(buffer2[i * sizeof(float)]), &(buffer[index[i] * sizeof(float)]), sizeof(float));
+		
+		posIons[curIon].setHit((float*)buffer2);
+		//Data bytes stored in pos files are big
+		//endian. flip as required
+		#ifdef __LITTLE_ENDIAN__
+			posIons[curIon].switchEndian();	
+		#endif
+		
+		if(posIons[curIon].hasNaN())
+		{
+			delete[] buffer;
+			delete[] buffer2;
+			return POS_NAN_LOAD_ERROR;	
+		}
+	
+		if(posIons[curIon].hasInf())
+		{
+			delete[] buffer;
+			delete[] buffer2;
+			return POS_INF_LOAD_ERROR;	
+		}
+		
+		pointCount++;
+		if(!curProg--)
+		{
+
+			progress= (unsigned int)((float)(CFile.tellg())/((float)fileSize)*100.0f);
+			curProg=PROGRESS_REDUCE;
+			if(wantAbort)
+			{
+				delete[] buffer;
+				delete[] buffer2;
+				posIons.clear();
+				return POS_ABORT_FAIL;
+				
+			}
+		}
+
+		curIon++;
+	}
+
+
+	delete[] buffer;
+	delete[] buffer2;
+	return 0;
+}
+#endif
+
 
 unsigned int GenericLoadFloatFile(unsigned int inputnumcols, unsigned int outputnumcols, 
 		const unsigned int index[], vector<IonHit> &posIons,const char *posFile, 
@@ -692,8 +868,6 @@ unsigned int limitLoadTextFile(unsigned int maxCols,
 
 unsigned int LoadATOFile(const char *fileName, vector<IonHit> &ions, unsigned int &progress, ATOMIC_BOOL &wantAbort,unsigned int forceEndian)
 {
-
-
 	//open pos file
 	std::ifstream CFile(fileName,std::ios::binary);
 
@@ -922,6 +1096,11 @@ unsigned int LoadATOFile(const char *fileName, vector<IonHit> &ions, unsigned in
 
 			ions[curPos] = IonHit(buffer);
 			curPos++;
+
+			//Update progress every ~1k ions.
+			// this is deliberately a power of two to speed
+			// the modulus operator (not benchmarked)
+			progress = (unsigned int)(float)CFile.tellg()/(float)fileSize*100.0f;
 			
 		}
 	}
@@ -933,6 +1112,8 @@ unsigned int LoadATOFile(const char *fileName, vector<IonHit> &ions, unsigned in
 			CFile.read((char*)buffer,LAWATAP_ATO_RECORD_SIZE);
 			ions[curPos] = IonHit(buffer);
 			curPos++;
+			
+			progress = (unsigned int)(float)CFile.tellg()/(float)fileSize*100.0f;
 		}
 	}
 
@@ -942,6 +1123,136 @@ unsigned int LoadATOFile(const char *fileName, vector<IonHit> &ions, unsigned in
 	return 0;
 }
 
+//Load a TAPSIM Binfile
+unsigned int loadTapsimBinFile(const char *fileName, unsigned int &progress, ATOMIC_BOOL &wantAbort, vector<IonHit> &posIons)
+{
+	ifstream f(fileName,std::ios::binary); 
+
+	if(!f)
+		return TAPSIM_ERR_FILE_OPEN_FAIL;
+
+	f.seekg(0,std::ios::end);
+	size_t fileSize;
+	fileSize = f.tellg();
+	f.seekg(0,std::ios::beg);
+
+	//TAPSIM's binary geometery input format is not totally clearly documented
+	// but an example is provided. So best efforts are us.
+
+	std::string str;
+	getline(f,str);
+
+	vector<string> s;
+	splitStrsRef(str.c_str(),' ',s);
+
+	const unsigned int HEADER_ENTRIES=4;
+	if(s.size() != HEADER_ENTRIES)
+		return TAPSIM_ERR_FILE_FORMAT_FAIL;
+	
+	bool binaryMode;
+	
+
+	if(s[0] == "BINARY")
+	{
+		//Payload is in binary format
+		binaryMode=true;
+	}
+	else if(s[0] == "ASCII")
+	{
+		//payload is in ascii format
+		binaryMode=false;
+	}
+	else
+		return TAPSIM_ERR_FILE_FORMAT_FAIL;
+
+	//maximum size of a TAPSIM record, in bytes
+	unsigned int MAX_RECORD_SIZE=18;
+	char *buffer=new char[MAX_RECORD_SIZE];
+	if(binaryMode)
+	{
+		size_t numEntries;
+		if(stream_cast(numEntries,s[1]))
+		{
+			delete[] buffer;
+			return TAPSIM_ERR_FILE_FORMAT_FAIL;
+		}
+		
+		//ID specifies atom type
+		bool idsPresent;
+		//There is an inconsistency between the example files given and the documentation
+		// The documentation says the ids are optional. The examples have the option disabled, 
+		// but provide the IDs anyway - this changes the payload size.
+		if(s[2] == "1" || s[2] == "0" ) 
+			idsPresent=true;
+		else
+		{
+			delete[] buffer;
+			return TAPSIM_ERR_FILE_FORMAT_FAIL;
+		}
+		
+
+		size_t numbersPresent;
+		if(s[3] == "1" )
+			numbersPresent=true;
+		else if (s[3] == "0") 
+			numbersPresent=false;
+		else
+		{
+			delete[] buffer;
+			return TAPSIM_ERR_FILE_FORMAT_FAIL;
+		}
+
+		//Contrary to docuemntation, ids appear to be "short", not "unsigned int"	
+		size_t recordSize=( (numbersPresent ? 1:0 )*sizeof(unsigned int) + 
+			3*sizeof(float) + (idsPresent ?1:0)*sizeof(short));
+
+		//Check that payload size matches expected size
+		if(fileSize -f.tellg() !=recordSize*numEntries)
+		{
+			delete[] buffer;
+			return TAPSIM_ERR_FILE_FORMAT_FAIL;
+		}
+
+		IonHit h;
+		posIons.resize(numEntries);
+		for(size_t ui=0;ui<numEntries; ui++)
+		{
+			f.read(buffer,recordSize);
+
+			//Transfer position data
+#ifdef __LITTLE_ENDIAN__
+			h.setPos(Point3D((float*)(buffer)));
+#elif __BIG_ENDIAN__
+			static_assert(false); //TODO: IMPLEMENT ME
+#endif
+			//assign the ID as the mass to charge
+			h.setMassToCharge(*( (short*)(buffer+12) ));
+		
+			posIons[ui]=h;
+
+			progress = (float)ui/ (float)numEntries*100.0f;
+
+			if(wantAbort)
+				return TAPSIM_ERR_ABORTED;
+		}
+
+#pragma omp parallel for
+		for(size_t ui=0;ui<numEntries;ui++)
+		{
+			//rescale back to nm, rather than in m
+			posIons[ui].setPos(posIons[ui].getPos()*1e9);
+		}
+	}
+	else
+	{
+		//TODO: IMPLEMENT ME
+		ASSERT(false);
+	}
+
+
+	delete[] buffer;
+	return 0;
+}
 
 
 #ifdef DEBUG
diff --git a/src/backend/APT/APTFileIO.h b/src/backend/APT/APTFileIO.h
index 841fa55..849bb15 100644
--- a/src/backend/APT/APTFileIO.h
+++ b/src/backend/APT/APTFileIO.h
@@ -36,6 +36,8 @@ extern const char *LAWATAP_ATO_ERR_STRINGS[];
 
 extern const char *TEXT_LOAD_ERR_STRINGS[];
 
+extern const char *TAPSIM_ERR_STRINGS[];
+
 //!Errors that can be encountered when openning pos files
 enum posErrors
 {
@@ -74,6 +76,8 @@ unsigned int limitLoadTextFile(unsigned int numColsTotal,
 			vector<vector<float> > &data,const char *posFile, const char *deliminator, const size_t limitCount,
 					       	unsigned int &progress, ATOMIC_BOOL &wantAbort,bool strongRandom);
 
+//Load a TAPSIM Binfile
+unsigned int loadTapsimBinFile(const char *filename, unsigned int &progress, ATOMIC_BOOL &wantAbort, vector<IonHit> &posions);
 
 //Load a CAMECA LAWATAP "ATO" formatted file.
 //	- This is a totally different format to the "FlexTAP" ato format
diff --git a/src/backend/APT/APTRanges.cpp b/src/backend/APT/APTRanges.cpp
index 4960b92..f28a5ca 100644
--- a/src/backend/APT/APTRanges.cpp
+++ b/src/backend/APT/APTRanges.cpp
@@ -117,7 +117,7 @@ bool RangeFile::decomposeIonNames(const std::string &name,
 
 	//true - was last, or now am on ion name
 	//false - am still on multiplier
-	int nameMode=true;
+	bool nameMode=true;
 	for(size_t ui=1;ui<name.size();ui++)
 	{
 		if(!isascii(name[ui]))
@@ -2388,12 +2388,12 @@ bool RangeFile::range(vector<IonHit> &ions, string ionShortName)
 	return true;
 }
 
-void RangeFile::range(vector<IonHit> &ions)
+void RangeFile::range(vector<IonHit> &ions) const
 {
 	vector<IonHit> rangedVec;
 
 	unsigned int numIons=ions.size();
-	rangedVec.reserve(numIons);
+	rangedVec.reserve(numIons/2);
 
 	for(unsigned int ui=0; ui<numIons; ui++)
 	{
@@ -2407,6 +2407,19 @@ void RangeFile::range(vector<IonHit> &ions)
 	ions.swap(rangedVec);
 }
 
+void RangeFile::range(const vector<IonHit> &inIons, vector<IonHit> &ions) const
+{
+	unsigned int numIons=inIons.size();
+	ions.clear();
+	ions.reserve(numIons/2);
+
+	for(unsigned int ui=0; ui<numIons; ui++)
+	{
+		if(isRanged(inIons[ui]))
+			ions.push_back(inIons[ui]);
+	}
+}
+
 void RangeFile::rangeByRangeID(vector<IonHit> &ions, unsigned int rangeID)
 {
 	vector<IonHit> rangedVec;
diff --git a/src/backend/APT/APTRanges.h b/src/backend/APT/APTRanges.h
index e8fc556..8ae9f43 100644
--- a/src/backend/APT/APTRanges.h
+++ b/src/backend/APT/APTRanges.h
@@ -195,8 +195,12 @@ class RangeFile
 		bool isRanged(float mass) const;
 		//! Returns true if an ion is ranged
 		bool isRanged(const IonHit &) const;
-		//!Clips out ions that are not inside the range
-		void range(std::vector<IonHit> &ionHits);
+		//!Clips out ions that are not inside any range
+		// this destroys the input ionHits
+		void range(std::vector<IonHit> &ionHits) const;
+		//!Clips out ions that are not inside any range, keeping 
+		void range(const std::vector<IonHit> &ionsIn,
+					std::vector<IonHit> &ionHits) const;
 		//!Clips out ions that dont match the specified ion name
 		/*! Returns false if the ion name given doesn't match
 		 *  any in the rangefile (case sensitive) 
diff --git a/src/backend/filter.cpp b/src/backend/filter.cpp
index bf58399..b140e1e 100644
--- a/src/backend/filter.cpp
+++ b/src/backend/filter.cpp
@@ -86,6 +86,12 @@ size_t numElements(const vector<const FilterStreamData *> &v, unsigned int mask)
 	return nE;
 }
 
+void Filter::convertFileStringToAbsolute(const string &baseDir, std::string &s) const
+{
+	//Relative files should be marked with a ./
+	if(s.size() > 2 && s.substr(0,2) == "./") 
+		s=baseDir + s.substr(2);
+}
 
 template<>
 bool Filter::applyPropertyNow(bool &prop, const std::string &val, bool &needUp)
@@ -553,7 +559,7 @@ void Plot2DStreamData::checkSelfConsistent() const
 		ASSERT(scatterIntensity.empty());
 
 
-	ASSERT(plotType < PLOT_TYPE_ENUM_END);
+	ASSERT(plotStyle < PLOT_TYPE_ENUM_END);
 }
 void RangeStreamData::checkSelfConsistent() const
 {
@@ -672,6 +678,10 @@ void IonStreamData::estimateIonParameters(const std::vector<const FilterStreamDa
 	map<vector<float>, unsigned int> ionColourMap;
 	std::string lastStr;
 
+	//Create a  default grey colour, if we can't do better
+	r=g=b=0.5;
+	a=1.0;
+
 	//Sum up the relative frequencies
 	for(unsigned int ui=0; ui<inData.size(); ui++)
 	{
@@ -970,7 +980,7 @@ unsigned int Filter::collateIons(const vector<const FilterStreamData *> &dataIn,
 				for(size_t ui=0;ui<dataSize; ui++)
 					outVector[offset+ui]=d->data[ui];
 
-				if(Filter::wantAbort)
+				if(*Filter::wantAbort)
 					return FILTER_ERR_ABORT;
 				offset+=d->data.size();
 
@@ -982,6 +992,44 @@ unsigned int Filter::collateIons(const vector<const FilterStreamData *> &dataIn,
 
 	return 0;
 }
+
+unsigned int Filter::collateIons(const vector<const FilterStreamData *> &dataIn,
+				std::vector<Point3D> &p, ProgressData &prog, size_t totalDataSize)
+{
+	//Build monolithic point set
+	//---
+	p.resize(totalDataSize);
+
+	size_t dataSize=0;
+
+	prog.filterProgress=0;
+	if(*Filter::wantAbort)
+		return FILTER_ERR_ABORT;
+
+	for(unsigned int ui=0;ui<dataIn.size() ;ui++)
+	{
+		switch(dataIn[ui]->getStreamType())
+		{
+			case STREAM_TYPE_IONS: 
+			{
+				const IonStreamData *d;
+				d=((const IonStreamData *)dataIn[ui]);
+
+				if(extendDataVector(p,d->data,	prog.filterProgress,
+						dataSize))
+					return FILTER_ERR_ABORT;
+
+				dataSize+=d->data.size();
+			}
+			break;	
+			default:
+				break;
+		}
+	}
+	//---
+
+	return 0;
+}
 				
 
 void Filter::updateOutputInfo(const std::vector<const FilterStreamData *> &dataOut)
diff --git a/src/backend/filter.h b/src/backend/filter.h
index c77e2c6..e52afb9 100644
--- a/src/backend/filter.h
+++ b/src/backend/filter.h
@@ -114,9 +114,6 @@ enum
 	BINDING_RECT_CORNER_MOVE
 };
 
-extern const char *STREAM_NAMES[];
-
-
 //Representations
 enum 
 {
@@ -124,9 +121,14 @@ enum
 	VOXEL_REPRESENT_POINTCLOUD,
 	VOXEL_REPRESENT_ISOSURF,
 	VOXEL_REPRESENT_AXIAL_SLICE,
+	VOXEL_REPRESENT_SLICE,
 	VOXEL_REPRESENT_END
 };
 
+extern const char *STREAM_NAMES[];
+
+
+
 //Error codes for each of the filters. 
 //These can be passed to the getErrString() function for
 //a human readable error message
@@ -149,6 +151,18 @@ enum
 //---
 //
 
+inline 
+void assignIonData(Point3D &p, const IonHit &h)
+{
+	p = h.getPosRef();
+}
+	 
+inline
+void assignIonData(IonHit &p, const IonHit &h)
+{
+	p = h;
+}
+
 //!Return the number of elements in a vector of filter data - i.e. the sum of the number of objects within each stream. Only masked streams (STREAM_TYPE_*) will be counted
 size_t numElements(const std::vector<const FilterStreamData *> &vm, unsigned int mask=STREAMTYPE_MASK_ALL);
 
@@ -181,6 +195,7 @@ class FilterStreamData
 		//Cross-checks fields to determine if (best guess)
 		///data structure has a sane combination of values
 		virtual void checkSelfConsistent() const {}
+		virtual const string getName() const =0; 
 #endif
 
 };
@@ -294,6 +309,10 @@ public:
 	//!Use heuristics to guess best display parameters for this ionstream. May attempt to leave them alone 
 	void estimateIonParameters(const std::vector<const FilterStreamData *> &inputData);
 	void estimateIonParameters(const IonStreamData *inputFilter);
+
+#ifdef DEBUG
+		const string getName() const { return "Ion Stream";}; 
+#endif
 };
 
 //!Point with m-t-c value data
@@ -313,6 +332,9 @@ public:
 	//!Apply filter to input data stream	
 	Voxels<float> *data;
 		
+#ifdef DEBUG
+	const string getName() const { return "Voxel Stream";}; 
+#endif
 };
 
 //!Plotting data
@@ -375,6 +397,7 @@ class PlotStreamData : public FilterStreamData
 		//Cross-checks fields to determine if (best guess)
 		///data structure has a sane combination of values
 		virtual void checkSelfConsistent() const; 
+		const string getName() const { return "Plot Stream";}; 
 #endif
 
 };
@@ -395,7 +418,7 @@ class Plot2DStreamData : public FilterStreamData
 		//Label for X, Y axes
 		std::string xLabel,yLabel;
 
-		unsigned int plotType;
+		unsigned int plotStyle;
 
 		//!Structured XY data pairs for plotting curve
 		Array2D<float> xyData;
@@ -418,6 +441,7 @@ class Plot2DStreamData : public FilterStreamData
 
 #ifdef DEBUG
 		void checkSelfConsistent() const;
+		const string getName() const { return "2DPlot Stream";}; 
 #endif
 };
 
@@ -429,7 +453,7 @@ class DrawStreamData: public FilterStreamData
 		std::vector<DrawableObj *> drawables;
 		//!constructor
 		DrawStreamData(){ streamType=STREAM_TYPE_DRAW;};
-		DrawStreamData(const Filter *f){ streamType=STREAM_TYPE_DRAW;};
+		DrawStreamData(const Filter *f){ streamType=STREAM_TYPE_DRAW; parent=f;};
 		//!Destructor
 		~DrawStreamData();
 		//!Returns 0, as this does not store basic object types -- i.e. is not for data storage per se.
@@ -441,6 +465,7 @@ class DrawStreamData: public FilterStreamData
 		//Cross-checks fields to determine if (best guess)
 		///data structure has a sane combination of values
 		void checkSelfConsistent() const; 
+		const string getName() const { return "Draw Stream";}; 
 #endif
 };
 
@@ -472,6 +497,7 @@ class RangeStreamData :  public FilterStreamData
 
 #ifdef DEBUG
 		void checkSelfConsistent() const ; 
+		const string getName() const { return "Range Stream" ;}; 
 #endif
 };
 
@@ -479,8 +505,9 @@ class RangeStreamData :  public FilterStreamData
 class Filter
 {
 	protected:
-
+		//Should we cache, and is the cache content up-to-date
 		bool cache, cacheOK;
+		//Should we use slower, but better randomisation algorithms
 		static bool strongRandom;
 
 
@@ -502,9 +529,15 @@ class Filter
 
 
 
+		//Convert an internal file string (/ separated) representing a path, to absolute as required. Relative paths should be indicated with a "./"
+		void convertFileStringToAbsolute(const string &basePath, std::string &s) const;
+
 		//Collate ions from filterstream data into an ionhit vector
 		static unsigned int collateIons(const std::vector<const FilterStreamData *> &dataIn,
 				std::vector<IonHit> &outVector, ProgressData &prog, size_t totalDataSize=(size_t)-1);
+		
+		static unsigned int collateIons(const std::vector<const FilterStreamData *> &dataIn,
+				std::vector<Point3D> &outVector, ProgressData &prog, size_t totalDataSize=(size_t)-1);
 
 		//!Propagate the given input data to an output vector
 		static void propagateStreams(const std::vector<const FilterStreamData *> &dataIn,
@@ -531,6 +564,241 @@ class Filter
 		//!Get the per-filter error codes
 		virtual std::string getSpecificErrString(unsigned int errCode) const=0;
 
+		//!Extend a point data vector using some ion data. 
+		// Offset is the position to start inserting in the destination array.
+		// Will fail if user abort is detected 
+		template<class T>
+		static unsigned int extendDataVector(std::vector<T> &dest, const std::vector<IonHit> &vIonData,
+						unsigned int &progress, size_t offset)
+		{
+			unsigned int curProg=NUM_CALLBACK;
+			unsigned int n =offset;
+#ifdef _OPENMP
+			//Parallel version
+			bool spin=false;
+			#pragma omp parallel for shared(spin)
+			for(size_t ui=0;ui<vIonData.size();ui++)
+			{
+				if(spin)
+					continue;
+				assignIonData(dest[offset+ ui],vIonData[ui]);
+				
+				//update progress every CALLBACK entries
+				if(!curProg--)
+				{
+					#pragma omp critical
+					{
+					n+=NUM_CALLBACK;
+					progress= (unsigned int)(((float)n/(float)dest.size())*100.0f);
+					if(!omp_get_thread_num())
+					{
+						if(*Filter::wantAbort)
+							spin=true;
+					}
+					}
+				}
+
+			}
+
+			if(spin)
+				return 1;
+#else
+
+			for(size_t ui=0;ui<vIonData.size();ui++)
+			{
+				assignIonData(dest[offset+ ui],vIonData[ui]);
+				
+				//update progress every CALLBACK ions
+				if(!curProg--)
+				{
+					n+=NUM_CALLBACK;
+					progress= (unsigned int)(((float)n/(float)dest.size())*100.0f);
+					if(*(Filter::wantAbort))
+						return 1;
+				}
+
+			}
+#endif
+
+
+			return 0;
+		}
+
+		//Build two sets of points from a single datastream and the given rangefile
+		//Returns 0 on no error, otherwise nonzero
+		template<class T>
+		static size_t buildSplitPoints(const vector<const FilterStreamData *> &dataIn,
+						ProgressData &progress, size_t totalDataSize,
+						const RangeFile *rngF, const vector<bool> &pSourceEnabled, const vector<bool> &pTargetEnabled,
+						vector<T> &pSource, vector<T> &pTarget
+						)
+		{
+			ASSERT(rngF);
+			ASSERT(pSourceEnabled.size() == pTargetEnabled.size());
+			ASSERT(pSourceEnabled.size() == rngF->getNumIons());
+			size_t sizeNeeded[2];
+			sizeNeeded[0]=sizeNeeded[1]=0;
+
+			//Presize arrays
+			for(unsigned int ui=0; ui<dataIn.size() ; ui++)
+			{
+				switch(dataIn[ui]->getStreamType())
+				{
+					case STREAM_TYPE_IONS:
+					{
+						unsigned int ionID;
+
+						const IonStreamData *d;
+						d=((const IonStreamData *)dataIn[ui]);
+						ionID=getIonstreamIonID(d,rngF);
+
+						if(ionID == (unsigned int)-1)
+						{
+
+							//we have ungrouped ions, so work out size individually
+							for(unsigned int uj=0;uj<d->data.size();uj++)
+							{
+								ionID = rngF->getIonID(d->data[uj].getMassToCharge());
+
+								if(ionID == (unsigned int)-1)
+									continue;
+
+								if(pSourceEnabled[ionID])
+									sizeNeeded[0]++;
+								if(pTargetEnabled[ionID])
+									sizeNeeded[1]++;
+							}
+							
+							break;
+						}
+
+						if(pSourceEnabled[ionID])
+							sizeNeeded[0]+=d->data.size();
+
+						if(pTargetEnabled[ionID])
+							sizeNeeded[1]+=d->data.size();
+
+						break;
+					}
+					default:
+						break;
+				}
+			}
+
+			pSource.resize(sizeNeeded[0]);
+			pTarget.resize(sizeNeeded[1]);
+
+			//Fill arrays
+			size_t curPos[2];
+			curPos[0]=curPos[1]=0;
+
+			for(unsigned int ui=0; ui<dataIn.size() ; ui++)
+			{
+				switch(dataIn[ui]->getStreamType())
+				{
+					case STREAM_TYPE_IONS:
+					{
+						unsigned int ionID;
+						const IonStreamData *d;
+						d=((const IonStreamData *)dataIn[ui]);
+						ionID=getIonstreamIonID(d,rngF);
+
+						if(ionID==(unsigned int)(-1))
+						{
+							//we have ungrouped ions, so work out size individually
+							for(unsigned int uj=0;uj<d->data.size();uj++)
+							{
+								ionID = rngF->getIonID(d->data[uj].getMassToCharge());
+
+								if(ionID == (unsigned int)-1)
+									continue;
+
+								if(pSourceEnabled[ionID])
+								{
+									assignIonData(pSource[curPos[0]],d->data[uj]);
+									curPos[0]++;
+								}
+
+								if(pTargetEnabled[ionID])
+								{
+									assignIonData(pTarget[curPos[1]],d->data[uj]);
+									curPos[1]++;
+								}
+							}
+							
+							break;
+						}
+
+						unsigned int dummyProgress=0;
+						if(pSourceEnabled[ionID])
+						{
+							if(extendDataVector(pSource,d->data,
+									     dummyProgress,curPos[0]))
+								return FILTER_ERR_ABORT;
+
+							curPos[0]+=d->data.size();
+						}
+
+						if(pTargetEnabled[ionID])
+						{
+							if(extendDataVector(pTarget,d->data,
+									     dummyProgress,curPos[1]))
+								return FILTER_ERR_ABORT;
+
+							curPos[1]+=d->data.size();
+						}
+
+						break;
+					}
+					default:
+						break;
+				}
+			}
+
+
+			return 0;
+		}
+	
+		//TODO: Replace with a non brute-force option
+		//try to find the ID of a given ionstream by matching to a specific rangefile	
+		static unsigned int getIonstreamIonID(const IonStreamData *d, const RangeFile *r)
+		{
+			if(d->data.empty())
+				return (unsigned int)-1;
+
+			unsigned int tentativeRange;
+
+			tentativeRange=r->getIonID(d->data[0].getMassToCharge());
+
+
+			//TODO: Currently, we have no choice but to brute force it.
+			//In the future, it might be worth storing some data inside the IonStreamData itself
+			//and to use that first, rather than try to brute force the result
+#ifdef _OPENMP
+			bool spin=false;
+			#pragma omp parallel for shared(spin)
+			for(size_t ui=1;ui<d->data.size();ui++)
+			{
+				if(spin)
+					continue;
+				if(r->getIonID(d->data[ui].getMassToCharge()) !=tentativeRange)
+					spin=true;
+			}
+
+			//Not a range
+			if(spin)
+				return (unsigned int)-1;
+
+#else
+			for(size_t ui=1;ui<d->data.size();ui++)
+			{
+				if(r->getIonID(d->data[ui].getMassToCharge()) !=tentativeRange)
+					return (unsigned int)-1;
+			}
+#endif
+
+			return tentativeRange;	
+		}
 	
 	public:	
 		Filter() ;
@@ -676,7 +944,10 @@ class Filter
 
 		//Can we be a useful filter, even if given no input specified by the Use mask?
 		virtual bool isUsefulAsAppend() const { return false;}
-	
+
+		//Obtain all of the streams in the input vector that
+		// have type stream type that matches the typename, T.
+		// call as a template function ...::getStreamsOfType<STREAM_TYPE>(...)
 		template<typename T>	
 		static void getStreamsOfType(const std::vector<const FilterStreamData *> &vec, std::vector<const T *> &dataOut);
 
diff --git a/src/backend/filters/algorithms/binomial.cpp b/src/backend/filters/algorithms/binomial.cpp
index f869c04..8c4a9a3 100644
--- a/src/backend/filters/algorithms/binomial.cpp
+++ b/src/backend/filters/algorithms/binomial.cpp
@@ -74,23 +74,13 @@ int countBinnedIons(const std::vector<IonHit> &ions, const RangeFile *rng,
 	}
 
 	//Filter ions by ranging
-	for(size_t ui=0;ui<ions.size();ui++)
-	{
-		unsigned int ionID;
-		ionID = rng->getIonID(ions[ui].getMassToCharge());
-		
-		//Skip unranged ions
-		if(ionID == (unsigned int)-1)
-			continue;
-
-		filteredIons.push_back(ions[ui]);
-	}
+	rng->range(ions,filteredIons);
 	
 	//Obtain the bounding box for the filtered ions
 	BoundCube totalBound;
 	IonHit::getBoundCube(filteredIons,totalBound);
 
-	// Sort the ions according to their Z value
+	// Sort the ions according to their extrusion-direction value
 	//--
 	unsigned int extrusionAxis=segmentOptions.extrusionDirection;
 	IonAxisCompare axisCmp(extrusionAxis);
@@ -100,10 +90,10 @@ int countBinnedIons(const std::vector<IonHit> &ions, const RangeFile *rng,
 
 	//--
 
+	//out-of-extrusion direction axes
 	unsigned int direction[2];
 	float binLen[2];
 	unsigned int nBins[2];
-
 	direction[0]=(extrusionAxis+1)%3;
 	direction[1]=(extrusionAxis+2)%3;
 
@@ -130,7 +120,7 @@ int countBinnedIons(const std::vector<IonHit> &ions, const RangeFile *rng,
 				float s;
 				s= totalBound.getSize(direction[ui]);
 				nBins[ui] = s/targetL+1;
-				binLen[ui] = s/nBins[ui]+1;
+				binLen[ui] = s/nBins[ui];
 			}
 
 			break;
@@ -185,23 +175,35 @@ int countBinnedIons(const std::vector<IonHit> &ions, const RangeFile *rng,
 		xPos =ionOffset[direction[0]]/binLen[0];
 		yPos = ionOffset[direction[1]]/binLen[1];
 
+		//numerical issue where ions appear on the side of a
+		// bin - snap them into this bin 
+		if(xPos == nBins[0])
+			xPos--;
+		if(yPos == nBins[1])
+			yPos--;
 		
 		//Find the bin that this new ion is in,
 		// and its range value
-		unsigned int binIdx,selectionId,range;
+		unsigned int binIdx,selectionId,ionId;
 		binIdx = rowMajorOffset(xPos,yPos,nBins[1]);
 		
-		//get range
-		range=rng->getIonID(filteredIons[ui].getMassToCharge());
-		ASSERT(range!=(unsigned int)-1);
+		//get ion ID
+		ionId=rng->getIonID(filteredIons[ui].getMassToCharge());
+		ASSERT(ionId!=(unsigned int)-1);
 
-		//convert range ID to selection ID
+		//convert ion ID to selection ID
 		//TODO: It might be faster not use the map, but rather
 		// to use a fixed (but oversized) array to do the idx remapping.
 		// the mem cost is pretty negligible for any sensible use case
-		ASSERT(selectionMapping.find(range) != selectionMapping.end());
-		selectionId= selectionMapping.find(range)->second;
+		if(selectionMapping.find(ionId) == selectionMapping.end())
+		{
+			//Ion was not in inintial selection, may have
+			// been disabled by upstream range
+			continue;
+		}
+		selectionId= selectionMapping.find(ionId)->second;
 
+		ASSERT(binIdx < nGrids);
 		//Increment the nIons for the given bin
 		gridEntries[binIdx].nIons[selectionId]++;
 		gridEntries[binIdx].totalIons++;
@@ -222,7 +224,7 @@ int countBinnedIons(const std::vector<IonHit> &ions, const RangeFile *rng,
 			// TODO: Should we initialise zStart to this ion,
 			//   or should we snap it to the next ion we encounter?
 			gridEntries[binIdx].startPt[extrusionAxis] =filteredIons[ui].getPos()[extrusionAxis];
-			gridEntries[binIdx].endPt[extrusionAxis]=filteredIons[ui].getPos()[extrusionAxis];
+			gridEntries[binIdx].endPt[extrusionAxis]=filteredIons[ui].getPos()[extrusionAxis]-lowBound[extrusionAxis];
 
 			//Set the box x-y (where extrusion=z)  coordinates.
 			setGridABCoords(binIdx,direction,nBins,
@@ -330,11 +332,11 @@ void genBinomialHistogram(const vector<GRID_ENTRY> &completedGridEntries,
 
 }
 
-
-void computeBinomialStats(const vector<GRID_ENTRY> &gridEntries, const BINOMIAL_HIST &binHist,
+void computeBinomialStats(const vector<GRID_ENTRY> &gridEntries, BINOMIAL_HIST &binHist,
 				unsigned int nSelected, BINOMIAL_STATS &stats)
 {
 	stats.nBlocks=gridEntries.size();	
+	//FIXME: Hack
 	stats.nIons=gridEntries[0].totalIons;
 
 	//Compute mean
@@ -359,6 +361,11 @@ void computeBinomialStats(const vector<GRID_ENTRY> &gridEntries, const BINOMIAL_
 	nChiCounted.resize(nSelected,0);
 	stats.chiSquare.resize(nSelected,0);
 
+	//make space to store the theoretical frequencies for each 
+	// bin subtype
+	binHist.theoreticFrequencies.resize(nSelected);
+
+	//Loop over each ion type, and generate the statistics for it
 	CompareMagFloating<double> cmpMag;
 	for(size_t ui=0;ui<nSelected; ui++)
 	{
@@ -366,8 +373,6 @@ void computeBinomialStats(const vector<GRID_ENTRY> &gridEntries, const BINOMIAL_
 		// of the current species.
 		double p;
 		p = stats.mean[ui]/(double)stats.nIons;
-		unsigned int nTotal;
-		nTotal= gridEntries[ui].totalIons;
 
 		//There is a numerical stability concern here, as we will add small
 		// and large numbers repeatedly. This can cause "drift" when summing. To limit it,
@@ -389,15 +394,17 @@ void computeBinomialStats(const vector<GRID_ENTRY> &gridEntries, const BINOMIAL_
 			unsigned int nTimesObs;
 			nTimesObs=it->second;
 
-			//Don't count bins with a low count, as per Moody et al, we set this to 5.
-			// This can skew the chi-square statistic
-			if(nTimesObs <BINOMIAL_LOWCOUNT_SKEW_THRESHOLD)
-				continue;
 
 
 			//Number of times we should have observed blocks with
 			// current count (it->first) of ion
-			binThrObs=gsl_ran_binomial_pdf (it->first,p,nTotal)*stats.nBlocks;
+			binThrObs=gsl_ran_binomial_pdf (it->first,p,stats.nIons)*stats.nBlocks;
+			binHist.theoreticFrequencies[ui][it->first] = binThrObs;
+
+			//Don't count bins with a low count, as per Moody et al, we set this to 5.
+			// This can skew the chi-square statistic
+			if(nTimesObs <BINOMIAL_LOWCOUNT_SKEW_THRESHOLD)
+				continue;
 
 			if(!binThrObs)
 				continue;
@@ -413,8 +420,37 @@ void computeBinomialStats(const vector<GRID_ENTRY> &gridEntries, const BINOMIAL_
 		stats.chiSquare[ui]=std::accumulate(sortedNumbers.begin(),
 					sortedNumbers.end(),0.0);
 	}
+
+	//Normalise the theoretical frequency
+	binHist.theoreticNormalisedFrequencies.resize(nSelected);
+	for(unsigned int ui=0;ui<nSelected;ui++)
+	{
+		{
+
+		map<unsigned int,double> &mSrc=binHist.theoreticFrequencies[ui];
+		map<unsigned int,double> &mDest=binHist.theoreticNormalisedFrequencies[ui];
+		double sum;
+		sum=0;
+		for(map<unsigned int, double>::const_iterator it=mSrc.begin();
+				it!=mSrc.end();++it)
+			sum+=it->second;
+
+		for(map<unsigned int, double>::const_iterator it=mSrc.begin();
+				it!=mSrc.end();++it)
+		{
+			mDest[it->first] = it->second/sum;
+		}
+
+
+
+		}
+	}
+
 	//--
 
+
+
+
 	//Compute the normalised comparison coefficient, "mu"
 	// Moody et al, Microscopy Research and Techniques. 2008
 	//--- 
@@ -696,13 +732,13 @@ bool testBinomialBinning()
 	col.red=1.0f;
 	col.green=col.blue=0.0f;
 	rng.addIon("A","A",col);
+	rng.addRange(0.5,1.5,rng.getIonID("A"));
 	
 	col.red=0.0f;
 	col.blue=1.0f;
 
 	rng.addIon("B","B",col);
-	rng.addRange(0.5,1.5,rng.getIonID("B"));
-	rng.addRange(1.5,2.5,rng.getIonID("B"));
+	rng.addRange(1.51,2.5,rng.getIonID("B"));
 
 	vector<IonHit> ions;
 	ions.resize(100);
@@ -739,8 +775,10 @@ bool testBinomialBinning()
 	TEST(!countBinnedIons(ions,&rng,selectedIons,segOpt,g),
 				"binomial binning (auto brick mode)");
 
+	//Check that we counted at least 30% of the ions
+	TEST(g.size() > ions.size()/segOpt.nIons*0.3,"Full bricks only");
 	//Check that the number of grids is less than the number of ions
-	TEST(g.size() < ions.size()/segOpt.nIons,"Full bricks only");
+	TEST(g.size() <=ions.size()/segOpt.nIons,"Full bricks only");
 
 	size_t total=0;
 	for(size_t ui=0;ui<g.size(); ui++)
@@ -748,6 +786,8 @@ bool testBinomialBinning()
 		//Check grid extrusion is positive
 		TEST(g[ui].startPt[2] < g[ui].endPt[2], "grid extrusion direction");
 		TEST(g[ui].totalIons == segOpt.nIons, "grid ion reported count");
+
+		//Count each type of ion
 		size_t kIons;
 		kIons=0;
 		for(size_t uj=0;uj<g[ui].nIons.size();uj++)
diff --git a/src/backend/filters/algorithms/binomial.h b/src/backend/filters/algorithms/binomial.h
index c69c212..ecdf5fc 100644
--- a/src/backend/filters/algorithms/binomial.h
+++ b/src/backend/filters/algorithms/binomial.h
@@ -97,16 +97,18 @@ int countBinnedIons(const std::vector<IonHit> &ions, const RangeFile *rng,
 			std::vector<GRID_ENTRY> &completedGridEntries);
 
 //Generate a vector of ion frequencies in histogram of segment counts, 
+// nSelected is the number of ions selected for binomial analysis,
+// as given to countBinnedIons
 void genBinomialHistogram(const std::vector<GRID_ENTRY> &completedGridEntries,
 				unsigned int nSelected, BINOMIAL_HIST &binHist);
 
 //convert grid frequencies to compositions
-
 void binomialConvert(const std::vector<std::map<unsigned int,unsigned int> > &ionFrequencies,float binWidth, 
 				std::vector<std::vector<float> > &ionConcentrations); 
 
 
-void computeBinomialStats(const std::vector<GRID_ENTRY> &gridEntries,const BINOMIAL_HIST &binHist,
+//Compute the statistics in BINOMIAL_STATS , and binHist.theoreticFrequencies.
+void computeBinomialStats(const std::vector<GRID_ENTRY> &gridEntries,BINOMIAL_HIST &binHist,
 		unsigned int nSelected, BINOMIAL_STATS &binStats);
 
 #ifdef DEBUG
diff --git a/src/backend/filters/algorithms/rdf.cpp b/src/backend/filters/algorithms/spatial.cpp
similarity index 80%
rename from src/backend/filters/algorithms/rdf.cpp
rename to src/backend/filters/algorithms/spatial.cpp
index 453b21f..cc7d07b 100644
--- a/src/backend/filters/algorithms/rdf.cpp
+++ b/src/backend/filters/algorithms/spatial.cpp
@@ -1,5 +1,5 @@
  /* 
- * rdf.cpp - Radial distribution function implentation
+ * spatial.cpp - Radial distribution function implentation
  * Copyright (C) 2015  D Haley
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "rdf.h"
+#include "spatial.h"
 
 #include "../filterCommon.h"
 
@@ -400,6 +400,12 @@ unsigned int generateNNHist( const vector<Point3D> &pointList,
 	size_t numAnalysed=0;
 	bool spin=false;
 #endif
+
+	//We need to do two passes. 
+	// One, where we update the maximum distance
+	//   to allow for correct sizing of the histogram and
+	// Two, where we fill out the histogram
+
 	//do NN search
 #pragma omp parallel for shared(spin,numAnalysed) firstprivate(callbackReduce)
 	for(unsigned int ui=0; ui<pointList.size(); ui++)
@@ -470,7 +476,7 @@ unsigned int generateNNHist( const vector<Point3D> &pointList,
 	maxOfMaxDists=sqrtf(maxOfMaxDists);
 	maxDist[nnMax-1] = maxOfMaxDists;	
 
-	//Cacluate the bin widths required to accommodate this
+	//Calculate the bin widths required to accommodate this
 	//distribution
 	for(unsigned int ui=0; ui<nnMax; ui++)
 		binWidth[ui]= maxDist[ui]/(float)numBins;
@@ -558,12 +564,14 @@ unsigned int generateNNHist( const vector<Point3D> &pointList,
 }
 
 
-unsigned int generate1DAxialDistHist(const vector<Point3D> &pointList, const K3DTree &tree,
+unsigned int generate1DAxialDistHist(const vector<Point3D> &pointList, const K3DTreeMk2 &tree,
 		const Point3D &axisDir, unsigned int *histogram, float distMax, unsigned int numBins,
 		unsigned int *progressPtr, ATOMIC_BOOL &wantAbort)
 {
-	ASSERT(fabs(axisDir.sqrMag() -1.0f) < sqrt(std::numeric_limits<float>::epsilon()));
+	//Check that the axis is normalised
+	ASSERT(EQ_TOL(axisDir.sqrMag(),1.0f));
 #ifdef DEBUG
+	//Ensure that histogram is initially zeroed
 	for(unsigned int ui=0;ui<numBins;ui++)
 	{
 		ASSERT(!histogram[ui]);
@@ -573,15 +581,7 @@ unsigned int generate1DAxialDistHist(const vector<Point3D> &pointList, const K3D
 	if(pointList.empty())
 		return 0;
 
-	BoundCube cube;
-	cube.setBounds(pointList);
-	//We don't know how much ram we will need
-	//one could estimate an upper bound by 
-	//tree.numverticies*pointlist.size()
-	//but I don't have  a tree.numvertices
-	float maxSqrDist = distMax*distMax;
 
-	unsigned int warnBiasCount=0;
 #ifdef _OPENMP
 	bool spin=false;
 #endif
@@ -597,63 +597,35 @@ unsigned int generate1DAxialDistHist(const vector<Point3D> &pointList, const K3D
 		if(spin)
 			continue;
 #endif
-		float sqrDist,deadDistSqr;
-		Point3D sourcePoint;
-		const Point3D *nearPt=0;
-		//Go through each point and grab up to the maximum distance
-		//that we need
-		
-		//Loop from this ion, up to its max	
-		//disable exact matching, by requiring d^2 > epsilon
-		deadDistSqr=std::numeric_limits<float>::epsilon();
-		sqrDist=0;
-		sourcePoint=pointList[ui];
-		while(deadDistSqr < maxSqrDist)
-		{
 
-			//Grab the nearest point
-			nearPt = tree.findNearest(sourcePoint, cube,
-							 deadDistSqr);
+		//Go through each point and grab all neighbours within distMax
+		// - this does not alter the tree itself
+		vector<size_t> nnPts;
+		tree.ptsInSphere(pointList[ui],distMax,nnPts);
 
-			if(nearPt)
+		for(unsigned int uj=0;uj<nnPts.size();uj++)
+		{
+			Point3D deltaVec;
+			deltaVec=tree.getPtRef(nnPts[uj])-pointList[ui];
+			//Disallow self (or overlapped) matching
+			if(deltaVec.sqrMag() < std::numeric_limits<float>::epsilon())
+				continue;
+			//Compute the projection of the point onto the axis of the
+			// primary analysis direction
+			float distance;
+			distance=deltaVec.dotProd(axisDir);
+		
+			//update the histogram with the new position.
+			// centre of the distribution function lies at the analysis point,
+			// and can be either negative or positive. 
+			// Shift the zero to the center of the histogram
+			int offset=(int)(((0.5f*distance)/distMax+0.5f)*(float)numBins);
+			if(offset < (int)numBins && offset >=0)
 			{
-				//Cacluate the sq of the distance to the point
-				sqrDist = nearPt->sqrDist(sourcePoint);
-				
-				//if sqrDist is = maxSqrdist then this will cause
-				//the histogram indexing to trash alternate memory
-				//- this is bad - prevent this please.	
-				if(sqrDist < maxSqrDist)
-				{
-					//Compute the projection of
-					// the point onto the axis of the
-					// primary analysis direction
-					float distance;
-					distance=(*nearPt-sourcePoint).dotProd(axisDir);
-				
-					//update the histogram with the new position.
-					// centre of the distribution function lies at the analysis point,
-					// and can be either negative or positive. 
-					// Shift the zero to the center of the histogram
-					int offset=(int)(((0.5f*distance)/distMax+0.5f)*(float)numBins);
-					if(offset < (int)numBins && offset >=0)
-					{
-#pragma omp critical
-						histogram[offset]++;
-					}
-				}
-
-				//increase the dead distance to the last distance
-				deadDistSqr = sqrDist+std::numeric_limits<float>::epsilon();
-			}
-			else
-			{		
-				//Oh no, we had a problem, somehow we couldn't find enough
 #pragma omp critical
-				warnBiasCount++;
-				break;
+				histogram[offset]++;
 			}
-			
+
 		}
 		
 		
@@ -686,7 +658,7 @@ unsigned int generate1DAxialDistHist(const vector<Point3D> &pointList, const K3D
 }
 
 
-unsigned int generate1DAxialNNHist(const vector<Point3D> &pointList, const K3DTree &tree,
+unsigned int generate1DAxialNNHist(const vector<Point3D> &pointList, const K3DTreeMk2 &tree,
 		const Point3D &axisDir, unsigned int *histogram, float &binWidth, unsigned int nnMax, unsigned int numBins,
 		unsigned int *progressPtr, ATOMIC_BOOL &wantAbort)
 {
@@ -697,21 +669,18 @@ unsigned int generate1DAxialNNHist(const vector<Point3D> &pointList, const K3DTr
 	}
 #endif
 
+	//axis needs to be normalised, or calculation is out
+	ASSERT(EQ_TOL(axisDir.sqrMag(),1.0f));
+
 	if(pointList.size() <=nnMax)
 		return RDF_ERR_INSUFFICIENT_INPUT_POINTS;
 	
-	//Disallow exact matching for NNs
-	float deadDistSqr;
-	deadDistSqr= std::numeric_limits<float>::epsilon();
-	
-	//calclate NNs
+	//calculate NNs
 	BoundCube cube;
 	cube.setBounds(pointList);
 
-	//Allocate and assign the initial max distances
-	float *maxAxialDist= new float[nnMax];
-	for(unsigned int ui=0; ui<nnMax; ui++)
-		maxAxialDist[ui] =0.0f; 
+	//Allocate and assign the initial max distance
+	float maxAxialDist=0.0f;
 	
 
 	int callbackReduce=CALLBACK_REDUCE;
@@ -729,17 +698,34 @@ unsigned int generate1DAxialNNHist(const vector<Point3D> &pointList, const K3DTr
 		if(spin)
 			continue;
 #endif
-		vector<const Point3D *> nnPoints;	
-		tree.findKNearest(pointList[ui],cube,
-					nnMax,nnPoints,deadDistSqr);
 
-		for(unsigned int uj=0; uj<nnPoints.size(); uj++)
-		{
+		//Loop through this point's nns
+		set<size_t> nnPoints;
+		size_t nnGood;
+		nnGood=0;
+		while(nnGood < nnMax)
+		{	
+			size_t nn;
+			nn=tree.findNearestWithSkip(pointList[ui],cube,nnPoints);
+
+			if(nn == (size_t)-1)
+				continue;
+			
+			//remember this point so we don't re-match it
+			nnPoints.insert(nn);
+
 			//compute upper bound for plot output distance
 			float temp;
-			temp=fabs((*nnPoints[uj]-pointList[ui]).dotProd(axisDir));
-			if(temp > maxAxialDist[uj])
-				maxAxialDist[uj] = temp;
+			temp=fabs((tree.getPtRef(nn)-pointList[ui]).dotProd(axisDir));
+
+			if(temp < std::numeric_limits<float>::epsilon())
+				continue;
+			
+			//update max distance
+			maxAxialDist=std::max(maxAxialDist,temp);
+
+
+			nnGood++;
 		}
 			
 
@@ -757,10 +743,7 @@ unsigned int generate1DAxialNNHist(const vector<Point3D> &pointList, const K3DTr
 #else
 			*progressPtr= (unsigned int)((float)(ui)/((float)pointList.size())*100.0f);
 			if(wantAbort)
-			{
-				delete[] maxAxialDist;
 				return RDF_ABORT_FAIL;
-			}
 #endif
 			callbackReduce=CALLBACK_REDUCE;
 		}
@@ -768,32 +751,21 @@ unsigned int generate1DAxialNNHist(const vector<Point3D> &pointList, const K3DTr
 	}
 #ifdef _OPENMP
 	if(spin)
-	{
-		delete[] maxAxialDist;
 		return RDF_ABORT_FAIL;
-	}
 #endif
 
 
-	float maxOfMaxDists=0;
-	for(unsigned int ui=0; ui<nnMax; ui++)
-	{
-		if(maxOfMaxDists < maxAxialDist[ui])
-			maxOfMaxDists = maxAxialDist[ui];
-	}	
-
-	maxOfMaxDists=sqrtf(maxOfMaxDists);
 
-	//Cacluate the bin widths required to accommodate this
+	//Calculate the bin widths required to accommodate this
 	//distribution
 	for(unsigned int ui=0; ui<nnMax; ui++)
-		binWidth= maxOfMaxDists/(float)numBins;
+		binWidth= maxAxialDist/(float)numBins;
 	//------
 	
 
 	//we know the bin that things will fall into now, so we can scan 
 	//points for their distance values
-	// and place into the histogram now 
+	// and place into the histogram 
 	//----------------------	
 #ifdef _OPENMP
 	spin=false;
@@ -804,64 +776,80 @@ unsigned int generate1DAxialNNHist(const vector<Point3D> &pointList, const K3DTr
 #pragma omp parallel for firstprivate(callbackReduce)
 	for(unsigned int ui=0; ui<pointList.size(); ui++)
 	{
-		vector<const Point3D *> nnPoints;
 #ifdef _OPENMP
 		if(spin)
 			continue;
 #endif
 
-		tree.findKNearest(pointList[ui],cube,
-					nnMax, nnPoints);
+		
 
-		for(unsigned int uj=0; uj<nnPoints.size(); uj++)
+		set<size_t> nns;
+		size_t nnGood;
+		nnGood=0;
+		while(nnGood < nnMax)
 		{
+		
+			size_t nn;
+			nn = tree.findNearestWithSkip(pointList[ui],cube,nns);
+			if(nn == (size_t)-1)
+				continue;
+			
+			//remember point so we don't re-match	
+			nns.insert(nn);
+
+			Point3D deltaVec;
+			deltaVec=tree.getPtRef(nn)-pointList[ui];
+
+			//Disallow self (or overlapped) matching
+			if(deltaVec.sqrMag() < std::numeric_limits<float>::epsilon())
+				continue;
+
+			//Find the axial distance
 			float temp;
-			temp=(*nnPoints[uj]-pointList[ui]).dotProd(axisDir);
-			int offset=(int)(((0.5f*temp)/maxOfMaxDists+0.5f)*numBins);
+			temp=deltaVec.dotProd(axisDir);
+			//Convert to position in array
+			int offset=(int)(((0.5f*temp)/maxAxialDist+0.5f)*numBins);
 
 			if(offset < numBins && offset >=0)	
 			{
 				//TODO: OpenMP could use multiple histograms
 				// rather than locking
+				//update histogram
 #pragma omp critical 
 				histogram[offset]++;
 			}
+
+			nnGood++;	
 		}
 	
 
 		//Callbacks to check for abort as needed
-#ifdef _OPENMP 
 		if(!(callbackReduce--))
 		{
-		#pragma omp critical
-		{
+#ifdef _OPENMP 
+			#pragma omp critical
+			{
 			*progressPtr= (unsigned int)((float)(numAnalysed)/((float)pointList.size())*100.0f);
 			if(wantAbort)
 				spin=true;
 			numAnalysed+=CALLBACK_REDUCE;
-		}			
-			callbackReduce=CALLBACK_REDUCE;
-		}	
+			}			
 #else
-		if(!(callbackReduce--))
-		{
 			*progressPtr= (unsigned int)((float)(ui)/((float)pointList.size())*100.0f);
 			if(wantAbort)
-			{
-				delete[] maxAxialDist;
 				return RDF_ABORT_FAIL;
-			}
+#endif
 			callbackReduce=CALLBACK_REDUCE;
 		}
-#endif
 	}
-	delete[] maxAxialDist;	
 
 #ifdef _OPENMP
 	if(spin)
 		return RDF_ABORT_FAIL;
 #endif
 
+	*progressPtr=100;
+
 	return 0;
 }
 
@@ -1003,6 +991,8 @@ unsigned int generateDistHist(const vector<Point3D> &pointList, const K3DTree &t
 #endif
 
 	//Calculations complete!
+	*progressPtr=100;
+
 	return 0;
 }
 
@@ -1044,6 +1034,132 @@ void generateKnnTheoreticalDist(const std::vector<float> &radii, float density,
 
 }
 
+unsigned int generate1DAxialDistHistSweep(const std::vector<Point3D> &pointList, K3DTreeMk2 &tree,
+	float distMax, float dTheta, float dPhi, unsigned int &prog,
+	std::vector<std::vector<std::vector<unsigned int> > > &histogram)
+{
+	ASSERT(!histogram.empty());
+	ASSERT(dTheta > 0.0f);
+	ASSERT(dPhi > 0.0f);
+
+	//zero out histogram
+	for(size_t ui=0;ui<histogram.size(); ui++)
+	{
+		for(size_t uj=0;uj<histogram[ui].size();uj++)
+		{
+			std::fill(histogram[ui][uj].begin(),histogram[ui][uj].end(),0);
+		}
+	}
+
+	if(pointList.empty())
+		return 0;
+
+	BoundCube cube;
+	cube.setBounds(pointList);
+
+	float maxSqrDist = distMax*distMax;
+
+	const size_t NUM_THETA=histogram.size();
+	const size_t NUM_PHI=histogram[0].size();
+	const size_t DIST_BINS=histogram[0][0].size();
+
+
+
+	Point3D **axisDir= new Point3D*[NUM_THETA];
+	for(size_t ui=0;ui<NUM_THETA;ui++)
+		axisDir[ui] = new Point3D[NUM_PHI];
+	//Construct a ball of unit vectors, facing outwards
+	for(size_t ui=0; ui<NUM_THETA; ui++)
+	{
+		for(size_t uj=0; uj<NUM_PHI; uj++)
+		{
+			float tmpPhi,tmpTheta;
+			tmpTheta= dTheta*ui;
+			tmpPhi = dPhi*uj;
+			ASSERT(tmpTheta>=0.0f && tmpTheta<=1.05f*M_PI);
+			ASSERT(tmpPhi>=0&& tmpPhi<=2.1f*M_PI);
+			axisDir[ui][uj].setISOSpherical(tmpTheta,tmpPhi,1.0f);
+
+		}
+	}
+
+	
+	//Main r-max searching routine
+
+//construct worker threads
+	for(unsigned int uSrcPt=0; uSrcPt<pointList.size(); uSrcPt++)
+	{
+		Point3D sourcePoint;
+		//Go through each point and grab up to the maximum distance
+		//that we need
+
+		vector<size_t> inSphereIdx;
+
+		sourcePoint=pointList[uSrcPt];
+
+		//Grab the nearest point. Will tag on completion
+		tree.ptsInSphere(sourcePoint, distMax, inSphereIdx);
+
+
+
+		//Loop through the points within the search radius and
+		// update the tag radius
+		#pragma omp parallel
+		for(size_t uPt=0; uPt<inSphereIdx.size(); uPt++)
+		{
+			float sqrDist;
+			ASSERT(inSphereIdx[uPt] < tree.size());
+			const Point3D &nearPt=tree.getPtRef(inSphereIdx[uPt]);
+
+			//Calculate the sq of the distance to the point
+			sqrDist = nearPt.sqrDist(sourcePoint);
+
+			if(sqrDist == 0.0f)
+				continue;
+
+			//if sqrDist is = maxSqrdist then this will cause
+			//the histogram indexing to trash alternate memory
+			//- this is bad - prevent this please.
+			if(sqrDist < maxSqrDist)
+			{
+				Point3D deltaPt;
+				deltaPt=nearPt-sourcePoint;
+				//Compute the SDM fit for all angular space
+				#pragma omp for
+				for(size_t ui=0; ui<NUM_THETA; ui++)
+				{
+					for(size_t uj=0; uj<NUM_PHI; uj++)
+					{
+
+						//Compute the projection of
+						// the point onto the axis of the
+						// primary analysis direction
+						float distance;
+						distance=deltaPt.dotProd(axisDir[ui][uj]);
+						int offset;
+
+						offset=(int)(((0.5f*distance)/distMax+0.5f)*(float)DIST_BINS);
+						if(offset >=0 && offset < (int)DIST_BINS)
+							histogram[ui][uj][offset]++;
+					}
+				}
+			}
+		}
+		prog = ((float)uSrcPt/(float)pointList.size()*100.0f);
+	}
+
+
+
+
+
+	for(size_t ui=0;ui<NUM_THETA;ui++)
+		delete[] axisDir[ui]; 
+
+	delete[] axisDir;
+	return 0;
+}
+
+
 bool qhullTest()
 {
 #if defined(__WIN64)
@@ -1056,4 +1172,3 @@ bool qhullTest()
 	return true;
 }
 
-
diff --git a/src/backend/filters/algorithms/rdf.h b/src/backend/filters/algorithms/spatial.h
similarity index 86%
rename from src/backend/filters/algorithms/rdf.h
rename to src/backend/filters/algorithms/spatial.h
index 2b2f411..0ea0ed5 100644
--- a/src/backend/filters/algorithms/rdf.h
+++ b/src/backend/filters/algorithms/spatial.h
@@ -1,5 +1,5 @@
 /* 
- * rdf.h - Radial distribution function implementation header
+ * spatial.h - Radial distribution function implementation header
  * Copyright (C) 2015  D. Haley
  * 
  * This program is free software: you can redistribute it and/or modify
@@ -16,10 +16,11 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef RDF_H
-#define RDF_H
+#ifndef SPATIAL_H 
+#define SPATIAL_H
 
 #include "K3DTree.h"
+#include "K3DTree-mk2.h"
 
 
 //RDF error codes
@@ -56,7 +57,7 @@ unsigned int GetReducedHullPts(const std::vector<Point3D> &pts, float reductionD
 //Return a 1D histogram of NN frequencies, by projecting the NNs within a given search onto a specified axis, stopping at some fixed sstance
 // radius onto a specified vector prior to histogram summation. 
 //	- axisDir  must be normalised.
-unsigned int generate1DAxialDistHist(const std::vector<Point3D> &pointList, const K3DTree &tree,
+unsigned int generate1DAxialDistHist(const std::vector<Point3D> &pointList, const K3DTreeMk2 &tree,
 		const Point3D &axisDir, unsigned int *histogram, float distMax, unsigned int numBins,
 		unsigned int *progressPtr, ATOMIC_BOOL &wantAbort);
 
@@ -65,7 +66,7 @@ unsigned int generate1DAxialDistHist(const std::vector<Point3D> &pointList, cons
 // Inputs are the axis to project onto, a prezeroed 1D histogram array (size numBIns),
 //  and the input data points (search src) and tree (search target)
 // Outputs are the histogram values , and the bin width for the histogram
-unsigned int generate1DAxialNNHist(const std::vector<Point3D> &pointList, const K3DTree &tree,
+unsigned int generate1DAxialNNHist(const std::vector<Point3D> &pointList, const K3DTreeMk2 &tree,
 			const Point3D &axisDir, unsigned int *histogram, 
 			float &binWidth, unsigned int nnMax, unsigned int numBins,
 			unsigned int *progressPtr, ATOMIC_BOOL &wantAbort);
@@ -76,4 +77,9 @@ unsigned int generate1DAxialNNHist(const std::vector<Point3D> &pointList, const
 // nnDist will store the answer.  It is required that both density >=0 and nn >0.
 void generateKnnTheoreticalDist(const std::vector<float> &radii, float density, unsigned int nn,
 					std::vector<float> &nnDist);
+
+//Generate a series of 1D distribution functions, using a stepped spherical coordinates in equal delta-Theta, delta-Phi increments
+unsigned int generate1DAxialDistHistSweep(const std::vector<Point3D> &pointList, K3DTreeMk2 &tree,
+	float distMax, float dTheta, float dPhi, unsigned int &prog,
+	std::vector<std::vector<std::vector<unsigned int> > > &histogram);
 #endif
diff --git a/src/backend/filters/annotation.cpp b/src/backend/filters/annotation.cpp
index c7efaf4..bd87e4f 100644
--- a/src/backend/filters/annotation.cpp
+++ b/src/backend/filters/annotation.cpp
@@ -167,8 +167,15 @@ unsigned int AnnotateFilter::refresh(const std::vector<const FilterStreamData *>
 
 	//If we are not enabled, do not draw anything into the output
 	if(!active)
+	{
+		progress.filterProgress=100;
 		return 0;
+	}
 
+	progress.step=1;
+	progress.maxStep=1;
+	progress.stepName=TRANS("Draw");
+	
 	DrawStreamData *d; 
 	d = new DrawStreamData;
 	d->parent=this;
@@ -505,6 +512,7 @@ unsigned int AnnotateFilter::refresh(const std::vector<const FilterStreamData *>
 	d->cached=0;
 	getOut.push_back(d);
 
+	progress.filterProgress=100;
 	return 0;
 }
 
diff --git a/src/backend/filters/boundingBox.cpp b/src/backend/filters/boundingBox.cpp
index d42cdd7..ed2a7a2 100644
--- a/src/backend/filters/boundingBox.cpp
+++ b/src/backend/filters/boundingBox.cpp
@@ -103,6 +103,7 @@ Filter *BoundingBoxFilter::cloneUncached() const
 	p->threeDText=threeDText;	
 
 	p->lineWidth=lineWidth;
+	p->lineColour=lineColour;
 	p->fontSize=fontSize;
 
 	//We are copying whether to cache or not,
@@ -510,7 +511,6 @@ unsigned int BoundingBoxFilter::refresh(const std::vector<const FilterStreamData
 				}
 #endif
 				bTotal.expand(bThis);
-				progress.filterProgress=100;
 				break;
 			}
 			default:
@@ -521,6 +521,7 @@ unsigned int BoundingBoxFilter::refresh(const std::vector<const FilterStreamData
 		getOut.push_back(dataIn[ui]);	
 	}
 
+	progress.filterProgress=100;
 	//Append the bounding box if it is valid
 	if(bTotal.isValid())
 	{
@@ -800,8 +801,9 @@ bool BoundingBoxFilter::setProperty(  unsigned int key,
 				return false;
 
 
-			if(lineColour.toColourRGBA() != newLineColour) 
-				needUpdate=true;
+			if(lineColour.toColourRGBA() == newLineColour) 
+				return false;
+			
 			lineColour=newLineColour.toRGBAf();
 
 			needUpdate=true;
diff --git a/src/backend/filters/clusterAnalysis.cpp b/src/backend/filters/clusterAnalysis.cpp
index 7818a3b..a30825c 100644
--- a/src/backend/filters/clusterAnalysis.cpp
+++ b/src/backend/filters/clusterAnalysis.cpp
@@ -685,7 +685,7 @@ ASSERT(!(haveBulk && !haveCore));
 		Plot2DStreamData *p = new Plot2DStreamData;
 		p->parent=this;
 
-		p->plotType=PLOT_2D_SCATTER;
+		p->plotStyle=PLOT_2D_SCATTER;
 		p->dataLabel=TRANS("Morphology Plot");
 		p->xLabel=TRANS("\\lambda_1:\\lambda_2 ratio");
 		p->yLabel=TRANS("\\lambda_2:\\lambda_3 ratio");
@@ -1145,8 +1145,7 @@ void ClusterAnalysisFilter::getProperties(FilterPropGroup &propertyList) const
 		{
 			
 			p.name=TRANS("Enable/Disable All");
-			bool allEnabled=false;
-			allEnabled=(std::find(ionBulkEnabled.begin(),ionBulkEnabled.end(),false) == ionBulkEnabled.end());
+			bool allEnabled=(std::find(ionBulkEnabled.begin(),ionBulkEnabled.end(),false) == ionBulkEnabled.end());
 			p.data=boolStrEnc(allEnabled);
 			p.type=PROPERTY_TYPE_BOOL;
 			p.helpText=TRANS("Enable/disable all ions");
diff --git a/src/backend/filters/dataLoad.cpp b/src/backend/filters/dataLoad.cpp
index 4210007..cdeb540 100644
--- a/src/backend/filters/dataLoad.cpp
+++ b/src/backend/filters/dataLoad.cpp
@@ -26,6 +26,7 @@
 
 
 #include "backend/APT/APTFileIO.h"
+#include "backend/APT/3DapReader.h"
 
 using std::string;
 using std::pair;
@@ -47,6 +48,8 @@ enum
 	FILEDATA_TYPE_POS,
 	FILEDATA_TYPE_TEXT,
 	FILEDATA_TYPE_ATO,
+	FILEDATA_TYPE_TAPSIM,
+	FILEDATA_TYPE_3DAP_OPS,
 	FILEDATA_TYPE_ENUM_END, // Not a data type, just end of enum
 };
 
@@ -66,6 +69,8 @@ const char *ENDIAN_MODE_STR[] = { NTRANS("Auto"),
 const char *AVAILABLE_FILEDATA_TYPES[] = { 	NTRANS("POS Data"),
 					NTRANS("Text Data"),
 					NTRANS("ATO Data"),
+					NTRANS("Tapsim Data"),
+					NTRANS("3Dap/Posap OPS Data"),
 					};
 const char *DEFAULT_LABEL="Mass-to-Charge (Da/e)";
 
@@ -86,6 +91,15 @@ DataLoadFilter::DataLoadFilter() : fileType(FILEDATA_TYPE_POS), doSample(true),
 		index[i] = i;
 	}
 
+	//Disable TOF distortion
+	reconParams.useTOFDistortion=0;
+	//Use a 50nm radius cylinder by default
+	reconParams.radiusCylinder=50;
+
+	//Atomic volume of Al atom, in nm^3, including packing factor
+	reconParams.ionVolume= 0.0165418128;
+	reconParams.detectionEfficiency= 0.4;
+	 
 }
 
 Filter *DataLoadFilter::cloneUncached() const
@@ -113,6 +127,7 @@ Filter *DataLoadFilter::cloneUncached() const
 	p->cacheOK=false;
 	p->enabled=enabled;
 	p->userString=userString;
+	p->reconParams=reconParams;
 
 	p->wantMonitor=wantMonitor;
 	p->numColumns=numColumns;
@@ -135,6 +150,9 @@ void DataLoadFilter::setFileMode(unsigned int fileMode)
 		case DATALOAD_LAWATAP_ATO_FILE:
 			fileType=FILEDATA_TYPE_ATO;
 			break;
+		case DATALOAD_THREEDAP_OPS_FILE:
+			fileType=FILEDATA_TYPE_3DAP_OPS;
+			break;
 		default:
 			ASSERT(false);
 	}
@@ -429,6 +447,45 @@ unsigned int DataLoadFilter::refresh(const std::vector<const FilterStreamData *>
 
 			break;
 		}
+		case FILEDATA_TYPE_TAPSIM:
+		{
+			//TODO: Load tapsim file with sampling
+			//Load the file
+			if((uiErr = loadTapsimBinFile(ionFilename.c_str(), 
+						progress.filterProgress,(*Filter::wantAbort),ionData->data)))
+
+			{
+				consoleOutput.push_back(string(TRANS("Error loading file: ")) + ionFilename);
+				delete ionData;
+				errStr=TRANS(TAPSIM_ERR_STRINGS[uiErr]);
+				return uiErr;
+			}
+				
+		
+			std::string tmpSize;
+			stream_cast(tmpSize,ionData->data.size());
+			consoleOutput.push_back(string(TRANS("Loaded dataset, " )) + tmpSize
+								 + string(TRANS(" points.")));
+
+			break;
+		}
+		case FILEDATA_TYPE_3DAP_OPS:
+		{
+			if( (uiErr = reconstruct3DapData(ionFilename.c_str(), reconParams, progress.filterProgress,(*Filter::wantAbort), ionData->data)) )
+			{
+				consoleOutput.push_back(string(TRANS("Error loading file: ")) + ionFilename);
+				delete ionData;
+				errStr=TRANS(OPS_ENUM_ERRSTRINGS[uiErr]);
+				return uiErr;
+
+			}
+			
+			std::string tmpSize;
+			stream_cast(tmpSize,ionData->data.size());
+			consoleOutput.push_back(string(TRANS("Loaded dataset, " )) + tmpSize
+								 + string(TRANS(" points.")));
+			break;
+		}
 		default:
 			ASSERT(false);
 	}
@@ -485,7 +542,7 @@ void DataLoadFilter::getProperties(FilterPropGroup &propertyList) const
 	p.helpText=TRANS("File from which to load data");
 	p.data=ionFilename;
 	//Wx- acceptable string format
-	p.dataSecondary = TRANS("Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)|*.xml;*.pos;*.txt;*.csv;*.ato|All Files|*") ;
+	p.dataSecondary = TRANS("Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)|*.xml;*.pos;*.txt;*.csv;*.ato;*.ops|All Files|*") ;
 
 	propertyList.addProperty(p,curGroup);
 
@@ -518,6 +575,44 @@ void DataLoadFilter::getProperties(FilterPropGroup &propertyList) const
 			p.key=DATALOAD_KEY_NUMBER_OF_COLUMNS;
 			p.type=PROPERTY_TYPE_INTEGER;
 			propertyList.addProperty(p,curGroup);
+			choices.clear();
+			for (unsigned int i = 0; i < numColumns; i++) {
+				string tmp;
+				stream_cast(tmp,i);
+				choices.push_back(make_pair(i,tmp));
+			}
+			
+			colStr= choiceString(choices,index[0]);
+			p.name="X";
+			p.data=colStr;
+			p.key=DATALOAD_KEY_SELECTED_COLUMN0;
+			p.type=PROPERTY_TYPE_CHOICE;
+			p.helpText=TRANS("Relative offset of each entry in file for point's X position");
+			propertyList.addProperty(p,curGroup);
+			
+			colStr= choiceString(choices,index[1]);
+			p.name="Y";
+			p.data=colStr;
+			p.key=DATALOAD_KEY_SELECTED_COLUMN1;
+			p.type=PROPERTY_TYPE_CHOICE;
+			p.helpText=TRANS("Relative offset of each entry in file for point's Y position");
+			propertyList.addProperty(p,curGroup);
+			
+			colStr= choiceString(choices,index[2]);
+			p.name="Z";
+			p.data=colStr;
+			p.key=DATALOAD_KEY_SELECTED_COLUMN2;
+			p.type=PROPERTY_TYPE_CHOICE;
+			p.helpText=TRANS("Relative offset of each entry in file for point's Z position");
+			propertyList.addProperty(p,curGroup);
+			
+			colStr= choiceString(choices,index[3]);
+			p.name=TRANS("Value");
+			p.data=colStr;
+			p.key=DATALOAD_KEY_SELECTED_COLUMN3;
+			p.type=PROPERTY_TYPE_CHOICE;
+			p.helpText=TRANS("Relative offset of each entry in file to use for scalar value of 3D point");
+			propertyList.addProperty(p,curGroup);
 			break;
 		}
 		case FILEDATA_TYPE_TEXT:
@@ -541,49 +636,43 @@ void DataLoadFilter::getProperties(FilterPropGroup &propertyList) const
 			break;
 
 		}
+		case FILEDATA_TYPE_3DAP_OPS:
+		{
+			string s;
+			stream_cast(s,reconParams.radiusCylinder);
+			p.name=TRANS("Recon. Width");
+			p.helpText=TRANS("Width of box onto which to place reconstructed detector hits (similar to tip radius)");
+			p.data=s;
+			p.key=DATALOAD_KEY_SCALERADIUS;
+			p.type=PROPERTY_TYPE_REAL;
+			
+			propertyList.addProperty(p,curGroup);
+			
+			
+			stream_cast(s,reconParams.ionVolume);
+			p.name=TRANS("Ion Volume");
+			p.helpText=TRANS("Effective volume of an ion (incl. free packing volume)");
+			p.data=s;
+			p.key=DATALOAD_KEY_IONVOLUME;
+			p.type=PROPERTY_TYPE_REAL;
+			
+			propertyList.addProperty(p,curGroup);
+			
+			stream_cast(s,reconParams.detectionEfficiency);
+			p.name=TRANS("Det. Efficiency");
+			p.helpText=TRANS("Effiency of system (ions evaporated towards detector/ions detected by detector)");
+			p.data=s;
+			p.key=DATALOAD_KEY_DETECTIONEFFICIENCY;
+			p.type=PROPERTY_TYPE_REAL;
+			
+			propertyList.addProperty(p,curGroup);
+			break;
+		}
 		default:
 			ASSERT(false);
 			
 	}
 
-	choices.clear();
-	for (unsigned int i = 0; i < numColumns; i++) {
-		string tmp;
-		stream_cast(tmp,i);
-		choices.push_back(make_pair(i,tmp));
-	}
-	
-	colStr= choiceString(choices,index[0]);
-	p.name="X";
-	p.data=colStr;
-	p.key=DATALOAD_KEY_SELECTED_COLUMN0;
-	p.type=PROPERTY_TYPE_CHOICE;
-	p.helpText=TRANS("Relative offset of each entry in file for point's X position");
-	propertyList.addProperty(p,curGroup);
-	
-	colStr= choiceString(choices,index[1]);
-	p.name="Y";
-	p.data=colStr;
-	p.key=DATALOAD_KEY_SELECTED_COLUMN1;
-	p.type=PROPERTY_TYPE_CHOICE;
-	p.helpText=TRANS("Relative offset of each entry in file for point's Y position");
-	propertyList.addProperty(p,curGroup);
-	
-	colStr= choiceString(choices,index[2]);
-	p.name="Z";
-	p.data=colStr;
-	p.key=DATALOAD_KEY_SELECTED_COLUMN2;
-	p.type=PROPERTY_TYPE_CHOICE;
-	p.helpText=TRANS("Relative offset of each entry in file for point's Z position");
-	propertyList.addProperty(p,curGroup);
-	
-	colStr= choiceString(choices,index[3]);
-	p.name=TRANS("Value");
-	p.data=colStr;
-	p.key=DATALOAD_KEY_SELECTED_COLUMN3;
-	p.type=PROPERTY_TYPE_CHOICE;
-	p.helpText=TRANS("Relative offset of each entry in file to use for scalar value of 3D point");
-	propertyList.addProperty(p,curGroup);
 	
 	p.name=TRANS("Value Label");
 	p.data=valueLabel;
@@ -610,7 +699,7 @@ void DataLoadFilter::getProperties(FilterPropGroup &propertyList) const
 		std::string tmpStr;
 
 		//FIXME: ATO Files need an implementation of sampling read
-		if(fileType!=FILEDATA_TYPE_ATO)
+		if(fileType==FILEDATA_TYPE_POS)
 		{
 			stream_cast(tmpStr,doSample);
 			p.name=TRANS("Sample data");
@@ -943,6 +1032,64 @@ bool DataLoadFilter::setProperty(  unsigned int key,
 			needUpdate=true;
 			break;
 		}
+		
+		case DATALOAD_KEY_SCALERADIUS:
+		{
+			float ltmp;
+			if(stream_cast(ltmp,value))
+				return false;
+
+			if(ltmp < 0)
+				return false;
+
+			if(ltmp == reconParams.radiusCylinder)
+				break;
+
+			reconParams.radiusCylinder=ltmp;
+
+			needUpdate=true;
+			clearCache();
+
+			break;
+		}
+		case DATALOAD_KEY_IONVOLUME:
+		{
+			float ltmp;
+			if(stream_cast(ltmp,value))
+				return false;
+
+			if(ltmp < 0)
+				return false;
+
+			if(ltmp == reconParams.ionVolume)
+				break;
+
+			reconParams.ionVolume=ltmp;
+
+			needUpdate=true;
+			clearCache();
+
+			break;
+		}
+		case DATALOAD_KEY_DETECTIONEFFICIENCY:
+		{
+			float ltmp;
+			if(stream_cast(ltmp,value))
+				return false;
+
+			if(ltmp < 0)
+				return false;
+
+			if(ltmp == reconParams.detectionEfficiency)
+				break;
+
+			reconParams.detectionEfficiency=ltmp;
+
+			needUpdate=true;
+			clearCache();
+
+			break;
+		}
 		default:
 			ASSERT(false);
 			break;
@@ -991,12 +1138,7 @@ bool DataLoadFilter::readState(xmlNodePtr &nodePtr, const std::string &stateFile
 		fileType=FILEDATA_TYPE_POS;
 
 
-	//Override the string, as needed
-	if( (stateFileDir.size()) &&
-		(ionFilename.size() > 2 && ionFilename.substr(0,2) == "./") )
-	{
-		ionFilename=stateFileDir + ionFilename.substr(2);
-	}
+	convertFileStringToAbsolute(stateFileDir, ionFilename);
 
 	//Filenames need to be converted from unix format (which I make canonical on disk) into native format 
 	ionFilename=convertFileStringToNative(ionFilename);
@@ -1174,6 +1316,7 @@ bool DataLoadFilter::writeState(std::ostream &f,unsigned int format, unsigned in
 			f << tabs(depth+1) << "<colour r=\"" <<  rgbaf.r() << "\" g=\"" << rgbaf.g() 
 				<< "\" b=\"" << rgbaf.b() << "\" a=\"" << rgbaf.a() << "\"/>" <<endl;
 			f << tabs(depth+1) << "<ionsize value=\"" << ionSize << "\"/>" << endl;
+			f << tabs(depth+1) << "<threedaprecon scaleradius=\"" << reconParams.radiusCylinder << "\" detectionefficiency=\"" << reconParams.detectionEfficiency <<"\" ionvolume=\"" << reconParams.ionVolume << "\"/>" << endl;
 			f << tabs(depth) << "</" << trueName() << ">" << endl;
 			break;
 		}
diff --git a/src/backend/filters/dataLoad.h b/src/backend/filters/dataLoad.h
index 4907116..0a2e257 100644
--- a/src/backend/filters/dataLoad.h
+++ b/src/backend/filters/dataLoad.h
@@ -23,11 +23,15 @@
 #include "../../common/basics.h"
 #include "../../common/translation.h"
 
+//TODO: Remove me?
+#include "backend/APT/3DapReader.h"
+
 enum
 {
 	DATALOAD_FLOAT_FILE,
 	DATALOAD_TEXT_FILE,
-	DATALOAD_LAWATAP_ATO_FILE
+	DATALOAD_LAWATAP_ATO_FILE,
+	DATALOAD_THREEDAP_OPS_FILE
 };
 
 enum
@@ -46,6 +50,9 @@ enum
 	DATALOAD_KEY_SELECTED_COLUMN3,
 	DATALOAD_KEY_NUMBER_OF_COLUMNS,
 	DATALOAD_KEY_ENDIANNESS,
+	DATALOAD_KEY_SCALERADIUS,
+	DATALOAD_KEY_IONVOLUME,
+	DATALOAD_KEY_DETECTIONEFFICIENCY,
 	DATALOAD_KEY_MONITOR
 };
 
@@ -87,6 +94,9 @@ class DataLoadFilter:public Filter
 
 		//!volume restriction bounds, not sorted
 		BoundCube bound;
+		
+		//!Reconstruction parameters for OPS files	
+		THREEDAP_RECON_PARAMS reconParams;
 
 		//Epoch timestamp for the mointored file. -1 if invalid
 		time_t monitorTimestamp;
diff --git a/src/backend/filters/externalProgram.cpp b/src/backend/filters/externalProgram.cpp
index 7cf5556..11675df 100644
--- a/src/backend/filters/externalProgram.cpp
+++ b/src/backend/filters/externalProgram.cpp
@@ -905,16 +905,16 @@ bool ExternalProgramFilter::substituteTest()
 	plotNames.push_back("some Plot.xy");
 	ionNames.push_back("my \"pos file.pos");
 
-	string commandLine;
-	commandLine="echo \"My ions are \'%i\'\"";
+	string myCommandLine;
+	myCommandLine="echo \"My ions are \'%i\'\"";
 
 
 	string resultString;
-	TEST(!substituteVariables(commandLine,ionNames,plotNames,resultString),"substitution fail");
+	TEST(!substituteVariables(myCommandLine,ionNames,plotNames,resultString),"substitution fail");
 	TEST(resultString == "echo \"My ions are \'my \"pos file.pos\'\"","substitution fail");
 
-	commandLine=" echo (\"%i\")";
-	TEST(!substituteVariables(commandLine,ionNames,plotNames,resultString),"substitution fail");
+	myCommandLine=" echo (\"%i\")";
+	TEST(!substituteVariables(myCommandLine,ionNames,plotNames,resultString),"substitution fail");
 	TEST(resultString == " echo (\"my \"pos file.pos\")","substitution fail");
 
 
diff --git a/src/backend/filters/filterCommon.cpp b/src/backend/filters/filterCommon.cpp
index 8ddf727..1611795 100644
--- a/src/backend/filters/filterCommon.cpp
+++ b/src/backend/filters/filterCommon.cpp
@@ -235,43 +235,15 @@ const RangeFile *getRangeFile(const std::vector<const FilterStreamData*> &dataIn
 	ASSERT(false);
 }
 
-unsigned int getIonstreamIonID(const IonStreamData *d, const RangeFile *r)
+size_t getTotalSizeByType(const std::vector<const FilterStreamData*> &dataIn, unsigned int streamTypeMask)
 {
-	if(d->data.empty())
-		return (unsigned int)-1;
-
-	unsigned int tentativeRange;
-
-	tentativeRange=r->getIonID(d->data[0].getMassToCharge());
-
-
-	//TODO: Currently, we have no choice but to brute force it.
-	//In the future, it might be worth storing some data inside the IonStreamData itself
-	//and to use that first, rather than try to brute force the result
-#ifdef _OPENMP
-	bool spin=false;
-	#pragma omp parallel for shared(spin)
-	for(size_t ui=1;ui<d->data.size();ui++)
-	{
-		if(spin)
-			continue;
-		if(r->getIonID(d->data[ui].getMassToCharge()) !=tentativeRange)
-			spin=true;
-	}
-
-	//Not a range
-	if(spin)
-		return (unsigned int)-1;
-
-#else
-	for(size_t ui=1;ui<d->data.size();ui++)
+	size_t totalSize=0;
+	for (size_t i = 0; i < dataIn.size(); i++)
 	{
-		if(r->getIonID(d->data[ui].getMassToCharge()) !=tentativeRange)
-			return (unsigned int)-1;
+		if(dataIn[i]->getStreamType() & streamTypeMask)
+		    totalSize+=dataIn[i]->getNumBasicObjects();
 	}
-#endif
-
-	return tentativeRange;	
+	return totalSize;
 }
 
 
@@ -591,13 +563,16 @@ unsigned int doHull(unsigned int bufferSize, double *buffer,
 		args=argsOptions[1];
 	
 
-	qh_new_qhull(	dim,
+	if(qh_new_qhull(	dim,
 			bufferSize,
 			buffer,
 			false,
 			(char *)args ,
 			outSquelch, //QHULL's interface is bizarre, no way to set null pointer in qhull 2012 - result is inf. loop in qhull_fprintf and error reporting func. 
-			outSquelch);
+			outSquelch))
+	{
+		return HULL_ERR_QHULL_NOINIT;
+	}
 	qhullInited=true;
 
 	if(outSquelch !=stderr)
@@ -661,6 +636,184 @@ unsigned int doHull(unsigned int bufferSize, double *buffer,
 }
 
 
+unsigned int do3DDelaunay(vector<Point3D> &pts,
+		vector<size_t> &ta, vector<size_t> &tb, vector<size_t> &tc)
+{
+
+
+
+	//Delaunay tesslation cannot be done
+	// piecewise, unlike hull.  Ensure that
+	// we are not in the middle of a different
+	// calculation
+	ASSERT(!qhullInited);
+
+	double *buffer = new double[pts.size()*3];
+	unsigned int bufferSize = pts.size();
+	for(unsigned int ui=0;ui<pts.size();ui++)
+	{
+		buffer[ui*3] = pts[ui][0];
+		buffer[ui*3+1] = pts[ui][1];
+		buffer[ui*3+2] = pts[ui][2];
+	}
+
+	const int dim=3;
+	//Now compute delaunay
+	//(result is stored in qh's globals :(  )
+	//note that the input is "joggled" to 
+	//ensure simplicial facet generation
+
+	//Qhull >=2012 has a "feature" where it won't accept null arguments for the output
+	// there is no clear way to shut it up.
+	FILE *outSquelch=0;
+#if defined(__linux__) || defined(__APPLE__) || defined(__BSD__)
+	outSquelch=fopen("/dev/null","w");
+#elif defined(__win32__) || defined(__win64__)
+	outSquelch=fopen("NUL","w");
+#endif
+
+	if(!outSquelch)
+	{
+		//Give up, just let qhull output random statistics to stderr
+		outSquelch=stderr;
+	}
+
+	 //Joggle the output, such that only simplical facets are generated, Also compute area/volume
+	const char *opts = "qhull d QbB Qz Qt";
+	unsigned int isMalloc=0;
+	//FIXME: PVS complains that false here should be a 
+	if(qh_new_qhull(dim, bufferSize, buffer,
+		isMalloc,(char*)opts,outSquelch,outSquelch))
+		return HULL_ERR_QHULL_NOINIT;
+	
+	if(outSquelch !=stderr)
+		fclose(outSquelch);
+
+
+	facetT *facet;
+	vertexT *vertex, **vertexp;
+
+	FORALLfacets
+	{
+		if(!facet->simplicial)
+			continue;
+//		if(facet->upperdelaunay)
+//			continue;
+			
+		unsigned int ui=0;
+		FOREACHvertex_(facet->vertices)
+		{
+			unsigned int id;
+			id= qh_pointid(vertex->point);
+			switch(ui)
+			{
+				case 0:
+					ta.push_back(id);
+					break;
+				case 1:
+					tb.push_back(id);
+					break;
+				case 2:
+					tc.push_back(id);
+					break;
+			}
+			ui++;
+		}
+	}
+
+
+	qh_freeqhull(!qh_ALL);
+	int curlong,totlong;
+	//This seems to be required? Cannot find any documentation on the difference
+	// between qh_freeqhull and qh_memfreeshort. qhull appears to leak when just using qh_freeqhull
+	qh_memfreeshort (&curlong, &totlong);    
+
+	delete[] buffer;
+
+	return 0;
+}
+
+unsigned int do2DDelaunay(double *bufXY, unsigned int n, 
+		vector<size_t> &ta, vector<size_t> &tb, vector<size_t> &tc)
+{
+
+	//Delaunay tesslation cannot be done
+	// piecewise, unlike hull.  Ensure that
+	// we are not in the middle of a different
+	// calculation
+	ASSERT(!qhullInited);
+
+	const int dim=2;
+	//Now compute delaunay
+	//(result is stored in qh's globals :(  )
+	//note that the input is "joggled" to 
+	//ensure simplicial facet generation
+
+	//Qhull >=2012 has a "feature" where it won't accept null arguments for the output
+	// there is no clear way to shut it up.
+	FILE *outSquelch=0;
+#if defined(__linux__) || defined(__APPLE__) || defined(__BSD__)
+	outSquelch=fopen("/dev/null","w");
+#elif defined(__win32__) || defined(__win64__)
+	outSquelch=fopen("NUL","w");
+#endif
+	
+	if(!outSquelch)
+	{
+		//Give up, just let qhull output random statistics to stderr
+		outSquelch=stderr;
+	}
+
+	 //Joggle the output, such that only simplical facets are generated, Also compute area/volume
+	const char *opts = "qhull d Qt";
+	if(qh_new_qhull(dim, n,bufXY,
+		false,(char*)opts,outSquelch,outSquelch))
+		return HULL_ERR_QHULL_NOINIT;
+	
+	if(outSquelch !=stderr)
+		fclose(outSquelch);
+
+
+	facetT *facet;
+	vertexT *vertex, **vertexp;
+
+	FORALLfacets
+	{
+		if(!facet->simplicial)
+			continue;
+		if(facet->upperdelaunay)
+			continue;
+			
+		unsigned int ui;
+		unsigned int id[3];
+
+		ui=0;
+		FOREACHvertex_(facet->vertices)
+		{
+			id[ui]= qh_pointid(vertex->point);
+			ASSERT(id[ui] < n);
+			ui++;
+		}
+
+		//Drop the facets formed by adding higher dimensional point
+		if(id[0] == n || id[1] == n || id[2] == n)
+			continue;
+
+		ta.push_back(id[0]);
+		tb.push_back(id[1]);
+		tc.push_back(id[2]);
+	}
+
+
+	qh_freeqhull(!qh_ALL);
+	int curlong,totlong;
+	//This seems to be required? Cannot find any documentation on the difference
+	// between qh_freeqhull and qh_memfreeshort. qhull appears to leak when just using qh_freeqhull
+	qh_memfreeshort (&curlong, &totlong);    
+
+	return 0;
+}
+
 void freeConvexHull()
 {
 	qh_freeqhull(qh_ALL);
@@ -734,3 +887,71 @@ std::string createTmpFilename(const char *dir,const char *extension)
 	return stlStr(tmpFilename);
 }
 
+#ifdef DEBUG
+bool testDelaunay();
+bool testCommon()
+{
+	TEST(testDelaunay(),"delaunay test");
+
+	return true;
+}
+
+
+bool testDelaunay()
+{
+	vector<Point3D> p;
+
+	p.push_back(Point3D(0,0,1));
+	p.push_back(Point3D(1,0,1));
+	p.push_back(Point3D(1,1,1));
+	p.push_back(Point3D(0,0,0));
+	p.push_back(Point3D(-1,2,2));
+
+	//just see if we can run the triangulation routine
+	// to retrieve the triangulations
+	vector<size_t> tA,tB,tC;
+	TEST(do3DDelaunay(p,tA,tB,tC) ==0 , "Delaunay failed")
+
+	//FIXME: Im not sure that qhull wont re-order the inputs.
+	// need to check this
+	// triangle vertex ids  should all be the same size (one for each vertex)
+	TEST(tA.size() == tB.size(),"triangle id check");
+	TEST(tB.size() == tC.size(),"triangle id check");
+
+
+	p.clear();
+	tA.clear();
+	tB.clear();
+	tC.clear();
+
+	//Perform 2D delaunay check
+	p.push_back(Point3D(0,1,0));
+	p.push_back(Point3D(1,1,0));
+	p.push_back(Point3D(1,0,0));
+	p.push_back(Point3D(2,2,0));
+
+
+	double *buffer = new double[p.size()*2];
+	
+	for(unsigned int ui=0;ui<p.size();ui++)
+	{
+		buffer[ui*2] = p[ui][0];
+		buffer[ui*2+1] = p[ui][1];
+	}
+
+	TEST(do2DDelaunay(buffer,p.size(),tA,tB,tC) ==0 , "2D Delaunay failed")
+
+	//FIXME: Im not sure that qhull wont re-order the inputs.
+	// need to check this
+	// triangle vertex ids  should all be the same size (one for each vertex)
+	TEST(tA.size() == tB.size(),"triangle id check");
+	TEST(tB.size() == tC.size(),"triangle id check");
+
+	delete[] buffer;
+
+	return true;
+}
+
+
+
+#endif
diff --git a/src/backend/filters/filterCommon.h b/src/backend/filters/filterCommon.h
index 56a98e8..b75eb90 100644
--- a/src/backend/filters/filterCommon.h
+++ b/src/backend/filters/filterCommon.h
@@ -45,6 +45,7 @@ enum
 {
 	HULL_ERR_NO_MEM=1,
 	HULL_ERR_USER_ABORT,
+	HULL_ERR_QHULL_NOINIT,
 	HULL_ERR_ENUM_END
 };
 
@@ -52,6 +53,9 @@ enum
 
 const size_t PROGRESS_REDUCE=5000;
 
+
+
+
 //serialise 3D std::vectors to specified output stream in XML format
 void writeVectorsXML(std::ostream &f, const char *containerName,
 		const std::vector<Point3D> &vectorParams, unsigned int depth);
@@ -119,77 +123,8 @@ bool parseXMLColour(xmlNodePtr &nodePtr, ColourRGBAf &rgbaf);
 // is ranged tht way. Otherwise returns -1.
 unsigned int getIonstreamIonID(const IonStreamData *d, const RangeFile *r);
 
-inline 
-void assignIonData(Point3D &p, const IonHit &h)
-{
-	p = h.getPosRef();
-}
-
-inline
-void assignIonData(IonHit &p, const IonHit &h)
-{
-	p = h;
-}
-
-//!Extend a point data vector using some ion data. 
-// Offset is the position to start inserting in the destination array.
-// Will fail if user abort is detected 
-template<class T>
-unsigned int extendDataVector(std::vector<T> &dest, const std::vector<IonHit> &vIonData,
-				unsigned int &progress, size_t offset)
-{
-	unsigned int curProg=NUM_CALLBACK;
-	unsigned int n =offset;
-#ifdef _OPENMP
-	//Parallel version
-	bool spin=false;
-	#pragma omp parallel for shared(spin)
-	for(size_t ui=0;ui<vIonData.size();ui++)
-	{
-		if(spin)
-			continue;
-		assignIonData(dest[offset+ ui],vIonData[ui]);
-		
-		//update progress every CALLBACK entries
-		if(!curProg--)
-		{
-			#pragma omp critical
-			{
-			n+=NUM_CALLBACK;
-			progress= (unsigned int)(((float)n/(float)dest.size())*100.0f);
-			if(!omp_get_thread_num())
-			{
-				if(*Filter::wantAbort)
-					spin=true;
-			}
-			}
-		}
-
-	}
-
-	if(spin)
-		return 1;
-#else
-
-	for(size_t ui=0;ui<vIonData.size();ui++)
-	{
-		assignIonData(dest[offset+ ui],vIonData[ui]);
-		
-		//update progress every CALLBACK ions
-		if(!curProg--)
-		{
-			n+=NUM_CALLBACK;
-			progress= (unsigned int)(((float)n/(float)dest.size())*100.0f);
-			if(*(Filter::wantAbort))
-				return 1;
-		}
-
-	}
-#endif
-
-
-	return 0;
-}
+//obtain the number of basic items in the input, given the stream type mask
+size_t getTotalSizeByType(const std::vector<const FilterStreamData*> &dataIn, unsigned int streamTypeMask);
 
 const RangeFile *getRangeFile(const std::vector<const FilterStreamData*> &dataIn);
 
@@ -212,4 +147,17 @@ DrawColourBarOverlay *makeColourBar(float minV, float maxV,size_t nColours,size_
 // - note that any subdirs will be automatically created if needed.
 std::string createTmpFilename(const char *dir=NULL,const char *extension=NULL);
 
+//Input buffer should be bufXY[ui*2 + offset] (X-> offset=0, Y->offset=1)
+// n - number of input points
+// output is the vertices of the triangulation
+unsigned int do2DDelaunay(double *bufXY, unsigned int n, 
+		std::vector<size_t> &ta, std::vector<size_t> &tb, std::vector<size_t> &tc);
+
+#ifdef DEBUG 
+
+//Test functions
+bool testCommon();
+
+#endif
+
 #endif
diff --git a/src/backend/filters/ionColour.cpp b/src/backend/filters/ionColour.cpp
index c3803ec..d0cd0f1 100644
--- a/src/backend/filters/ionColour.cpp
+++ b/src/backend/filters/ionColour.cpp
@@ -18,6 +18,8 @@
 #include "ionColour.h"
 
 #include "filterCommon.h"
+#include "../state.h"
+#include "common/stringFuncs.h"
 
 #include "common/colourmap.h"
 
@@ -37,6 +39,7 @@ enum
 	KEY_IONCOLOURFILTER_REVERSE,
 	KEY_IONCOLOURFILTER_SHOWBAR,
 	KEY_IONCOLOURFILTER_ALPHA,
+	KEY_IONCOLOURFILTER_AUTOEXTREMA,
 };
 
 enum
@@ -44,11 +47,12 @@ enum
 	IONCOLOUR_ABORT_ERR
 };
 
-IonColourFilter::IonColourFilter() : colourMap(0),reverseMap(false), 
+IonColourFilter::IonColourFilter() : colourMap(COLOURMAP_VIRIDIS),reverseMap(false), 
 		nColours(MAX_NUM_COLOURS),showColourBar(true), alpha(1.0f)
 {
 	mapBounds[0] = 0.0f;
 	mapBounds[1] = 100.0f;
+	autoExtrema=true;	
 
 	cacheOK=false;
 	cache=true; //By default, we should cache, but decision is made higher up
@@ -61,6 +65,7 @@ Filter *IonColourFilter::cloneUncached() const
 	p->colourMap = colourMap;
 	p->mapBounds[0]=mapBounds[0];
 	p->mapBounds[1]=mapBounds[1];
+	p->autoExtrema=autoExtrema;	
 	p->nColours =nColours;	
 	p->alpha = alpha;
 	p->showColourBar =showColourBar;	
@@ -76,7 +81,7 @@ Filter *IonColourFilter::cloneUncached() const
 
 size_t IonColourFilter::numBytesForCache(size_t nObjects) const
 {
-		return (size_t)((float)(nObjects*IONDATA_SIZE));
+	return (size_t)((float)(nObjects*IONDATA_SIZE));
 }
 
 
@@ -116,6 +121,34 @@ unsigned int IonColourFilter::refresh(const std::vector<const FilterStreamData *
 	}
 
 
+	size_t totalSize=numElements(dataIn,STREAM_TYPE_IONS);
+	if(autoExtrema)
+	{
+		mapBounds[0]= std::numeric_limits<float>::max();
+		mapBounds[1]=-std::numeric_limits<float>::max();
+		
+
+		for(unsigned int ui=0;ui<dataIn.size() ;ui++)
+		{
+			//Only process stream_type_ions. Do not propagate anything,
+			//except for the spectrum
+			if(dataIn[ui]->getStreamType() == STREAM_TYPE_IONS)
+			{
+				IonStreamData *ions;
+				ions = (IonStreamData *)dataIn[ui];
+				for(unsigned int uj=0;uj<ions->data.size(); uj++)
+				{
+					mapBounds[0] = std::min(mapBounds[0],
+						ions->data[uj].getMassToCharge());
+					mapBounds[1] = std::max(mapBounds[1],
+						ions->data[uj].getMassToCharge());
+
+				}
+
+			}
+			
+		}
+	}
 
 	//Try to maintain ion size if possible
 	bool haveIonSize,sameSize; // have we set the ionSize?
@@ -125,7 +158,6 @@ unsigned int IonColourFilter::refresh(const std::vector<const FilterStreamData *
 
 	//Did we find any ions in this pass?
 	bool foundIons=false;	
-	unsigned int totalSize=numElements(dataIn);
 	unsigned int curProg=NUM_CALLBACK;
 	size_t n=0;
 	for(unsigned int ui=0;ui<dataIn.size() ;ui++)
@@ -249,7 +281,7 @@ void IonColourFilter::getProperties(FilterPropGroup &propertyList) const
 
 	size_t curGroup=0;
 
-	for(unsigned int ui=0;ui<NUM_COLOURMAPS; ui++)
+	for(unsigned int ui=0;ui<COLOURMAP_ENUM_END; ui++)
 		choices.push_back(make_pair(ui,getColourMapName(ui)));
 
 	tmpStr=choiceString(choices,colourMap);
@@ -271,12 +303,14 @@ void IonColourFilter::getProperties(FilterPropGroup &propertyList) const
 	
 
 	p.name=TRANS("Show Bar");
+	p.helpText=TRANS("Display the colour legend in the 3D view");
 	p.key=KEY_IONCOLOURFILTER_SHOWBAR;
 	p.data=boolStrEnc(showColourBar);
 	p.type=PROPERTY_TYPE_BOOL;
 	propertyList.addProperty(p,curGroup);
 	
 	p.name=TRANS("Opacity");
+	p.helpText=TRANS("How see-through to make the legend (0- transparent, 1- solid)");
 	p.key=KEY_IONCOLOURFILTER_ALPHA;
 	stream_cast(p.data,alpha);
 	p.type=PROPERTY_TYPE_REAL;
@@ -290,23 +324,32 @@ void IonColourFilter::getProperties(FilterPropGroup &propertyList) const
 	p.type=PROPERTY_TYPE_INTEGER;
 	propertyList.addProperty(p,curGroup);
 
-	stream_cast(tmpStr,mapBounds[0]);
-	p.name=TRANS("Map start");
-	p.helpText=TRANS("Assign points with this value to the first colour in map"); 
-	p.data= tmpStr;
-	p.key=KEY_IONCOLOURFILTER_MAPSTART;
-	p.type=PROPERTY_TYPE_REAL;
+	p.name=TRANS("Auto bounds");
+	p.data=boolStrEnc(autoExtrema);
+	p.helpText=TRANS("Automatically scale colour to min/max of data range");
+	p.key=KEY_IONCOLOURFILTER_AUTOEXTREMA;
+	p.type=PROPERTY_TYPE_BOOL;
 	propertyList.addProperty(p,curGroup);
+	if(!autoExtrema)
+	{
 
-	stream_cast(tmpStr,mapBounds[1]);
-	p.name=TRANS("Map end");
-	p.helpText=TRANS("Assign points with this value to the last colour in map"); 
-	p.data= tmpStr;
-	p.key=KEY_IONCOLOURFILTER_MAPEND;
-	p.type=PROPERTY_TYPE_REAL;
-	propertyList.addProperty(p,curGroup);
+		stream_cast(tmpStr,mapBounds[0]);
+		p.name=TRANS("Map start");
+		p.helpText=TRANS("Assign points with this value to the first colour in map"); 
+		p.data= tmpStr;
+		p.key=KEY_IONCOLOURFILTER_MAPSTART;
+		p.type=PROPERTY_TYPE_REAL;
+		propertyList.addProperty(p,curGroup);
+
+		stream_cast(tmpStr,mapBounds[1]);
+		p.name=TRANS("Map end");
+		p.helpText=TRANS("Assign points with this value to the last colour in map"); 
+		p.data= tmpStr;
+		p.key=KEY_IONCOLOURFILTER_MAPEND;
+		p.type=PROPERTY_TYPE_REAL;
+		propertyList.addProperty(p,curGroup);
+	}	
 	propertyList.setGroupTitle(curGroup,TRANS("Data"));
-	
 
 }
 
@@ -321,7 +364,7 @@ bool IonColourFilter::setProperty(  unsigned int key,
 		{
 			unsigned int tmpMap;
 			tmpMap=(unsigned int)-1;
-			for(unsigned int ui=0;ui<NUM_COLOURMAPS;ui++)
+			for(unsigned int ui=0;ui<COLOURMAP_ENUM_END;ui++)
 			{
 				if(value== getColourMapName(ui))
 				{
@@ -330,7 +373,7 @@ bool IonColourFilter::setProperty(  unsigned int key,
 				}
 			}
 
-			if(tmpMap >=NUM_COLOURMAPS || tmpMap ==colourMap)
+			if(tmpMap >=COLOURMAP_ENUM_END || tmpMap ==colourMap)
 				return false;
 
 			clearCache();
@@ -398,6 +441,12 @@ bool IonColourFilter::setProperty(  unsigned int key,
 				return false;
 			break;
 		}
+		case KEY_IONCOLOURFILTER_AUTOEXTREMA:
+		{
+			if(!applyPropertyNow(autoExtrema,value,needUpdate))
+				return false;
+			break;
+		}
 		default:
 			ASSERT(false);
 	}	
@@ -427,7 +476,7 @@ bool IonColourFilter::writeState(std::ostream &f,unsigned int format, unsigned i
 			f << tabs(depth+1) << "<userstring value=\""<< escapeXML(userString) << "\"/>"  << endl;
 
 			f << tabs(depth+1) << "<colourmap value=\"" << colourMap << "\"/>" << endl;
-			f << tabs(depth+1) << "<extrema min=\"" << mapBounds[0] << "\" max=\"" 
+			f << tabs(depth+1) << "<extrema auto=\""  << boolStrEnc(autoExtrema) << "\" min=\"" << mapBounds[0] << "\" max=\"" 
 				<< mapBounds[1] << "\"/>" << endl;
 			f << tabs(depth+1) << "<ncolours value=\"" << nColours << "\" opacity=\"" << alpha << "\"/>" << endl;
 
@@ -474,7 +523,13 @@ bool IonColourFilter::readState(xmlNodePtr &nodePtr, const std::string &stateFil
 	if(stream_cast(colourMap,tmpStr))
 		return false;
 
-	if(colourMap>= NUM_COLOURMAPS)
+	//We defaulted to Jet prior to version 0.0.20, and did not store
+	// the colour map data properly, so it loaded as jet 
+	if( AnalysisState::getStateWriterVersion() < getVersionNumber(0,0,20)  && colourMap == 0)
+		colourMap=COLOURMAP_JET;
+		
+			
+	if(colourMap>= COLOURMAP_ENUM_END)
 	       return false;	
 	xmlFree(xmlString);
 
@@ -495,6 +550,18 @@ bool IonColourFilter::readState(xmlNodePtr &nodePtr, const std::string &stateFil
 	if(XMLHelpFwdToElem(nodePtr,"extrema"))
 		return false;
 
+	if(XMLHelpGetProp(autoExtrema,nodePtr,"auto"))
+	{
+		if(AnalysisState::getStateWriterVersion() <=19)
+		{
+			//DEPRECATE ME
+			//This property did not exist prior to 0.0.20
+			autoExtrema=false;
+		}
+		else
+			autoExtrema=true;
+	}
+
 	xmlString=xmlGetProp(nodePtr,(const xmlChar *)"min");
 	if(!xmlString)
 		return false;
@@ -637,7 +704,7 @@ bool ionCountTest()
 	delete f;
 	delete d;
 	
-	TEST(streamOut.size() == 99,"stream count");
+	TEST(streamOut.size() == 100,"stream count");
 
 	for(unsigned int ui=0;ui<streamOut.size();ui++)
 	{
diff --git a/src/backend/filters/ionColour.h b/src/backend/filters/ionColour.h
index abfe02d..c84f8e8 100644
--- a/src/backend/filters/ionColour.h
+++ b/src/backend/filters/ionColour.h
@@ -46,6 +46,9 @@ class IonColourFilter: public Filter
 
 		//Transparency value
 		float alpha;
+
+		//Automatically determine the colour bounds?
+		bool autoExtrema;
 	public:
 		IonColourFilter();
 		//!Duplicate filter contents, excluding cache.
diff --git a/src/backend/filters/ionDownsample.cpp b/src/backend/filters/ionDownsample.cpp
index 100bfa0..eecccbf 100644
--- a/src/backend/filters/ionDownsample.cpp
+++ b/src/backend/filters/ionDownsample.cpp
@@ -88,7 +88,7 @@ void IonDownsampleFilter::initFilter(const std::vector<const FilterStreamData *>
 			rsdIncoming = new RangeStreamData;
 			*rsdIncoming=*c;
 
-			if(ionFractions.size() != c->rangeFile->getNumIons())
+			if(ionFractions.size() != c->rangeFile->getNumIons()+1)
 			{
 				//set up some defaults; seeded from normal
 				ionFractions.resize(c->rangeFile->getNumIons()+1,fraction);
@@ -182,6 +182,7 @@ unsigned int IonDownsampleFilter::refresh(const std::vector<const FilterStreamDa
 	{
 		propagateStreams(dataIn,getOut,STREAM_TYPE_IONS,true);
 		propagateCache(getOut);
+		progress.filterProgress=100;
 
 		return 0;
 	}
@@ -464,7 +465,8 @@ void IonDownsampleFilter::getProperties(FilterPropGroup &propertyList) const
 
 	propertyList.setGroupTitle(curGroup,TRANS("Mode"));
 	curGroup++;
-	if(rsdIncoming && perSpecies)
+
+	if(rsdIncoming && perSpecies && rsdIncoming->enabledIons.size())
 	{
 		unsigned int typeVal;
 		if(fixedNumOut)
diff --git a/src/backend/filters/ionInfo.cpp b/src/backend/filters/ionInfo.cpp
index 6a0e710..fd8da9a 100644
--- a/src/backend/filters/ionInfo.cpp
+++ b/src/backend/filters/ionInfo.cpp
@@ -398,7 +398,7 @@ unsigned int IonInfoFilter::refresh(const std::vector<const FilterStreamData *>
 
 
 	//"Pairwise events" - where we perform an action if both 
-	//These
+	//these are set
 	if(wantIonCounts && wantVolume)
 	{
 		if(computedVol > sqrtf(std::numeric_limits<float>::epsilon()))
@@ -420,6 +420,9 @@ unsigned int IonInfoFilter::refresh(const std::vector<const FilterStreamData *>
 		}
 	}
 
+
+	progress.filterProgress=100;
+	
 	return 0;
 }
 
diff --git a/src/backend/filters/profile.cpp b/src/backend/filters/profile.cpp
index 455dba1..977fa38 100644
--- a/src/backend/filters/profile.cpp
+++ b/src/backend/filters/profile.cpp
@@ -328,26 +328,30 @@ unsigned int ProfileFilter::refresh(const std::vector<const FilterStreamData *>
 	vector<vector<size_t> > ionFrequencies;
 	
 	RangeStreamData *rngData=0;
-	for(unsigned int ui=0;ui<dataIn.size() ;ui++)
+	if(!wantDensity)
 	{
-		if(dataIn[ui]->getStreamType() == STREAM_TYPE_RANGE)
+		for(unsigned int ui=0;ui<dataIn.size() ;ui++)
 		{
-			rngData =((RangeStreamData *)dataIn[ui]);
-			break;
+			if(dataIn[ui]->getStreamType() == STREAM_TYPE_RANGE)
+			{
+				rngData =((RangeStreamData *)dataIn[ui]);
+				break;
+			}
 		}
 	}
 
-	unsigned int numBins, errCode;
+	unsigned int numBins;
 	{
+	unsigned int errCode;
 	float length;
 	errCode=getBinData(numBins,length);
 
 	if(!numBins)
 		return 0;
-	}
 
 	if(errCode)
 		return errCode;
+	}
 
 	//Indirection vector to convert ionFrequencies position to ionID mapping.
 	//Should only be used in conjunction with rngData == true
@@ -1298,7 +1302,7 @@ bool ProfileFilter::writeState(std::ostream &f,unsigned int format, unsigned int
 
 			f << tabs(depth+1) << "<scalarparams>" << endl;
 			for(unsigned int ui=0; ui<scalarParams.size(); ui++)
-				f << tabs(depth+2) << "<scalar value=\"" << scalarParams[0] << "\"/>" << endl; 
+				f << tabs(depth+2) << "<scalar value=\"" << scalarParams[ui] << "\"/>" << endl; 
 			
 			f << tabs(depth+1) << "</scalarparams>" << endl;
 			f << tabs(depth+1) << "<normalise value=\"" << normalise << "\" minevents=\"" << minEvents << "\" />" << endl;
diff --git a/src/backend/filters/rangeFile.cpp b/src/backend/filters/rangeFile.cpp
index 5a1a978..9f09c9d 100644
--- a/src/backend/filters/rangeFile.cpp
+++ b/src/backend/filters/rangeFile.cpp
@@ -113,6 +113,7 @@ unsigned int RangeFileFilter::refresh(const std::vector<const FilterStreamData *
 		//these.
 		propagateStreams(dataIn,getOut,getRefreshBlockMask(),true);
 			
+		progress.filterProgress=100;
 		return 0;
 	}
 
@@ -1125,13 +1126,8 @@ bool RangeFileFilter::readState(xmlNodePtr &nodePtr, const std::string &stateFil
 	rngName=(char *)xmlString;
 	xmlFree(xmlString);
 
-	//Override the string to strip leading ./ notation, as needed
-	if( (stateFileDir.size()) &&
-		(rngName.size() > 2 && rngName.substr(0,2) == "./") )
-	{
-		rngName=stateFileDir + rngName.substr(2);
-	}
 
+	convertFileStringToAbsolute(stateFileDir,rngName);
 	rngName=convertFileStringToNative(rngName);
 
 	//try using the extension name of the file to guess format
diff --git a/src/backend/filters/spatialAnalysis.cpp b/src/backend/filters/spatialAnalysis.cpp
index a24aa7e..7814406 100644
--- a/src/backend/filters/spatialAnalysis.cpp
+++ b/src/backend/filters/spatialAnalysis.cpp
@@ -21,7 +21,7 @@
 
 
 
-#include "algorithms/rdf.h"
+#include "algorithms/spatial.h"
 #include "geometryHelpers.h"
 #include "filterCommon.h"
 #include "algorithms/binomial.h"
@@ -86,7 +86,7 @@ enum {
 	ALGORITHM_AXIAL_DF, //Axial Distribution Function (aka atomvicinity, sdm, 1D rdf)
 	ALGORITHM_BINOMIAL, //Binomial block method for statistical randomness testing
 	ALGORITHM_REPLACE, //Remove, set or modify points using an external file
-	ALGORITHM_LOCAL_CONCENTRATION, //Obtain a local concentration plot, as described by Hyde and Marquis (TODO : REF)
+	ALGORITHM_LOCAL_CHEMISTRY, //Obtain a local chemistry plot, as described by Hyde and Marquis (10.1016/j.mser.2010.05.001)
 	ALGORITHM_ENUM_END,
 };
 
@@ -126,7 +126,7 @@ const char *SPATIAL_ALGORITHMS[] = {
 	NTRANS("Axial Distribution"),
 	NTRANS("Binomial Distribution"),
 	NTRANS("Point Em/Replacement"),
-	NTRANS("Local Concentration"),
+	NTRANS("Local Chemistry"),
 	};
 
 const char *STOP_MODES[] = {
@@ -134,7 +134,7 @@ const char *STOP_MODES[] = {
 	NTRANS("Radius")
 };
 
-//User viisble names for the replace sub-algorithms
+//User visible names for the replace sub-algorithms
 const char *REPLACE_ALGORITHMS[] = { "Subtract",
 					"Intersect",
 					"Union",
@@ -183,136 +183,6 @@ float weightedMean(const vector<float> &x, const vector<float> &y,bool zeroOutSi
 //Scan input datastreams to build two point vectors,
 // one of those with points specified as "target" 
 // which is a copy of the input points
-//Returns 0 on no error, otherwise nonzero
-template<class T>
-size_t buildSplitPoints(const vector<const FilterStreamData *> &dataIn,
-				ProgressData &progress, size_t totalDataSize,
-				const RangeFile *rngF, const vector<bool> &pSourceEnabled, const vector<bool> &pTargetEnabled,
-				vector<T> &pSource, vector<T> &pTarget
-				)
-{
-	size_t sizeNeeded[2];
-	sizeNeeded[0]=sizeNeeded[1]=0;
-
-	//Presize arrays
-	for(unsigned int ui=0; ui<dataIn.size() ; ui++)
-	{
-		switch(dataIn[ui]->getStreamType())
-		{
-			case STREAM_TYPE_IONS:
-			{
-				unsigned int ionID;
-
-				const IonStreamData *d;
-				d=((const IonStreamData *)dataIn[ui]);
-				ionID=getIonstreamIonID(d,rngF);
-
-				if(ionID == (unsigned int)-1)
-				{
-
-					//we have ungrouped ions, so work out size individually
-					for(unsigned int uj=0;uj<d->data.size();uj++)
-					{
-						ionID = rngF->getIonID(d->data[uj].getMassToCharge());
-
-						if(ionID == (unsigned int)-1)
-							continue;
-
-						if(pSourceEnabled[ionID])
-							sizeNeeded[0]++;
-						if(pTargetEnabled[ionID])
-							sizeNeeded[1]++;
-					}
-					
-					break;
-				}
-
-				if(pSourceEnabled[ionID])
-					sizeNeeded[0]+=d->data.size();
-
-				if(pTargetEnabled[ionID])
-					sizeNeeded[1]+=d->data.size();
-
-				break;
-			}
-			default:
-				break;
-		}
-	}
-
-	pSource.resize(sizeNeeded[0]);
-	pTarget.resize(sizeNeeded[1]);
-
-	//Fill arrays
-	size_t curPos[2];
-	curPos[0]=curPos[1]=0;
-
-	for(unsigned int ui=0; ui<dataIn.size() ; ui++)
-	{
-		switch(dataIn[ui]->getStreamType())
-		{
-			case STREAM_TYPE_IONS:
-			{
-				unsigned int ionID;
-				const IonStreamData *d;
-				d=((const IonStreamData *)dataIn[ui]);
-				ionID=getIonstreamIonID(d,rngF);
-
-				if(ionID==(unsigned int)(-1))
-				{
-					//we have ungrouped ions, so work out size individually
-					for(unsigned int uj=0;uj<d->data.size();uj++)
-					{
-						ionID = rngF->getIonID(d->data[uj].getMassToCharge());
-
-						if(ionID == (unsigned int)-1)
-							continue;
-
-						if(pSourceEnabled[ionID])
-						{
-							assignIonData(pSource[curPos[0]],d->data[uj]);
-							curPos[0]++;
-						}
-
-						if(pTargetEnabled[ionID])
-						{
-							assignIonData(pTarget[curPos[1]],d->data[uj]);
-							curPos[1]++;
-						}
-					}
-					
-					break;
-				}
-
-				unsigned int dummyProgress=0;
-				if(pSourceEnabled[ionID])
-				{
-					if(extendDataVector(pSource,d->data,
-					                     dummyProgress,curPos[0]))
-						return ERR_ABORT_FAIL;
-
-					curPos[0]+=d->data.size();
-				}
-
-				if(pTargetEnabled[ionID])
-				{
-					if(extendDataVector(pTarget,d->data,
-					                     dummyProgress,curPos[1]))
-						return ERR_ABORT_FAIL;
-
-					curPos[1]+=d->data.size();
-				}
-
-				break;
-			}
-			default:
-				break;
-		}
-	}
-
-
-	return 0;
-}
 
 SpatialAnalysisFilter::SpatialAnalysisFilter()
 {
@@ -497,32 +367,6 @@ void SpatialAnalysisFilter::initFilter(const std::vector<const FilterStreamData
 }
 
 
-void SpatialAnalysisFilter::createDevice(vector<const FilterStreamData *> &getOut) 
-{
-	//Create the user interaction device required for the user
-	// to interact with the algorithm parameters 
-	SelectionDevice *s=0;
-	DrawStreamData *d= new DrawStreamData;
-	d->parent=this;
-	d->cached=0;
-
-	switch(algorithm)
-	{
-		case ALGORITHM_AXIAL_DF:
-			createCylinder(d,s);
-		break;
-		default:	
-			;
-	}
-
-	if(s)
-	{
-		devices.push_back(s);
-		getOut.push_back(d);
-	}
-	else
-		delete d;
-}
 
 unsigned int SpatialAnalysisFilter::refresh(const std::vector<const FilterStreamData *> &dataIn,
 	std::vector<const FilterStreamData *> &getOut, ProgressData &progress)
@@ -535,9 +379,6 @@ unsigned int SpatialAnalysisFilter::refresh(const std::vector<const FilterStream
 			mask|=STREAM_TYPE_RANGE;
 
 
-		//create selection device for this algrithm
-		createDevice(getOut);
-
 		//Propagate input streams as desired 
 		propagateStreams(dataIn,getOut,mask,true);
 	
@@ -604,7 +445,7 @@ unsigned int SpatialAnalysisFilter::refresh(const std::vector<const FilterStream
 			if(!rngF)
 				return ERR_NO_RANGE;
 			
-			result=algorithmBinomial(progress,totalDataSize,
+				result=algorithmBinomial(progress,totalDataSize,
 						dataIn,getOut,rngF);
 			break;
 		}
@@ -612,7 +453,7 @@ unsigned int SpatialAnalysisFilter::refresh(const std::vector<const FilterStream
 			result=algorithmReplace(progress,totalDataSize,
 						dataIn,getOut);
 			break;
-		case ALGORITHM_LOCAL_CONCENTRATION:
+		case ALGORITHM_LOCAL_CHEMISTRY:
 			if(!rngF)
 				return ERR_NO_RANGE;
 			result=algorithmLocalConcentration(progress,totalDataSize,
@@ -655,115 +496,181 @@ size_t SpatialAnalysisFilter::algorithmReplace(ProgressData &progress, size_t to
 		return ERR_FILE_READ_FAIL;
 
 
+	vector<IonHit> outIons;
+	if(inIons.empty() || fileIons.empty())
+	{
+		//Performance increase if we have an empty item.
+		// - in this case we can swap sets around
+		switch(replaceMode)
+		{
+			case REPLACE_MODE_UNION:
+			{
+				//If the local data is empty, then the union is just the "b" data (swap).
+				// if nonempty, then it is simply the "a" data 
+				if(inIons.empty())
+					outIons.swap(fileIons);
+				else
+					outIons.swap(inIons);
+				break;
+			}
+			case REPLACE_MODE_SUBTRACT:
+			{
+				//if either localdata OR bdata is empty, then we don't need to do anything.
+				// either way, input stays as it is
+				outIons.swap(inIons);
+				break;
+			}
+			case REPLACE_MODE_INTERSECT:
+			{
+				//intersection with empty set is empty set.
+				// might as well clear the ions incoming
+				inIons.clear();
+				break;
+			}
+			default:
+				ASSERT(false);
 
-	progress.step=3;
-	progress.stepName=TRANS("Build");
-	progress.filterProgress=0;
-
-	//Build the search tree we will use to perform replacement
-	K3DTreeMk2 tree;
-	tree.resetPts(fileIons,false);
-	if(!tree.build())
-		return ERR_ABORT_FAIL;
-	BoundCube b;
-	tree.getBoundCube(b);
-
-	//map the offset of the nearest to
-	//the tree ID 
-	vector<size_t > nearestVec;
-	nearestVec.resize(inIons.size());
+		}
+	}
+	else
+	{
 
-	//TODO: pair vector might be faster
-	// as we can use it in sequence, and can use openmp
-	map<size_t,size_t> matchedMap;
+		progress.step=3;
+		progress.stepName=TRANS("Build");
+		progress.filterProgress=0;
 
-	//Find the nearest point for all points in the dataset
+		//TODO: Possible speed increase by finding the smaller of
+		// the two inputs, and using that to build the tree
 
-	#pragma omp parallel for 
-	for(size_t ui=0;ui<inIons.size();ui++)
-	{
-		nearestVec[ui]=tree.findNearestUntagged(inIons[ui].getPos(),b,false);
-	}
+		//Build the search tree we will use to perform replacement
+		K3DTreeMk2 tree;
+		// reset the tree points, without deleting the fileIOns
+		tree.resetPts(fileIons,false);
+		if(!tree.build())
+			return ERR_ABORT_FAIL;
+		BoundCube b;
+		tree.getBoundCube(b);
+
+		//map the offset of the nearest to
+		//the tree ID 
+		vector<size_t > nearestVec;
+		nearestVec.resize(inIons.size());
+
+		//TODO: pair vector might be faster
+		// as we can use it in sequence, and can use openmp
+		map<size_t,size_t> matchedMap;
+
+		//Find the nearest point for all points in the dataset
+		// maps the ith ion in "inions" to the tree value
+		#pragma omp parallel for 
+		for(size_t ui=0;ui<inIons.size();ui++)
+		{
+			nearestVec[ui]=tree.findNearestUntagged(inIons[ui].getPos(),b,false);
+		}
 
-	float sqrReplaceTol=replaceTolerance*replaceTolerance;
+		float sqrReplaceTol=replaceTolerance*replaceTolerance;
 
-	//Filter this to only points that had an NN within range
-	#pragma omp parallel for 
-	for(size_t ui=0;ui<inIons.size();ui++)
-	{
-		if(nearestVec[ui]!=(size_t)-1 && inIons[ui].getPos().sqrDist(*tree.getPt(nearestVec[ui])) <=sqrReplaceTol)
+		//Filter this to only points that had an NN within range
+		#pragma omp parallel for 
+		for(size_t ui=0;ui<inIons.size();ui++)
 		{
-			#pragma omp critical
-			matchedMap[ui]=tree.getOrigIndex(nearestVec[ui]);
+			if(nearestVec[ui]!=(size_t)-1 && inIons[ui].getPos().sqrDist(*tree.getPt(nearestVec[ui])) <=sqrReplaceTol)
+			{
+				#pragma omp critical
+				matchedMap[ui]=tree.getOrigIndex(nearestVec[ui]);
+			}
 		}
-	}
 
-	nearestVec.clear();
+		nearestVec.clear();
 
 
-	progress.step=4;
-	progress.stepName=TRANS("Compute");
-	progress.filterProgress=0;
+		progress.step=4;
+		progress.stepName=TRANS("Compute");
+		progress.filterProgress=0;
 
-	//Finish if no matches
-	if(matchedMap.empty())
-	{
-		progress.filterProgress=100;
-		return 0;
-	}
 
-	vector<IonHit> outIons;
-	switch(replaceMode)
-	{
-		case REPLACE_MODE_SUBTRACT:
+		//now we have a map that matches as so:
+		// map ( "inIon" ID -> "fileIon" ID)
+		// inIon should be our "A" in "A operator B"
+		switch(replaceMode)
 		{
-			//In subtraction mode, we should have
-			// at least this many ions
-			if(inIons.size() > matchedMap.size())
-				outIons.reserve(inIons.size()-matchedMap.size());
-			
-			//
-			#pragma omp parallel for
-			for(unsigned int ui=0;ui<inIons.size();ui++)
+			case REPLACE_MODE_SUBTRACT:
 			{
-				map<size_t,size_t>::iterator it;
-				it=matchedMap.find(ui);
-				if(it != matchedMap.end())
-					continue;
+				//If no matches, A-0 = A. Just return input
+				if(matchedMap.empty())
+				{
+					outIons.swap(inIons);
+					break;
+				}
+				//In subtraction mode, we should have
+				// at least this many ions
+				if(inIons.size() > matchedMap.size())
+					outIons.reserve(inIons.size()-matchedMap.size());
+				
+				//
+				#pragma omp parallel for
+				for(unsigned int ui=0;ui<inIons.size();ui++)
+				{
+					map<size_t,size_t>::iterator it;
+					it=matchedMap.find(ui);
+					if(it != matchedMap.end())
+						continue;
 
-				#pragma omp critical
-				outIons.push_back(inIons[ui]);
+					#pragma omp critical
+					outIons.push_back(inIons[ui]);
+				}
+				break;
 			}
-			break;
-		}
-		case REPLACE_MODE_INTERSECT:
-		{
-			outIons.reserve(matchedMap.size());
-
-			if(replaceMass)
+			case REPLACE_MODE_INTERSECT:
 			{
-				for(map<size_t,size_t>::const_iterator it=matchedMap.begin();it!=matchedMap.end();++it)
+				//Finish if no matches
+				if(matchedMap.empty())
+					break;
+				
+				outIons.reserve(matchedMap.size());
+
+				if(replaceMass)
+				{
+					for(map<size_t,size_t>::const_iterator it=matchedMap.begin();it!=matchedMap.end();++it)
+					{
+						outIons.push_back(fileIons[it->second]);
+						ASSERT(fileIons[it->second].getPosRef().sqrDist(inIons[it->first].getPosRef()) < sqrReplaceTol);
+					}
+				}
+				else
 				{
-					outIons.push_back(fileIons[it->second]);
-					ASSERT(fileIons[it->second].getPosRef().sqrDist(inIons[it->first].getPosRef()) < sqrReplaceTol);
+					for(map<size_t,size_t>::const_iterator it=matchedMap.begin();it!=matchedMap.end();++it)
+					{
+						outIons.push_back(inIons[it->first]);
+					}
 				}
+				break;
 			}
-			else
+			case REPLACE_MODE_UNION:
 			{
-				for(map<size_t,size_t>::const_iterator it=matchedMap.begin();it!=matchedMap.end();++it)
+				outIons.swap(fileIons);
+				outIons.reserve(outIons.size() + fileIons.size() - matchedMap.size());
+				map<size_t,size_t>::const_iterator it=matchedMap.begin();
+				
+
+				for(unsigned int ui=0;ui<inIons.size();ui++)
 				{
-					outIons.push_back(inIons[it->first]);
+					if(it !=matchedMap.end() && (it->first == ui) )
+					{
+						++it;
+						continue;
+					}
+
+
+					outIons.push_back(inIons[ui]);
 				}
+
+
+				break;
 			}
-			break;
-		}
-		case REPLACE_MODE_UNION:
-		{
-			ASSERT(false);
-			break;
+			default:
+				ASSERT(false);
 		}
-		default:
-			ASSERT(false);
 	}
 
 	//Only output ions if any were found
@@ -816,7 +723,7 @@ void SpatialAnalysisFilter::getProperties(FilterPropGroup &propertyList) const
 		||  algorithm == ALGORITHM_DENSITY 
 		|| algorithm == ALGORITHM_DENSITY_FILTER 
 		|| algorithm == ALGORITHM_AXIAL_DF
-		|| algorithm == ALGORITHM_LOCAL_CONCENTRATION)
+		|| algorithm == ALGORITHM_LOCAL_CHEMISTRY)
 	{
 		tmpStr=TRANS(STOP_MODES[STOP_MODE_NEIGHBOUR]);
 
@@ -1034,32 +941,15 @@ void SpatialAnalysisFilter::getProperties(FilterPropGroup &propertyList) const
 			propertyList.addProperty(p,curGroup);
 			
 			std::string str;
-			ASSERT(vectorParams.size() == 2);
-			ASSERT(scalarParams.size() == 1);
+			ASSERT(vectorParams.size() == 1);
 			stream_cast(str,vectorParams[0]);
-			p.key=KEY_ORIGIN;
-			p.name=TRANS("Origin");
-			p.data=str;
-			p.type=PROPERTY_TYPE_POINT3D;
-			p.helpText=TRANS("Position for centre of cylinder");
-			propertyList.addProperty(p,curGroup);
-			
-			stream_cast(str,vectorParams[1]);
 			p.key=KEY_NORMAL;
 			p.name=TRANS("Axis");
 			p.data=str;
 			p.type=PROPERTY_TYPE_POINT3D;
-			p.helpText=TRANS("Vector between centre and end of cylinder");
+			p.helpText=TRANS("Vector along which to calculate distribution function");
 			propertyList.addProperty(p,curGroup);
 
-			
-			stream_cast(str,scalarParams[0]);
-			p.key=KEY_RADIUS;
-			p.name=TRANS("Radius");
-			p.data= str;
-			p.type=PROPERTY_TYPE_POINT3D;
-			p.helpText=TRANS("Radius of cylinder");
-			propertyList.addProperty(p,curGroup);
 	
 			propertyList.setGroupTitle(curGroup,TRANS("Alg. Params."));
 			break;
@@ -1120,24 +1010,23 @@ void SpatialAnalysisFilter::getProperties(FilterPropGroup &propertyList) const
 				p.key=KEY_SHOW_BINOM_NORM_FREQ;
 				propertyList.addProperty(p,curGroup);
 
-				/* TODO: IMPLEMENT ME
 				p.name=TRANS("Expected Freq");
 				p.data=boolStrEnc(showTheoreticFrequencies);
 				p.type=PROPERTY_TYPE_BOOL;
-				p.helpText=TRANS("Normalise the counts in the binomial histogram to a probability density function");
+				p.helpText=TRANS("Show the theoretically expected probability density function for a random dataset with the same mean");
 				p.key=KEY_SHOW_BINOM_THEOR_FREQ;
 				propertyList.addProperty(p,curGroup);
-				*/
 
 
-				p.name=TRANS("Display Grid");
-				p.data=boolStrEnc(showGridOverlay);
-				p.type=PROPERTY_TYPE_BOOL;
-				p.helpText="Show the extruded grid in the 3D view. This may be slow";
-				p.key=KEY_SHOW_BINOM_3D_GRID;
-				propertyList.addProperty(p,curGroup);
 
 			}
+			
+			p.name=TRANS("Display Grid");
+			p.data=boolStrEnc(showGridOverlay);
+			p.type=PROPERTY_TYPE_BOOL;
+			p.helpText=TRANS("Show the extruded grid in the 3D view. This may be slow");
+			p.key=KEY_SHOW_BINOM_3D_GRID;
+			propertyList.addProperty(p,curGroup);
 
 			propertyList.setGroupTitle(curGroup,TRANS("View Options"));
 			break;	
@@ -1190,7 +1079,7 @@ void SpatialAnalysisFilter::getProperties(FilterPropGroup &propertyList) const
 			propertyList.setGroupTitle(curGroup,TRANS("Replacement"));
 			break;
 		}
-		case ALGORITHM_LOCAL_CONCENTRATION:
+		case ALGORITHM_LOCAL_CHEMISTRY:
 		{
 			if(haveRangeParent)
 			{
@@ -1313,7 +1202,7 @@ bool SpatialAnalysisFilter::setProperty(  unsigned int key,
 			if(ltmp>=ALGORITHM_ENUM_END)
 				return false;
 		
-			if(ltmp == ALGORITHM_LOCAL_CONCENTRATION &&
+			if(ltmp == ALGORITHM_LOCAL_CHEMISTRY &&
 				nnMax < 2)
 			{
 				nnMax=2;
@@ -1334,7 +1223,7 @@ bool SpatialAnalysisFilter::setProperty(  unsigned int key,
 				case ALGORITHM_DENSITY_FILTER:
 				case ALGORITHM_RDF:
 				case ALGORITHM_AXIAL_DF:
-				case ALGORITHM_LOCAL_CONCENTRATION:
+				case ALGORITHM_LOCAL_CHEMISTRY:
 				{
 					size_t ltmp=STOP_MODE_ENUM_END;
 
@@ -1383,9 +1272,9 @@ bool SpatialAnalysisFilter::setProperty(  unsigned int key,
 			if(stream_cast(ltmp,value))
 				return false;
 		
-			//NNmax should be nonzero at all times. For local concentration
+			//NNmax should be nonzero at all times. For local chemistry
 			// should be at least 2 (as 1 == 100% all the time)	
-			if(ltmp==0 || (algorithm == ALGORITHM_LOCAL_CONCENTRATION  && ltmp < 2))
+			if(ltmp==0 || (algorithm == ALGORITHM_LOCAL_CHEMISTRY  && ltmp < 2))
 				return false;
 			
 			nnMax=ltmp;
@@ -1596,12 +1485,19 @@ bool SpatialAnalysisFilter::setProperty(  unsigned int key,
 			if(newPt.sqrMag() < sqrtf(std::numeric_limits<float>::epsilon()))
 				return false;
 
-			if(!(vectorParams[1] == newPt ))
+			if(!(vectorParams[0] == newPt ))
 			{
-				vectorParams[1] = newPt;
+				vectorParams[0] = newPt;
 				needUpdate=true;
 				clearCache();
 			}
+
+
+			if(algorithm == ALGORITHM_AXIAL_DF)
+			{
+				vectorParams[0].normalise();
+			}
+
 			return true;
 		}
 		case KEY_ORIGIN:
@@ -1783,9 +1679,10 @@ std::string  SpatialAnalysisFilter::getSpecificErrString(unsigned int code) cons
 {
 	const char *errStrings[] = {"",
 				TRANS("Spatial analysis aborted by user"),
-				TRANS("Insufficient memory to complete analysis"),
-				TRANS("Required range data not present"), 
 				TRANS("Insufficient memory for binomial. Reduce input size?"),
+				TRANS("Required range data not present"), 
+				TRANS("Unable to generate usable binomial grid"),
+
 				TRANS("Insufficient points to continue"),
 				TRANS("Unable to load file")
 				};
@@ -1832,7 +1729,7 @@ unsigned int SpatialAnalysisFilter::getRefreshEmitMask() const
 		case ALGORITHM_BINOMIAL:
 			return STREAM_TYPE_PLOT | STREAM_TYPE_DRAW;
 		case ALGORITHM_AXIAL_DF:
-			return STREAM_TYPE_IONS | STREAM_TYPE_PLOT | STREAM_TYPE_DRAW;
+			return STREAM_TYPE_PLOT ;
 		default:
 			return STREAM_TYPE_IONS;
 	}
@@ -2061,6 +1958,12 @@ bool SpatialAnalysisFilter::readState(xmlNodePtr &nodePtr, const std::string &st
 	{
 		if(XMLHelpGetProp(replaceFile,nodePtr,"file"))
 			return false;
+
+		//Convert the file from relative to abs as needed	
+		convertFileStringToAbsolute(stateFileDir, replaceFile);
+		//Convert to native format
+		replaceFile=convertFileStringToNative(replaceFile);
+		
 	
 		if(XMLHelpGetProp(replaceMode,nodePtr,"mode"))
 			return false;
@@ -2072,6 +1975,9 @@ bool SpatialAnalysisFilter::readState(xmlNodePtr &nodePtr, const std::string &st
 			return false;
 		if(replaceTolerance < 0)
 			return false;
+
+		if(XMLHelpGetProp(replaceMass, nodePtr,"replacemass"))
+			return false;
 	}
 	else
 		nodePtr=tmpNode;
@@ -2212,15 +2118,19 @@ void SpatialAnalysisFilter::resetParamsAsNeeded()
 	{
 		case ALGORITHM_AXIAL_DF:
 		{
-			if(vectorParams.size() !=2)
+			if(vectorParams.size() !=1)
 			{
 				size_t oldSize=vectorParams.size();
-				vectorParams.resize(2);
-
+				vectorParams.resize(1);
 				if(oldSize== 0)
-					vectorParams[0]=Point3D(0,0,0);
-				if(oldSize < 2)
-					vectorParams[1]=Point3D(0,0,1);
+					vectorParams[0]=Point3D(0,0,1);
+			}
+			else
+			{
+				if(vectorParams[0].sqrMag() <=std::numeric_limits<float>::epsilon())
+					vectorParams[0]= Point3D(0,0,1);
+				else
+					vectorParams[0].normalise();
 			}
 
 			if(scalarParams.size() !=1)
@@ -2247,48 +2157,6 @@ void SpatialAnalysisFilter::filterSelectedRanges(const vector<IonHit> &ions, boo
 		rngF->rangeByIon(ions,ionTargetEnabled,output);
 }
 
-//FIXME: Move to filter common
-//Scan input datastreams to build a single point vector,
-// which is a copy of the input points
-//Returns 0 on no error, otherwise nonzero
-size_t buildMonolithicPoints(const vector<const FilterStreamData *> &dataIn,
-				ProgressData &progress, size_t totalDataSize,
-				vector<Point3D> &p)
-{
-	//Build monolithic point set
-	//---
-	p.resize(totalDataSize);
-
-	size_t dataSize=0;
-
-	progress.filterProgress=0;
-	if(*Filter::wantAbort)
-		return FILTER_ERR_ABORT;
-
-	for(unsigned int ui=0;ui<dataIn.size() ;ui++)
-	{
-		switch(dataIn[ui]->getStreamType())
-		{
-			case STREAM_TYPE_IONS: 
-			{
-				const IonStreamData *d;
-				d=((const IonStreamData *)dataIn[ui]);
-
-				if(extendDataVector(p,d->data,	progress.filterProgress,
-						dataSize))
-					return ERR_ABORT_FAIL;
-
-				dataSize+=d->data.size();
-			}
-			break;	
-			default:
-				break;
-		}
-	}
-	//---
-
-	return 0;
-}
 			
 size_t SpatialAnalysisFilter::algorithmRDF(ProgressData &progress, size_t totalDataSize, 
 		const vector<const FilterStreamData *>  &dataIn, 
@@ -2359,7 +2227,7 @@ size_t SpatialAnalysisFilter::algorithmRDF(ProgressData &progress, size_t totalD
 			else if(errCode)
 			{
 				ASSERT(false);
-				return ERR_ABORT_FAIL;
+				return FILTER_ERR_ABORT;
 			}
 			
 			if(*Filter::wantAbort)
@@ -2376,8 +2244,8 @@ size_t SpatialAnalysisFilter::algorithmRDF(ProgressData &progress, size_t totalD
 	else
 	{
 		size_t errCode;
-		if((errCode=buildMonolithicPoints(dataIn,progress,totalDataSize,p)))
-			return errCode;
+		if((errCode=Filter::collateIons(dataIn,p,progress,totalDataSize)))
+			return FILTER_ERR_ABORT;
 		
 		progress.step=2;
 		progress.stepName=TRANS("Build");
@@ -2582,7 +2450,7 @@ size_t SpatialAnalysisFilter::algorithmRDF(ProgressData &progress, size_t totalD
 					densDenom=mean*SQRT_PI*gsl_sf_fact(ui);
 					float density;
 					density=densNumerator/densDenom;
-					density*=density*density; //Cubed
+					density=density*density*density; //Cubed
 
 					//--
 					//create the distribution
@@ -2726,7 +2594,7 @@ size_t SpatialAnalysisFilter::algorithmDensity(ProgressData &progress,
 	progress.step=1;
 	progress.stepName=TRANS("Collate");
 	progress.maxStep=3;
-	if((errCode=buildMonolithicPoints(dataIn,progress,totalDataSize,p)))
+	if((errCode=Filter::collateIons(dataIn,p,progress,totalDataSize)))
 		return errCode;
 
 	progress.step=2;
@@ -2779,6 +2647,8 @@ size_t SpatialAnalysisFilter::algorithmDensity(ProgressData &progress,
 				newD->data.resize(d->data.size());
 				if(stopMode == STOP_MODE_NEIGHBOUR)
 				{
+					unsigned int nProg=0;
+
 					bool spin=false;
 					#pragma omp parallel for shared(spin)
 					for(size_t uj=0;uj<d->data.size();uj++)
@@ -2811,14 +2681,15 @@ size_t SpatialAnalysisFilter::algorithmDensity(ProgressData &progress,
 						}
 
 						res.clear();
+						#pragma atomic
+						nProg++;
 						
 						//Update progress as needed
 						if(!curProg--)
 						{
 							#pragma omp critical 
 							{
-							n+=NUM_CALLBACK/(nnMax);
-							progress.filterProgress= (unsigned int)(((float)n/(float)totalDataSize)*100.0f);
+							progress.filterProgress= (unsigned int)(((float)nProg/(float)totalDataSize)*100.0f);
 							if(*Filter::wantAbort)
 								spin=true;
 							curProg=NUM_CALLBACK/(nnMax);
@@ -3015,8 +2886,8 @@ size_t SpatialAnalysisFilter::algorithmDensityFilter(ProgressData &progress,
 	progress.step=1;
 	progress.stepName=TRANS("Collate");
 	progress.maxStep=3;
-	if((errCode=buildMonolithicPoints(dataIn,progress,totalDataSize,p)))
-		return errCode;
+	if((errCode=Filter::collateIons(dataIn,p,progress,totalDataSize)))
+		return FILTER_ERR_ABORT;
 
 	progress.step=2;
 	progress.stepName=TRANS("Build");
@@ -3063,9 +2934,10 @@ size_t SpatialAnalysisFilter::algorithmDensityFilter(ProgressData &progress,
 				IonStreamData *newD = new IonStreamData;
 				newD->parent=this;
 
-				//Adjust this number to provide more update thanusual, because we
+				//Adjust this number to provide more update than usual, because we
 				//are not doing an o(1) task between updates; yes, it is a hack
-				unsigned int curProg=NUM_CALLBACK/(10*nnMax);
+				const unsigned int PROG_PER_PASS=NUM_CALLBACK/(10*nnMax);
+				unsigned int curProg=PROG_PER_PASS;
 				newD->data.reserve(d->data.size());
 				if(stopMode == STOP_MODE_NEIGHBOUR)
 				{
@@ -3113,11 +2985,11 @@ size_t SpatialAnalysisFilter::algorithmDensityFilter(ProgressData &progress,
 						{
 							#pragma omp critical 
 							{
-							n+=NUM_CALLBACK/(nnMax);
+							n+=PROG_PER_PASS;
 							progress.filterProgress= (unsigned int)(((float)n/(float)totalDataSize)*100.0f);
 							if(*Filter::wantAbort)
 								spin=true;
-							curProg=NUM_CALLBACK/(nnMax);
+							curProg=PROG_PER_PASS;
 							}
 						}
 					}
@@ -3263,6 +3135,8 @@ size_t SpatialAnalysisFilter::algorithmDensityFilter(ProgressData &progress,
 				break;
 		}
 	}
+	progress.filterProgress=100;
+
 	//If we have bad points, let the user know.
 	if(!badPts.empty())
 	{
@@ -3300,70 +3174,6 @@ size_t SpatialAnalysisFilter::algorithmDensityFilter(ProgressData &progress,
 	return 0;
 }
 
-void SpatialAnalysisFilter::createCylinder(DrawStreamData * &drawData,
-		SelectionDevice * &s) const
-{
-	//Origin + normal
-	ASSERT(vectorParams.size() == 2);
-	//Add drawable components
-	DrawCylinder *dC = new DrawCylinder;
-	dC->setOrigin(vectorParams[0]);
-	dC->setRadius(scalarParams[0]);
-	dC->setColour(0.5,0.5,0.5,0.3);
-	dC->setSlices(40);
-	dC->setLength(sqrtf(vectorParams[1].sqrMag())*2.0f);
-	dC->setDirection(vectorParams[1]);
-	dC->wantsLight=true;
-	drawData->drawables.push_back(dC);
-	
-		
-	//Set up selection "device" for user interaction
-	//====
-	//The object is selectable
-	dC->canSelect=true;
-	//Start and end radii must be the same (not a
-	//tapered cylinder)
-	dC->lockRadii();
-
-	s = new SelectionDevice(this);
-	SelectionBinding b;
-	//Bind the drawable object to the properties we wish
-	//to be able to modify
-
-	//Bind left + command button to move
-	b.setBinding(SELECT_BUTTON_LEFT,FLAG_CMD,DRAW_CYLINDER_BIND_ORIGIN,
-		BINDING_CYLINDER_ORIGIN,dC->getOrigin(),dC);	
-	b.setInteractionMode(BIND_MODE_POINT3D_TRANSLATE);
-	s->addBinding(b);
-
-	//Bind left + shift to change orientation
-	b.setBinding(SELECT_BUTTON_LEFT,FLAG_SHIFT,DRAW_CYLINDER_BIND_DIRECTION,
-		BINDING_CYLINDER_DIRECTION,dC->getDirection(),dC);	
-	b.setInteractionMode(BIND_MODE_POINT3D_ROTATE);
-	s->addBinding(b);
-
-	//Bind right button to changing position 
-	b.setBinding(SELECT_BUTTON_RIGHT,0,DRAW_CYLINDER_BIND_ORIGIN,
-		BINDING_CYLINDER_ORIGIN,dC->getOrigin(),dC);	
-	b.setInteractionMode(BIND_MODE_POINT3D_TRANSLATE);
-	s->addBinding(b);
-		
-	//Bind middle button to changing orientation
-	b.setBinding(SELECT_BUTTON_MIDDLE,0,DRAW_CYLINDER_BIND_DIRECTION,
-		BINDING_CYLINDER_DIRECTION,dC->getDirection(),dC);	
-	b.setInteractionMode(BIND_MODE_POINT3D_ROTATE);
-	s->addBinding(b);
-		
-	//Bind left button to changing radius
-	b.setBinding(SELECT_BUTTON_LEFT,0,DRAW_CYLINDER_BIND_RADIUS,
-		BINDING_CYLINDER_RADIUS,dC->getRadius(),dC);
-	b.setInteractionMode(BIND_MODE_FLOAT_TRANSLATE);
-	b.setFloatLimits(0,std::numeric_limits<float>::max());
-	s->addBinding(b); 
-	
-	//=====
-
-}
 
 size_t SpatialAnalysisFilter::algorithmAxialDf(ProgressData &progress, 
 		size_t totalDataSize, const vector<const FilterStreamData *>  &dataIn, 
@@ -3372,189 +3182,43 @@ size_t SpatialAnalysisFilter::algorithmAxialDf(ProgressData &progress,
 	//Need bins to perform histogram
 	ASSERT(numBins);
 
+	//Collate all the ions into a single array
+	//--
 	progress.step=1;
-	progress.stepName=TRANS("Extract");
+	progress.stepName=TRANS("Collate");
 	progress.filterProgress=0;
-	progress.maxStep=4;
-
-	//Ions inside the selected cylinder,
-	// which are to be used as source points for dist. function query
-	vector<IonHit> ionsInside;
-	{
-		//Crop out a cylinder as the source data 
-		CropHelper cropHelp(totalDataSize, CROP_CYLINDER_INSIDE_AXIAL,
-				vectorParams,scalarParams);
-		
-		float minProg,maxProg;
-		size_t cumulativeCount=0;		
-		//Run cropping over the input datastreams
-		for(size_t ui=0; ui<dataIn.size();ui++)
-		{
-			if( dataIn[ui]->getStreamType() == STREAM_TYPE_IONS)
-			{
-				const IonStreamData* d;
-				d=(const IonStreamData *)dataIn[ui];
-				size_t errCode;
-				minProg=cumulativeCount/(float)totalDataSize;
-				cumulativeCount+=d->data.size();
-				maxProg=cumulativeCount/(float)totalDataSize;
-
-				errCode=cropHelp.runFilter(d->data,ionsInside,
-					minProg,maxProg,progress.filterProgress);
-			
-				if(errCode == ERR_CROP_INSUFFICIENT_MEM)
-					return INSUFFICIENT_SIZE_ERR;
-				else if(errCode)
-				{
-					//If we fail, abort, but we should use
-					// the appropriate error code
-					ASSERT(errCode == ERR_CROP_CALLBACK_FAIL);
-					break;
-				}
-			}
-
-		
-		}
-	}
-
-	if(*Filter::wantAbort)
-		return ERR_ABORT_FAIL;
-
-	//Now, the ions outside the targeting volume may be reduced 
-	vector<IonHit> ionsOutside;
-	ionsOutside.resize(totalDataSize);
-	//Build complete set of input data
-	{
-	size_t offset=0;
-	
-	for(size_t ui=0;ui<dataIn.size();ui++)
-	{
-		if(dataIn[ui]->getStreamType() != STREAM_TYPE_IONS)
-			continue;
-
+	progress.maxStep=3;
 
-		//Copy input data in its entirety into a single vector
-		const IonStreamData *d;
-		d=(const IonStreamData*)dataIn[ui];
-		for(size_t uj=0;uj<d->data.size();uj++)
-		{
-			ionsOutside[offset]=d->data[uj];
-			offset++;
-		}
+	vector<IonHit> collatedIons;
+	collateIons(dataIn,collatedIons,progress);
+	//--
 
-	}
-	}
 
+	//Build the KD tree
+	//--
 	progress.step=2;
-	progress.stepName=TRANS("Reduce");
-	progress.filterProgress=0;
-
-	//TODO: Improve progress
-	switch(stopMode)
-	{
-		case STOP_MODE_RADIUS:
-		{
-			//In this case we can pull a small trick - 
-			// do an O(n) pass to crop out the data we want, before doing the O(nlogn) tree build.
-			// We however must build a slightly larger cylinder to do the crop
-
-			vector<Point3D> vP;
-			vector<float> sP;
-			vP=vectorParams;
-			sP=scalarParams;
-
-			//Expand radius to encapsulate cylinder contents+dMax
-			sP[0]+= distMax;
-			//Similarly expand axis (vp[0] is origin, vp[1] is zis)
-			vP[1].extend(distMax);
-
-			//Crop out a cylinder as the source data 
-			CropHelper cropHelp(totalDataSize, CROP_CYLINDER_INSIDE_AXIAL,
-					vP,sP);
-
-			vector<IonHit> tmp;
-			size_t errCode=cropHelp.runFilter(ionsOutside,tmp,0,100,progress.filterProgress);
-
-			switch(errCode)
-			{
-				case 0:
-					break;
-				case ERR_CROP_INSUFFICIENT_MEM:
-					return INSUFFICIENT_SIZE_ERR;
-				case ERR_CROP_CALLBACK_FAIL:
-					return ERR_ABORT_FAIL;
-				default: 
-					ASSERT(false);
-					return ERR_ABORT_FAIL;
-
-			}
-			tmp.swap(ionsOutside);
-			break;
-		}
-		case STOP_MODE_NEIGHBOUR:
-		{
-			//Nothing to do here!
-			break;
-		}
-		default:
-			ASSERT(false);
-	}
-
-	//We only need to slice down the data if required
-	if(haveRangeParent)
-	{
-
-#pragma omp parallel
-		{
-		//For the ions "inside", we only care about the 
-		// source data, not the target. Filter further using this info
-		#pragma omp task
-		{
-		bool sourceReduce;
-		sourceReduce=((size_t)std::count(ionSourceEnabled.begin(),ionSourceEnabled.end(),true)
-						!=ionSourceEnabled.size());
-		if(sourceReduce)
-		{
-			vector<IonHit> tmp;
-			filterSelectedRanges(ionsInside,true,rngF,tmp);
-			ionsInside.swap(tmp);
-		}
-		}
-		
-		#pragma omp task
-		{
-		bool targetReduce;
-		targetReduce=((size_t)std::count(ionTargetEnabled.begin(),ionTargetEnabled.end(),true)
-						!=ionTargetEnabled.size() );
-		if(targetReduce)
-		{
-			vector<IonHit> tmp;
-			filterSelectedRanges(ionsOutside,false,rngF,tmp);
-			ionsOutside.swap(tmp);
-		}
-		}
-		}
-	}
-
-	progress.step=3;
 	progress.stepName=TRANS("Build");
 	progress.filterProgress=0;
 	
-	//Strip away the real value information, leaving just point data
-	vector<Point3D> src,dest;
-	IonHit::getPoints(ionsInside,src);
-	ionsInside.clear();
-	
-	IonHit::getPoints(ionsOutside,dest);
-	ionsOutside.clear();
-
-	K3DTree tree;
-
-	tree.buildByRef(dest);
+	K3DTreeMk2 tree;
+	tree.resetPts(collatedIons,false);
+	tree.build();
 	if(*Filter::wantAbort)
 		return FILTER_ERR_ABORT;
+	//--
+
+	//Create an array of source points
+	//--
+	//FIXME:  Allow for range selection
+	vector<Point3D> srcPoints;
+	srcPoints.resize(collatedIons.size());
+#pragma omp parallel for
+	for(unsigned int ui=0;ui<srcPoints.size();ui++)
+		srcPoints[ui]=collatedIons[ui].getPosRef();
 
-	progress.step=4;
+	//--
+
+	progress.step=3;
 	progress.stepName=TRANS("Compute");
 	progress.filterProgress=0;
 	unsigned int *histogram = new unsigned int[numBins];
@@ -3570,10 +3234,10 @@ size_t SpatialAnalysisFilter::algorithmAxialDf(ProgressData &progress,
 	{
 		case STOP_MODE_NEIGHBOUR:
 		{
-			Point3D axisNormal=vectorParams[1];
+			Point3D axisNormal=vectorParams[0];
 			axisNormal.normalise();
 
-			errCode=generate1DAxialNNHist(src,tree,axisNormal, histogram,
+			errCode=generate1DAxialNNHist(srcPoints ,tree,axisNormal, histogram,
 					binWidth,nnMax,numBins,&progress.filterProgress,
 					*Filter::wantAbort);
 
@@ -3581,10 +3245,10 @@ size_t SpatialAnalysisFilter::algorithmAxialDf(ProgressData &progress,
 		}
 		case STOP_MODE_RADIUS:
 		{
-			Point3D axisNormal=vectorParams[1];
+			Point3D axisNormal=vectorParams[0];
 			axisNormal.normalise();
 
-			errCode=generate1DAxialDistHist(src,tree,axisNormal, histogram,
+			errCode=generate1DAxialDistHist(srcPoints, tree,axisNormal, histogram,
 					distMax,numBins,&progress.filterProgress,*Filter::wantAbort);
 
 			histOK = (errCode ==0);
@@ -3657,25 +3321,6 @@ size_t SpatialAnalysisFilter::algorithmAxialDf(ProgressData &progress,
 
 	delete[] histogram;
 
-	//Propagate non-ion/range data
-	for(unsigned int ui=0;ui<dataIn.size() ;ui++)
-	{
-		switch(dataIn[ui]->getStreamType())
-		{
-			case STREAM_TYPE_IONS:
-			case STREAM_TYPE_RANGE: 
-				//Do not propagate ranges, or ions
-			break;
-			default:
-				getOut.push_back(dataIn[ui]);
-				break;
-		}
-		
-	}
-
-	//create the selection device for this algorithm
-	createDevice(getOut);	
-
 	return 0;
 }
 
@@ -3691,7 +3336,8 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 	progress.maxStep=2;
 
 	//Merge the ions form the incoming streams
-	Filter::collateIons(dataIn,ions,progress,totalDataSize);
+	if(Filter::collateIons(dataIn,ions,progress,totalDataSize))
+		return FILTER_ERR_ABORT;
 
 	//Tell user we are on next step
 	progress.step++;
@@ -3702,6 +3348,8 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 
 	SEGMENT_OPTION segmentOpts;
 
+	//Set binomial parameters, including block
+	// generation method (currently only AUTO_BRICK)
 	segmentOpts.nIons=numIonsSegment;
 	segmentOpts.strategy=BINOMIAL_SEGMENT_AUTO_BRICK;
 	segmentOpts.extrusionDirection=extrusionDirection;
@@ -3709,15 +3357,15 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 
 	vector<GRID_ENTRY> gridEntries;
 
+	//work out which ions we enabled
 	vector<size_t> selectedIons;
-
 	for(size_t ui=0;ui<ionSourceEnabled.size();ui++)
 	{
 		if(ionSourceEnabled[ui])
 			selectedIons.push_back(ui);
 	}
 
-
+	//generate the blocks
 	errCode=countBinnedIons(ions,rngF,selectedIons,segmentOpts,gridEntries);
 
 	switch(errCode)
@@ -3732,6 +3380,17 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 	}
 
 
+
+
+	//Vector of ion frequencies in histogram of segment counts, 
+	// each element in vector is for each ion type
+	BINOMIAL_HIST binHist;
+	genBinomialHistogram(gridEntries,selectedIons.size(),binHist);
+
+	//If the histogram is empty, we cannot do any more
+	if(!gridEntries.size())
+		return ERR_BINOMIAL_BIN_FAIL;
+
 	//If the user wants to see the overlaid grid, show this
 	if(showGridOverlay)
 	{
@@ -3756,16 +3415,6 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 		getOut.push_back(draw);
 	}
 
-
-	//Vector of ion frequencies in histogram of segment counts, 
-	// each element in vector is for each ion type
-	BINOMIAL_HIST binHist;
-	genBinomialHistogram(gridEntries,selectedIons.size(),binHist);
-
-	//If the histogram is empty, we cannot do any more
-	if(!gridEntries.size())
-		return ERR_BINOMIAL_BIN_FAIL;
-
 	BINOMIAL_STATS binStats;
 	computeBinomialStats(gridEntries,binHist,selectedIons.size(),binStats);
 
@@ -3812,6 +3461,7 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 		return 0;
 
 
+	//Show the experimental frequency information
 	for(size_t ui=0;ui<binHist.mapIonFrequencies.size(); ui++)
 	{
 		if(binHist.mapIonFrequencies[ui].empty())
@@ -3824,9 +3474,9 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 		plt->parent=this;
 		plt->plotMode=PLOT_MODE_1D;
 		plt->plotStyle=PLOT_LINE_STEM;
-		plt->xLabel=TRANS("Block size");
+		plt->xLabel=TRANS("Ions in Block");
 		if(showNormalisedBinomialFrequencies)
-			plt->yLabel=TRANS("Rel. Frequency");
+			plt->yLabel=TRANS("Probability");
 		else
 			plt->yLabel=TRANS("Count");
 
@@ -3871,7 +3521,13 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 
 	if(!showTheoreticFrequencies)
 		return 0;
-	for(size_t ui=0;ui<binHist.theoreticNormalisedFrequencies.size(); ui++)
+
+	vector<std::map<unsigned int, double> > *mapTarget;
+	if(showNormalisedBinomialFrequencies)
+		mapTarget = &binHist.theoreticNormalisedFrequencies;
+	else
+		mapTarget = &binHist.theoreticFrequencies;
+	for(size_t ui=0;ui<mapTarget->size(); ui++)
 	{
 		if(binHist.theoreticFrequencies[ui].empty())
 			continue;
@@ -3882,12 +3538,12 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 		plt->index=ui + binHist.mapIonFrequencies.size();
 		plt->parent=this;
 		plt->plotMode=PLOT_MODE_1D;
-		plt->plotStyle=PLOT_LINE_STEM;
-		plt->xLabel=TRANS("Block size");
+		plt->plotStyle=PLOT_LINE_STEPS;
+		plt->xLabel=TRANS("Ions in Block");
 		if(showNormalisedBinomialFrequencies)
-			plt->yLabel=TRANS("Rel. Frequency");
+			plt->yLabel=TRANS("Probability");
 		else
-			plt->yLabel=TRANS("Count");
+			plt->yLabel=TRANS("Count (blocks)");
 
 		//set the title
 		string ionName;
@@ -3901,26 +3557,15 @@ size_t SpatialAnalysisFilter::algorithmBinomial(ProgressData &progress,
 		plt->r=colour.red;
 		plt->g=colour.green;
 		plt->b=colour.blue;
-		plt->xyData.resize(binHist.theoreticFrequencies[ui].size());
+		plt->xyData.resize((*mapTarget)[ui].size());
 
+		//for each species, record the number of ions
 		size_t offset=0;
-		if(showNormalisedBinomialFrequencies)
+		for(map<unsigned int, double>::const_iterator it=(*mapTarget)[ui].begin();
+				it!=(*mapTarget)[ui].end();++it)
 		{
-			for(map<unsigned int, double>::const_iterator it=binHist.theoreticNormalisedFrequencies[ui].begin();
-					it!=binHist.theoreticNormalisedFrequencies[ui].end();++it)
-			{
-				plt->xyData[offset]=std::make_pair(it->first,it->second);
-				offset++;
-			}
-		}
-		else
-		{
-			for(map<unsigned int, double >::const_iterator it=binHist.theoreticFrequencies[ui].begin();
-					it!=binHist.theoreticFrequencies[ui].end();++it)
-			{
-				plt->xyData[offset]=std::make_pair(it->first,it->second);
-				offset++;
-			}
+			plt->xyData[offset]=std::make_pair(it->first,it->second);
+			offset++;
 		}
 
 		cacheAsNeeded(plt);
@@ -4063,7 +3708,7 @@ size_t SpatialAnalysisFilter::algorithmLocalConcentration(ProgressData &progress
 			}
 
 			if(*Filter::wantAbort)
-				return false;
+				return ERR_ABORT_FAIL;
 		}
 
 		ASSERT(curOffset == pSource.size());
@@ -4115,10 +3760,10 @@ size_t SpatialAnalysisFilter::algorithmLocalConcentration(ProgressData &progress
 					dCount++;
 			}
 			//--
+		
 			
-			//compute concentration
 			if( nCount + dCount )
-				pSource[ui].setMassToCharge((float)nCount/(float)(nCount + dCount)*100.0f);
+				pSource[ui].setMassToCharge((float)nCount/(float)(dCount)*100.0f);
 			else
 				pSource[ui].setMassToCharge(-1.0f);
 			
@@ -4230,11 +3875,8 @@ size_t SpatialAnalysisFilter::algorithmLocalConcentration(ProgressData &progress
 				}
 
 				//distance between search pt and found pt
-				float sqrDistance;
-				sqrDistance = searchTree.getPtRef(ptIdx).sqrDist(pSource[ui].getPosRef());
 
-				if(sqrDistance > DISTANCE_EPSILON)
-					ptsFound.insert(ptIdx);
+				ptsFound.insert(ptIdx);
 			}
 
 
@@ -4244,8 +3886,14 @@ size_t SpatialAnalysisFilter::algorithmLocalConcentration(ProgressData &progress
 			//Count the number of numerator and denominator ions, using the masses we set aside earlier
 			for(set<size_t>::iterator it=ptsFound.begin(); it!=ptsFound.end(); ++it)
 			{
-				float ionMass;
+
 				//check that the distance is non-zero, to force no self-matching
+				float sqrDistance;
+				sqrDistance = searchTree.getPtRef(*it).sqrDist(pSource[ui].getPosRef());
+				if(sqrDistance < DISTANCE_EPSILON)
+					continue;
+
+				float ionMass;
 				ionMass = dataMasses[searchTree.getOrigIndex(*it)];
 
 				unsigned int ionID;
@@ -4260,7 +3908,7 @@ size_t SpatialAnalysisFilter::algorithmLocalConcentration(ProgressData &progress
 			}
 
 			//compute concentration
-			pSource[ui].setMassToCharge((float)nCount/(float)(nCount + dCount)*100.0f);
+			pSource[ui].setMassToCharge((float)nCount/(float)(dCount)*100.0f);
 
 #ifdef _OPENMP 
 			if(!omp_get_thread_num())
@@ -4310,7 +3958,7 @@ size_t SpatialAnalysisFilter::algorithmLocalConcentration(ProgressData &progress
 		outData->estimateIonParameters(dataIn);
 		//override colour to grey
 		outData->g = outData->b = outData->r = 0.5;
-		outData->valueType = "Relative Conc. (%)";
+		outData->valueType = TRANS("Relative Conc. (%)");
 		outData->data.swap(pSource);
 		cacheAsNeeded(outData);
 
@@ -4326,9 +3974,11 @@ bool densityPairTest();
 bool nnHistogramTest();
 bool rdfPlotTest();
 bool axialDistTest();
-bool replaceTest();
+bool replaceIntersectAndUnionTest();
 bool localConcTestRadius();
 bool localConcTestNN();
+bool replaceSubtractTest();
+bool replaceUnionTest();
 
 bool SpatialAnalysisFilter::runUnitTests()
 {
@@ -4343,8 +3993,15 @@ bool SpatialAnalysisFilter::runUnitTests()
 
 	if(!axialDistTest())
 		return false;
-	if(!replaceTest())
+	if(!replaceIntersectAndUnionTest())
+		return false;
+
+	if(!replaceSubtractTest())
+		return false;
+
+	if(!replaceUnionTest())
 		return false;
+
 	if(!localConcTestRadius())
 		return false;
 
@@ -4598,38 +4255,115 @@ bool axialDistTest()
 	delete d; 
 	streamIn.clear();
 	
-	//1 plot, one set of ions	
-	TEST(streamOut.size() == 2,"stream count");
+	//1 plot
+	TEST(streamOut.size() == 1,"stream count");
+	TEST(streamOut[0]->getStreamType() == STREAM_TYPE_PLOT,"stream type");
+	delete streamOut[0];
 
 
-	size_t streamMask=0;
+	return true;
+}
 
-	for(size_t ui=0;ui<streamOut.size();ui++)
+bool replaceIntersectAndUnionTest()
+{
+	std::string ionFile=createTmpFilename(NULL,".pos");
+		
+	vector<IonHit> ions;
+	const unsigned int NIONS=10;
+	for(unsigned int ui=0;ui<NIONS;ui++)
+		ions.push_back(IonHit(Point3D(ui,ui,ui),1));
+
+	IonHit::makePos(ions,ionFile.c_str());
+	
+	for(unsigned int ui=0;ui<NIONS;ui++)
+		ions[ui].setMassToCharge(2);
+
+	IonStreamData *d = new IonStreamData;
+	d->data.swap(ions);
+
+	//Create a spatial analysis filter
+	SpatialAnalysisFilter *f=new SpatialAnalysisFilter;
+	f->setCaching(false);	
+	//Set it to do a union calculation 
+	bool needUp;
+	string s;
+	s=TRANS(SPATIAL_ALGORITHMS[ALGORITHM_REPLACE]);
+	TEST(f->setProperty(KEY_ALGORITHM,s,needUp),"Set prop");
+	TEST(f->setProperty(KEY_REPLACE_FILE,ionFile,needUp),"Set prop");
+	s="1";
+	TEST(f->setProperty(KEY_REPLACE_VALUE,s,needUp),"Set prop");
+
+	vector<unsigned int> opVec;
+	opVec.push_back(REPLACE_MODE_INTERSECT);
+	opVec.push_back(REPLACE_MODE_UNION);
+	
+	ProgressData p;
+	vector<const FilterStreamData*> streamIn,streamOut;
+	streamIn.push_back(d);
+	for(unsigned int opId=0;opId<opVec.size();opId++)
 	{
-		streamMask|=streamOut[ui]->getStreamType();
-		delete streamOut[ui];
-	}
+		s=TRANS(REPLACE_ALGORITHMS[opVec[opId]]);
+		TEST(f->setProperty(KEY_REPLACE_ALGORITHM,s,needUp),"Set prop");
 
+		//Do the refresh
+		TEST(!f->refresh(streamIn,streamOut,p),"refresh OK");
 
+		TEST(streamOut.size() == 1,"stream count");
+		TEST(streamOut[0]->getStreamType() == STREAM_TYPE_IONS,"stream type");
+		TEST(streamOut[0]->getNumBasicObjects() == NIONS,"Number objects");
 
-	TEST(streamMask == ( STREAM_TYPE_DRAW | STREAM_TYPE_PLOT) , "Stream type checking");
+		//we should have taken the mass-to-charge from the file
+		const IonStreamData *outIons = (const IonStreamData*)streamOut[0];
+		for(unsigned int ui=0;ui<NIONS; ui++)
+		{
+			ASSERT(outIons->data[ui].getMassToCharge() == 1); 
+		}
+		delete streamOut[0];
+		streamOut.clear();
+	}
+	delete f;
+	delete d;
+	
+	wxRemoveFile(ionFile);
 
+	
 	return true;
 }
 
-bool replaceTest()
+bool replaceSubtractTest()
 {
 	std::string ionFile=createTmpFilename(NULL,".pos");
 		
 	vector<IonHit> ions;
 	const unsigned int NIONS=10;
+	const unsigned int DIFF_COUNT=5;	
 	for(unsigned int ui=0;ui<NIONS;ui++)
-		ions.push_back(IonHit(Point3D(ui,ui,ui),1));
+	{
+		IonHit h;
+		h = IonHit(Point3D(ui,ui,ui),1);
 
-	IonHit::makePos(ions,ionFile.c_str());
-	
+		//make some ions different to the (x,x,x) pattern
+		if(ui < DIFF_COUNT)
+		{
+			h.setPos(h.getPos() - Point3D(0,0,100));
+			ions.push_back(h);
+		}
+		else
+			ions.push_back(h);
+	}
+
+	vector<IonHit> tmpI;
 	for(unsigned int ui=0;ui<NIONS;ui++)
-		ions[ui].setMassToCharge(2);
+	{
+		if(ions[ui][2] < 0 )
+		{
+			tmpI.push_back(ions[ui]);
+			tmpI.back().setMassToCharge(2);
+		}
+	}
+
+	IonHit::makePos(tmpI,ionFile.c_str());
+	tmpI.clear();
 
 	IonStreamData *d = new IonStreamData;
 	d->data.swap(ions);
@@ -4638,19 +4372,81 @@ bool replaceTest()
 	SpatialAnalysisFilter *f=new SpatialAnalysisFilter;
 	f->setCaching(false);	
 	
-	//Set it to do a union calculation 
+	//Set it to do a subtraction calculation 
 	bool needUp;
 	string s;
 	s=TRANS(SPATIAL_ALGORITHMS[ALGORITHM_REPLACE]);
 	TEST(f->setProperty(KEY_ALGORITHM,s,needUp),"Set prop");
 	TEST(f->setProperty(KEY_REPLACE_FILE,ionFile,needUp),"Set prop");
-	s=TRANS(REPLACE_ALGORITHMS[REPLACE_MODE_INTERSECT]);
+	s=TRANS(REPLACE_ALGORITHMS[REPLACE_MODE_SUBTRACT]);
 	TEST(f->setProperty(KEY_REPLACE_ALGORITHM,s,needUp),"Set prop");
+
+	//Do the refresh
+	ProgressData p;
+	vector<const FilterStreamData*> streamIn,streamOut;
+	streamIn.push_back(d);
+	TEST(!f->refresh(streamIn,streamOut,p),"refresh OK");
+	delete f;
+	delete d;
+	streamIn.clear();
+
+	TEST(streamOut.size() == 1,"stream count");
+	TEST(streamOut[0]->getStreamType() == STREAM_TYPE_IONS,"stream type");
+	TEST(streamOut[0]->getNumBasicObjects() == DIFF_COUNT,"Number objects");
+
+	//we should have taken the mass-to-charge from the original data,
+	// not the file
+	const IonStreamData *outIons = (const IonStreamData*)streamOut[0];
+	for(unsigned int ui=0;ui<outIons->getNumBasicObjects(); ui++)
+	{
+		ASSERT(outIons->data[ui].getMassToCharge() == 1); 
+		ASSERT(outIons->data[ui].getPos()[2] >= 0); 
+	}
+
+	wxRemoveFile(ionFile);
+
+	delete streamOut[0];
+	
+	return true;
+}
+
+bool replaceUnionTest()
+{
+	std::string ionFile=createTmpFilename(NULL,".pos");
 	
+	//"B" dataset	
+	vector<IonHit> ions;
+	ions.push_back(IonHit(Point3D(0,0,0),1));
+	ions.push_back(IonHit(Point3D(1,0,1),1));
+	ions.push_back(IonHit(Point3D(0,1,1),1));
+
+	IonHit::makePos(ions,ionFile.c_str());
+	ions.clear();
+
+	//"A" dataset	
+	ions.push_back(IonHit(Point3D(0,0,0),2));
+	ions.push_back(IonHit(Point3D(1,0,-1),2));
+	ions.push_back(IonHit(Point3D(0,1,-1),2));
+
+
+	IonStreamData *d = new IonStreamData;
+	d->data.swap(ions);
+
+	//Create a spatial analysis filter
+	SpatialAnalysisFilter *f=new SpatialAnalysisFilter;
+	f->setCaching(false);	
+	
+	//Set it to do a union calculation 
+	bool needUp;
+	string s;
+	s=TRANS(SPATIAL_ALGORITHMS[ALGORITHM_REPLACE]);
+	TEST(f->setProperty(KEY_ALGORITHM,s,needUp),"Set prop");
+	TEST(f->setProperty(KEY_REPLACE_FILE,ionFile,needUp),"Set prop");
+	s=TRANS(REPLACE_ALGORITHMS[REPLACE_MODE_UNION]);
+	TEST(f->setProperty(KEY_REPLACE_ALGORITHM,s,needUp),"Set prop");
 	s="1";
 	TEST(f->setProperty(KEY_REPLACE_VALUE,s,needUp),"Set prop");
 
-
 	//Do the refresh
 	ProgressData p;
 	vector<const FilterStreamData*> streamIn,streamOut;
@@ -4662,14 +4458,16 @@ bool replaceTest()
 
 	TEST(streamOut.size() == 1,"stream count");
 	TEST(streamOut[0]->getStreamType() == STREAM_TYPE_IONS,"stream type");
-	TEST(streamOut[0]->getNumBasicObjects() == NIONS,"Number objects");
+	TEST(streamOut[0]->getNumBasicObjects() == 5,"Number objects");
 
-	//we should have taken the mass-to-charge from the file
+	//There should be
 	const IonStreamData *outIons = (const IonStreamData*)streamOut[0];
-	for(unsigned int ui=0;ui<NIONS; ui++)
+	float sumV=0;
+	for(unsigned int ui=0;ui<outIons->getNumBasicObjects(); ui++)
 	{
-		ASSERT(outIons->data[ui].getMassToCharge() == 1); 
+		sumV+=outIons->data[ui].getMassToCharge();
 	}
+	TEST( EQ_TOL(sumV,7.0f),"mass-to-charge check");
 
 	wxRemoveFile(ionFile);
 
@@ -4678,8 +4476,7 @@ bool replaceTest()
 	return true;
 }
 
-
-//--- Local concentration tests --
+//--- Local chemistry tests --
 const IonStreamData *createLCIonStream()
 {
 	IonStreamData*d = new IonStreamData;
@@ -4709,6 +4506,8 @@ const IonStreamData *createLCIonStream()
 	return d;
 }
 
+//Create a single range stream with a range file ~ as follows:
+// Ion A: [0.5 1.5]  Ion B: [1.5 2.5]  Ion C: [2.5 3.5]
 RangeStreamData *createLCRangeStream()
 {
 	//Create a fake rangefile
@@ -4732,6 +4531,8 @@ RangeStreamData *createLCRangeStream()
 	return r;
 }
 
+//Create a spatial analysis filter that computes
+// A (source) B (numerator) C(denominator)
 SpatialAnalysisFilter *createLCTestSpatialFilter(const vector<const FilterStreamData *>  &in)
 {
 	//Create a spatial analysis filter
@@ -4740,12 +4541,12 @@ SpatialAnalysisFilter *createLCTestSpatialFilter(const vector<const FilterStream
 	//inform it about the rangefile	
 	vector< const FilterStreamData *> out;
 	f->initFilter(in,out);
-	//Set Filter to perform local concentration analysis 
+	//Set Filter to perform local chemistry analysis 
 	// - dist termination,
 	//---
 	bool needUp;
 	string s;
-	s=TRANS(SPATIAL_ALGORITHMS[ALGORITHM_LOCAL_CONCENTRATION]);
+	s=TRANS(SPATIAL_ALGORITHMS[ALGORITHM_LOCAL_CHEMISTRY]);
 	if(!(f->setProperty(KEY_ALGORITHM,s,needUp)) )
 	{
 		cerr << "Failed Set prop (algorithm)";
@@ -4814,7 +4615,7 @@ bool localConcTestRadius()
 	IonStreamData *ionD = (IonStreamData *)streamOut[0];
 
 	float localConc = ionD->data[0].getMassToCharge(); 
-	TEST(EQ_TOL(localConc,1.0/3.0*100.0),"Local Concentration check");
+	TEST(EQ_TOL(localConc,1.0/2.0*100.0),"Local Chemistry check");
 
 	delete rngStream->rangeFile;
 
@@ -4867,7 +4668,7 @@ bool localConcTestNN()
 	IonStreamData *ionD = (IonStreamData *)streamOut[0];
 
 	float localConc = ionD->data[0].getMassToCharge(); 
-	TEST(EQ_TOL(localConc,1.0/3.0*100.0),"Local Concentration check");
+	TEST(EQ_TOL(localConc,1.0/2.0*100.0),"Local Chemistry check");
 
 
 	delete rngStream->rangeFile;
diff --git a/src/backend/filters/spatialAnalysis.h b/src/backend/filters/spatialAnalysis.h
index 67f85af..0804c9e 100644
--- a/src/backend/filters/spatialAnalysis.h
+++ b/src/backend/filters/spatialAnalysis.h
@@ -165,16 +165,6 @@ class SpatialAnalysisFilter : public Filter
 		size_t algorithmLocalConcentration(ProgressData &progress, size_t totalDataSize, 
 			const std::vector<const FilterStreamData *>  &dataIn, 
 			std::vector<const FilterStreamData * > &getOut, const RangeFile *rngF);
-		//Create a 3D manipulable cylinder as an output drawable
-		// using the parameters stored inside the vector/scalar params
-		// both parameters are outputs from this function
-		void createCylinder(DrawStreamData* &d, SelectionDevice * &s) const;
-
-
-		//Wrapper routeine to create the appropriate selection
-		// device for whatever algorithm is in use; device list will be appended to
-		// and if needed, output object will be generated 
-		void createDevice(std::vector<const FilterStreamData *> &getOut);
 
 
 		//From the given input ions, filter them down using the user
diff --git a/src/backend/filters/spectrumPlot.cpp b/src/backend/filters/spectrumPlot.cpp
index b24a2ed..3bde2a2 100644
--- a/src/backend/filters/spectrumPlot.cpp
+++ b/src/backend/filters/spectrumPlot.cpp
@@ -151,6 +151,7 @@ unsigned int SpectrumPlotFilter::refresh(const std::vector<const FilterStreamDat
 		//Only report the spectrum plot
 		propagateCache(getOut);
 
+		progress.filterProgress=100;
 		return 0;
 	}
 
@@ -517,6 +518,8 @@ unsigned int SpectrumPlotFilter::refresh(const std::vector<const FilterStreamDat
 	
 	getOut.push_back(d);
 
+	progress.filterProgress=100;
+
 	return 0;
 }
 
@@ -1317,8 +1320,11 @@ IonStreamData *synDataPoints(const unsigned int span[], unsigned int numPts)
 
 bool countTest()
 {
-	using std::auto_ptr;
-	auto_ptr<IonStreamData> d;
+#ifdef __HAVE_CPP11__
+	std::unique_ptr<IonStreamData> d;
+#else
+	std::auto_ptr<IonStreamData> d;
+#endif
 	const unsigned int VOL[]={
 				10,10,10
 				};
diff --git a/src/backend/filters/transform.cpp b/src/backend/filters/transform.cpp
index e5ba4c0..e5350a6 100644
--- a/src/backend/filters/transform.cpp
+++ b/src/backend/filters/transform.cpp
@@ -777,10 +777,15 @@ unsigned int TransformFilter::refresh(const std::vector<const FilterStreamData *
 									d->data.push_back(src->data[uj]);
 							}
 
-							d->estimateIonParameters(src);
-							cacheAsNeeded(d);
-							
-							getOut.push_back(d);
+							if(d->data.size())
+							{
+								d->estimateIonParameters(src);
+								cacheAsNeeded(d);
+								
+								getOut.push_back(d);
+							}
+							else
+								delete d;
 						}
 					}
 				}
@@ -998,8 +1003,10 @@ unsigned int TransformFilter::refresh(const std::vector<const FilterStreamData *
 					break;
 				}
 			
+			}
 		}
-		}
+
+		progress.filterProgress=100;
 	}
 	else
 	{
@@ -1016,15 +1023,7 @@ unsigned int TransformFilter::refresh(const std::vector<const FilterStreamData *
 		//Set up output ion stream 
 		IonStreamData *d=new IonStreamData;
 		d->parent=this;
-		
-		//TODO: Better output colouring/size
-		//Set up ion metadata
-		d->r = 0.5;
-		d->g = 0.5;
-		d->b = 0.5;
-		d->a = 0.5;
-		d->ionSize = 2.0;
-		d->valueType=TRANS("Mass-to-Charge (Da/e)");
+		d->estimateIonParameters(dataIn); // get best meta data we can
 
 		size_t curPos=0;
 		
@@ -1233,7 +1232,7 @@ void TransformFilter::getProperties(FilterPropGroup &propertyList) const
 				p.name=TRANS("Origin");
 				p.data=tmpStr;
 				p.type=PROPERTY_TYPE_POINT3D;
-				p.helpText=TRANS("Origin of scale trasnform");
+				p.helpText=TRANS("Origin of scale transform");
 				propertyList.addProperty(p,curGroup);
 			}
 			
@@ -1260,7 +1259,7 @@ void TransformFilter::getProperties(FilterPropGroup &propertyList) const
 				p.name=TRANS("Origin");
 				p.data=tmpStr;
 				p.type=PROPERTY_TYPE_POINT3D;
-				p.helpText=TRANS("Origin of scale trasnform");
+				p.helpText=TRANS("Origin of scale transform");
 				propertyList.addProperty(p,curGroup);
 			}
 			
@@ -1269,7 +1268,7 @@ void TransformFilter::getProperties(FilterPropGroup &propertyList) const
 			p.key=KEY_SCALEFACTOR_ANISOTROPIC;
 			p.name=TRANS("Scale Fact.");
 			p.data=tmpStr;
-			p.type=PROPERTY_TYPE_REAL;
+			p.type=PROPERTY_TYPE_POINT3D;
 			p.helpText=TRANS("Enlargement factor for scaling around origin");
 			propertyList.addProperty(p,curGroup);
 
@@ -1526,6 +1525,11 @@ bool TransformFilter::setProperty(  unsigned int key,
 		case KEY_CROP_MINIMUM:
 		{
 			ASSERT(scalarParams.size() ==2);
+			float tmp;
+			if(stream_cast(tmp,value) || tmp >=scalarParams[1])
+				return false;
+
+
 			if(!applyPropertyNow(scalarParams[0],value,needUpdate))
 				return false;
 			break;
@@ -1533,6 +1537,9 @@ bool TransformFilter::setProperty(  unsigned int key,
 		case KEY_CROP_MAXIMUM:
 		{
 			ASSERT(scalarParams.size() ==2);
+			float tmp;
+			if(stream_cast(tmp,value) || tmp <=scalarParams[0])
+				return false;
 			if(!applyPropertyNow(scalarParams[1],value,needUpdate))
 				return false;
 			break;
diff --git a/src/backend/filters/voxelise.cpp b/src/backend/filters/voxelise.cpp
index 7269227..56838d8 100644
--- a/src/backend/filters/voxelise.cpp
+++ b/src/backend/filters/voxelise.cpp
@@ -48,6 +48,10 @@ enum
 	KEY_VOXEL_SLICE_AXIS,
 	KEY_VOXEL_SLICE_OFFSET,
 	KEY_VOXEL_SLICE_INTERP,
+
+	//free-slice parameters	
+	KEY_VOXEL_SLICE_OFFSET3D,
+	KEY_VOXEL_SLICE_NORMAL3D,
 	
 	KEY_FILTER_MODE,
 	KEY_FILTER_RATIO,
@@ -104,7 +108,8 @@ enum
 const bool VOXEL_REPRESENT_KEEPCACHE[] = {
 	true,
 	true,
-	false
+	false,
+	false,
 };
 
 const char *NORMALISE_TYPE_STRING[] = {
@@ -117,7 +122,8 @@ const char *NORMALISE_TYPE_STRING[] = {
 const char *REPRESENTATION_TYPE_STRING[] = {
 		NTRANS("Point Cloud"),
 		NTRANS("Isosurface"),
-		NTRANS("Axial slice")
+		NTRANS("Axial slice"),
+		NTRANS("Slice")
 	};
 
 const char *VOXELISE_FILTER_TYPE_STRING[]={
@@ -171,6 +177,7 @@ int countPoints(Voxels<float> &v, const std::vector<IonHit> &points,
 	return 0;
 }
 
+
 // == Voxels filter ==
 VoxeliseFilter::VoxeliseFilter() 
 : fixedWidth(false), normaliseType(VOXELISE_NORMALISETYPE_NONE)
@@ -191,7 +198,7 @@ VoxeliseFilter::VoxeliseFilter()
 	
 	representation=VOXEL_REPRESENT_POINTCLOUD;
 
-	colourMap=0;
+	colourMap=COLOURMAP_VIRIDIS;
 	autoColourMap=true;
 	colourMapBounds[0]=0;
 	colourMapBounds[1]=1;
@@ -211,6 +218,11 @@ VoxeliseFilter::VoxeliseFilter()
 	sliceInterpolate=VOX_INTERP_NONE;
 	sliceAxis=0;
 	sliceOffset=0.5;
+
+	freeSlicePlane=Point3D(0.5,0.5,0.5);
+	freeSliceNormal=Point3D(1,1,1);
+	freeSliceNormal.normalise();
+
 	showColourBar=false;
 
 
@@ -380,9 +392,16 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 	if(cacheOK)
 	{
 		propagateCache(getOut);
+		progress.filterProgress=100;
 		return 0;
 	}
 
+	progress.step = 1;
+	progress.maxStep=2;
+	if(filterMode != VOXELISE_FILTERTYPE_NONE)
+		progress.maxStep++;
+	
+	progress.stepName=TRANS("Counting");
 
 	Voxels<float> voxelData;
 	if(!voxelCache.getSize())
@@ -390,7 +409,11 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 		Point3D minP,maxP;
 
 		bc.setInverseLimits();
-			
+		
+		//FIXME: this is technically wrong in some edge cases. 
+		// We disallow pair-wise points, even though if taken in conjunction
+		// they might form a valid bounding box	with other points not in the same
+		// data stream
 		for (size_t i = 0; i < dataIn.size(); i++) 
 		{
 			//Check for ion stream types. Block others from propagation.
@@ -412,14 +435,15 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 		if (!bc.isValid() || bc.isFlat()) return VOXELISE_BOUNDS_INVALID_ERR;
 
 		bc.getBounds(minP,maxP);	
+		//Disallow empty bounding boxes (ie, produce no output)
+		if(minP == maxP)
+			return 0;
+
 		if (fixedWidth) 
 			calculateNumBinsFromWidths(binWidth, nBins);
 		else
 			calculateWidthsFromNumBins(binWidth, nBins);
 		
-		//Disallow empty bounding boxes (ie, produce no output)
-		if(minP == maxP)
-			return 0;
 	
 		//Rebuild the voxels from the point data
 		Voxels<float> vsDenom;
@@ -435,9 +459,13 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 		}
 
 		const IonStreamData *is;
+		//Update totalsize of ion data
+		size_t totalSize=getTotalSizeByType(dataIn,STREAM_TYPE_IONS);
 		if(rsdIncoming)
 		{
 
+
+			size_t currentSize=0;
 			for (size_t i = 0; i < dataIn.size(); i++) 
 			{
 				
@@ -462,9 +490,9 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 						thisIonEnabled=false;
 
 					if(thisIonEnabled)
-					{
 						countPoints(voxelData,is->data,true);
-					}
+
+
 				}
 			
 				//If the user requests normalisation, compute the denominator dataset
@@ -492,6 +520,11 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 
 				if(*Filter::wantAbort)
 					return VOXELISE_ABORT_ERR;
+
+				//update progress
+				currentSize+=is->data.size();
+				progress.filterProgress = ((float)currentSize/(float)totalSize*100.0f);
+
 			}
 		
 			//Perform normalsiation	
@@ -504,6 +537,7 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 		else
 		{
 			//No range data.  Just count
+			size_t currentSize=0;
 			for (size_t i = 0; i < dataIn.size(); i++) 
 			{
 				
@@ -517,15 +551,23 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 						return VOXELISE_ABORT_ERR;
 
 				}
+
+				//update progress
+				currentSize+=is->data.size();
+				progress.filterProgress = ((float)currentSize/(float)totalSize*100.0f);
 			}
 			ASSERT(normaliseType != VOXELISE_NORMALISETYPE_COUNT2INVOXEL
 					&& normaliseType!=VOXELISE_NORMALISETYPE_ALLATOMSINVOXEL);
 			if (normaliseType == VOXELISE_NORMALISETYPE_VOLUME)
 				voxelData.calculateDensity();
 		}	
+		progress.filterProgress=100;
 
 		vsDenom.clear();
 
+		
+		if(filterMode!=VOXELISE_FILTERTYPE_NONE)
+			progress.step++;	
 
 		//Perform voxel filtering
 		switch(filterMode)
@@ -534,11 +576,13 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 				break;
 			case VOXELISE_FILTERTYPE_GAUSS:
 			{	
+				progress.stepName=TRANS("Gauss Smooth");
 				voxelData.isotropicGaussianSmooth(gaussDev,filterRatio);
 				break;
 			}
 			case VOXELISE_FILTERTYPE_LAPLACE:
 			{
+				progress.stepName=TRANS("Calc. Laplace");
 				voxelData.laplaceOfGaussian(gaussDev,filterRatio);
 				break;
 			}
@@ -552,6 +596,7 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 	{
 		//Use the cached value
 		voxelData=voxelCache;
+		progress.filterProgress=100;
 	}
 	
 	float min,max;
@@ -566,12 +611,12 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 
 
 	//Update the bounding cube
-	{
-	Point3D p1,p2;
-	voxelData.getBounds(p1,p2);
-	lastBounds.setBounds(p1,p2);
-	}
+	Point3D pb1,pb2;
+	voxelData.getBounds(pb1,pb2);
+	lastBounds.setBounds(pb1,pb2);
 
+	progress.step++;
+	progress.stepName=TRANS("Representation");
 
 	switch(representation)
 	{
@@ -620,7 +665,7 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 
 			SelectionDevice *s = new SelectionDevice(this);
 			SelectionBinding b;
-			//Bind translation to sphere left click
+			//Bind translation to left click
 			b.setBinding(SELECT_BUTTON_LEFT,0,DRAW_QUAD_BIND_ORIGIN,
 					BINDING_PLANE_ORIGIN,dq->getOrigin(),dq);
 			b.setInteractionMode(BIND_MODE_POINT3D_TRANSLATE);
@@ -641,7 +686,146 @@ unsigned int VoxeliseFilter::refresh(const std::vector<const FilterStreamData *>
 		
 		
 			cacheOK=false;
+			break;
+		}
+		case VOXEL_REPRESENT_SLICE:
+		{
+			Point3D p;
+			p =  freeSlicePlane*(pb2-pb1) + pb1;
+			vector<Point3D> vPts;
+			lastBounds.getPlaneIntersectVertices(p,freeSliceNormal, vPts);
+
+			if(vPts.size() < 3)
+				break;
+
+			RandNumGen rng;
+			rng.initTimer();
+
+			//Compute average side-length, then convert this into
+			// average bins per unit area
+			Point3D voxPitch = voxelData.getPitch();
+			float meanLenPerBin=0;
+			for(unsigned int ui=0;ui<3;ui++)
+				meanLenPerBin+=voxPitch[ui]; //length/bin
+			meanLenPerBin/=3; //average
+
+
+			//Per Stephenson, PhD Thesis, Sydney University, 2009
+			// Appendix B, CSR nearest neighbour
+			// calculations for D-dimensional spatial data
+
+			// in 2D, 1NN distance.
+			//Gamma(1+ 1/2)^2
+			const float GAMMA_1P5_SQR = 0.78540;
+
+			const float density = 2/M_PI*(GAMMA_1P5_SQR/(meanLenPerBin*meanLenPerBin));
+
+
+			//scatter some points in the plane
+			vector<Point3D> vRes;
+			scatterPointsInPolygon(vPts,freeSliceNormal,density,rng,vRes);
+
+			//Add the bounding edges
+			for(unsigned int ui=0;ui<vPts.size();ui++)
+				vRes.push_back(vPts[ui]);
+
+			//Create buffer for delanuay
+			double *dBuf = new double[vRes.size()*2];
+			for(unsigned int ui=0;ui<vRes.size();ui++)
+			{
+				dBuf[ui*2] = vRes[ui][0];
+				dBuf[ui*2+1] = vRes[ui][1];
+			}
+			//Compute delaunay
+			vector<size_t> tA,tB,tC; //triangle linkages
+			do2DDelaunay(dBuf,vRes.size(),tA,tB,tC);
+			delete[] dBuf;
+
+				
+			//Create triangles that form surface
+			DrawStreamData *d = new DrawStreamData(this);
+			d->cached=0;
+
+			float minV,maxV;
+			voxelData.minMax(minV,maxV);
+
+			DrawTriangleMesh *tm = new DrawTriangleMesh();
+			tm->canSelect=true;
+
+
+			vector<TRI_IDX> idx;
+			idx.resize(tA.size());
+			for(unsigned int ui=0;ui<tA.size();ui++)
+			{
+				//Assign linkages
+				idx[ui].idx[0]=tA[ui];
+				idx[ui].idx[1]=tB[ui];
+				idx[ui].idx[2]=tC[ui];
+
+				//Per-vertex colouring
+				unsigned char rgb[3];
+				for(unsigned int uj=0;uj<3;uj++)
+				{
+					float f;
+					//obtain voxel intensity
+					voxelData.getInterpolatedData(vRes[idx[ui].idx[uj]],f);
+					//convert to colour
+					colourMapWrap(colourMap,rgb,f,minV,maxV,false);
+				
+					for(unsigned int uk=0;uk<3;uk++)	
+						idx[ui].col[uj].v[uk] =rgb[uk]/255.0f;
+				}
+			}
+			tm->setData(vRes,idx);
+
+
+			//Create the user interaction bindings
+			//---
+			SelectionDevice *s = new SelectionDevice(this);
+			SelectionBinding b[2];
+			//Bind translation to sphere left click
+			//	-
+			BoundCube bMesh;
+			tm->getBoundingBox(bMesh);
+
+			b[0].setBinding(SELECT_BUTTON_LEFT,0,DRAW_TRIMESH_BIND_ORIGIN,
+					BINDING_PLANE_ORIGIN,bMesh.getCentroid(),tm);
+			b[0].setInteractionMode(BIND_MODE_POINT3D_TRANSLATE);
+			s->addBinding(b[0]);
+			//	-
+
+			//Bind orientation to left click on vector
+			//	-
+			const float DRAWSCALE=10.0f;
+			DrawVector *dV  = new DrawVector;
+			dV->setOrigin(p);
+			dV->setVector(freeSliceNormal*DRAWSCALE);
+			dV->wantsLight=true;
+			dV->canSelect=true;
+			d->drawables.push_back(dV);
+
+
+			b[1].setBinding(SELECT_BUTTON_LEFT,0,DRAW_VECTOR_BIND_ORIENTATION,
+				BINDING_PLANE_DIRECTION, freeSlicePlane,dV);
+			b[1].setInteractionMode(BIND_MODE_POINT3D_ROTATE);
+			b[1].setFloatLimits(0,std::numeric_limits<float>::max());
+			s->addBinding(b[1]);
+			//	-
+			
+			devices.push_back(s);
+			//---
+
+
+			d->drawables.push_back(tm);
+
+			if(showColourBar)
+				d->drawables.push_back(makeColourBar(minV,maxV,255,colourMap));
+			getOut.push_back(d);	
+			break;
 		}
+		default:
+			ASSERT(false);
+
 	}
 
 
@@ -656,24 +840,55 @@ void VoxeliseFilter::setPropFromBinding(const SelectionBinding &b)
 	{
 		case BINDING_PLANE_ORIGIN:
 		{
-			ASSERT(representation == VOXEL_REPRESENT_AXIAL_SLICE);
-			ASSERT(lastBounds.isValid());
-		
-			//Convert the world coordinate value into a
-			// fractional value of voxel bounds
+			switch(representation )
+			{
+				case VOXEL_REPRESENT_AXIAL_SLICE:
+				{
+					ASSERT(lastBounds.isValid());
+				
+					//Convert the world coordinate value into a
+					// fractional value of voxel bounds
+					Point3D p;
+					float f;
+					b.getValue(p);
+					f=p[sliceAxis];
+
+					float minB,maxB;
+					minB = lastBounds.getBound(sliceAxis,0);
+					maxB = lastBounds.getBound(sliceAxis,1);
+					sliceOffset= (f -minB)/(maxB-minB);
+					
+					sliceOffset=std::min(sliceOffset,1.0f);
+					sliceOffset=std::max(sliceOffset,0.0f);
+					ASSERT(sliceOffset<=1 && sliceOffset>=0);
+					break;
+				}
+				case VOXEL_REPRESENT_SLICE:
+				{
+					Point3D p;
+					b.getValue(p);
+					Point3D pb1,pb2;
+					lastBounds.getBounds(pb1,pb2);
+					//The slice plane is defiend using fractional
+					// coordinates
+					freeSlicePlane = (p- pb1)/(pb2-pb1);
+					break;
+				}
+				default:
+
+					ASSERT(false);
+			}
+			break;
+		}
+		case BINDING_PLANE_DIRECTION:
+		{
+			//Normal change should only be set for free-slice
+			ASSERT(representation == VOXEL_REPRESENT_SLICE);
 			Point3D p;
-			float f;
 			b.getValue(p);
-			f=p[sliceAxis];
+			p.normalise();
 
-			float minB,maxB;
-			minB = lastBounds.getBound(sliceAxis,0);
-			maxB = lastBounds.getBound(sliceAxis,1);
-			sliceOffset= (f -minB)/(maxB-minB);
-			
-			sliceOffset=std::min(sliceOffset,1.0f);
-			sliceOffset=std::max(sliceOffset,0.0f);
-			ASSERT(sliceOffset<=1 && sliceOffset>=0);
+			freeSliceNormal =p;
 			break;
 		}
 		default:
@@ -915,17 +1130,14 @@ void VoxeliseFilter::getProperties(FilterPropGroup &propertyList) const
 	//start a new group for the visual representation
 	//----------------------------
 	choices.clear();
-	tmpStr=getRepresentTypeString(VOXEL_REPRESENT_POINTCLOUD);
-	choices.push_back(make_pair((unsigned int)VOXEL_REPRESENT_POINTCLOUD,tmpStr));
-	tmpStr=getRepresentTypeString(VOXEL_REPRESENT_ISOSURF);
-	choices.push_back(make_pair((unsigned int)VOXEL_REPRESENT_ISOSURF,tmpStr));
-	tmpStr=getRepresentTypeString(VOXEL_REPRESENT_AXIAL_SLICE);
-	choices.push_back(make_pair((unsigned int)VOXEL_REPRESENT_AXIAL_SLICE,tmpStr));
-	
-	tmpStr= choiceString(choices,representation);
+	for(unsigned int ui=0;ui<VOXEL_REPRESENT_END;ui++)
+	{
+		tmpStr=getRepresentTypeString(ui);
+		choices.push_back(make_pair((unsigned int)ui,tmpStr));
+	}
 
 	p.name=TRANS("Representation");
-	p.data=tmpStr;
+	p.data=choiceString(choices,representation);
 	p.type=PROPERTY_TYPE_CHOICE;
 	p.helpText=TRANS("3D display method");
 	p.key=KEY_VOXEL_REPRESENTATION_MODE;
@@ -1040,7 +1252,7 @@ void VoxeliseFilter::getProperties(FilterPropGroup &propertyList) const
 			
 
 			//-- Slice visualisation parameters --
-			for(unsigned int ui=0;ui<NUM_COLOURMAPS; ui++)
+			for(unsigned int ui=0;ui<COLOURMAP_ENUM_END; ui++)
 				choices.push_back(make_pair(ui,getColourMapName(ui)));
 
 			tmpStr=choiceString(choices,colourMap);
@@ -1064,6 +1276,7 @@ void VoxeliseFilter::getProperties(FilterPropGroup &propertyList) const
 			p.name=TRANS("Show Bar");
 			p.key=KEY_SHOW_COLOURBAR;
 			p.data=tmpStr;
+			p.helpText=TRANS("Display colour bar in 3D view?");
 			p.type=PROPERTY_TYPE_BOOL;
 			propertyList.addProperty(p,curGroup);
 
@@ -1098,6 +1311,96 @@ void VoxeliseFilter::getProperties(FilterPropGroup &propertyList) const
 
 			break;
 		}
+		case VOXEL_REPRESENT_SLICE:
+		{
+			//-- Slice parameters --
+			propertyList.setGroupTitle(curGroup,TRANS("Slice param."));
+
+			stream_cast(tmpStr,freeSlicePlane);
+			p.name=TRANS("Slice Offset");
+			p.data=tmpStr;
+			p.type=PROPERTY_TYPE_POINT3D;
+			p.helpText=TRANS("Point on plane for slice, in 0->1 coordinates");
+			p.key=KEY_VOXEL_SLICE_OFFSET3D;
+			propertyList.addProperty(p,curGroup);
+			
+
+
+			stream_cast(tmpStr,freeSliceNormal);
+			p.name=TRANS("Slice Normal");
+			p.data=tmpStr;
+			p.type=PROPERTY_TYPE_POINT3D;
+			p.helpText=TRANS("Normal vector for slice");
+			p.key=KEY_VOXEL_SLICE_NORMAL3D;
+			propertyList.addProperty(p,curGroup);
+			
+			// ---	
+			propertyList.setGroupTitle(curGroup,TRANS("Surface"));	
+			curGroup++;
+
+			
+
+			//-- Slice visualisation parameters --
+			choices.clear();
+			for(unsigned int ui=0;ui<COLOURMAP_ENUM_END; ui++)
+				choices.push_back(make_pair(ui,getColourMapName(ui)));
+
+			tmpStr=choiceString(choices,colourMap);
+
+			p.name=TRANS("Colour mode");
+			p.data=tmpStr;
+			p.type=PROPERTY_TYPE_CHOICE;
+			p.helpText=TRANS("Colour scheme used to assign points colours by value");
+			p.key=KEY_VOXEL_COLOURMODE;
+			propertyList.addProperty(p,curGroup);
+			
+			stream_cast(tmpStr,1.0-rgba.a());
+			p.name=TRANS("Transparency");
+			p.data=tmpStr;
+			p.type=PROPERTY_TYPE_REAL;
+			p.helpText=TRANS("How \"see through\" each facet is (0 - opaque, 1 - invisible)");
+			p.key=KEY_TRANSPARENCY;
+			propertyList.addProperty(p,curGroup);
+
+			tmpStr=boolStrEnc(showColourBar);
+			p.name=TRANS("Show Bar");
+			p.key=KEY_SHOW_COLOURBAR;
+			p.data=tmpStr;
+			p.type=PROPERTY_TYPE_BOOL;
+			propertyList.addProperty(p,curGroup);
+
+			tmpStr=boolStrEnc(autoColourMap);
+			p.name=TRANS("Auto Bounds");
+			p.helpText=TRANS("Auto-compute min/max values in map"); 
+			p.data= tmpStr;
+			p.key=KEY_VOXEL_SLICE_COLOURAUTO;;
+			p.type=PROPERTY_TYPE_BOOL;
+			propertyList.addProperty(p,curGroup);
+
+			if(!autoColourMap)
+			{
+
+				stream_cast(tmpStr,colourMapBounds[0]);
+				p.name=TRANS("Map start");
+				p.helpText=TRANS("Assign points with this value to the first colour in map"); 
+				p.data= tmpStr;
+				p.key=KEY_MAPSTART;;
+				p.type=PROPERTY_TYPE_REAL;
+				propertyList.addProperty(p,curGroup);
+
+				stream_cast(tmpStr,colourMapBounds[1]);
+				p.name=TRANS("Map end");
+				p.helpText=TRANS("Assign points with this value to the last colour in map"); 
+				p.data= tmpStr;
+				p.key=KEY_MAPEND;
+				p.type=PROPERTY_TYPE_REAL;
+				propertyList.addProperty(p,curGroup);
+			}
+			// ---	
+
+
+			break;
+		}
 		default:
 			ASSERT(false);
 			;
@@ -1450,7 +1753,7 @@ bool VoxeliseFilter::setProperty(unsigned int key,
 		{
 			unsigned int tmpMap;
 			tmpMap=(unsigned int)-1;
-			for(unsigned int ui=0;ui<NUM_COLOURMAPS;ui++)
+			for(unsigned int ui=0;ui<COLOURMAP_ENUM_END;ui++)
 			{
 				if(value== getColourMapName(ui))
 				{
@@ -1459,7 +1762,7 @@ bool VoxeliseFilter::setProperty(unsigned int key,
 				}
 			}
 
-			if(tmpMap >=NUM_COLOURMAPS || tmpMap ==colourMap)
+			if(tmpMap >=COLOURMAP_ENUM_END|| tmpMap ==colourMap)
 				return false;
 
 			//clear the generic filter cache (i.e. cached outputs)
@@ -1524,6 +1827,22 @@ bool VoxeliseFilter::setProperty(unsigned int key,
 			}
 			break;
 		}
+		case KEY_VOXEL_SLICE_OFFSET3D:
+		{
+			if(!applyPropertyNow(freeSlicePlane,value,needUpdate))
+				return false;
+
+			break;
+
+		}
+		case KEY_VOXEL_SLICE_NORMAL3D:
+		{
+			if(!applyPropertyNow(freeSliceNormal,value,needUpdate))
+				return false;
+
+			break;
+
+		}
 		default:
 		{
 			unsigned int subKeyType,offset;
@@ -1617,7 +1936,7 @@ bool VoxeliseFilter::writeState(std::ostream &f,unsigned int format, unsigned in
 			f << tabs(depth+2) << "<axis value=\""<<sliceAxis<< "\"/>" << endl;
 			f << tabs(depth+2) << "<colourbar show=\""<<boolStrEnc(showColourBar)<< 
 						"\" auto=\"" << boolStrEnc(autoColourMap)<< "\" min=\"" <<
-					colourMapBounds[0] << "\" max=\"" <<  colourMapBounds[1] << "\"/>" << endl;
+					colourMapBounds[0] << "\" max=\"" <<  colourMapBounds[1] << "\" map=\"" << colourMap << "\"/>" << endl;
 			f << tabs(depth+1) << "</axialslice>" << endl;
 
 
@@ -1671,7 +1990,7 @@ bool VoxeliseFilter::readState(xmlNodePtr &nodePtr, const std::string &stateFile
 		if(stream_cast(nBins[i],v1[i]))
 			return false;
 		
-		if(nBins[i] <= 0)
+		if(nBins[i] == 0)
 			return false;
 	}
 	xmlFree(xmlString);
@@ -1845,6 +2164,15 @@ bool VoxeliseFilter::readState(xmlNodePtr &nodePtr, const std::string &stateFile
 
 		if(colourMapBounds[0] >= colourMapBounds[1])
 			return false;
+	
+		//FIXME: Break compat	
+		//There is a bug in <=0.0.19, where the map was not stored.
+		// if we don't have a map entry, set the value to jet, as this was 
+		// the default at the time. 
+		if(!XMLGetAttrib(sliceNodes,colourMapBounds[1],"max"))
+		{
+			colourMap=COLOURMAP_JET;
+		}
 	}
 	
 
diff --git a/src/backend/filters/voxelise.h b/src/backend/filters/voxelise.h
index ba96bbd..d2574bf 100644
--- a/src/backend/filters/voxelise.h
+++ b/src/backend/filters/voxelise.h
@@ -91,6 +91,10 @@ private:
 	size_t sliceAxis;
 	//Fractional offset from lower bound of data cube [0,1]
 	float sliceOffset;
+	
+	//Plane and normal for free slice. Note that the plane coordinate is in reduced voxel coords for each axis
+	Point3D freeSlicePlane,freeSliceNormal; 
+
 
 	//Obtain a textured slice from the given voxel set
 	void getTexturedSlice(const Voxels<float> &f,
diff --git a/src/backend/filtertree.cpp b/src/backend/filtertree.cpp
index ceeb33e..169855b 100644
--- a/src/backend/filtertree.cpp
+++ b/src/backend/filtertree.cpp
@@ -207,7 +207,7 @@ void FilterRefreshCollector::collectToLevel(unsigned int level)
 #ifdef DEBUG
 	checkSanity();
 #endif
-	for(size_t ui=level+1;ui<nodes.size();ui++)
+	for(size_t ui=level;ui<nodes.size();ui++)
 	{
 		for(list<const FilterStreamData*>::iterator it=nodes[ui].begin(); it!=nodes[ui].end(); ++it)
 			delete *it;
@@ -801,15 +801,14 @@ unsigned int FilterTree::refreshFilterTree(list<FILTER_OUTPUT_DATA > &outData,
 #ifdef DEBUG
 			//Perform sanity checks on filter output
 			checkRefreshValidity(curData,currentFilter);
-			ASSERT(curProg.step == curProg.maxStep || errCode);
+			WARN( curProg.step == curProg.maxStep || errCode, "Filter exited cleanly, but did not reach its maximum step" );
 			//when completing, we should have full progress 
 			std::string progWarn = std::string("Progress did not reach 100\% for filter: ");
 			progWarn+=currentFilter->getUserString();
 			
 			WARN( (curProg.filterProgress == 100 || errCode),progWarn.c_str());
 #endif
-			//Ensure that (1) yield is called, regardless of what filter does
-			//(2) yield is called after 100% update	
+			//Ensure that progress is set to 100% after update	
 			curProg.filterProgress=100;	
 
 
@@ -1317,22 +1316,22 @@ bool FilterTree::hasHazardousContents() const
 
 void FilterTree::stripHazardousContents()
 {
+	vector<Filter *> vecFilt;
+
 	for(tree<Filter * >::pre_order_iterator it=filters.begin();
-					it!=filters.end(); ++it)
+		it!=filters.end(); ++it)
 	{
 		if ((*it)->canBeHazardous())
 		{
-			//delete filters from this branch
-			for(tree<Filter *>::pre_order_iterator itj(it); itj!=filters.end(); ++itj)
-				delete *itj;
-	
 
-			//nuke this branch
-			it=filters.erase(it);
-			--it;
+			vecFilt.push_back(*it);
 		}
 	}
 
+
+	for(unsigned int ui=0;ui<vecFilt.size(); ui++)
+		removeSubtree(vecFilt[ui]);
+
 }
 
 bool FilterTree::isChild(const tree<Filter *> &treeInst,
@@ -1739,6 +1738,35 @@ bool FilterTree::copyFilter(Filter *toCopy,const Filter *newParent)
 }
 
 
+bool FilterTree::respliceFilter(Filter *toMove, const Filter *newParent)
+{
+	if(toMove == newParent)
+		return false;
+
+	//Find the iterator of the filter to move
+	tree<Filter*>::iterator moveFilterIt=std::find(filters.begin(),filters.end(),toMove);
+
+	Filter* oldParent;
+	if(depth(moveFilterIt))
+		oldParent=*(filters.parent(moveFilterIt));
+	else
+		oldParent= 0;
+
+	//reparent all the children of the move filter
+	typedef tree<Filter*>::sibling_iterator TREE_SIBIT;
+	vector<TREE_SIBIT> moveChildren;
+	for(TREE_SIBIT it=moveFilterIt.begin(); it!=moveFilterIt.end(); ++it)
+		moveChildren.push_back(it);
+
+	for(unsigned int ui=0;ui<moveChildren.size(); ui++)
+		reparentFilter(*(moveChildren[ui]),oldParent);
+
+	reparentFilter(toMove,newParent);
+
+	return true;	
+}
+
+
 void FilterTree::removeSubtree(Filter *removeFilt)
 {
 	ASSERT(removeFilt);	
diff --git a/src/backend/filtertree.h b/src/backend/filtertree.h
index 1d1be15..f0b521e 100644
--- a/src/backend/filtertree.h
+++ b/src/backend/filtertree.h
@@ -99,9 +99,10 @@ class FilterTree
 		tree<Filter *>::pre_order_iterator depthBegin() const { return filters.begin();};
 		//Return iterator to tree contents end
 		tree<Filter *>::pre_order_iterator depthEnd() const { return filters.end();}
-		//Return depth of a given iterator
+		//return the maximum depth of the tree
 		size_t maxDepth() const;
 
+		//Return depth of a given iterator
 		size_t depth(const tree<Filter*>::pre_order_iterator &it) const ;
 
 		//Get a reference to the underlying tree
@@ -172,7 +173,7 @@ class FilterTree
 		void removeSubtree(Filter *f);
 		
 		//!Add a new filter to the tree. Note that pointer will be released
-		// by filter destructor
+		// by filter destructor. Set parent=0 if inserting into base of tree
 		void addFilter(Filter *f, const Filter *parent);
 		
 		//!Add a new tree as a subtree to a node 
@@ -186,6 +187,12 @@ class FilterTree
 		//!Obtain a copy of the filters from the specified subtree,
 		// including the target filter and its descendants
 		void cloneSubtree(FilterTree &f,const Filter *targetFilt) const;
+
+		//!Move a filter from one point in the tree to another, with the
+		//  parent of the filter being moved adopting all that filters children
+		//  - newParent can be a child of toMove.
+		bool respliceFilter(Filter *toMove, const Filter *newParent);
+
 		//---------
 	
 
@@ -236,6 +243,11 @@ class FilterTree
 
 
 		size_t cacheCount(unsigned int typeMask = STREAMTYPE_MASK_ALL) const;
+
+#ifdef DEBUG
+		void print() const ;
+#endif
+
 };
 
 #endif
diff --git a/src/backend/filtertreeAnalyse.cpp b/src/backend/filtertreeAnalyse.cpp
index a62e7d1..7989f41 100644
--- a/src/backend/filtertreeAnalyse.cpp
+++ b/src/backend/filtertreeAnalyse.cpp
@@ -178,6 +178,8 @@ void FilterTreeAnalyse::analyse(const FilterTree &f)
 	//check for unranged data required by child
 	checkUnrangedData(f);
 
+	//Check root filters are data source
+	checkRootIsDataSource(f);
 
 	emitTypes.clear();
 	blockTypes.clear();
@@ -515,6 +517,23 @@ bool filterAltersComposition(const Filter *f)
 	return affectsComposition;
 }
 
+void FilterTreeAnalyse::checkRootIsDataSource(const FilterTree &f)
+{
+	const tree<Filter *> &treeFilt=f.getTree();
+	for(tree<Filter*>::sibling_iterator it = treeFilt.begin(); it!=treeFilt.end(); ++it)
+	{
+		if(!(*it)->isPureDataSource())
+		{
+			FILTERTREE_ERR treeErr;
+			treeErr.reportedFilters.push_back(*it);
+			treeErr.verboseReportMessage = TRANS("Filter cannot generate data, but has no input - it is at the tree base.");
+			treeErr.shortReportMessage = TRANS("Non data-generating filter at root");
+			treeErr.severity=ANALYSE_SEVERITY_ERROR; //This is definitely a bad thing.
+			analysisResults.push_back(treeErr);
+		}
+	}
+}
+
 bool filterAffectedByComposition(const Filter *f, bool haveRngParent)
 {
 	FilterPropGroup props;
diff --git a/src/backend/filtertreeAnalyse.h b/src/backend/filtertreeAnalyse.h
index 91e0630..2348228 100644
--- a/src/backend/filtertreeAnalyse.h
+++ b/src/backend/filtertreeAnalyse.h
@@ -70,6 +70,9 @@ class FilterTreeAnalyse
 		//check to see if there is a filter that needs unranged data to work,
 		// but does not have it 
 		void checkUnrangedData(const FilterTree &f);
+	
+		//Check that the root filter is source of data 
+		void checkRootIsDataSource(const FilterTree &f);
 	public:
 		void analyse(const FilterTree &f);
 
diff --git a/src/backend/plot.cpp b/src/backend/plot.cpp
index bd6065f..32a7600 100644
--- a/src/backend/plot.cpp
+++ b/src/backend/plot.cpp
@@ -29,7 +29,7 @@ const char *errModeStrings[] = {
 				NTRANS("Moving avg.")
 				};
 
-const char *plotTypeStrings[]= {
+const char *traceStyleStrings[]= {
 	NTRANS("Lines"),
 	NTRANS("Bars"),
 	NTRANS("Steps"),
@@ -119,15 +119,15 @@ std::string mglColourCode(float r, float g, float b)
 string plotString(unsigned int plotMode)
 {
 	ASSERT(plotMode< PLOT_TYPE_ENUM_END);
-	return TRANS(plotTypeStrings[plotMode]); 
+	return TRANS(traceStyleStrings[plotMode]); 
 }
 
 unsigned int plotID(const std::string &plotString)
 {
-	COMPILE_ASSERT(THREEDEP_ARRAYSIZE(plotTypeStrings) == PLOT_TYPE_ENUM_END);
+	COMPILE_ASSERT(THREEDEP_ARRAYSIZE(traceStyleStrings) == PLOT_TYPE_ENUM_END);
 	for(unsigned int ui=0;ui<PLOT_TYPE_ENUM_END; ui++)
 	{
-		if(plotString==TRANS(plotTypeStrings[ui]))
+		if(plotString==TRANS(traceStyleStrings[ui]))
 			return ui;
 	}
 
@@ -298,7 +298,7 @@ std::string PlotRegion::getName() const
 
 PlotWrapper::PlotWrapper()
 {
-	//COMPILE_ASSERT(THREEDEP_ARRAYSIZE(plotTypeStrings) == PLOT_TYPE_ENUM_END);
+	//COMPILE_ASSERT(THREEDEP_ARRAYSIZE(traceStyleStrings) == PLOT_TYPE_ENUM_END);
 
 	applyUserBounds=false;
 	plotChanged=true;
@@ -671,6 +671,7 @@ unsigned int PlotWrapper::getVisibleMode() const
 			if(visibleMode == PLOT_MODE_ENUM_END)
 			{
 				visibleMode=plottingData[ui]->getMode();
+				ASSERT(visibleMode < PLOT_MODE_ENUM_END);
 				continue;
 			}
 			else
@@ -684,6 +685,12 @@ unsigned int PlotWrapper::getVisibleMode() const
 	return visibleMode;
 }
 
+unsigned int PlotWrapper::getPlotMode(unsigned int plotId) const
+{
+	ASSERT(plotId < plottingData.size());
+	return plottingData[plotId]->getPlotMode();
+}
+
 void PlotWrapper::getVisibleIDs(vector<unsigned int> &visiblePlotIDs ) const
 {
 
@@ -791,7 +798,7 @@ void PlotWrapper::drawPlot(mglGraph *gr, bool &haveUsedLog) const
 				if(!plottingData[ui]->visible)
 					continue;
 
-				if(plottingData[ui]->getType()!= PLOT_MODE_1D)
+				if(plottingData[ui]->getMode()!= PLOT_MODE_1D)
 					continue;
 			
 				if(((Plot1D*)plottingData[ui])->wantLogPlot()) 
@@ -809,7 +816,7 @@ void PlotWrapper::drawPlot(mglGraph *gr, bool &haveUsedLog) const
 				float minYVal=0.1;
 				for(size_t ui=0;ui<plottingData.size();ui++)
 				{
-					if(!plottingData[ui]->visible || plottingData[ui]->getType() !=PLOT_MODE_1D)
+					if(!plottingData[ui]->visible || plottingData[ui]->getMode() !=PLOT_MODE_1D)
 						continue;
 
 					float tmp ;
@@ -929,7 +936,7 @@ void PlotWrapper::drawPlot(mglGraph *gr, bool &haveUsedLog) const
 				Plot2DFunc *curPlot;
 				curPlot=(Plot2DFunc*)plottingData[ui];
 
-				if(curPlot->getType() == PLOT_2D_DENS)
+				if(curPlot->getMode() == PLOT_2D_DENS)
 				{
 					wantColourbar=true;
 				}
@@ -1047,11 +1054,6 @@ void PlotWrapper::getRegion(unsigned int plotId, unsigned int regionId, PlotRegi
 	plottingData[plotIDHandler.getPos(plotId)]->regionGroup.getRegion(regionId,region);
 }
 
-unsigned int PlotWrapper::plotType(unsigned int plotId) const
-{
-	return plottingData[plotIDHandler.getPos(plotId)]->getPlotMode();
-}
-
 
 void PlotWrapper::moveRegion(unsigned int plotID, unsigned int regionId, bool regionSelfUpdate,
 		unsigned int movementType, float newX, float newY) const
@@ -1135,7 +1137,7 @@ void PlotBase::setStrings(const std::string &x, const std::string &y, const std:
 
 void PlotBase::copyBase(PlotBase *target) const
 {
-	target->plotType=plotType;
+	target->traceStyle=traceStyle;
 	target->minX=minX;
 	target->maxX=maxX;
 	target->minY=minY;
@@ -1157,36 +1159,27 @@ void PlotBase::copyBase(PlotBase *target) const
 
 unsigned int PlotBase::getType() const
 {
-	return plotType;
+	ASSERT(traceStyle <  PLOT_TYPE_ENUM_END);
+	return traceStyle;
 }
 
 unsigned int PlotBase::getMode() const
 {
-	switch(plotType)
-	{
-		case PLOT_LINE_LINES:
-		case PLOT_LINE_BARS:
-		case PLOT_LINE_STEPS:
-		case PLOT_LINE_STEM:
-		case PLOT_LINE_POINTS:
-			return PLOT_MODE_1D;
+	ASSERT(plotMode < PLOT_MODE_ENUM_END);
+	return plotMode;
 
-		case PLOT_2D_DENS:
-		case PLOT_2D_SCATTER:
-			return PLOT_MODE_2D;	
-	}
-	ASSERT(false);
 }
 
 Plot1D::Plot1D()
 {
 	//Set the default plot properties
-	plotType=PLOT_LINE_LINES;
+	traceStyle=PLOT_LINE_LINES;
 	plotMode=PLOT_MODE_1D;
 	xLabel="";
 	yLabel="";
 	title="";
 	r=(0);g=(0);b=(1);
+	logarithmic=true;
 }
 
 
@@ -1489,7 +1482,7 @@ void Plot1D::drawPlot(mglGraph *gr) const
 
 
 	//Plot the appropriate form	
-	switch(plotMode)
+	switch(traceStyle)
 	{
 		case PLOT_LINE_LINES:
 			//Unfortunately, when using line plots, mathgl moves the data points to the plot boundary,
@@ -1502,15 +1495,18 @@ void Plot1D::drawPlot(mglGraph *gr) const
 				gr->Error(xDat,yDat,eDat,colourCode.c_str());
 			gr->SetCut(false);
 			break;
-		case PLOT_LINE_BARS:
-			gr->Bars(xDat,yDat,colourCode.c_str());
-			break;
 		case PLOT_LINE_STEPS:
 			//Same problem as for line plot. 
 			gr->SetCut(true);
 			gr->Step(xDat,yDat,colourCode.c_str());
 			gr->SetCut(false);
 			break;
+		case PLOT_LINE_BARS:
+			//FIXME: Bars mode doesn't work for sparse data.
+			// This has been fixed in mathgl > 2.3.5.1
+			//string sMode = colourCode.c_str() + "F^"; // F^ - centred and fixed size
+			//gr->Bars(xDat,yDat,colourCode.c_str());
+			//break;
 		case PLOT_LINE_STEM:
 			gr->SetCut(true);
 			gr->Stem(xDat,yDat,colourCode.c_str());
@@ -1632,7 +1628,7 @@ float Plot1D::getSmallestNonzero() const
 Plot2DFunc::Plot2DFunc()
 {
 	plotMode = PLOT_MODE_2D;
-	plotType=PLOT_2D_DENS;
+	traceStyle=PLOT_2D_DENS;
 }
 
 void Plot2DFunc::setData(const Array2D<float> &a,
@@ -1705,7 +1701,8 @@ void Plot2DFunc::getRawData(std::vector<std::vector<float> >  &rawData,
 
 Plot2DScatter::Plot2DScatter()
 {
-	plotType=PLOT_2D_SCATTER;
+	traceStyle=PLOT_2D_SCATTER;
+	plotMode=PLOT_MODE_2D;
 	scatterIntensityLog=false;
 }
 
diff --git a/src/backend/plot.h b/src/backend/plot.h
index 51894e4..01044b4 100644
--- a/src/backend/plot.h
+++ b/src/backend/plot.h
@@ -43,7 +43,7 @@
 #undef isnan
 
 
-//Plot style/mode enum
+//Plot trace style enum
 enum 
 {
 	PLOT_LINE_LINES=0,
@@ -57,9 +57,8 @@ enum
 	PLOT_TYPE_ENUM_END
 };
 
-//This is the plot mode,
-// it can be determined as a function of the
-// plot-style/mode enum
+//Plot mode enum, which governs how the axes need to be set
+// for this plot type
 enum
 {
 	PLOT_MODE_1D,
@@ -217,7 +216,7 @@ class PlotOverlays
 class PlotBase
 {
 	protected:
-		//!Sub type of plot (eg lines, bars for 1D)
+		//!Type of plot 
 		unsigned int plotMode;
 		//!xaxis label
 		std::string xLabel;
@@ -229,8 +228,9 @@ class PlotBase
 		//plot colour (for single coloured plots)
 		float r,g,b;
 		
-		//The type of plot (ie what class is it?)	
-		unsigned int plotType;
+		//The sub-style of the plot trace (eg lines, points, bars, etc)
+		// FIXME: This is badly named, change to traceStyle, or dataStyle, or something
+		unsigned int traceStyle;
 		
 		void copyBase(PlotBase *target) const;
 
@@ -297,8 +297,12 @@ class PlotBase
 		void setStrings(const std::string &x, 
 			const std::string &y,const std::string &t);
 
+		//Set the colour of the plot trace
 		void setColour(float rNew, float gNew, float bNew);
 
+		//set the visual style for the trace (dots, lines, etc)
+		void setTraceStyle(unsigned int newStyle) { traceStyle=newStyle;}
+
 		std::string getXLabel() const { return xLabel;}
 		std::string getTitle() const { return title;}
 		std::string getYLabel() const { return yLabel;}
@@ -309,6 +313,7 @@ class PlotBase
 		void setPlotMode(unsigned int newMode) { plotMode= newMode;}
 
 
+		//get the  colour of the trace
 		void getColour(float &r, float &g, float &b) const ;
 
 #ifdef DEBUG
@@ -613,7 +618,7 @@ class PlotWrapper
 	
 
 		//!obtain the type of a plot, given the plot's uniqueID
-		unsigned int plotType(unsigned int plotId) const;
+		unsigned int getPlotMode(unsigned int plotId) const;
 
 		//Retrieve the types of visible plots
 		unsigned int getVisibleMode() const;
diff --git a/src/backend/state.cpp b/src/backend/state.cpp
index 66e3299..6841f38 100644
--- a/src/backend/state.cpp
+++ b/src/backend/state.cpp
@@ -34,19 +34,20 @@ using std::make_pair;
 using std::map;
 using std::endl; //TODO: Remove me?
 
-//FIXME: Global - need to make part of AnalysisState.
-//	 then provide references as needed
-//true if modification to state has occurred
-int stateModifyLevel=STATE_MODIFIED_NONE;
+unsigned int AnalysisState::currentStateWriterVersion=0;
 
-void setStateModifyLevel(int newLevel)
+
+void AnalysisState::setStateModifyLevel(unsigned int newLevel)
 {
 	stateModifyLevel=std::max(newLevel,stateModifyLevel);
 }
 
-int getStateModifyLevel()
+unsigned int AnalysisState::getStateModifyLevel() const
 {
-	return stateModifyLevel;
+	unsigned int levelMod;
+	levelMod=std::max(stateModifyLevel,treeState.getModifyLevel());
+	ASSERT(levelMod < STATE_MODIFIED_ENUM_END);
+	return levelMod;
 }
 
 
@@ -58,6 +59,8 @@ AnalysisState::AnalysisState()
 	savedCameras.push_back(new CameraLookAt);	
 
 	plotLegendEnable=true;
+	worldAxisMode=0;
+	stateModifyLevel=STATE_MODIFIED_NONE;
 
 	rBack=gBack=bBack=0;
 }
@@ -91,6 +94,7 @@ void AnalysisState::operator=(const AnalysisState &oth)
 	gBack=oth.gBack;
 	bBack=oth.bBack;
 
+	stateModifyLevel=oth.stateModifyLevel;
 	worldAxisMode=oth.worldAxisMode;
 	activeCamera=oth.activeCamera;
 
@@ -108,6 +112,10 @@ AnalysisState::~AnalysisState()
 
 void AnalysisState::clear()
 {
+	//Has the state been modified?
+	if(treeState.size() || stashedTrees.size()) 
+		setStateModifyLevel(STATE_MODIFIED_DATA);
+
 	treeState.clear();
 	
 	stashedTrees.clear();
@@ -138,8 +146,14 @@ void AnalysisState::clearEffects()
 	effects.clear();
 
 }
+
+unsigned int AnalysisState::getStateWriterVersion()
+{
+	return currentStateWriterVersion;
+}
+
 bool AnalysisState::save(const char *cpFilename, std::map<string,string> &fileMapping,
-		bool writePackage, bool setStateModifyLevel) const
+		bool writePackage, bool setStateModifyLevel) 
 {
 	//Open file for output
 	std::ofstream f(cpFilename);
@@ -280,7 +294,11 @@ bool AnalysisState::save(const char *cpFilename, std::map<string,string> &fileMa
 	ASSERT(isValidXML(cpFilename));
 
 	if(setStateModifyLevel)
+	{
+		//reset the current state modification level
 		stateModifyLevel=STATE_MODIFIED_NONE;
+		treeState.resetModifyLevel();
+	}
 
 	return true;
 }
@@ -390,11 +408,18 @@ bool AnalysisState::loadInternal(const char *cpFilename, bool doMerge, std::ostr
 						errStream << TRANS("State was created by a newer version of this program.. ")
 							<< TRANS("file reading will continue, but may fail.") << endl ;
 					}
+
+					
+					if(!parseVersion(tmpVer,currentStateWriterVersion))
+						currentStateWriterVersion=0;
+
 				}
 				else
 				{
 					errStream<< TRANS("Warning, unparseable version number in state file. File reading will continue, but may fail") << endl;
 				}
+
+				
 				xmlFree(xmlString);
 			}
 		}
@@ -599,12 +624,10 @@ bool AnalysisState::loadInternal(const char *cpFilename, bool doMerge, std::ostr
 				haveCameraAlready=false;
 				for(unsigned int ui=0; ui<newCameraVec.size() ; ui++)
 				{
+					//Ignore duplicate camera
 					if(thisCam->getUserString() == newCameraVec[ui]->getUserString())
 					{
 						haveCameraAlready=true;
-#ifdef DEBUG
-						cerr << "Found duplicate camera, ignoring" << endl;
-	#endif
 						break;
 					} 
 				}
@@ -794,6 +817,8 @@ bool AnalysisState::loadInternal(const char *cpFilename, bool doMerge, std::ostr
 		nodeStack.pop();
 
 		nodeStack.push(nodePtr);
+
+		currentStateWriterVersion=0;
 	}
 	catch (int)
 	{
@@ -832,8 +857,9 @@ bool AnalysisState::loadInternal(const char *cpFilename, bool doMerge, std::ostr
 	Camera *c=new CameraLookAt();
 	savedCameras.push_back(c);
 	
-	bool defaultSet = false;
 	//spin through
+
+	bool defaultSet = false;
 	for(unsigned int ui=0;ui<newCameraVec.size();ui++)
 	{
 		//If there is no userstring, then its a  "default"
@@ -855,6 +881,11 @@ bool AnalysisState::loadInternal(const char *cpFilename, bool doMerge, std::ostr
 		}
 
 	}
+	//There should be at least the default camera
+	ASSERT(savedCameras.size());
+
+	if(activeCamera >=savedCameras.size())
+		activeCamera=savedCameras.size()-1;
 
 	fileName=cpFilename;
 
@@ -888,9 +919,16 @@ bool AnalysisState::loadInternal(const char *cpFilename, bool doMerge, std::ostr
 
 	// state is overwritten
 	setStateModifyLevel(STATE_MODIFIED_NONE);
+	treeState.resetModifyLevel();
 
 #ifdef DEBUG
 	checkSane();
+#else
+	//NASTY HACK. After a few attempts, this still doesnt't work 
+	// as it should. If we are not in debug mode, then we should simply 
+	// fix it as best we can
+	if ( activeCamera >= savedCameras.size())
+		activeCamera=0;
 #endif
 	//Perform sanitisation on results
 	return true;
@@ -940,7 +978,7 @@ void AnalysisState::merge(const AnalysisState &otherState)
 	treeState.clearUndoRedoStacks();	
 
 	if(f.size())
-		treeState.addFilterTree(f,true);
+		treeState.addFilterTree(f);
 	
 
 	const vector<Camera *> &newCameraVec = otherState.savedCameras;	
@@ -1157,7 +1195,9 @@ void AnalysisState::addStashedToFilters(const Filter *parentFilter, unsigned int
 	pair<string,FilterTree> f;
 	copyStashedTree(stashOffset,f);
 
-	treeState.addFilterTree(f.second,parentFilter);
+	size_t filterId;
+	filterId =treeState.getIdByFilter(parentFilter);
+	treeState.addFilterTree(f.second,filterId);
 }
 
 void AnalysisState::copyStashedTrees(std::vector<std::pair<string,FilterTree > > &s) const
@@ -1244,6 +1284,15 @@ bool AnalysisState::hasStateOverrides() const
 	return false;
 }
 
+
+TreeState::TreeState()
+{
+	pendingUpdates=false;
+	wantAbort=false;
+	stateModifyLevel=STATE_MODIFIED_NONE;
+}
+
+
 void TreeState::operator=(const TreeState &oth) 
 {
 #ifdef DEBUG
@@ -1263,8 +1312,9 @@ void TreeState::operator=(const TreeState &oth)
 	
 }
 
-void TreeState::addFilter(Filter *f, bool isBase,size_t parentId)
+void TreeState::addFilter(Filter *f, size_t parentId)
 { 
+	bool isBase = (parentId == (size_t)-1);
 	pushUndoStack();
 	if(!isBase)
 		filterTree.addFilter(f,filterMap[parentId]);
@@ -1294,9 +1344,9 @@ void TreeState::addFilter(Filter *f, bool isBase,size_t parentId)
 	filterMap[idToUse] = f;
 }
 
-void TreeState::addFilterTree(FilterTree &f, bool isBase,size_t parentId)
+void TreeState::addFilterTree(FilterTree &f, size_t parentId)
 { 
-	ASSERT(!(isBase && parentId==(size_t)-1));
+	bool isBase = (parentId == (size_t)-1);
 
 	if(isBase)
 		filterTree.addFilterTree(f,0);
@@ -1440,6 +1490,25 @@ bool TreeState::reparentFilter(size_t filter, size_t newParent)
 	return true;
 }
 
+bool TreeState::respliceFilter(size_t filter, size_t newParent)
+{
+	//Save current filter state to undo stack
+	pushUndoStack();
+
+	//Try to reparent this filter. It might not work, 
+	// eg if parent and filter are the same thing 
+	if(!filterTree.respliceFilter(filterMap[filter],filterMap[newParent]))
+	{
+		//Didn't work. Pop the undo stack, to reverse our 
+		//push, but don't restore it,
+		// as this would cost us our filter caches
+		popUndoStack(false);
+		return false;
+	}
+	
+	return true;
+}
+
 bool TreeState::setFilterProperty(size_t filterId, 
 				unsigned int key, const std::string &value, bool &needUpdate)
 {
@@ -1456,6 +1525,10 @@ bool TreeState::setFilterProperty(size_t filterId,
 		// restoring would destroy the cache
 		popUndoStack(false);
 	}
+	else
+	{
+		elevateModifyLevel(STATE_MODIFIED_DATA);
+	}
 
 	return setOK;
 }
@@ -1527,13 +1600,14 @@ void TreeState::popUndoStack(bool restorePopped)
 	{
 		//Swap the current filter cache out with the undo stack result
 		filterTree.swap(undoFilterStack.back());
+
+		elevateModifyLevel(STATE_MODIFIED_DATA);
 		
 	}
 
 	//Pop the undo stack
 	undoFilterStack.pop_back();
 
-	setStateModifyLevel(STATE_MODIFIED_DATA);
 }
 
 void TreeState::popRedoStack()
@@ -1547,7 +1621,7 @@ void TreeState::popRedoStack()
 	//Pop the redo stack
 	redoFilterStack.pop_back();
 
-	setStateModifyLevel(STATE_MODIFIED_DATA);
+	elevateModifyLevel(STATE_MODIFIED_DATA);
 }
 
 void TreeState::applyBindings(const std::vector<std::pair<const Filter *,SelectionBinding> > &bindings)
@@ -1586,6 +1660,7 @@ void TreeState::applyBindings(const std::vector<std::pair<const Filter *,Selecti
 
 	}
 
+	elevateModifyLevel(STATE_MODIFIED_DATA);
 }
 
 void TreeState::applyBindingsToTree()
@@ -1603,7 +1678,8 @@ void TreeState::applyBindingsToTree()
 	//Clear the modifications to the selection devices
 	for(unsigned int ui=0;ui<selectionDevices.size();ui++)
 		selectionDevices[ui]->resetModifiedBindings();
-
+	
+	elevateModifyLevel(STATE_MODIFIED_DATA);
 
 }
 
@@ -1623,7 +1699,21 @@ bool TreeState::hasMonitorUpdates() const
 	return false;
 }
 
+unsigned int TreeState::getModifyLevel() const
+{
+	ASSERT(stateModifyLevel < STATE_MODIFIED_ENUM_END);
+	return stateModifyLevel;
+}
 
+void TreeState::elevateModifyLevel(unsigned int newLevel)
+{
+	stateModifyLevel=std::max(stateModifyLevel,newLevel);
+}
+
+void TreeState::resetModifyLevel()
+{
+	stateModifyLevel=STATE_MODIFIED_NONE;
+}
 
 #ifdef DEBUG
 
@@ -1632,6 +1722,7 @@ bool testStateReload();
 
 bool runStateTests()
 {
+	//FIXME: There could be a lot more testing here.
 	return testStateReload();
 }
 
diff --git a/src/backend/state.h b/src/backend/state.h
index 4c397f1..9e4d809 100644
--- a/src/backend/state.h
+++ b/src/backend/state.h
@@ -38,15 +38,14 @@
 bool runStateTests();
 #endif
 
-void setStateModifyLevel(int newLevel);
-int getStateModifyLevel();
 
 enum
 {
 	STATE_MODIFIED_NONE=0,
 	STATE_MODIFIED_VIEW, // the 3D view has chaged
 	STATE_MODIFIED_ANCILLARY, //Eg stashes, inactive cameras, and other things that might get saved
-	STATE_MODIFIED_DATA // actual data output is latered
+	STATE_MODIFIED_DATA,// actual data output is altered
+	STATE_MODIFIED_ENUM_END // not a level, just end of enum marker
 };
 
 
@@ -80,8 +79,11 @@ class TreeState
 		//Do we want to abort the refresh? This is passed to the tree
 		// to signal if the primary thread would like to abort
 		ATOMIC_BOOL wantAbort;
+
+		//How much has the tree been modified since last save?
+		unsigned int stateModifyLevel;
 	public:
-		TreeState() {pendingUpdates=false; wantAbort=false;}
+		TreeState() ;
 		
 		void operator=(const TreeState &otherState);  
 
@@ -106,16 +108,17 @@ class TreeState
 
 		const FilterTree &getTreeRef() const { return filterTree ;};
 
-		//!Add a new filter to the tree. Set isbase=false and parentID for not
-		//setting a parent (ie making filter base)
-		void addFilter(Filter *f, bool isBase, size_t parentId);
+		//!Add a new filter to the tree. parentID == -1 for not
+		//setting a parent (ie making filter at base of tree)
+		void addFilter(Filter *f, size_t parentId=(size_t)-1);
 		
-		//!Add a new subtree to the tree. Note that the tree will be cleared
-		// as a result of this operation. Control of all pointers will be handled internally.
-		// Currently, If you wish to use ::getFilterById you *must* rebuild the tree control with
-		// ::updateWxTreeCtrl. This should be fixed.
-		void addFilterTree(FilterTree &f,bool isBase=true, 
-						size_t parentId=(unsigned int)-1); 
+		//!Add a new subtree to the tree, optionally specifying a parent filter.
+		// - Note that the input tree (the one to be added) will be cleared
+		// as a result of this operation. 
+		// Control of all pointers will be handled internally by this calss.
+		// - If you wish to use ::getFilterById you *must* rebuild the tree control with
+		// ::updateWxTreeCtrl. 
+		void addFilterTree(FilterTree &f, size_t parentId=(size_t)-1); 
 
 		//!Grab the filter tree from the internal one, and swap the 
 		// internal with a cloned copy of the internal.
@@ -144,18 +147,18 @@ class TreeState
 		//!Return all of a given type of filter from the filter tree. Type must be the exact type of filter - it is not a mask
 		void getFiltersByType(std::vector<const Filter *> &filters, unsigned int type)  const;
 
-		//!Return the number of filters currently in the main tree
-		size_t numFilters() const { return filterTree.size();};
-
 		//!Clear the cache for the filters
 		void purgeFilterCache() { filterTree.purgeCache();};
 
 		//!Delete a filter and all its children
 		void removeFilterSubtree(size_t filterId);
 
-		//Move a filter from one part of the tree to another
+		//Move a filter, and all its children, from one part of the tree to another
 		bool reparentFilter(size_t filterID, size_t newParentID);
 
+		//Move a filter from one part of the tree to another, leaving all the children in-place
+		bool respliceFilter(size_t filterID, size_t newParentID);
+
 		//!Set the properties using a key-value result 
 		/*
 		 * The return code tells whether to reject or accept the change. 
@@ -213,7 +216,14 @@ class TreeState
 	
 		//Return the selection devices obtained from the last refresh
 		std::vector<SelectionDevice *> &getSelectionDevices() { return selectionDevices;};
-	
+
+
+		//Increase the current state's modification level, if possible
+		void elevateModifyLevel(unsigned int newLevel);
+		//obtain the modification level since last uage
+		unsigned int getModifyLevel() const;
+		//Clear the current modification level
+		void resetModifyLevel();
 };
 
 //The underlying data for any given state in the analysis toolchain
@@ -267,10 +277,17 @@ class AnalysisState
 		//!User-set animation properties
 		PropertyAnimator animationState;
 
-		//TODO: Migrte into some state wrapper class with animationState
+		//TODO: Migrate into some state wrapper class with animationState
 		//Additional state information for animation
 		std::vector<std::pair<std::string,size_t>  > animationPaths;
 
+		//FIXME: this should not be static, but should be available to the filters at state read time.
+		// This variable is only set during a state read
+		static unsigned int currentStateWriterVersion;
+
+		//To what level has the state been modified since last save, or program start?
+		unsigned int stateModifyLevel;  
+
 		bool camNameExists(const std::string &s)  const ;
 
 		//Clear the effect vector
@@ -289,6 +306,11 @@ class AnalysisState
 #endif
 	public:
 
+	
+		//This is only valid during a state read, and should only be used by filters
+		// THis returns the version of the program that wrote the state	
+		static unsigned int getStateWriterVersion();
+
 		TreeState treeState;
 
 		AnalysisState();
@@ -301,7 +323,11 @@ class AnalysisState
 
 		void operator=(const AnalysisState &oth);
 
-		
+		//To what extent the state has been modified since last save
+		unsigned int getStateModifyLevel() const;
+		//Set the extent to which state has been modified since last save
+		// FIXME: Rename. This can only elevate the state modification level, not decrease it
+		void setStateModifyLevel(unsigned int newLevel);
 
 		//Load an XML representation of the analysis state
 		// - returns true on success, false on fail
@@ -318,7 +344,7 @@ class AnalysisState
 		// 	- write package says if state should attempt to ensure that output
 		// 		state is fully self-contained, and locally referenced
 		bool save(const char *cpFilename, std::map<std::string,std::string> &fileMapping,
-				bool writePackage,bool setModifyLevel=true) const ;
+				bool writePackage,bool setModifyLevel=true);
 
 		//Combine a separate state file into this one, avoiding clashes
 		void merge(const AnalysisState &srcState);
diff --git a/src/backend/viscontrol.cpp b/src/backend/viscontrol.cpp
index a239ec9..4a4fad5 100644
--- a/src/backend/viscontrol.cpp
+++ b/src/backend/viscontrol.cpp
@@ -55,7 +55,7 @@ unsigned int RefreshController::refresh()
 
 bool VisController::stateIsModified(unsigned int minLevel) const
 {
-	return state.hasStateData() && getStateModifyLevel();
+	return state.hasStateData() && state.getStateModifyLevel();
 }
 
 void VisController::transferSceneCameraToState()
@@ -114,7 +114,7 @@ void VisController::updateScene(RefreshController *r)
 		dataOnly.push_back(t);
 	}	
 	
-	updateScene(dataOnly,false);
+	updateScene(dataOnly,true);
 }
 
 void VisController::updateScene(list<vector<const FilterStreamData *> > &sceneData, 
@@ -133,6 +133,9 @@ void VisController::updateScene(list<vector<const FilterStreamData *> > &sceneDa
 	
 	targetPlots.clear(true); //Clear, but preserve selection information.
 
+	float rBack,gBack,bBack;
+	state.getBackgroundColour(rBack,gBack,bBack);
+	scene.setBackgroundColour(rBack,gBack,bBack);
 
 	//Names for plots
 	vector<std::pair<size_t,string> > plotLabels;
@@ -249,7 +252,7 @@ void VisController::updateScene(list<vector<const FilterStreamData *> > &sceneDa
 						plotData->yLabel,plotData->dataLabel);
 					
 					//set the appearance of the plot
-					//plotNew->setTraceStyle(plotStyle);
+					plotNew->setTraceStyle(plotData->plotStyle);
 					plotNew->setColour(plotData->r,plotData->g,plotData->b);
 					
 					
@@ -275,7 +278,7 @@ void VisController::updateScene(list<vector<const FilterStreamData *> > &sceneDa
 					unsigned int plotID;
 		
 					PlotBase *plotNew;
-					switch(plotData->plotType) 
+					switch(plotData->plotStyle) 
 					{
 						case PLOT_2D_DENS:
 						{
@@ -352,7 +355,9 @@ void VisController::updateScene(list<vector<const FilterStreamData *> > &sceneDa
 						//prevent vector destructor from deleting pointers
 						//we have transferred ownership of to scene
 						drawData->drawables.clear();
-						deleteIt=true;
+						
+						if(releaseData)
+							deleteIt=true;
 					}
 					break;
 				}
@@ -672,7 +677,6 @@ void VisController::updateWxTreeCtrl(wxTreeCtrl *t, const Filter *visibleFilt)
 	upWxTreeCtrl(state.treeState.getTreeRef(),t,	
 			filterMap,persistentFilters,visibleFilt);
 
-	cerr << "Rebuilt filter map" <<endl;
 	state.treeState.swapFilterMap(filterMap);
 }
 
diff --git a/src/common/array2D.h b/src/common/array2D.h
index 65f0660..9b47fcc 100644
--- a/src/common/array2D.h
+++ b/src/common/array2D.h
@@ -62,8 +62,8 @@ class Array2D {
 
 private:
 	unsigned int x, y;
-	T ** ptr;
-	T * data;
+	T ** ptr; // Row access pointers
+	T * data; //Square memory block
 	void ar_realloc(unsigned int w, unsigned int h) {
 		if ((ptr) && ((h > y) || (4 * h < y))) {
 			delete[] ptr;
@@ -135,7 +135,7 @@ public:
 	
 	// use with indices
 	T * operator[](unsigned int index) const {
-        ASSERT((index>=0) && (index < y));
+        ASSERT((index>0) && (index < y));
 		return ptr[index];
 	}
 
@@ -193,15 +193,15 @@ public:
 		data=NULL;
 	}
 
-	void unpack(std::vector<std::vector<T> > &data) const
+	void unpack(std::vector<std::vector<T> > &unpackData) const
 	{
-		data.resize(y);
+		unpackData.resize(y);
 #pragma omp parallel for
 		for(unsigned int ui=0;ui<y; ui++)
 		{
-			data[ui].resize(x);
+			unpackData[ui].resize(x);
 			for(unsigned int uj=0;uj<x;uj++)
-				data[ui][uj]=ptr[ui][uj];
+				unpackData[ui][uj]=ptr[ui][uj];
 		}
 	}
 
diff --git a/src/common/basics.cpp b/src/common/basics.cpp
index 20677e4..1bf22e6 100644
--- a/src/common/basics.cpp
+++ b/src/common/basics.cpp
@@ -219,7 +219,7 @@ string veryFuzzyTimeSince( time_t origTime, time_t nowTime)
 					true,	//hour
 					false,	//45m	
 					false,	//30m	
-					false,	//20m	
+					true,	//20m	
 					false,	//15m	
 					false,	//10m	
 					false,	//5m
@@ -259,7 +259,7 @@ string veryFuzzyTimeSince( time_t origTime, time_t nowTime)
 			 NTRANS("a few hours ago"),
 			 "", //45m
 			 "", //30m
-			 "", //20m
+			 NTRANS("tens of minutes ago"), //20m
 			 "", //15m
 			 "", //10m
 			 "", //5m
@@ -624,6 +624,18 @@ bool ColourRGBAf::operator!=(const ColourRGBAf  &oth) const
 {
 	return !(*this == oth);
 }
+
+
+BoundCube::BoundCube(const Point3D &p1, const Point3D &p2)
+{
+	for(unsigned int ui=0;ui<3;ui++)
+	{
+		valid[ui][0] = valid[ui][1] = true;
+		bounds[ui][0] =std::min(p1[ui],p2[ui]);
+		bounds[ui][1] =std::max(p1[ui],p2[ui]);
+	}
+}
+
 void BoundCube::getBound(Point3D &retBound, unsigned int minMax) const
 {
 	retBound=Point3D(bounds[0][minMax],
@@ -728,8 +740,10 @@ void BoundCube::getPlaneIntersectVertices(const Point3D &planeOrigin, const Poin
 	//		and  (idx,idx+1) (idx in 0,2,4,6)	: 4 edges (vertical)
 
 	//Adjacency graph for cube edges
-	const unsigned int eStartIdx[12] = {0,1,2,3, 0,1,4,5, 0,2,4,6};
-	const unsigned int eEndIdx[12] = {4,5,6,7, 2,3,6,7, 1,3,5,7};
+	const unsigned int eStartIdx[12] = { 0,1,2,3, 0,1,4,5, 0,2,4,6
+						};
+	const unsigned int eEndIdx[12] = { 4,5,6,7, 2,3,6,7, 1,3,5,7
+						};
 	
 
 	for(unsigned int ui=0;ui<12;ui++)
@@ -748,9 +762,75 @@ void BoundCube::getPlaneIntersectVertices(const Point3D &planeOrigin, const Poin
 
 		float numerator = (planeOrigin - eStart).dotProd(normal);
 		float v;
-		v= numerator/denom;	
-		intersectPts.push_back((eEnd-eStart)*v+ eStart);
+		v= numerator/denom;
+		if(v <=1.0f && v>=0.0f)	
+			intersectPts.push_back((eEnd-eStart)*v+ eStart);
+	}
+
+	vector<bool> killV;
+	killV.resize(intersectPts.size(),false);
+	//Eliminate duplicates
+	//---
+	for(unsigned int ui=0;ui<intersectPts.size() ; ui++)
+	{
+		//we already marked this one, move on
+		if(killV[ui])
+			continue;
+
+		//find the dups for this entry
+		for(unsigned int uj=ui+1;uj<intersectPts.size();uj++)
+		{
+			if(intersectPts[ui] == intersectPts[uj])
+				killV[ui]=true;
+		}
+
 	}
+
+	//kill the duplicated entries
+	vectorMultiErase(intersectPts,killV);
+	//---
+
+
+	//The generated points may not be simplical,
+	// we may need to "untwist" the polygon
+	if(intersectPts.size() > 3)
+	{
+		//Find the clockwise angle from the first vector (vertex-midpt)
+		// to all the other vectors
+		Point3D midPt = Point3D::centroid(intersectPts);
+		vector<std::pair<size_t, float> > angles;
+		angles.resize(intersectPts.size());
+		Point3D v1= intersectPts[0] - midPt;
+		v1.normalise(); 
+		angles[0]=std::make_pair(0,0);
+		for(unsigned int ui=0;ui<intersectPts.size()-1;ui++)
+		{
+			Point3D v2;
+			v2 = intersectPts[(ui+1)%intersectPts.size()] - midPt;
+			v2.normalise();
+
+			angles[ui+1] = std::make_pair(ui+1,clockwiseAngle(v1,v2,normal));
+		}
+
+		//sort by increasing angle
+		ComparePairSecond cmp;
+		std::sort(angles.begin(),angles.end(),cmp);
+	
+
+		//reshuffle the points to be in-order
+		vector<Point3D> newPts;
+		newPts.resize(intersectPts.size());
+		for(unsigned int ui=0;ui<intersectPts.size();ui++)
+			newPts[ui] = intersectPts[angles[ui].first];
+
+		//swap re-ordered points out
+		intersectPts.swap(newPts);
+
+	}
+
+	//Can be at most a hexagon
+	ASSERT(intersectPts.size() <=6);	
+
 }
 
 Point3D BoundCube::getVertex(unsigned int idx) const
@@ -1347,7 +1427,8 @@ unsigned int loadTextData(const char *cpFilename, vector<vector<float> > &dataVe
 	while(CFile.good() && !CFile.eof() && atHeader)
 	{
 		//Grab a line from the file
-		CFile.getline(inBuffer,BUFFER_SIZE);
+		if(!CFile.getline(inBuffer,BUFFER_SIZE))
+			break;
 
 		if(!CFile.good())
 			return ERR_FILE_FORMAT;
@@ -1457,10 +1538,8 @@ unsigned int loadTextData(const char *cpFilename, vector<vector<float> > &dataVe
 			
 		}
 		//Grab a line from the file
-		CFile.getline(inBuffer,BUFFER_SIZE);
-		
-		if(!CFile.good() && !CFile.eof())
-			return ERR_FILE_FORMAT;
+		if(!CFile.getline(inBuffer,BUFFER_SIZE))
+			break;
 	}
 
 	return 0;
@@ -1516,6 +1595,8 @@ unsigned int loadTextStringData(const char *cpFilename, vector<vector<string> >
 }
 
 
+
+
 #if !defined(__WIN32__) && !defined(__WIN64)
 	
 bool isNotDirectory(const char *filename)
@@ -1566,8 +1647,52 @@ bool isValidXML(const char *filename)
 		return result ==0;
 	}
 
-	//Debug check ineffective
+#if !(defined(WIN32) || defined(WIN64))
+	//Debug check ineffective - don't bother warning under windows, as the binary
+	// is unlikely to be present.
 	WARN(!result,"xmllint not installed in system PATH, cannot perform debug check")
+#endif
+	return true;
+}
+
+
+bool BoundCube::test()
+{
+	//Try to obtain the plane intersections
+	BoundCube b(Point3D(0,0,0),Point3D(1,1,1));
+
+	vector<Point3D> pts;
+	b.getPlaneIntersectVertices(
+		Point3D(0.5,0.5,0.5),Point3D(0,0,1),pts);
+
+	TEST(pts.size() == 4,"plane intersect test");
+	for(unsigned int ui=0;ui<pts.size();ui++)
+	{
+		TEST(EQ_TOL(pts[ui][2],0.5),"intersect test");
+	}
+
+	pts.clear();
+	b.getPlaneIntersectVertices(
+		Point3D(0.5,0.5,0.5),Point3D(1,1,0),pts);
+	TEST(pts.size() == 4,"plane intersect test");
+	for(unsigned int ui=0;ui<pts.size();ui++)
+	{
+		TEST( (EQ_TOL(pts[ui][2],0) || EQ_TOL(pts[ui][2],1)) ,"intersect test");
+	}
+	pts.clear();
+	b.getPlaneIntersectVertices(
+		Point3D(0.95,0.95,0.95),Point3D(1,1,1),pts);
+	TEST(pts.size() == 3,"plane intersect test");
+
 	return true;
 }
+
+bool runBasicsTests()
+{
+	if(!BoundCube::test())
+		return false;
+
+	return true;
+}
+
 #endif
diff --git a/src/common/basics.h b/src/common/basics.h
index e7151f1..f11d013 100644
--- a/src/common/basics.h
+++ b/src/common/basics.h
@@ -331,6 +331,8 @@ public:
         setInvalid();
     }
 
+    BoundCube(const Point3D &p1, const Point3D &p2);
+
     void setBounds(float xMin,float yMin,float zMin,
                    float xMax,float yMax,float zMax) {
         bounds[0][0]=xMin; bounds[1][0]=yMin; bounds[2][0]=zMin;
@@ -370,7 +372,7 @@ public:
     //!Get the bounds
     void getBounds(Point3D &low, Point3D &high) const ;
 
-    //!Return the size of the cube along the specified dimension
+    //!Return the side length of the cube along the specified dimension
     float getSize(unsigned int dim) const;
 
     //! Returns true if all bounds are valid
@@ -439,6 +441,9 @@ public:
 
     friend  std::ostream &operator<<(std::ostream &stream, const BoundCube& b);
 
+#ifdef DEBUG
+	static bool test();
+#endif
     //FIXME: Hack!
     friend class K3DTree;
     friend class K3DTreeMk2;
diff --git a/src/common/colourmap.cpp b/src/common/colourmap.cpp
index 5e96673..fb097c4 100644
--- a/src/common/colourmap.cpp
+++ b/src/common/colourmap.cpp
@@ -24,6 +24,11 @@
 #include <limits>
 
 #include "common/translation.h"
+#include "common/assertion.h"
+
+//4th-order polynomial fitted colour map. Coeffs are in decreasing power (p^n... p^0), and per channel
+// so you need [5 + 5 + 5] sized array (R + G + B) 
+void fittedColorMap(unsigned char *rgb, float value, float min, float max, const float *coeffs);
 
 void jetColorMap(unsigned char *rgb,float value,float min,float max)
 {
@@ -191,6 +196,60 @@ void grayColorMap(unsigned char *rgb,float value,float min,float max)
   rgb[0]=rgb[1]=rgb[2]=(unsigned char)(255*value/max);
 }
 
+
+void infernoColorMap(unsigned char *rgb, float value, float min, float max)
+{
+	//I have performed a simple parameterised fit
+	// to the colourmap provided at
+	// BIDS (github).  There is some quality loss in the fit
+	// https://bids.github.io/colormap/
+	//4th-order fit
+	const float INFERNO_COEFFS[3*5]= {  3.9160e-10, -3.0773e-7,  5.6460e-5, 2.8489e-3, -1.3064e-2 , //Fitted R
+					   -4.8786e-10,  2.6912e-7, -2.9237e-5,  2.0396e-3, -3.5979e-3, // Fitted G
+					   1.6772e-09,  -4.0943e-07 , -3.4314e-05 ,  1.0220e-02,-7.5587e-3 }; // Fitted B
+	fittedColorMap(rgb,value,min,max,INFERNO_COEFFS);
+}
+
+
+void viridisColorMap(unsigned char *rgb, float value, float min, float max)
+{
+	//4th order polynomial fit to viridis. Each row is a different channel (RGB) 
+	const float VIRIDIS_COEFFS[5*3]={	-1.0011e-09,6.8506e-07,-1.1678e-04,4.9495e-03,2.3277e-01,
+						-2.9027e-10,1.3784e-07,-2.6865e-05,6.2223e-03,1.3762e-03,
+						2.2975e-10,-1.0751e-07,-6.6945e-06,3.6694e-03,3.6022e-01};
+
+	fittedColorMap(rgb,value,min,max,VIRIDIS_COEFFS);
+}
+
+void fittedColorMap(unsigned char *rgb, float value, float min, float max, const float *coeffs)
+{
+
+	//scale value to the 0-255 range
+
+	value= (value - min)/(max-min)*255.0f;
+	value = std::min(value,255.0f);
+	value = std::max(value,0.0f);
+
+	const unsigned int FIT_ORDER=5;
+		
+	//Compute the fitted RGB 
+	for(unsigned int ui=0;ui<3;ui++)
+	{
+		float f;
+		unsigned int offset = ui*FIT_ORDER;
+		f= value*value*value*value*coeffs[offset+0] + 
+				value*value*value*coeffs[offset+1] +
+				value*value*coeffs[offset+2] +
+				value*coeffs[offset+3] +
+				coeffs[offset+4];
+		f = std::max(f,0.0f);
+		f = std::min(f,255.0f);
+		rgb[ui] = f*255.0f;
+	}
+
+}
+
+
 void colourMapWrap(unsigned int mapID,unsigned char *rgb, float v, 
 				float min, float max, bool reverse)
 
@@ -206,30 +265,36 @@ void colourMapWrap(unsigned int mapID,unsigned char *rgb, float v,
 	//Select the desired colour map
 	switch(mapID)
 	{
-		case  0:
+		case  COLOURMAP_JET:
 			jetColorMap(rgb, v, min, max);
 			break;
-		case  1:
+		case  COLOURMAP_HOT:
 			hotColorMap(rgb, v, min, max);
 			break;
-		case  2:
+		case  COLOURMAP_COLD:
 			coldColorMap(rgb, v, min, max);
 			break;
-		case  3:
+		case  COLOURMAP_GRAY:
 			 grayColorMap(rgb, v, min, max);
 			break;
-		case  4:
+		case  COLOURMAP_CYCLIC:
 			cyclicColorMap(rgb, v, min, max);
 			break;
-		case  5:
+		case  COLOURMAP_GENERAL:
 			colorMap(rgb, v, min, max);
 			break;
-		case  6:
+		case  COLOURMAP_BLUE:
 			blueColorMap(rgb, v, min, max);
 			break;
-		case  7:
+		case  COLOURMAP_RAND:
 			 randColorMap(rgb, v, min, max);
 			break;
+		case  COLOURMAP_INFERNO:
+			infernoColorMap(rgb, v, min, max);
+			break;
+		case  COLOURMAP_VIRIDIS:
+			viridisColorMap(rgb, v, min, max);
+			break;
 	}
 
 
@@ -238,7 +303,7 @@ void colourMapWrap(unsigned int mapID,unsigned char *rgb, float v,
 
 std::string getColourMapName(unsigned int mapID)
 {
-
+	ASSERT(mapID < COLOURMAP_ENUM_END);
 	const char *mapNames[] = { NTRANS("Jet"),
 				NTRANS("Hot"),
 				NTRANS("Cold"),
@@ -246,9 +311,35 @@ std::string getColourMapName(unsigned int mapID)
 				NTRANS("Cyclic"),
 				NTRANS("General"),
 				NTRANS("Blue"),
-				NTRANS("Pseudo-Random")};
+				NTRANS("Pseudo-Random"),
+				NTRANS("Inferno"),
+				NTRANS("Viridis")};
 
 	return TRANS(mapNames[mapID]);
 }
 
 
+#ifdef DEBUG
+
+bool testColourMap()
+{
+	//FIXME: More tests
+
+	float v,minV,maxV;
+	v = 50;
+	minV=0;
+	maxV=100;
+
+	unsigned char rgb[3];
+
+	infernoColorMap(rgb,v,minV,maxV);
+
+	TEST(EQ_TOLV( (float) rgb[0],0.7364*255.0f,2.0),"inferno Red") ;
+	TEST(EQ_TOLV((float)rgb[1],0.2118*255.0f,2.0f),"inferno Green") ;
+	TEST(EQ_TOLV((float)rgb[2],0.33004*255.0f,2.0f),"inferno Blue") ;
+
+	return true;
+}
+
+#endif
+
diff --git a/src/common/colourmap.h b/src/common/colourmap.h
index d086952..347b0ce 100644
--- a/src/common/colourmap.h
+++ b/src/common/colourmap.h
@@ -21,21 +21,35 @@
 
 #include <string>
 
-const unsigned int NUM_COLOURMAPS=8;
+
+//List of the available colourmaps
+enum
+{
+	COLOURMAP_JET,
+	COLOURMAP_HOT,
+	COLOURMAP_COLD,
+	COLOURMAP_GRAY,
+	COLOURMAP_CYCLIC,
+	COLOURMAP_GENERAL,
+	COLOURMAP_BLUE,
+	COLOURMAP_RAND,
+	COLOURMAP_INFERNO,
+	COLOURMAP_VIRIDIS,
+	COLOURMAP_ENUM_END
+};
 
 //!get colour for specific map
-/* 0 jetColorMap  |  5 colorMap 
- * 1 hotColorMap  |  6 blueColorMap
- * 2 coldColorMap |  7 randColorMap
- * 3 grayColorMap |  
- * 4 cyclicColorMap | 
- *
- * returns char in 0->255 range 
- */
+//returns char in 0->255 range 
 void colourMapWrap(unsigned int mapID,unsigned char *rgb, 
 		float value, float min,float max,bool reverse);
 
 std::string getColourMapName(unsigned int mapID);
 
+
+#ifdef DEBUG
+//Run the colour map tests
+bool testColourMap();
+#endif
+
 #endif
 
diff --git a/src/common/constants.cpp b/src/common/constants.cpp
index 7bb901b..8c6f0ac 100644
--- a/src/common/constants.cpp
+++ b/src/common/constants.cpp
@@ -26,6 +26,6 @@ const char *DTD_NAME="threeDepict-state.dtd";
 //Program name
 const char *PROGRAM_NAME = "3Depict";
 //Program version
-const char *PROGRAM_VERSION = "0.0.19";
+const char *PROGRAM_VERSION = "0.0.20";
 //Path to font for Default FTGL  font
 const char *FONT_FILE= "FreeSans.ttf";
diff --git a/src/common/mathfuncs.cpp b/src/common/mathfuncs.cpp
index 3c5c073..8409998 100644
--- a/src/common/mathfuncs.cpp
+++ b/src/common/mathfuncs.cpp
@@ -235,6 +235,11 @@ float Point3D::sqrMag() const
 	return value[0]*value[0] + value[1]*value[1] + value[2]*value[2];
 }
 
+float Point3D::mag() const
+{
+	return sqrtf(sqrMag());
+}
+
 Point3D Point3D::normalise()
 {
 	float mag = sqrtf(sqrMag());
@@ -301,6 +306,13 @@ void Point3D::sphericalAngles(float &theta, float &phi) const
 #endif
 }
 
+void Point3D::setISOSpherical(float theta, float phi, float r)
+{
+	value[0] = r*sin(theta)*cos(phi);
+	value[1] = r*sin(theta)*sin(phi);
+	value[2] = r*cos(theta);
+}
+
 bool Point3D::orthogonalise(const Point3D &pt)
 {
 	Point3D crossp;
@@ -368,16 +380,20 @@ bool Point3D::parse(const std::string &str)
 	string tmpStr;
 	tmpStr=stripWhite(str);
 
+	//are we using polar notation?
+	bool polarNotation = (tmpStr[0] == '<' && tmpStr[tmpStr.size()-1] == '>');
 
 	//Two strings must be in sync
 	std::string allowableStartChars, allowableEndChars;
 	allowableStartChars="([{<'";
 	allowableEndChars=")]}>'";
 
+	//Find the start/end chars
 	size_t startPos,endPos;
 	startPos=allowableStartChars.find(tmpStr[0]);
 	endPos=allowableEndChars.find(tmpStr[tmpStr.size()-1]);
 
+
 	//Strip the start/end chars 
 	if(startPos !=std::string::npos && endPos != std::string::npos)
 		tmpStr=tmpStr.substr(1,tmpStr.size()-1);
@@ -420,8 +436,21 @@ bool Point3D::parse(const std::string &str)
 			return false;
 	}
 
+	if(!polarNotation)
+		setValueArr(p);
+	else
+	{
+		//r,theta,phi, as users should input
+		// <r,theta,phi>
+		//Convert from degrees to radiians
+		p[1]*=M_PI/180;	
+		p[2]*=M_PI/180;	
+
+		//set spherical co-ordinates
+		setISOSpherical(p[1],p[2],p[0]);
+	}
+
 
-	setValueArr(p);
 	
 	return true;
 }
@@ -769,6 +798,14 @@ void quat_rot_apply_quat(Point3f *point, const Quaternion *rotQuat)
 	quat_mult_no_second_a(&temp,rotQuat,&pointQuat);
 	quat_pointmult(point, &temp,rotQuat);
 }
+
+//Invert the given quaternion (this for example, can generate the inverse rotation) 
+void quat_invert(Quaternion *quat)
+{
+	quat->b=-quat->b;
+	quat->c=-quat->c;
+	quat->d=-quat->d;
+}
 	
 //For the table to work, we need the sizeof(size_T) at preprocess time
 #ifndef SIZEOF_SIZE_T
@@ -1024,5 +1061,182 @@ void rotateByMatrix(const vector<Point3D> &vpts, const gsl_matrix *m, vector<Poi
 	gsl_vector_free(rv);
 }
 
+float clockwiseAngle(const Point3D &v1, const Point3D &v2,const Point3D &normal)
+{
+
+	//sin(theta) = determinant
+	// cos(tehta) = |u||v|
+	float det = normal.dotProd(v1.crossProd(v2));
+	float angle= 	atan2(det,v1.dotProd(v2));
+	//shift range to [0,2*PI]
+	if(angle < 0)
+		angle +=2.0*M_PI;
+	return angle;
+}
+
+
+Point3D generatePointInTri(const Point3D &origin,
+		const Point3D &sideV1, const Point3D &sideV2, RandNumGen &rng)
+{
+	float r, s;
+	r = rng.genUniformDev();
+	s= rng.genUniformDev();
+
+	if(r+s >=1)
+	{
+		//Remap to be inside triangle, as the 
+		// vector sum lies in a parallelogram, but
+		// not in the triangle 
+		r = 1-r;
+		s= 1-s;
+	}
+
+
+	return origin + sideV1*r + sideV2*s;	
+
+}
+
+void scatterPointsInPolygon(const vector<Point3D> &polygon, const Point3D &normal,
+		float scatterDensity, RandNumGen &rng, vector<Point3D> &result)
+{
+	ASSERT(polygon.size() > 2);
+
+	//Find the area of the polygon
+	Point3D centroid;
+	centroid = Point3D::centroid(polygon);
+
+	//Keep track of the relative area of each triangle,
+	// and its vectors
+	vector<float> weights;
+	vector<std::pair<Point3D, Point3D> > triVecs;
+	weights.resize(polygon.size());
+	triVecs.resize(polygon.size());
+
+	float area=0;
+	for(unsigned int ui=0;ui<polygon.size();ui++)
+	{
+		//Compute side vectors
+		Point3D v1,v2;
+		v1 = polygon[ui] -centroid;
+		v2 = polygon[(ui+1)%polygon.size()] - centroid;
+		
+		//remember for later
+		triVecs[ui].first = v1;
+		triVecs[ui].second=v2;
+
+		//add this triangle's area
+		float thisArea;
+		thisArea= v1.mag()*v2.mag()*0.5*sin(v1.angle(v2));
+		weights[ui] = thisArea;
+		area+=thisArea;
+	}
+
+	if(area < sqrt(std::numeric_limits<float>::epsilon()))
+		return;
+
+	//normalise the weight to total area,
+	// and accumulate
+	float cumSum=0.0f;;
+	for(unsigned int ui=0;ui<weights.size();ui++)
+	{
+		weights[ui]/=area;
+		cumSum+=weights[ui];
+		weights[ui]=cumSum;
+	}
 	
+	unsigned int nScatter = ceil(scatterDensity*area);
 
+	result.resize(nScatter);
+	for(unsigned int ui=0;ui<nScatter; ui++)
+	{
+		//Randomly pick a triangle
+		unsigned int triangle;
+		triangle =std::lower_bound(weights.begin(),
+			weights.end(), rng.genUniformDev()) - weights.begin();
+
+		//generate a random point in it
+		Point3D p;
+		result[ui] = generatePointInTri(centroid,triVecs[triangle].first,
+					triVecs[triangle].second,rng);
+	}
+
+}
+
+
+void rotatePointsToXYPlane(vector<Point3D> &pts, const Point3D &normal, const Point3D &origin, Quaternion &q)
+{
+	//Move all points to origin;
+	for(size_t ui=0;ui<pts.size();ui++)
+		pts[ui]-=origin;
+
+	//FIXME : Quaternion not inited
+	float rotateAngle = normal.angle(Point3D(0,0,1)); 
+	if(fabs(rotateAngle) < sqrt(std::numeric_limits<float>::epsilon()))
+		return;
+
+	//Compute rotation axis
+	Point3D rotateAxis = normal.crossProd(Point3D(0,0,1));
+	rotateAxis.normalise();
+
+	Point3f ra;
+	ra.fx=rotateAxis[0]; 
+	ra.fy=rotateAxis[1];
+	ra.fz=rotateAxis[2];
+	quat_get_rot_quat(&ra,rotateAngle,&q);
+
+	//perform in-place rotation
+	for(unsigned int ui=0;ui<pts.size();ui++)
+	{
+		Point3f pf;
+		pf.fx=pts[ui][0];
+		pf.fy=pts[ui][1];
+		pf.fz=pts[ui][2];
+		
+		quat_rot_apply_quat(&pf,&q);
+
+		pts[ui] = Point3D(pf.fx,pf.fy,pf.fz);
+	}
+
+
+}
+
+void applyQuaternion(vector<Point3D> &pts,Quaternion &q)
+{
+	//perform in-place rotation
+	for(unsigned int ui=0;ui<pts.size();ui++)
+	{
+		Point3f pf;
+		pf.fx=pts[ui][0];
+		pf.fy=pts[ui][1];
+		pf.fz=pts[ui][2];
+		
+		quat_rot_apply_quat(&pf,&q);
+
+		pts[ui] = Point3D(pf.fx,pf.fy,pf.fz);
+	}
+
+}
+
+#ifdef DEBUG
+
+bool testMathfuncs()
+{
+	Point3D p1,p2,n;
+	p1=Point3D(1,0,0);
+	p2=Point3D(0,1,0);
+	n=Point3D(0,0,1);
+
+	TEST( EQ_TOL(clockwiseAngle(p1,p2,n), M_PI/2.0f),"clockwise angle test");
+
+	p2=Point3D(1,1,0);
+	TEST( EQ_TOL(clockwiseAngle(p1,p2,n), M_PI/4.0f),"clockwise angle test");
+	
+	p2=Point3D(-1,1,0);
+	TEST( EQ_TOL(clockwiseAngle(p1,p2,n), M_PI/2.0f  + M_PI/4.0f),"clockwise angle test");
+	p2=Point3D(-1,-1,0);
+	TEST( EQ_TOL(clockwiseAngle(p1,p2,n), M_PI  + M_PI/4.0f),"clockwise angle test");
+
+	return true;
+}
+
+#endif
diff --git a/src/common/mathfuncs.h b/src/common/mathfuncs.h
index ac18128..c39b39b 100644
--- a/src/common/mathfuncs.h
+++ b/src/common/mathfuncs.h
@@ -63,6 +63,11 @@ class Point3D
                                 value[2]=*(val+2);
                         };
 
+		//FIXME: This should be r,theta,phi...
+		//Assign the vector using spherical coordinates. 
+		// theta - inclination. phi - azimuth, r - radius
+		void setISOSpherical(float theta, float phi, float r);
+
                 //!Get value of ith dim (0, 1, 2)
                 inline float getValue(unsigned int ui) const {return value[ui];};
 		//Retrieve the internal pointer. Only use if you know why.
@@ -75,6 +80,8 @@ class Point3D
                 void add(const Point3D &obj);
 
 		//Convert a point string from its "C" language representation to a point value
+		// - two types of notation are allowed, cartesian (a,b,c) (with or without brackets
+		//   and polar ISO Spherical, angle brackets only <r,theta,phi>
 		bool parse(const std::string &str);
 		
 		//!Equality operator
@@ -113,6 +120,8 @@ class Point3D
 
                 //!overload for array indexing returns |pt|^2
                 float sqrMag() const;
+                
+		float mag() const;
 		
 		//!Apply float->float transformation
 		void sqrt() { for(unsigned int ui=0;ui<3;ui++) value[ui]=sqrtf(value[ui]); }
@@ -212,7 +221,7 @@ class RandNumGen
 
 typedef struct 
 {
-	float a;
+	float a; //Real component
 	float b;
 	float c;
 	float d;
@@ -248,6 +257,9 @@ void quat_get_rot_quat(const Point3f *rotVec, float angle,  Quaternion *rotQuat)
 //Use previously generated quats from quat_get_rot_quats to rotate a point
 void quat_rot_apply_quat(Point3f *point, const Quaternion *rotQuat);
 
+//Apply the given quaternion rotation to the input points
+void applyQuaternionRotation(std::vector<Point3D> &pts,const Quaternion &q);
+
 //This class implements a Linear Feedback Shift Register (in software) 
 //This is a mathematical construct based upon polynomials over closed natural numbers (N mod p).
 //This will generate a weakly random digit string, but with guaranteed no duplicates, using O(1)
@@ -302,4 +314,22 @@ void computeRotationMatrix(const Point3D &ur1, const Point3D &ur2,
 void rotateByMatrix(const std::vector<Point3D> &vpts, 
 		const gsl_matrix *m, std::vector<Point3D> &r);
 
+
+//Compute the angle between v1 and v2, clockwise, as looking down normal
+float clockwiseAngle(const Point3D &v1, const Point3D &v2,const Point3D &normal);
+
+//Generate a set of points in a 3D polygon
+void scatterPointsInPolygon(const std::vector<Point3D> &polygon, const Point3D &normal,
+		float scatterDensity, RandNumGen &rng, std::vector<Point3D> &result);
+
+//rotate (and translate) a set of points around a given origin, in-place. Return the
+// quaternion that generated the forwards rotational transformation.
+//You can invert it with quat_invert
+void rotatePointsToXYPlane(std::vector<Point3D> &pts, const Point3D &normal, 
+					const Point3D &origin, Quaternion &q);
+
+#ifdef DEBUG
+bool testMathfuncs();
+#endif
+
 #endif
diff --git a/src/common/stringFuncs.cpp b/src/common/stringFuncs.cpp
index a2e19ed..440afde 100644
--- a/src/common/stringFuncs.cpp
+++ b/src/common/stringFuncs.cpp
@@ -27,86 +27,39 @@ using std::vector;
 
 std::string getMaxVerStr(const std::vector<std::string> &verStrings)
 {
-	std::vector<std::pair<size_t,std::vector<unsigned int> > > verNum;
-	std::vector<unsigned int> thisVer;
-
+	vector<unsigned int > verNumList;
 
 	//break string up into numeric components
 	for(unsigned int ui=0;ui<verStrings.size();ui++)
 	{
-		std::vector<std::string> strVerNum;
-		strVerNum.clear();
-
-		// period or hyphen are valid version number separators
-		splitStrsRef(verStrings[ui].c_str(),".-",strVerNum);
-
-		//Check to see if we can interpret the values
-		for(unsigned int uj=0;uj<strVerNum.size();uj++)
-		{
-			int i;
-			
-			//Try to cast the string (returns true on failure)
-			if(!stream_cast(i,strVerNum[uj]))
-				thisVer.push_back(i);
-
-		}
+		unsigned int verNumber;
+		if(!parseVersion(verStrings[ui],verNumber))
+			continue;
 
-		if(thisVer.size())
-		{
-			verNum.push_back(make_pair(ui,thisVer));
-			thisVer.clear();
-		}
+		verNumList.push_back(verNumber);
 	}
-		
-	
-	if(verNum.empty())
-		return std::string("");
-
-	//OK, so now we have an integral list.
-	//Find the minimal element in each set until we 
-	//knock out all elements but one
-	size_t maxVerLen=0;
-	for(unsigned int ui=0;ui<verNum.size();ui++)
-		maxVerLen=std::max(maxVerLen,verNum[ui].second.size());
 
-		
-	unsigned int pos=0;
-	while(pos<maxVerLen && verNum.size() > 1)
+	unsigned int maxV=0;
+	unsigned int maxP=(unsigned int)-1;
+	for(unsigned int ui=0;ui<verNumList.size();ui++)
 	{
-		unsigned int thisMax;
-		thisMax=0;
-
-		for(unsigned int ui=0;ui<verNum.size();ui++)
-		{
-			//If the version string has enough digits, check to see if it is the maximum for this digit
-			if(pos < verNum[ui].second.size() )
-				thisMax=std::max(thisMax,verNum[ui].second[pos]);
-		}
-
-		//Kill off any version numbers that were not 
-		//the max value, or had insufficient numbers
-		for(unsigned int ui=verNum.size();ui;)
+		if(verNumList[ui] > maxV)
 		{
-			ui--;
-
-			if(verNum[ui].second.size() <=pos || 
-				verNum[ui].second[pos] < thisMax )
-			{
-				std::swap(verNum[ui],verNum.back());
-				verNum.pop_back();
-			}
+			maxP=ui;
+			maxV=verNumList[ui];
 		}
-
-		//move to next number
-		pos++;
 	}
 
+	if(maxP == (unsigned int)-1)
+		return std::string("");
 
-	//Should contain at least one version (ie the maximum, or multiple copies thereof)
-	ASSERT(verNum.size());
-
+	return verStrings[maxP];
+}
 
-	return verStrings[verNum[0].first];
+unsigned int getVersionNumber(unsigned int major, unsigned int minor, unsigned int revision)
+{
+	ASSERT(minor < 100 && revision < 100);
+	return major*100*100 + minor*100 + revision;
 }
 
 bool isVersionNumberString(const std::string &s)
@@ -124,6 +77,43 @@ bool isVersionNumberString(const std::string &s)
 	return true;
 }
 
+bool parseVersion(const std::string &s, unsigned int &version)
+{
+	if(!isVersionNumberString(s))
+		return false;
+		
+	std::vector<std::string> strVerNum;
+
+	// period or hyphen are valid version number separators
+	splitStrsRef(s.c_str(),".-",strVerNum);
+
+	
+	//reverse, so we are parsing from the right-most version number
+	std::reverse(strVerNum.begin(),strVerNum.end());
+
+	unsigned int number=0;
+
+	//Check to see if we can interpret the values
+	unsigned int factor=1;
+	for(unsigned int uj=0;uj<strVerNum.size();uj++)
+	{
+		unsigned int i;
+		factor*=10;
+
+		//Try to cast the string (returns true on failure)
+		if(stream_cast(i,strVerNum[uj]))
+			return false;
+
+		//partial version numbers should be at most 99 
+		if(i >=100)
+			return false;
+		number +=(i*factor);
+	}
+
+	version=number;
+
+	return true;		
+}
 
 bool boolStrDec(const std::string &s, bool &b)
 {
diff --git a/src/common/stringFuncs.h b/src/common/stringFuncs.h
index fc50cc7..7b01acb 100644
--- a/src/common/stringFuncs.h
+++ b/src/common/stringFuncs.h
@@ -79,6 +79,11 @@ bool isVersionNumberString(const std::string &s);
 // version strings are digit and decimal point (.) only
 std::string getMaxVerStr(const std::vector<std::string> &verStrings);
 
+//obtain the version number code from major/minor/revision data
+unsigned int getVersionNumber(unsigned int major, unsigned int minor, unsigned int revision);
+//parse a version string
+bool parseVersion(const std::string &s, unsigned int &version);
+
 //!Strip whitespace, (eg tab,space) from either side of a string
 std::string stripWhite(const std::string &str);
 
diff --git a/src/common/voxels.cpp b/src/common/voxels.cpp
index 85fcaba..2d820fa 100644
--- a/src/common/voxels.cpp
+++ b/src/common/voxels.cpp
@@ -30,202 +30,6 @@ using std::numeric_limits;
 
 
 
-//Helper function to test if a point lies in a convex polygon. The input points MUST be convex
-//	- by default this will re-sort the polygon. This is needed to
-//		ensure convex ordering. If data is already ordered, you can
-//		safely disable this (angularSort=false).;
-bool pointIn2DConvexPoly(float px,float py,
-	vector<pair<float,float> > &planarPts2D, bool angularSort=true)
-{
-
-	ASSERT(planarPts2D.size() >=3);
-
-	if(angularSort)
-	{
-		//TODO : Optimise me. Probably not required to calculate angles explicitly
-
-		//Find the centre x,y value
-		float midPx =0;
-		float midPy =0;
-		for(size_t ui=1;ui<planarPts2D.size();ui++)
-		{
-			midPx +=planarPts2D[ui].first;
-			midPy +=planarPts2D[ui].second;
-		}
-		midPx/=planarPts2D.size();
-		midPy/=planarPts2D.size();
-	
-		//sort points by angle between vector p-p_0 and [1,0]	
-
-		vector<pair<unsigned int, float> > angles;
-		angles.resize(planarPts2D.size());
-		for(unsigned int ui=0;ui<planarPts2D.size();ui++)
-		{
-			float dx,dy;	
-			dx = planarPts2D[ui].first - midPx;
-			dy = planarPts2D[ui].second - midPy;
-	
-			angles[ui] = make_pair(ui,atan2(dy,dx));
-		}
-
-		//--
-		//First, sort by angle
-		ComparePairSecond cmp;
-		std::sort(angles.begin(),angles.end(),cmp); //Sort angle mapping
-
-		//then re-map the original points to the sorted angle
-		vector<pair<float,float>  > tmp;
-		tmp.resize(planarPts2D.size());
-		for(size_t ui=0;ui<planarPts2D.size();ui++)
-			tmp[ui] = planarPts2D[angles[ui].first];
-		//--
-		
-
-		planarPts2D.swap(tmp);
-	}
-
-	//find the normal vector. This is achieved by flipping the X/Y values
-	float nx =-(planarPts2D[1].second -planarPts2D[0].second);
-	float ny =(planarPts2D[1].first -planarPts2D[0].first);
-
-	float dx = (px-planarPts2D[0].first);
-	float dy = (py-planarPts2D[0].second);
-
-	//dot-product the result. If positive, is on RHS of line
-	bool positive = (nx*dx + ny*dy)>0;
-
-
-	//repeat, aborting if any half-plane  intersects
-	size_t nP = planarPts2D.size();
-	for(size_t ui=1;ui<nP;ui++)
-	{
-		unsigned int next;
-		next = 	(ui+1)%nP;
-
-		nx =-( planarPts2D[next].second -planarPts2D[ui].second);
-		ny =( planarPts2D[next].first -planarPts2D[ui].first);
-		
-		dx = (px-planarPts2D[ui].first);
-		dy = (py-planarPts2D[ui].second);
-
-		if((nx*dx + ny*dy > 0) != positive)
-			return false;
-	}
-
-	return true;
-}
-
-//FIXME: This code is unfinished.
-template<class T>
-vector<Point3D> getVoxelIntersectionPoints(const BoundCube &b, const Point3D &p, const Point3D &normal, 
-						const Voxels<T> &vox, unsigned int numRequiredSamples, 
-							vector<Point3D> &samples, vector<T> &interpVal)
-{
-	vector<Point3D> pts;
-	b.getPlaneIntersectVertices(p,normal,pts);
-
-	//Dont do anything if there is no intersection 
-	//(should have at least 3 pts to form a plane
-	if(pts.size() < 3)
-		return pts;
-		
-
-	//Now, using the plane points, rotate these into the Z=0 plane
-	gsl_matrix *m = gsl_matrix_alloc(3,3); 
-	computeRotationMatrix(Point3D(0,0,1),
-		Point3D(1,0,0),normal,Point3D(1,0,0),m);
-
-	//Now rotate them into the Z=0 plane	
-	vector<Point3D> planarPts;
-	rotateByMatrix(pts,m,planarPts);
-
-	//Find the 2D bounding box, then generate uniform deviate
-	// random numbers. Scale these ot fit inside the bbox.
-
-	vector<pair<float,float> > planarPts2D;
-	float bounds[2][2];
-	bounds[0][0] = std::numeric_limits<float>::max(); //minX
-	bounds[0][1] = std::numeric_limits<float>::max(); //minY
-	bounds[1][0] = -std::numeric_limits<float>::max(); //maxX
-	bounds[1][1] = -std::numeric_limits<float>::max(); //maxY
-		
-	for(unsigned  int ui=0; ui<planarPts.size();ui++)
-	{
-		//Should lie pretty close to z=0
-		ASSERT(planarPts[ui][2] < sqrt(std::numeric_limits<float>::epsilon()));
-
-		planarPts2D[ui].first = planarPts[ui][0];	
-		planarPts2D[ui].second = planarPts[ui][1];	
-
-		bounds[0][0] = std::min(bounds[0][0],planarPts2D[ui].first);
-		bounds[0][1] = std::min(bounds[0][1],planarPts2D[ui].second);
-
-		bounds[1][0] = std::max(bounds[1][0],planarPts2D[ui].first);
-		bounds[1][1] = std::max(bounds[1][1],planarPts2D[ui].second);
-	}
-
-	//Init the random number generator	
-	RandNumGen rng;
-	rng.initTimer();
-
-	//compute scaling factors
-	float ax,ay;
-	ax = bounds[1][0] - bounds[0][0];
-	ay = bounds[1][1] - bounds[0][1];
-
-	//generate the randomly sampled points
-	size_t nSample=0;
-	samples.resize(numRequiredSamples);
-	while(nSample< numRequiredSamples)
-	{
-		float px,py;
-		px = ax*rng.genUniformDev() + bounds[0][0];
-		py = ay*rng.genUniformDev() + bounds[0][0];
-		
-		if(pointIn2DConvexPoly(px,py,planarPts2D))
-		{
-			samples[nSample] = Point3D(px,py,0);
-			nSample++;
-		}
-	}
-
-
-	//Transpose the matrix to obtain the inverse transform 
-	// originally rotate from frame to z=0. After transpose, 
-	// will rotate from z=0 to frame 
-	gsl_matrix_transpose(m);
-	gsl_vector *vRot = gsl_vector_alloc(3);
-	gsl_vector *vOrig = gsl_vector_alloc(3);
-
-	gsl_vector_set(vOrig,3,0);
-	for(size_t ui=0;ui<samples.size(); ui++)
-	{
-		gsl_vector_set(vOrig,0,samples[ui][0]);
-		gsl_vector_set(vOrig,1,samples[ui][1]);
-		//compute v = m * pY;
-		gsl_blas_dgemv(CblasNoTrans,1.0, m, vOrig,0,vRot);
-
-		samples[ui] = Point3D(vRot->data);
-	}	
-
-	gsl_vector_free(vRot);
-	gsl_vector_free(vOrig);
-	gsl_matrix_free(m);
-
-	
-	//Find the interpolated value for each point in the voxel set
-	interpVal.resize(samples.size());
-	for(size_t ui=0;ui<samples.size();ui++)
-	{
-		const size_t INTERP_MODE=VOX_INTERP_LINEAR;
-		vox.getInterpolatedData(samples[ui],interpVal[ui]);
-	}
-
-
-	//Now delanuay tessalate the random points, with the surrounding polygon
-
-		
-}
 
 #ifdef DEBUG
 #include <algorithm>
@@ -324,6 +128,37 @@ bool basicTests()
 }
 
 
+bool interpTests()
+{
+	Voxels<float> v;
+	v.resize(3,3,4);
+	v.setBounds(Point3D(0,0,0),Point3D(3,3,4));
+	for(unsigned int ui=0;ui<3;ui++)
+	{
+		for(unsigned int uj=0;uj<3;uj++)
+		{
+			v.setData(ui,uj,0,1);
+			v.setData(ui,uj,1,0);
+			v.setData(ui,uj,2,-2);
+			v.setData(ui,uj,3,-1);
+		}
+	}
+
+
+	Point3D p(1.5,1.5,0);
+	const unsigned int NSTEP=30;
+	for(unsigned int ui=0;ui<NSTEP;ui++)
+	{
+		p[2] = (float)ui/(float)NSTEP*4.0f;
+		float interpV;
+		v.getInterpolatedData(p,interpV);
+	
+		TEST(interpV <= 1 && interpV >= -2, "interp test");	
+	}
+
+	return true;
+}
+
 /*
 bool edgeCountTests()
 {
@@ -362,27 +197,6 @@ bool edgeCountTests()
 }
 */
 
-bool pointInPoly()
-{
-	vector<pair<float,float> > pts;
-	//make a square
-	pts.push_back(make_pair(0,0));	
-//	pts.push_back(make_pair(0,0.5));	
-	pts.push_back(make_pair(0,1));	
-	pts.push_back(make_pair(1,0));	
-	pts.push_back(make_pair(1,1));	
-
-	//shuffle vertex positions
-	std::random_shuffle(pts.begin(),pts.end());
-
-	//Run test
-	TEST(pointIn2DConvexPoly(0.5,0.5,pts),"Point-in-poly test");	// Inside
-	TEST(!pointIn2DConvexPoly(1.5,0.5,pts),"Point-in-poly test");	//Outside
-	TEST(!pointIn2DConvexPoly(1.5,1.5,pts),"Point-in-poly test");	//Diagonal
-
-	return true;
-}
-
 
 bool runVoxelTests()
 {
@@ -391,9 +205,8 @@ bool runVoxelTests()
 
 	TEST(basicTests(),"basic voxel tests");
 	TEST(simpleMath(), "voxel simple maths");	
+	TEST(interpTests(), "voxel simple maths");	
 
-	TEST(pointInPoly(),"point-in-poly tests");
-//	TEST(edgeCountTests(), "voxel edge tests");	
 	return true;	
 }
 
diff --git a/src/common/voxels.h b/src/common/voxels.h
index 4f40f2d..b487628 100644
--- a/src/common/voxels.h
+++ b/src/common/voxels.h
@@ -129,10 +129,6 @@ template<class T> class Voxels
 		//to maxBound
 		Point3D minBound, maxBound;
 	
-			
-
-		void localPaddedConvolve(long long ui,long long uj, long long uk, 
-			const Voxels<T> &kernel,Voxels<T> &result, unsigned int mode) const;
 	public:
 
 		//!Constructor.
@@ -269,7 +265,7 @@ template<class T> class Voxels
 		//!Get the bounding box vertex (min/max) 
 		Point3D getMinBounds() const;
 		Point3D getMaxBounds() const;
-		//Obtain the ounds for a specified axis
+		//Obtain the bounds for a specified axis
 		void getAxisBounds(size_t axis, float &minV, float &maxV) const;
 		///! Get the spacing for a unit cell
 		Point3D getPitch() const;
@@ -277,6 +273,7 @@ template<class T> class Voxels
 		void setBounds(const Point3D &pMin, const Point3D &pMax);
 		//!Get the bounding size
 		void getBounds(Point3D &pMin, Point3D &pMax) const { pMin=minBound;pMax=maxBound;}
+		void getBounds(BoundCube &bc) const { bc.setBounds(minBound,maxBound);}
 
 		//!Initialise the voxel storage
 		size_t init(size_t nX,size_t nY,size_t nZ, const BoundCube &bound);
@@ -1143,7 +1140,6 @@ template<class T>
 T Voxels<T>::getSum(const T &initialValue) const
 {
 	ASSERT(voxels.size());
-
 	T tmp(initialValue);
 	size_t n=voxels.size();
 #pragma omp parallel for reduction(+:tmp)
@@ -1398,6 +1394,13 @@ void Voxels<T>::getIndex(size_t &x, size_t &y,
 	x=(size_t)((p[0]-minBound[0])/(maxBound[0]-minBound[0])*(float)binCount[0]);
 	y=(size_t)((p[1]-minBound[1])/(maxBound[1]-minBound[1])*(float)binCount[1]);
 	z=(size_t)((p[2]-minBound[2])/(maxBound[2]-minBound[2])*(float)binCount[2]);
+
+	if(x == binCount[0])
+		x--;
+	if(y == binCount[1])
+		y--;
+	if(z == binCount[2])
+		z--;
 }
 
 template<class T>
@@ -1599,18 +1602,23 @@ void Voxels<T>::getInterpolatedData(const Point3D &p, T &v) const
 
 	//interpolate data values at cube vertices that surround point. We are coming from below the point
 	// so we are simply extending the field on the upper edge by duplicating values as needed
-	for(unsigned int ui=0;ui<4;ui++)
-	{
-		c[(ui&1)][(ui&2)>>1] = getData( index[0],index[1]+ iPlus[1]*(ui&1),index[2] + iPlus[2]*(ui&2) )*(1-fraction[0]) 
-				+  getData(index[0]+iPlus[0],index[1]+ iPlus[1]*(ui&1),index[2] + iPlus[2]*(ui&2));
-	}
+
+	float xf = 1-fraction[0];
+	
+	size_t xLow,xHigh;
+	xLow = index[0];
+	xHigh = index[0] + iPlus[0];
+	c[0][0] = getData(xLow,index[1],index[2])*xf			+ getData(xHigh,index[1],index[2])*fraction[0] ;
+	c[0][1] = getData(xLow,index[1],index[2]+iPlus[2])*xf		+ getData(xHigh,index[1],index[2]+iPlus[2])*fraction[0] ;
+	c[1][0] = getData(xLow,index[1]+iPlus[1],index[2])*xf		+ getData(xHigh,index[1]+iPlus[1],index[2])*fraction[0] ;
+	c[1][1] = getData(xLow,index[1]+iPlus[1],index[2]+iPlus[2])*xf  + getData(xHigh,index[1]+iPlus[1],index[2]+iPlus[2])*fraction[0] ;
 
 
 	float c0,c1;
 	c0 = c[0][0]*(1-fraction[1]) + c[1][0]*fraction[1];
 	c1 = c[0][1]*(1-fraction[1]) + c[1][1]*fraction[1];
 
-	v= c0*(1-fraction[2])*c1;	
+	v= c0*(1-fraction[2])+c1*fraction[2];	
 	
 }	
 
diff --git a/src/gl/drawables.cpp b/src/gl/drawables.cpp
index 77d05db..ddb2d5f 100644
--- a/src/gl/drawables.cpp
+++ b/src/gl/drawables.cpp
@@ -290,11 +290,15 @@ Point3D DrawableObj::getCentroid() const
 
 //=====
 
-DrawPoint::DrawPoint() : origin(0.0f,0.0f,0.0f), r(1.0f), g(1.0f), b(1.0f), a(1.0f)
+DrawPoint::DrawPoint() : origin(0.0f,0.0f,0.0f), r(1.0f), g(1.0f), b(1.0f), a(1.0f),size(1.0f)
 {
 }
 
-DrawPoint::DrawPoint(float x, float y, float z) : origin(x,y,z), r(1.0f), g(1.0f), b(1.0f)
+DrawPoint::DrawPoint(float x, float y, float z) : origin(x,y,z), r(1.0f), g(1.0f), b(1.0f), size(1.0f)
+{
+}
+
+DrawPoint::DrawPoint(const Point3D &p) : origin(p), r(1.0f), g(1.0f), b(1.0f),size(1.0f)
 {
 }
 
@@ -328,8 +332,9 @@ void DrawPoint::setOrigin(const Point3D &pt)
 
 void DrawPoint::draw() const
 {
+	glPointSize(size);
+	glBegin(GL_POINTS);
 	glColor4f(r,g,b,a);
-	glBegin(GL_POINT);
 	glVertex3fv(origin.getValueArr());
 	glEnd();
 }
@@ -350,9 +355,9 @@ DrawableObj* DrawVector::clone() const
 	return d;
 }
 
-void DrawVector::getBoundingBox(BoundCube &b) const 
+void DrawVector::getBoundingBox(BoundCube &box) const 
 {
-	b.setBounds(origin,vector+origin);
+	box.setBounds(origin,vector+origin);
 }
 
 void DrawVector::setColour(float rnew, float gnew, float bnew, float anew)
@@ -524,9 +529,9 @@ DrawableObj* DrawQuad::clone() const
 }
 
 
-void DrawQuad::getBoundingBox(BoundCube &b) const
+void DrawQuad::getBoundingBox(BoundCube &box) const
 {
-	b.setBounds(vertices,4);
+	box.setBounds(vertices,4);
 }
 
 void DrawQuad::draw() const
@@ -715,6 +720,168 @@ void DrawTexturedQuad::setData(size_t x, size_t y, unsigned char *entry)
 }
 
 
+void DrawPolygon::setVertices(const vector<Point3D> &p)
+{
+	vertices = p;
+}
+
+
+DrawableObj *DrawPolygon::clone() const
+{
+	DrawPolygon *d= new DrawPolygon;
+	d->r=r;
+	d->g=g;
+	d->b=b;
+	d->a=a;
+	d->vertices=vertices;
+	d->normal=normal;
+
+	return d;
+}
+
+
+void DrawPolygon::setColour(float rN, float gN, float bN, float aN)
+{
+	r=rN; 
+	g=gN;
+	b=bN;
+	a=aN;
+}
+
+
+void DrawPolygon::draw() const
+{
+	switch(drawMode)
+	{
+		case POLYGON_DRAW_OUTLINE:
+		{
+			glColor4f(r,g,b,a);
+			glBegin(GL_LINE_LOOP);
+
+			for(unsigned int ui=0;ui<vertices.size();ui++)
+				glVertex3fv(vertices[ui].getValueArr());
+			glEnd();
+			break;
+		};
+		default:
+			ASSERT(false);
+
+	}
+}
+
+
+void DrawPolygon::getBoundingBox(BoundCube &box) const 
+{
+	box.setBounds(vertices);
+}
+DrawTriangleMesh::DrawTriangleMesh()
+{
+	drawDoubleSided=true;
+	drawMeshEdges=false;
+	haveCachedBounds=false;
+	drawMode=TRIMESH_DRAW_SURF;
+	deltaOrigin=Point3D(0,0,0);
+}
+
+DrawTriangleMesh::~DrawTriangleMesh()
+{
+}
+
+void DrawTriangleMesh::draw() const
+{
+
+	if(drawDoubleSided)
+		glDisable(GL_CULL_FACE);
+	else
+		glEnable(GL_CULL_FACE);
+
+	switch(drawMode)
+	{
+		case TRIMESH_DRAW_SURF:
+		{
+			glPushMatrix();
+			if(deltaOrigin.sqrMag() > 0)
+				glTranslatef(deltaOrigin[0],deltaOrigin[1],deltaOrigin[2]);
+			glBegin(GL_TRIANGLES);
+			for(unsigned int ui=0;ui<triIndices.size();ui++)
+			{
+				for(unsigned int uj=0;uj<3;uj++)
+				{
+					const RGBFloat &f=triIndices[ui].col[uj];
+					glColor3fv(f.v);
+					glVertex3fv(pts[triIndices[ui].idx[uj]].getValueArr());
+				}
+			}
+			glEnd();
+
+			
+			//Draw the outline of the mesh as needed
+			if(drawMeshEdges)
+			{
+				glBegin(GL_LINES);
+				glColor4f(0,0,1.0f,1.0f);
+				for(unsigned int ui=0;ui<triIndices.size();ui++)
+				{
+					for(unsigned int uj=0;uj<4;uj++)
+					{
+						const RGBFloat &f=triIndices[ui].col[uj];
+						glVertex3fv(pts[triIndices[ui].idx[(uj%3)]].getValueArr());
+					}
+				}
+				glEnd();
+			}
+			glPopMatrix();
+			break;
+		}
+		default:
+			ASSERT(false);
+	}
+
+	glDisable(GL_CULL_FACE);
+}
+
+void DrawTriangleMesh::setData(std::vector<Point3D> &p,
+			std::vector<TRI_IDX> &idx)
+{
+	ASSERT(p.size() >=3);
+	pts.swap(p);
+	idx.swap(triIndices);
+
+	BoundCube bc;
+	getBoundingBox(bc);	
+	origCentroid=bc.getCentroid();
+}
+
+void DrawTriangleMesh::getBoundingBox(BoundCube &box) const
+{
+	if(haveCachedBounds)
+	{
+		box=cachedBounds;
+		return;
+	}
+
+	cachedBounds.setBounds(pts);
+	box=cachedBounds;
+	haveCachedBounds=true;
+	return;
+}
+
+void DrawTriangleMesh::recomputeParams(const vector<Point3D> &vecs, 
+			const vector<float> &scalars, unsigned int mode)
+{
+	switch(mode)
+	{
+		case DRAW_TRIMESH_BIND_ORIGIN:
+		{
+			//FIXME: This is a hack
+			deltaOrigin=vecs[0]-origCentroid;
+			break;
+		}
+		default:
+			ASSERT(false);
+	}
+}
+
 DrawSphere::DrawSphere() : radius(1.0f), latSegments(8),longSegments(8)
 {
 	q=gluNewQuadric();
@@ -742,12 +909,12 @@ DrawableObj *DrawSphere::clone() const
 	return d;
 }
 
-void DrawSphere::getBoundingBox(BoundCube &b) const
+void DrawSphere::getBoundingBox(BoundCube &box) const
 {
 	for(unsigned int ui=0;ui<3;ui++)
 	{
-		b.setBound(ui,0,origin[ui] - radius);
-		b.setBound(ui,1,origin[ui] + radius);
+		box.setBound(ui,0,origin[ui] - radius);
+		box.setBound(ui,1,origin[ui] + radius);
 	}
 }
 
@@ -953,7 +1120,7 @@ void DrawCylinder::setColour(float rnew, float gnew, float bnew, float anew)
 	a=anew;
 }
 
-void DrawCylinder::getBoundingBox(BoundCube &b) const
+void DrawCylinder::getBoundingBox(BoundCube &box) const
 {
 
 	float tmp;
@@ -987,7 +1154,7 @@ void DrawCylinder::getBoundingBox(BoundCube &b) const
 	p[2]= offset+(-direction*0.5+origin);
 	p[3]= -offset+(-direction*0.5+origin);
 
-	b.setBounds(p);
+	box.setBounds(p);
 }
 
 
@@ -1009,7 +1176,7 @@ DrawableObj* DrawManyPoints::clone() const
 	return d;
 }
 
-void DrawManyPoints::getBoundingBox(BoundCube &b) const
+void DrawManyPoints::getBoundingBox(BoundCube &box) const
 {
 
 	//Update the cache as needed
@@ -1019,7 +1186,7 @@ void DrawManyPoints::getBoundingBox(BoundCube &b) const
 		cachedBounds.setBounds(pts);
 	}
 
-	b=cachedBounds;
+	box=cachedBounds;
 	return;
 }
 
@@ -1127,9 +1294,9 @@ bool DrawDispList::startList(bool execute)
 void DrawDispList::addDrawable(const DrawableObj *d)
 {
 	ASSERT(listActive);
-	BoundCube b;
-	d->getBoundingBox(b);
-	boundBox.expand(b);
+	BoundCube box;
+	d->getBoundingBox(box);
+	boundBox.expand(box);
 	d->draw();
 }
 
@@ -1462,7 +1629,7 @@ void DrawGLText::setColour(float rnew, float gnew, float bnew, float anew)
 	a=anew;
 }
 
-void DrawGLText::getBoundingBox(BoundCube &b) const
+void DrawGLText::getBoundingBox(BoundCube &box) const
 {
 	//Box forwards transformations
 	// * Translation by [origin-textDir*  (maxx - minx)]
@@ -1478,10 +1645,10 @@ void DrawGLText::getBoundingBox(BoundCube &b) const
 		float dy=maxY-minY;
 
 
-		b.setBounds(minX,minY,minZ,
+		box.setBounds(minX,minY,minZ,
 				maxX,maxY,maxZ);
 		vector<Point3D> p;
-		b.getVertices(p,true);
+		box.getVertices(p,true);
 
 		for(size_t ui=0;ui<p.size();ui++)
 			p[ui]-=Point3D(0,-dy*0.5,0);
@@ -1550,10 +1717,10 @@ void DrawGLText::getBoundingBox(BoundCube &b) const
 		for(size_t ui=0;ui<p.size();ui++)
 			p[ui]+=origin ; 
 
-		b.setBounds(p);
+		box.setBounds(p);
 	}
 	else
-		b.setInverseLimits();	
+		box.setInverseLimits();	
 	
 }
 
@@ -1591,9 +1758,9 @@ DrawableObj *DrawRectPrism::clone() const
 	return dR;
 }
 
-void DrawRectPrism::getBoundingBox(BoundCube &b) const
+void DrawRectPrism::getBoundingBox(BoundCube &box) const
 {
-	b.setBounds(pMin[0],pMin[1],pMin[2],
+	box.setBounds(pMin[0],pMin[1],pMin[2],
 			pMax[0],pMax[1],pMax[2]);
 }
 
@@ -1679,9 +1846,9 @@ void DrawRectPrism::setAxisAligned( const Point3D &p1, const Point3D &p2)
 
 }
 
-void DrawRectPrism::setAxisAligned( const BoundCube &b)
+void DrawRectPrism::setAxisAligned( const BoundCube &box)
 {
-	b.getBounds(pMin,pMax);
+	box.getBounds(pMin,pMax);
 }
 
 void DrawRectPrism::setColour(float rnew, float gnew, float bnew, float anew)
@@ -1844,7 +2011,9 @@ void DrawProgressCircleOverlay::draw( )const
 	glLoadIdentity();
 
 	glDisable(GL_CULL_FACE);
-	glEnable(GL_DEPTH_TEST);
+	glPushAttrib(GL_DEPTH_BUFFER_BIT);
+	glDisable(GL_DEPTH_TEST);
+				                       
 	//size of gap to fit, in degrees
 	const float FILTER_SPACING_ANGLE= 20.0f/(float)totalFilters;
 	//Angular step when drawing wheel
@@ -1956,7 +2125,7 @@ void DrawProgressCircleOverlay::draw( )const
 
 	glMatrixMode(GL_MODELVIEW);
 
-	glDisable(GL_DEPTH_TEST);
+	glPopAttrib();
 	glEnable(GL_CULL_FACE);
 }
 
@@ -2378,10 +2547,10 @@ DrawField3D::~DrawField3D()
 }
 
 
-void DrawField3D::getBoundingBox(BoundCube &b) const
+void DrawField3D::getBoundingBox(BoundCube &box) const
 {
 	ASSERT(field)
-	b.setBounds(field->getMinBounds(),field->getMaxBounds());
+	box.setBounds(field->getMinBounds(),field->getMaxBounds());
 }
 
 
@@ -2543,7 +2712,7 @@ void DrawField3D::setPointSize(float size)
 
 void DrawField3D::setMapColours(unsigned int mapID)
 {
-	ASSERT(mapID < NUM_COLOURMAPS);
+	ASSERT(mapID < COLOURMAP_ENUM_END);
 	colourMapID= mapID;
 }
 
@@ -2595,15 +2764,15 @@ void DrawIsoSurface::updateMesh() const
 
 }
 
-void DrawIsoSurface::getBoundingBox(BoundCube &b) const
+void DrawIsoSurface::getBoundingBox(BoundCube &box) const
 {
 	if(voxels)
 	{
-		b.setBounds(voxels->getMinBounds(),
+		box.setBounds(voxels->getMinBounds(),
 				voxels->getMaxBounds());
 	}
 	else
-		b.setInverseLimits();
+		box.setInverseLimits();
 }
 
 
@@ -2841,9 +3010,9 @@ void DrawAxis::draw() const
 	glPopMatrix();
 }
 
-void DrawAxis::getBoundingBox(BoundCube &b) const
+void DrawAxis::getBoundingBox(BoundCube &cube) const
 {
-	b.setInvalid();
+	cube.setInvalid();
 }
 
 Draw2DCircle::Draw2DCircle()
@@ -2897,10 +3066,10 @@ void Draw2DCircle::draw() const
 	}
 }
 
-void Draw2DCircle::getBoundingBox(BoundCube &b) const
+void Draw2DCircle::getBoundingBox(BoundCube &cube) const
 {
 
-	b.setBounds(centre[0]-radius, centre[1]-radius,
+	cube.setBounds(centre[0]-radius, centre[1]-radius,
 			centre[0]+radius, centre[1]+radius,
 			0,0);
 }
diff --git a/src/gl/drawables.h b/src/gl/drawables.h
index e9040db..a16a8ad 100644
--- a/src/gl/drawables.h
+++ b/src/gl/drawables.h
@@ -81,6 +81,21 @@ enum
 	AXIS_IN_SPACE
 };
 
+
+//!Polygon drawing styles
+enum
+{
+	POLYGON_DRAW_OUTLINE,
+	POLYGON_DRAW_ENUM_END
+};
+
+//!Triangle mesh drawing styles
+enum
+{
+	TRIMESH_DRAW_SURF,
+	TRIMESH_DRAW_ENUM_END
+};
+
 //!Drawable types
 enum
 {
@@ -89,6 +104,7 @@ enum
 	DRAW_TYPE_VECTOR,
 	DRAW_TYPE_TRIANGLE,
 	DRAW_TYPE_QUAD,
+	DRAW_TYPE_POLYGON,
 	DRAW_TYPE_SPHERE,
 	DRAW_TYPE_CYLINDER,
 	DRAW_TYPE_DISPLAYLIST,
@@ -103,6 +119,7 @@ enum
 	DRAW_TYPE_AXIS,
 	DRAW_TYPE_LEGENDOVERLAY,
 	DRAW_TYPE_PROGRESSCIRCLE_OVERLAY,
+	DRAW_TYPE_TRIANGLE_MESH,
 };
 
 //TODO: It seems unnecessary to have multiple types for the bind
@@ -127,9 +144,20 @@ enum
 	DRAW_QUAD_BIND_ORIGIN,
 	//DRAW_TEXT_BIND_TEXTDIR, //FIXME: Implement me for annotation todo.
 	//DRAW_TEXT_BIND_UPDIR,
+	DRAW_TRIMESH_BIND_ORIGIN,
 	DRAW_BIND_ENUM_END
 };
 
+struct RGBFloat
+{
+	float v[3];
+};
+
+struct TRI_IDX
+{
+	size_t idx[3];
+	RGBFloat col[3];
+};
 
 
 
@@ -233,11 +261,15 @@ class DrawPoint : public DrawableObj
 		Point3D origin;
 		//!Point colour (r,g,b,a) range: [0.0f,1.0f]
 		float r,g,b,a;
+		//!Size of point
+		float size;
 	public:
 		//!Constructor
 		DrawPoint();
-		//!Constructor that takes in positional argments
+		//!Constructor that takes in positional augments
 		DrawPoint(float,float,float);
+		//!Constructor that takes in positional augments
+		DrawPoint(const Point3D &p);
 		//!Destructor
 		virtual ~DrawPoint();
 
@@ -249,9 +281,13 @@ class DrawPoint : public DrawableObj
 		void setColour(float r, float g, float b, float alpha);
 		//!Draws the points
 		void draw() const;
-		//!Sets the location of the poitns
+		//!Sets the location of the point
 		void setOrigin(const Point3D &);
 
+		//!Set the size of the point
+		void setSize(float s) { size=s;}
+	
+
 		void getBoundingBox(BoundCube &b) const { b.setInvalid();};
 
 		Point3D getCentroid() const{ return origin;}
@@ -509,6 +545,91 @@ class DrawTexturedQuad : public DrawQuad
 		void setUseColouring(bool useColouring) {noColour= !useColouring;};
 };
 
+//Draw an irregular 2D n-gon in 3D.
+class DrawPolygon : public DrawableObj
+{
+	protected:
+		//!Vertices of the quad
+		vector<Point3D> vertices;
+
+		//!Colour data for the quad
+		//!The lighting normal of the triangle 
+		/*! Lighting for this class is per triangle only no
+		 * per vertex lighting */
+		Point3D normal;
+		//!Colours of polygon (rgba colour model)
+		float r,g,b,a;
+		//!The drawings style to use (eg filled, outline etc)
+		unsigned int drawMode;
+	public:
+		//!Constructor
+		DrawPolygon() {drawMode=POLYGON_DRAW_OUTLINE;};
+		//!Destructor
+		virtual ~DrawPolygon() {};
+		
+		virtual DrawableObj *clone() const;
+		
+		virtual unsigned int getType() const {return DRAW_TYPE_POLYGON;};	
+
+		//!Get bounding cube
+		virtual void getBoundingBox(BoundCube &b) const ;
+
+		void setVertices(const vector<Point3D> &p);
+		//!Set the colour of all vertices
+		void setColour(float r, float g, float b, float a);
+
+		//!Draw the triangle
+		void draw() const;
+		
+		//!Gets the arrow axis direction
+		Point3D getOrigin() const;
+		
+};
+
+
+//Coloured triangle mesh
+class DrawTriangleMesh : public DrawableObj
+{
+	protected:
+		//!Vector of points to draw
+		std::vector<Point3D> pts;
+		//!Indices of triangle vertices
+		std::vector<TRI_IDX> triIndices;
+
+		//FIXME: Redo some of the selection code, so we don't need
+		// this
+		Point3D origCentroid,deltaOrigin;
+
+		bool drawDoubleSided;
+		//If true, draw the mesh edges in addition to the
+		// coloured triangles
+		bool drawMeshEdges;
+		unsigned int drawMode;
+
+		mutable bool haveCachedBounds;
+		mutable BoundCube cachedBounds;
+	public:
+		DrawTriangleMesh();
+		~DrawTriangleMesh();
+
+		//Assign the triangle data - note this destroys the input data
+		void setData(std::vector<Point3D> &pts,
+			std::vector<TRI_IDX> &idx);
+
+		//Set whether the edges of the triangle should be drawn
+		void setDrawMeshEdges(bool doDraw=true) { drawMeshEdges=true;}
+
+		unsigned int getType() const {return DRAW_TYPE_TRIANGLE_MESH;}	
+		
+		//!Draws the triangle mesh
+		void draw() const;
+
+		//!Get the bounding box that encapulates this object
+		void getBoundingBox(BoundCube &b) const ;
+
+		//!Recompute the internal parameters using the input vector information
+		void recomputeParams(const std::vector<Point3D> &vecs, const std::vector<float> &scalars, unsigned int mode);
+};
 
 
 //!A sphere drawing 
@@ -857,10 +978,6 @@ class DrawRectPrism  : public DrawableObj
 		void recomputeParams(const std::vector<Point3D> &vecs, const std::vector<float> &scalars, unsigned int mode);
 };
 
-struct RGBFloat
-{
-	float v[3];
-};
 
 //Abstract class as base for overlays
 class DrawableOverlay : public DrawableObj
@@ -1244,7 +1361,7 @@ class Draw2DCircle : public DrawableObj
 		virtual void draw() const;
 
 		void setCentre(float fx,float fy) { centre[0] = fx; centre[1]= fy;};
-		void setRadius(float r) { radius=r;}
+		void setRadius(float rad) { radius=rad;}
 		//Angular step in radiians
 		void setAngularStep(float da) { angularStep = da;};
 	
diff --git a/src/gl/isoSurface.cpp b/src/gl/isoSurface.cpp
index f919305..00ba89b 100644
--- a/src/gl/isoSurface.cpp
+++ b/src/gl/isoSurface.cpp
@@ -515,7 +515,7 @@ void marchingCubes(const Voxels<float> &v,float isoValue, vector<TriangleWithVer
 		{
 		for(size_t iZ = 0; iZ < nz-1; iZ++)
 		{
-			iEdgeFlags=iFlagIndex=0;
+			iFlagIndex=0;
 			Point3D position;
 			//Lower left corner of cell for dual grid
 			position=v.getPoint(iX,iY,iZ) + gridSpacing*0.5;
diff --git a/src/gl/tr.cpp b/src/gl/tr.cpp
index f3a8880..fe8b550 100644
--- a/src/gl/tr.cpp
+++ b/src/gl/tr.cpp
@@ -305,7 +305,7 @@ void trPerspective(TRcontext *tr,
                    GLdouble zNear, GLdouble zFar )
 {
    GLdouble xmin, xmax, ymin, ymax;
-   ymax = zNear * tan(fovy * 3.14159265 / 360.0);
+   ymax = zNear * tan(fovy * M_PI / 360.0);
    ymin = -ymax;
    xmin = ymin * aspect;
    xmax = ymax * aspect;
diff --git a/src/gui/dialogs/ExportRngDialog.cpp b/src/gui/dialogs/ExportRngDialog.cpp
index 8f913e3..41f9ac4 100644
--- a/src/gui/dialogs/ExportRngDialog.cpp
+++ b/src/gui/dialogs/ExportRngDialog.cpp
@@ -237,7 +237,7 @@ void ExportRngDialog::updateRangeList()
 	       	itemIndex=listRanges->InsertItem(0, (rangeData->getUserString())); 
 		unsigned int nIons,nRngs; 
 		nIons = rangeData->getRange().getNumIons();
-		nRngs = rangeData->getRange().getNumIons();
+		nRngs = rangeData->getRange().getNumRanges();
 
 		stream_cast(tmpStr,nIons);
 		listRanges->SetItem(itemIndex, 1, (tmpStr)); 
diff --git a/src/gui/dialogs/animateFilterDialog.cpp b/src/gui/dialogs/animateFilterDialog.cpp
index 10e6332..ba22d1e 100644
--- a/src/gui/dialogs/animateFilterDialog.cpp
+++ b/src/gui/dialogs/animateFilterDialog.cpp
@@ -220,7 +220,6 @@ ExportAnimationDialog::ExportAnimationDialog(wxWindow* parent, int id, const wxS
     //-- set up the default properties for dialog back-end data
 
     //Plot check status
-    wantPlotOutput=checkPlotData->IsChecked();
     wantImageOutput=checkImageOutput->IsChecked();
     wantIonOutput=checkPoints->IsChecked();
     wantPlotOutput=checkPlotData->IsChecked();
diff --git a/src/gui/dialogs/animateSubDialogs/realKeyFrameDialog.h b/src/gui/dialogs/animateSubDialogs/realKeyFrameDialog.h
index 4e9abc6..a85d8ea 100644
--- a/src/gui/dialogs/animateSubDialogs/realKeyFrameDialog.h
+++ b/src/gui/dialogs/animateSubDialogs/realKeyFrameDialog.h
@@ -167,6 +167,7 @@ RealKeyFrameDialog<T>::RealKeyFrameDialog(wxWindow* parent, int id, const wxStri
 	buttonOK = new wxButton(this, wxID_OK, wxEmptyString);
 
 	startFrameOK=endFrameOK=startValueOK=endValueOK=false;
+	buttonOK->Enable(false);
 
 	const int DEFAULT_TRANSITION=TRANSITION_INTERP;
 	comboTransition->SetSelection(DEFAULT_TRANSITION);
diff --git a/src/gui/dialogs/resolutionDialog.cpp b/src/gui/dialogs/resolutionDialog.cpp
index db10b1c..4de4282 100644
--- a/src/gui/dialogs/resolutionDialog.cpp
+++ b/src/gui/dialogs/resolutionDialog.cpp
@@ -353,7 +353,7 @@ void ResolutionDialog::do_layout()
     widthTextSizer->Add(textWidth, 0, wxALL|wxALIGN_CENTER_VERTICAL, 8);
     leftSizer->Add(widthTextSizer, 1, wxEXPAND, 0);
     heightTextSizer->Add(labelHeight, 0, wxALIGN_CENTER_VERTICAL, 0);
-    heightTextSizer->Add(textHeight, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
+    heightTextSizer->Add(textHeight, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
     leftSizer->Add(heightTextSizer, 1, wxEXPAND, 0);
     leftSizer->Add(20, 20, 2, 0, 0);
     upperSizer->Add(leftSizer, 0, wxLEFT|wxEXPAND, 8);
diff --git a/src/gui/mainFrame.cpp b/src/gui/mainFrame.cpp
index 1700900..5bee4cb 100644
--- a/src/gui/mainFrame.cpp
+++ b/src/gui/mainFrame.cpp
@@ -258,6 +258,7 @@ enum {
 	ID_GRID_FILTER_PROPERTY,
 	ID_LIST_FILTER,
 	ID_TREE_FILTERS,
+	ID_TREE_DELETE_FILTER_ITEM, 
 	ID_BUTTON_REFRESH,
 	ID_BTN_EXPAND,
 	ID_BTN_COLLAPSE,
@@ -305,6 +306,7 @@ enum
 	FILE_OPEN_TYPE_POS=4,
 	FILE_OPEN_TYPE_TEXT=8,
 	FILE_OPEN_TYPE_LAWATAP_ATO=16,
+	FILE_OPEN_TYPE_3DAP_OPS=32,
 };
 
 
@@ -906,6 +908,7 @@ BEGIN_EVENT_TABLE(MainWindowFrame, wxFrame)
     EVT_TREE_SEL_CHANGED(ID_TREE_FILTERS, MainWindowFrame::OnTreeSelectionChange)
     EVT_TREE_DELETE_ITEM(ID_TREE_FILTERS, MainWindowFrame::OnTreeDeleteItem)
     EVT_TREE_BEGIN_DRAG(ID_TREE_FILTERS, MainWindowFrame::OnTreeBeginDrag)
+    EVT_CONTEXT_MENU(MainWindowFrame::OnTreeRightClick)
     EVT_BUTTON(ID_BTN_EXPAND, MainWindowFrame::OnBtnExpandTree)
     EVT_BUTTON(ID_BTN_COLLAPSE, MainWindowFrame::OnBtnCollapseTree)
     EVT_BUTTON(ID_BTN_FILTERTREE_ERRS, MainWindowFrame::OnBtnFilterTreeErrs)
@@ -1026,6 +1029,9 @@ unsigned int MainWindowFrame::guessFileType(const std::string &dataFile)
 	
 	if( extStr == std::string("ato"))
 		return FILE_OPEN_TYPE_LAWATAP_ATO;
+	
+	if( extStr == std::string("ops"))
+		return FILE_OPEN_TYPE_3DAP_OPS;
 
 	return FILE_OPEN_TYPE_UNKNOWN;
 }
@@ -1070,12 +1076,13 @@ void MainWindowFrame::OnFileOpen(wxCommandEvent &event)
 	ASSERT(!refreshThreadActive());
 
 	vector<pair<std::string,std::string> > validTypes;
-	validTypes.push_back(	make_pair(TRANS("Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)"),
-					"*.xml;*XML;*.pos;*,POS;*.txt;*.TXT;*.csv;*.CSV;*.ato;*.ATO") );
+	validTypes.push_back(	make_pair(TRANS("Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)"),
+					"*.xml;*XML;*.pos;*,POS;*.txt;*.TXT;*.csv;*.CSV;*.ato;*.ATO;*.ops;*.OPS") );
 	validTypes.push_back( make_pair(TRANS("XML State File (*.xml)"),"*.xml;*.XML"));
 	validTypes.push_back( make_pair(TRANS("POS File (*.pos)"),"*.pos;*.POS"));
 	validTypes.push_back( make_pair(TRANS("LAWATAP ATO File (*.ato)"),"*.ato;*.ATO"));
 	validTypes.push_back( make_pair(TRANS("Text File (*.txt, *.csv)"),"*.csv;*.txt;*.CSV;*.TXT"));
+	validTypes.push_back( make_pair(TRANS("3Dap Files (*.ops)"),"*.ops"));
 	validTypes.push_back( make_pair(TRANS("All Files (*)"),"*"));
 
 	std::string totalStr;
@@ -1218,7 +1225,7 @@ void MainWindowFrame::OnDropFiles(const wxArrayString &files, int x, int y)
 
 					//Add the filter, using the seelcted
 					// item as the parent
-					visControl.state.treeState.addFilter(f,false,filterId);
+					visControl.state.treeState.addFilter(f,filterId);
 
 					//update the tree control
 					updateWxTreeCtrl(treeFilters);
@@ -1364,12 +1371,20 @@ bool MainWindowFrame::loadFile(const wxString &fileStr, bool merge,bool noUpdate
 		//Bastardise the default settings such that it knows to use the correct
 		// file type, based upon file extension
 		unsigned int fileMode;
-		if(fileType == FILE_OPEN_TYPE_TEXT)
-			fileMode=DATALOAD_TEXT_FILE;
-		else if(fileType == FILE_OPEN_TYPE_LAWATAP_ATO)
-			fileMode=DATALOAD_LAWATAP_ATO_FILE;
-		else
-			fileMode=DATALOAD_FLOAT_FILE;
+		switch(fileType)
+		{
+			case FILE_OPEN_TYPE_TEXT:
+				fileMode=DATALOAD_TEXT_FILE;
+				break;
+			case FILE_OPEN_TYPE_LAWATAP_ATO:
+				fileMode=DATALOAD_LAWATAP_ATO_FILE;
+				break;
+			case FILE_OPEN_TYPE_3DAP_OPS:
+				fileMode=DATALOAD_THREEDAP_OPS_FILE;
+				break;
+			default:
+				fileMode=DATALOAD_FLOAT_FILE;
+		}
 		
 		((DataLoadFilter*)posFilter)->setFileMode(fileMode);
 		((DataLoadFilter*)posFilter)->setFilename(dataFile);
@@ -1384,14 +1399,14 @@ bool MainWindowFrame::loadFile(const wxString &fileStr, bool merge,bool noUpdate
 
 		//Append a new filter to the filter tree
 		fTree.addFilter(posFilter,0);
-		visControl.state.treeState.addFilterTree(fTree,true,0);
+		visControl.state.treeState.addFilterTree(fTree);
 
 	}	
 
 	updateWxTreeCtrl(treeFilters);
 
 	if(!noUpdate)
-		return doSceneUpdate(true);
+		doSceneUpdate(true);
 
 	return true;
 }	
@@ -1873,6 +1888,9 @@ void MainWindowFrame::OnFileExportFilterVideo(wxCommandEvent &event)
 	// - order of operations for initing the export dialog is important
 	// Getting/Setting animation state requires the filtertree to
 	// be under exportDialog's control
+
+	//A safer alternative would be to create a copy of the filter tree,
+	// then execute that.
 	FilterTree treeWithCache;
 	//Steal the filter tree, and give the pointer to the export dialog
 	// viscontrol now has an empty tree, so watch out.
@@ -1907,6 +1925,7 @@ void MainWindowFrame::OnFileExportFilterVideo(wxCommandEvent &event)
 	//restore the cache to viscontrol
 	visControl.state.treeState.swapFilterTree(treeWithCache);
 
+
 	visControl.state.setAnimationState(propAnim,pathMap);
 	}
 
@@ -2157,7 +2176,7 @@ void MainWindowFrame::OnFileExportFilterVideo(wxCommandEvent &event)
 				break;
 			}
 
-			//Clean up date from this run, releasing stream pointers.
+			//Clean up data from this run, releasing stream pointers.
 			FilterTree::safeDeleteFilterList(outData);
 			outStreams.clear();
 
@@ -2380,7 +2399,6 @@ void MainWindowFrame::OnFileExportIons(wxCommandEvent &event)
 	//drop them back into the export dialog.
 	do
 	{
-		cerr << "Show dialog" << __FILE__ << " :" << __LINE__ << endl;
 		//Show, then check for user cancelling export dialog
 		if(exportDialog->ShowModal() == wxID_CANCEL)
 		{
@@ -2773,8 +2791,18 @@ void MainWindowFrame::OnViewBackground(wxCommandEvent &event)
 		//Change the colour
 		c=colDg->GetColourData().GetColour();
 	
-		//Scale colour ranges to 0-> 1 and set in the gl pane	
-		panelTop->setGlClearColour(c.Red()/255.0f,c.Green()/255.0f,c.Blue()/255.0f);
+		float f[3];
+		f[0] = c.Red()/255.0f;
+		f[1] = c.Green()/255.0f;
+		f[2] = c.Blue()/255.0f;
+		//Scale colour ranges to 0-> 1 and 
+		// set in the program state
+		visControl.state.setBackgroundColour(f[0],f[1],f[2]);
+
+		//The scene won't catch that until the next refresh, when
+		// state is synced to scene, so fix it by hand
+		visControl.scene.setBackgroundColour(f[0],f[1],f[2]);
+		visControl.scene.draw();
 	}
 
 	panelTop->forceRedraw();
@@ -3098,10 +3126,13 @@ void MainWindowFrame::OnTreeEndDrag(wxTreeEvent &event)
 		{
 			visControl.setWxTreeFilterViewPersistence(sId);
 			visControl.setWxTreeFilterViewPersistence(pId);
-			//If command button down (ctrl or clover on mac),
-			//then copy, otherwise move
+			//If : command button down (ctrl or clover on mac),then copy,
+			//   : Shift down -> move, excluding children (splice)
+			// otherwise move
 			if(wxm.CmdDown())
 				needRefresh=visControl.state.treeState.copyFilter(sId,pId);
+			else if(wxm.ShiftDown())
+				needRefresh=visControl.state.treeState.respliceFilter(sId,pId);
 			else
 				needRefresh=visControl.state.treeState.reparentFilter(sId,pId);
 		}	
@@ -3116,6 +3147,8 @@ void MainWindowFrame::OnTreeEndDrag(wxTreeEvent &event)
 		{
 			if(wxm.CmdDown())
 				needRefresh=visControl.state.treeState.copyFilter(sId,0);
+			else if(wxm.ShiftDown())
+				needRefresh=visControl.state.treeState.respliceFilter(sId,0);
 			else
 				needRefresh=visControl.state.treeState.reparentFilter(sId,0);
 		}
@@ -3167,6 +3200,60 @@ void MainWindowFrame::OnTreeSelectionChange(wxTreeEvent &event)
 	panelTop->forceRedraw();
 }
 
+void MainWindowFrame::OnTreeRightClick(wxContextMenuEvent &event)
+{
+
+	if(event.GetEventObject() != treeFilters)
+		 return;
+
+	//There seems to be some problem with picking the zero position
+	// event.GetPosition() seems to return screen coordinates
+	// treeFilter->GetPosition returns something else, but not its own coordinates. Maybe parent, minus the zero position for the window???
+ 	wxPoint clickPosition = treeFilters->ScreenToClient(event.GetPosition()); 
+
+	wxTreeItemId selectedItem;
+	if(clickPosition == wxDefaultPosition)
+	{
+		//Not generated by click, but by eg keyboard
+		//Do nothing
+	}
+	else
+	{
+		int positionHint;
+		selectedItem = treeFilters->HitTest(clickPosition,positionHint);
+
+		//No item under cursor
+		if(!selectedItem.IsOk())
+			return;		
+		
+		//Generated by click
+		treeFilters->SetFocusedItem(selectedItem);
+	}
+
+
+	wxMenu *popupMenu = new wxMenu;
+	popupMenu->Append(ID_TREE_DELETE_FILTER_ITEM,
+		TRANS("Delete\tDel"),TRANS("Delete the selected filter"));
+
+	popupMenu->Connect(wxEVT_COMMAND_MENU_SELECTED, 
+		wxCommandEventHandler(MainWindowFrame::OnTreePopupMenu), NULL, this); 	
+	PopupMenu(popupMenu);
+}
+
+void MainWindowFrame::OnTreePopupMenu(wxCommandEvent &event)
+{
+	switch(event.GetId()) {
+		case ID_TREE_DELETE_FILTER_ITEM:
+		{
+			wxTreeItemId tid = treeFilters->GetSelection();	
+			deleteTreeFilter(tid);	
+			break;
+		}
+		default:
+		; //Do nothing
+	
+	}
+}
 
 void MainWindowFrame::updateEditRangeMenu()
 {
@@ -3189,7 +3276,8 @@ void MainWindowFrame::OnTreeDeleteItem(wxTreeEvent &event)
 		return;
 	}
 	//This event is only generated programatically,
-	// we do not have to handle the direct deletion.
+	// using the keydown event.
+	// We do not have to handle the direct deletion.
 
 }
 
@@ -3260,9 +3348,9 @@ void MainWindowFrame::OnTreeBeginDrag(wxTreeEvent &event)
 		event.Allow();
 
 #ifdef __APPLE__    
-		statusMessage(TRANS("Moving - Hold ⌘ (command) to copy"),MESSAGE_HINT);
+		statusMessage(TRANS("Moving - Hold ⌘ (command) to copy, shift to splice"),MESSAGE_HINT);
 #else
-		statusMessage(TRANS("Moving - Hold control to copy"),MESSAGE_HINT);
+		statusMessage(TRANS("Moving - Hold control to copy, shift to splice"),MESSAGE_HINT);
 #endif
 	}
 
@@ -3353,51 +3441,7 @@ void MainWindowFrame::OnTreeKeyDown(wxKeyEvent &event)
 				return;
 
 
-			//TODO: Refactor out wxTreeItem... code, into separate routine
-			// that only spits out viscontrol Ids
-			//Rebuild the tree control, ensuring that the parent is visible,
-			//if it has a parent (recall root node  of wx control is hidden)
-			
-			//Get the parent & its data
-			wxTreeItemId parent = treeFilters->GetItemParent(id);
-			wxTreeItemData *parentData=treeFilters->GetItemData(parent);
-
-
-			//Tree data contains unique identifier for vis control to do matching
-			wxTreeItemData *tData=treeFilters->GetItemData(id);
-			//Remove the item from the Tree 
-			visControl.state.treeState.removeFilterSubtree(((wxTreeUint *)tData)->value);
-			//Clear property grid
-			gridFilterPropGroup->Clear();
-			if(parent !=treeFilters->GetRootItem())
-			{
-				ASSERT(parent.IsOk()); // should be - base node should always exist.
-
-				//Ensure that the parent stays visible 
-				visControl.setWxTreeFilterViewPersistence(
-						((wxTreeUint*)parentData)->value);
-				updateWxTreeCtrl(treeFilters);
-
-				
-				//OK, so those old Id s are no longer valid,
-				//as we just rebuilt the tree. We need new ones
-				//Parent is now selected
-				parent=treeFilters->GetSelection();
-				parentData=treeFilters->GetItemData(parent);
-
-
-				//Update the filter property grid with the parent's data
-				visControl.updateFilterPropGrid(gridFilterPropGroup,
-							((wxTreeUint *)parentData)->value);
-			}
-			else
-			{
-				if(parent.IsOk())
-					updateWxTreeCtrl(treeFilters);
-			}
-	
-			//Force a scene update, independent of if autoUpdate is enabled. 
-			doSceneUpdate();	
+			deleteTreeFilter(id);
 			break;
 		}
 		default:
@@ -3405,6 +3449,54 @@ void MainWindowFrame::OnTreeKeyDown(wxKeyEvent &event)
 	}
 }
 
+void MainWindowFrame::deleteTreeFilter(wxTreeItemId &id)
+{
+	//TODO: Refactor out wxTreeItem... code, into separate routine
+	// that only spits out viscontrol Ids
+	//Rebuild the tree control, ensuring that the parent is visible,
+	//if it has a parent (recall root node  of wx control is hidden)
+	
+	//Get the parent & its data
+	wxTreeItemId parent = treeFilters->GetItemParent(id);
+	wxTreeItemData *parentData=treeFilters->GetItemData(parent);
+
+
+	//Tree data contains unique identifier for vis control to do matching
+	wxTreeItemData *tData=treeFilters->GetItemData(id);
+	//Remove the item from the Tree 
+	visControl.state.treeState.removeFilterSubtree(((wxTreeUint *)tData)->value);
+	//Clear property grid
+	gridFilterPropGroup->Clear();
+	if(parent !=treeFilters->GetRootItem())
+	{
+		ASSERT(parent.IsOk()); // should be - base node should always exist.
+
+		//Ensure that the parent stays visible 
+		visControl.setWxTreeFilterViewPersistence(
+				((wxTreeUint*)parentData)->value);
+		updateWxTreeCtrl(treeFilters);
+
+		
+		//OK, so those old Id s are no longer valid,
+		//as we just rebuilt the tree. We need new ones
+		//Parent is now selected
+		parent=treeFilters->GetSelection();
+		parentData=treeFilters->GetItemData(parent);
+
+
+		//Update the filter property grid with the parent's data
+		visControl.updateFilterPropGrid(gridFilterPropGroup,
+					((wxTreeUint *)parentData)->value);
+	}
+	else
+	{
+		if(parent.IsOk())
+			updateWxTreeCtrl(treeFilters);
+	}
+
+	//Force a scene update, independent of if autoUpdate is enabled. 
+	doSceneUpdate();	
+}
 
 void MainWindowFrame::OnGridFilterPropertyChange(wxPropertyGridEvent &event)
 {
@@ -3815,7 +3907,7 @@ void MainWindowFrame::OnComboFilter(wxCommandEvent &event)
 	}
 
 	//Add the filter to viscontrol
-	visControl.state.treeState.addFilter(f,false,filterId);
+	visControl.state.treeState.addFilter(f,filterId);
 	//Rebuild tree control
 	updateWxTreeCtrl(treeFilters,f);
 
@@ -3834,7 +3926,7 @@ void MainWindowFrame::OnComboFilter(wxCommandEvent &event)
 	
 }
 
-bool MainWindowFrame::doSceneUpdate(bool ensureVisible)
+void MainWindowFrame::doSceneUpdate(bool ensureVisible)
 {
 	//Update scene
 	ASSERT(!currentlyUpdatingScene);
@@ -3864,6 +3956,11 @@ bool MainWindowFrame::doSceneUpdate(bool ensureVisible)
 	ensureResultVisible=ensureVisible;
 
 	ASSERT(!refreshControl);
+
+	//Hack to prevent crash on double-refresh
+	if(refreshControl)
+		return;
+
 	refreshControl = new RefreshController(visControl.state.treeState);
 	refreshThread=new RefreshThread(this,refreshControl);
 	progressTimer->Start(PROGRESS_TIMER_DELAY);
@@ -3871,7 +3968,8 @@ bool MainWindowFrame::doSceneUpdate(bool ensureVisible)
 	refreshThread->Create();
 	refreshThread->Run();
 
-	return true;
+	cerr << "Updating scene complete"<< endl;
+	return;
 }
 
 void MainWindowFrame::updateWxTreeCtrl( wxTreeCtrl *t, const Filter *f)
@@ -3971,6 +4069,11 @@ void MainWindowFrame::OnFinishRefreshThread(wxCommandEvent &event)
 	ASSERT(!visControl.state.treeState.isRefreshing());
 	progressTimer->Stop();
 
+	//Hack to prevent crash on re-entry during refresh. Should never trigger.
+	if(!refreshControl)
+		return;
+
+
 	vector<std::pair<const Filter*, std::string> > consoleMessages;
 	consoleMessages=refreshControl->getConsoleMessages();
 
@@ -4696,6 +4799,7 @@ void MainWindowFrame::OnButtonRefresh(wxCommandEvent &event)
 	wxMouseState wxm = wxGetMouseState();
 	if(wxm.ShiftDown())
 	{
+		//If the user presses shift, then delete the filter's caches
 		visControl.state.treeState.purgeFilterCache();
 	}
 	else
@@ -4944,9 +5048,7 @@ void MainWindowFrame::OnClose(wxCloseEvent &event)
 	{
 		if(!haveAborted)
 		{
-			refreshThread->abort();
-			haveAborted=true;
-
+			visControl.state.treeState.setAbort();
 			statusMessage(TRANS("Aborting..."),MESSAGE_INFO);
 			return;
 		}
@@ -5432,12 +5534,15 @@ void MainWindowFrame::SetCommandLineFiles(wxArrayString &files)
 	
 	textConsoleOut->Clear();
 	bool loadedOK=false;
-	//Load them up as data.
+	//Load the command line files, merging all into the first
 	for(unsigned int ui=0;ui<files.size();ui++)
 	{
-		loadedOK|=loadFile(files[ui],true,true);
+		bool wantMerge;
+		wantMerge = (ui !=0);
+		loadedOK|=loadFile(files[ui],wantMerge,true);
 	}
 
+	//Defer the scene update until the GUI is  fully initialised
 	requireFirstUpdate=loadedOK;
 
 }
@@ -5769,9 +5874,9 @@ void MainWindowFrame::set_properties()
     
     comboFilters->SetToolTip(TRANS("List of available filters"));
 #ifdef __APPLE__
-    treeFilters->SetToolTip(TRANS("Tree - drag to move items, hold ⌘ for copy. Tap delete to remove items"));
+    treeFilters->SetToolTip(TRANS("Tree - drag to move items, hold ⌘ for copy, shift for splice. Tap delete to remove items, multi-click to rename"));
 #else
-    treeFilters->SetToolTip(TRANS("Tree - drag to move items, hold Ctrl for copy. Tap delete to remove items."));
+    treeFilters->SetToolTip(TRANS("Tree - drag to move items, hold Ctrl for copy, shift for splice. Tap delete to remove items, multi-click to rename."));
 #endif
     checkAutoUpdate->SetToolTip(TRANS("Enable/Disable automatic updates of data when filter change takes effect"));
     checkAutoUpdate->SetValue(true);
diff --git a/src/gui/mainFrame.h b/src/gui/mainFrame.h
index 5a70716..4061894 100644
--- a/src/gui/mainFrame.h
+++ b/src/gui/mainFrame.h
@@ -112,7 +112,9 @@ private:
     void do_filtergrid_prop_layout();
     //Force a re-layout of the camera property grid
     void do_cameragrid_prop_layout();
-  
+    //Delete the tree filters, updating the remaining code as required
+    void deleteTreeFilter(wxTreeItemId &id);
+     
 	bool refreshThreadActive() { return refreshThread && refreshThread->IsRunning();};
  
    	//!Queue up a status message for display
@@ -124,7 +126,7 @@ private:
 	//!Update the progress information in the status bar
 	void updateProgressStatus();
 	//!Perform an update to the 3D Scene. Returns false if refresh failed
-	bool doSceneUpdate(bool ensureResultVisible=false);
+	void doSceneUpdate(bool ensureResultVisible=false);
 	
 	//!Complete the scene update. Returns false if failed
 	void finishSceneUpdate(unsigned int errCode);
@@ -430,6 +432,8 @@ public:
 
     void OnTreeBeginLabelEdit(wxTreeEvent &evt);
     void OnTreeEndLabelEdit(wxTreeEvent &evt);
+    void OnTreeRightClick(wxContextMenuEvent &evt);
+    void OnTreePopupMenu(wxCommandEvent &evt);
     
     void OnUpdateTimer(wxTimerEvent &evt);
     void OnAutosaveTimer(wxTimerEvent &evt);
diff --git a/src/gui/mathglPane.cpp b/src/gui/mathglPane.cpp
index e5caae6..df12b4c 100644
--- a/src/gui/mathglPane.cpp
+++ b/src/gui/mathglPane.cpp
@@ -40,6 +40,11 @@ const float MGL_PAN_SPEED=2.0f;
 //Mathgl uses floating point loop computation, and can get stuck. Limit zoom precision
 const float MGL_ZOOM_LIMIT=10.0f*sqrt(std::numeric_limits<float>::epsilon());
 
+//We overdraw on the horizontal axis, because we don't like
+// the margin handling that mathgl provides.
+// This is the horizontal pre-scaling factor for the mgl plot from
+// the original window size
+const float HORIZ_MARGIN_FACTOR = 0.25;
 
 //Mouse action types
 enum
@@ -274,6 +279,9 @@ void MathGLPane::render(wxPaintEvent &event)
 	if(doTrap)
 		trapfpe(false);
 #endif
+
+	const unsigned int WIDTH_AXIS_MARGIN=HORIZ_MARGIN_FACTOR*w;
+
 	//If the plot has changed, been resized or is performing
 	// a mouse action that requires updating, we need to update it
 	//likewise if we don't have a plot, we need one.
@@ -283,7 +291,7 @@ void MathGLPane::render(wxPaintEvent &event)
 		//clear the plot drawing entity
 		if(!gr)
 		{
-			gr = new mglGraph(0,w,h);
+			gr = new mglGraph(0,w+WIDTH_AXIS_MARGIN,h);
 #ifdef __APPLE__
 			//apparenty bug in mgl under osx - font wont load,
 			// use random string to force fallback
@@ -292,7 +300,7 @@ void MathGLPane::render(wxPaintEvent &event)
 		}
 		else
 		{
-			gr->SetSize(w,h);
+			gr->SetSize(w+WIDTH_AXIS_MARGIN,h);
 		}
 		
 		//change the plot by panningOneD it before we draw.
@@ -312,10 +320,28 @@ void MathGLPane::render(wxPaintEvent &event)
 		hasResized=false;
 
 		//Copy the plot's memory buffer into a wxImage object, then draw it	
-		char *rgbdata = (char*)malloc(w*h*3);
-		gr->GetRGB((char*)rgbdata,w*h*3);
-		
-		imageCacheBmp=wxBitmap(wxImage(w,h,(unsigned char*)rgbdata,true));
+		char *rgbdata = (char*)malloc((w+WIDTH_AXIS_MARGIN)*h*3);
+		gr->GetRGB((char*)rgbdata,(w+WIDTH_AXIS_MARGIN)*h*3);
+		wxImage img(w,h);
+
+	
+#pragma omp parallel for
+		for(unsigned int uj=0;uj<h; uj++)
+		{
+			unsigned int offset;
+			offset = (w+WIDTH_AXIS_MARGIN)*uj*3;
+
+			unsigned char pixR,pixG,pixB;
+			for(unsigned int ui=WIDTH_AXIS_MARGIN/2;ui<w+WIDTH_AXIS_MARGIN/2; ui++)
+			{
+				pixR = rgbdata[offset+ui*3];
+				pixG = rgbdata[offset+ui*3+1];
+				pixB = rgbdata[offset+ui*3+2];
+				img.SetRGB(ui-WIDTH_AXIS_MARGIN/2,uj,pixR,pixG,pixB);
+			}
+		}
+
+		imageCacheBmp=wxBitmap(img);
 		free(rgbdata);
 	}
 
@@ -323,7 +349,7 @@ void MathGLPane::render(wxPaintEvent &event)
 	if(doTrap)
 		trapfpe(true);
 #endif
-	dc->DrawBitmap(wxBitmap(imageCacheBmp),0,0);
+	dc->DrawBitmap(imageCacheBmp,0,0);
 	//If we are engaged in a dragging operation
 	//draw the nice little bits we need
 	switch(mouseDragMode)
@@ -627,7 +653,7 @@ void MathGLPane::oneDMouseDownAction(bool leftDown,bool middleDown,
 			thePlot->getRegion(plotId,regionId,r);
 
 			//TODO: Implement a more generic region handler?
-			ASSERT(thePlot->plotType(plotId) == PLOT_MODE_1D);
+			ASSERT(thePlot->getPlotMode(plotId) == PLOT_MODE_1D);
 
 			float mglStartX,mglStartY;
 			toPlotCoords(draggingStart.x, draggingStart.y,mglStartX,mglStartY);
@@ -772,6 +798,7 @@ void MathGLPane::mouseWheelMoved(wxMouseEvent& event)
 	//Bigger numbers mean faster. 
 	const float SCROLL_WHEEL_ZOOM_RATE=0.20;
 
+	//negative for a wheel forwards/up. Positive for wheel down
 	float zoomRate=(float)event.GetWheelRotation()/(float)event.GetWheelDelta();
 	zoomRate=zoomRate*SCROLL_WHEEL_ZOOM_RATE;
 
@@ -780,12 +807,12 @@ void MathGLPane::mouseWheelMoved(wxMouseEvent& event)
 	if(zoomRate > 0.0f)
 	{
 		zoomFactor=1.0/(1.0+zoomRate);
-		ASSERT(zoomFactor> 1.0f);
+		ASSERT(zoomFactor< 1.0f);
 	}
 	else
 	{
 		zoomFactor=(1.0-zoomRate);
-		ASSERT(zoomFactor < 1.0f);
+		ASSERT(zoomFactor > 1.0f);
 	}
 
 
@@ -965,7 +992,7 @@ void MathGLPane::updateDragPos(const wxPoint &draggingEnd) const
 		endX=draggingStart.x;
 	}
 
-	if(h-draggingEnd.y > h-draggingStart.y)
+	if(draggingEnd.y > draggingStart.y)
 	{
 		startY=draggingStart.y;
 		endY=draggingEnd.y;
@@ -1417,7 +1444,13 @@ bool MathGLPane::toPlotCoords(int winX, int winY,float &resX, float &resY) const
 		WARN(false,"DEBUG ONLY - was outside window coord");
 		return false;
 	}
-		
+
+	//Account for the horizontal margin.
+	//Inverse transform = (Q_x-winx/2)/F + winX/2;
+	// Q_x : point in stretched space, F : stretch factor, winX: 
+	winX = winX + (width*HORIZ_MARGIN_FACTOR/2.0f);
+	
+
 	ASSERT(gr);
 	mglPoint pt = gr->CalcXYZ(winX,winY);
 	
@@ -1439,14 +1472,17 @@ bool MathGLPane::toPlotCoords(int winX, int winY,float &resX, float &resY) const
 }
 bool MathGLPane::toWinCoords(float plotX, float plotY, float &winX, float &winY) const
 {
+	int width, height;
+	GetClientSize(&width,&height);
+
 	mglPoint tmp;
 	tmp=gr->CalcScr(mglPoint(plotX,plotY));
-	winX=tmp.x; winY=tmp.y;
+	winX=tmp.x -width*HORIZ_MARGIN_FACTOR/2.0f; winY=tmp.y;
 
 	if(plotIsLogarithmic)
 	{
 		//FIXME: IMPLEMENT ME
-		WARN(false,"NOT IMPLEMENTED FOR LOG MODE");
+		WARN(false,"NOT IMPLEMENTED FOR LOG MODE (Y value)");
 		return true;
 	}
 	else
@@ -1471,7 +1507,7 @@ void MathGLPane::drawRegionDraggingOverlay(wxDC *dc) const
 		return;
 
 
-	ASSERT(thePlot->plotType(startMousePlot) == PLOT_MODE_1D);
+	ASSERT(thePlot->getPlotMode(startMousePlot) == PLOT_MODE_1D);
 
 	//See where extending the region is allowed up to.
 	thePlot->findRegionLimit(startMousePlot,startMouseRegion,
@@ -1550,7 +1586,7 @@ void MathGLPane::drawRegionDraggingOverlay(wxDC *dc) const
 		{
 			//This needs to be extended to support more
 			//plot types.
-			ASSERT(thePlot->plotType(startMousePlot) == PLOT_MODE_1D);
+			ASSERT(thePlot->getPlotMode(startMousePlot) == PLOT_MODE_1D);
 			
 			//Draw "ghost" limits markers for move,
 			//these appear as moving vertical bars to outline
diff --git a/src/testing/mglTesting.cpp b/src/testing/mglTesting.cpp
index 0994eec..47cab00 100644
--- a/src/testing/mglTesting.cpp
+++ b/src/testing/mglTesting.cpp
@@ -140,6 +140,7 @@ bool mglTest()
 
 	//TODO: write non-hack image comparison function
 	{
+/*
 	std::string call="/usr/bin/python ../extras/image-compare-hist.py ";
 	call+=s;
 	call += " ../test/ref-images/plot-ref.png";
@@ -150,7 +151,11 @@ bool mglTest()
 		if(f)
 		{
 			float answer=std::numeric_limits<float>::max();
-			f >> answer;
+			std::string strAnswer;
+			 strAnswer << f ;
+
+			stream_cast(f,strAnswer);
+
 
 			//As an example, an "OK" image gave 177, a broken image 13000
 			const float THRESHOLD=2000;
@@ -163,6 +168,7 @@ bool mglTest()
 	{
 		WARN(false,"Unable to execute rather hacky image comparison code");
 	}
+*/
 	}
 
 
diff --git a/src/testing/testing.cpp b/src/testing/testing.cpp
index 27eceaa..3055db3 100644
--- a/src/testing/testing.cpp
+++ b/src/testing/testing.cpp
@@ -29,6 +29,7 @@
 
 
 #include "backend/filters/allFilter.h"
+#include "backend/filters/filterCommon.h"
 #include "backend/APT/vtk.h"
 #include "backend/state.h"
 #include "backend/configFile.h"
@@ -41,8 +42,10 @@
 #include "backend/APT/APTFileIO.h"
 #include "backend/APT/abundanceParser.h"
 
+#include "common/mathfuncs.h"
 #include "common/stringFuncs.h"
 #include "common/xmlHelper.h"
+#include "common/colourmap.h"
 
 #include "gl/isoSurface.h"
 
@@ -121,12 +124,15 @@ bool basicFunctionTests()
 	LinearFeedbackShiftReg reg;
 	TEST(reg.verifyTable(16),"Check LFSR table integrity");
 
+	TEST(BoundCube::test(),"boundcube test");
 	
 	return true;
 }
 
 bool runUnitTests()
 {
+
+
 	//Set the abort pointer for the filter
 #ifdef HAVE_CPP_1X
 	ATOMIC_BOOL abortFlag(false);
@@ -142,6 +148,8 @@ bool runUnitTests()
 	K3DTreeMk2::setProgressPtr(&progressVar);
 
 	cerr << "Running unit tests..." ;
+	if(!testMathfuncs())
+		return false;
 
 	if(!algorithmTests())
 		return false;
@@ -151,6 +159,10 @@ bool runUnitTests()
 
 	if(!filterTests())
 		return false;
+
+	if(!testCommon())
+		return false;
+
 	if(!rangeFileLoadTests())
 		return false;
 
@@ -187,6 +199,10 @@ bool runUnitTests()
 
 	if(!fileFormatTests())
 		return false;
+
+	if(!testColourMap())
+		return false;
+
 	cerr << " OK" << endl << endl;
 
 	return true;
diff --git a/src/wx/wxcomponents.cpp b/src/wx/wxcomponents.cpp
index 35a9b7f..0ed95ab 100644
--- a/src/wx/wxcomponents.cpp
+++ b/src/wx/wxcomponents.cpp
@@ -188,14 +188,14 @@ void CopyGrid::selectData()
 
 void CopyGrid::saveData()
 {
-	wxFileDialog *wxF = new wxFileDialog(this,TRANS("Save Data..."), wxT(""),
+	wxFileDialog wxF(this,TRANS("Save Data..."), wxT(""),
 		wxT(""),TRANS("Text File (*.txt)|*.txt|All Files (*)|*"),wxFD_SAVE);
 
-	if( (wxF->ShowModal() == wxID_CANCEL))
+	if( (wxF.ShowModal() == wxID_CANCEL))
 		return;
 	
 
-	std::string dataFile = stlStr(wxF->GetPath());
+	std::string dataFile = stlStr(wxF.GetPath());
 	ofstream f(dataFile.c_str());
 
 	if(!f)
diff --git a/src/wx/wxcomponents.h b/src/wx/wxcomponents.h
index 9d27f94..8eef580 100644
--- a/src/wx/wxcomponents.h
+++ b/src/wx/wxcomponents.h
@@ -79,7 +79,7 @@ class TextTreeCtrl : public wxTreeCtrl
 	private:
 		std::vector<std::string> messageStrs;
 	public:
-		 TextTreeCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTR_HAS_BUTTONS, const wxValidator& validator = wxDefaultValidator, const wxString& name = _("treeCtrl")) : wxTreeCtrl(parent,id,pos,size,style,validator,name) {};
+		 TextTreeCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTR_HAS_BUTTONS, const wxValidator& validator = wxDefaultValidator, const wxString& name="treeCtrl") : wxTreeCtrl(parent,id,pos,size,style,validator,name) {};
 
 
 		virtual void OnTreePaint(wxPaintEvent &evt);
diff --git a/translations/3Depict_base.pot b/translations/3Depict_base.pot
index b78fe44..b8b5f40 100644
--- a/translations/3Depict_base.pot
+++ b/translations/3Depict_base.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-31 11:15+1000\n"
+"POT-Creation-Date: 2017-02-04 23:42+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -17,6 +17,227 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../src/gl/cameras.cpp:596
+msgid "Lock"
+msgstr ""
+
+#: ../src/gl/cameras.cpp:603 ../src/backend/filters/ionClip.cpp:529
+#: ../src/backend/filters/ionClip.cpp:551
+#: ../src/backend/filters/ionClip.cpp:573
+#: ../src/backend/filters/ionClip.cpp:610
+#: ../src/backend/filters/profile.cpp:1017
+#: ../src/backend/filters/profile.cpp:1055
+#: ../src/backend/filters/transform.cpp:1232
+#: ../src/backend/filters/transform.cpp:1259
+#: ../src/backend/filters/transform.cpp:1285
+#: ../src/backend/filters/annotation.cpp:576
+msgid "Origin"
+msgstr ""
+
+#: ../src/gl/cameras.cpp:611 ../src/backend/filters/spatialAnalysis.cpp:872
+msgid "Target"
+msgstr ""
+
+#: ../src/gl/cameras.cpp:617
+msgid "Up Dir."
+msgstr ""
+
+#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
+msgid "Perspective"
+msgstr ""
+
+#: ../src/gl/cameras.cpp:627 ../src/gl/cameras.cpp:730
+#: ../src/gui/mainFrame.cpp:5416
+msgid "Orthogonal"
+msgstr ""
+
+#: ../src/gl/cameras.cpp:631
+msgid "Projection"
+msgstr ""
+
+#: ../src/gl/cameras.cpp:640
+msgid "Field of View (deg)"
+msgstr ""
+
+#: ../src/gl/cameras.cpp:646
+msgid "View size"
+msgstr ""
+
+#: ../src/wx/wxcomponents.cpp:191
+msgid "Save Data..."
+msgstr ""
+
+#: ../src/wx/wxcomponents.cpp:192
+msgid "Text File (*.txt)|*.txt|All Files (*)|*"
+msgstr ""
+
+#: ../src/wx/wxcomponents.cpp:204
+msgid "Error saving file. Check output dir is writable."
+msgstr ""
+
+#: ../src/wx/wxcomponents.cpp:204 ../src/gui/dialogs/ExportRngDialog.cpp:187
+#: ../src/gui/mainFrame.cpp:1478 ../src/gui/mainFrame.cpp:1603
+#: ../src/gui/mainFrame.cpp:1652 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2284 ../src/gui/mainFrame.cpp:2357
+#: ../src/gui/mainFrame.cpp:2460 ../src/gui/mainFrame.cpp:2573
+msgid "Save error"
+msgstr ""
+
+#: ../src/common/basics.cpp:183
+msgid "in the future?"
+msgstr ""
+
+#: ../src/common/basics.cpp:234
+msgid "a decade ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:235
+msgid "a year ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:236
+msgid "a month ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:237
+msgid "a week ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:238
+msgid "a day ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:239
+msgid "an hour ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:240
+msgid "45 minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:241
+msgid "30 minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:242
+msgid "20 minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:243
+msgid "15 minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:244
+msgid "10 minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:245
+msgid "5 minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:246
+msgid "a minute ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:247
+msgid "30 seconds ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:248
+msgid "10 seconds ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:249
+msgid "a second ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:254
+msgid "a few decades ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:255
+msgid "a few years ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:256
+msgid "a few months ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:257
+msgid "a few weeks ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:258
+msgid "a few days ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:259
+msgid "a few hours ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:262
+msgid "tens of minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:266
+msgid "a few minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:269
+msgid "a few seconds ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:296
+msgid "moments ago"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:307
+msgid "Jet"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:308
+msgid "Hot"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:309
+msgid "Cold"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:310
+msgid "Grey"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:311
+msgid "Cyclic"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:312
+msgid "General"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:313
+msgid "Blue"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:314
+msgid "Pseudo-Random"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:315
+msgid "Inferno"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:316
+msgid "Viridis"
+msgstr ""
+
+#: ../src/common/constants.cpp:22
+msgid ""
+"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
+"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
+"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+msgstr ""
+
 #: ../src/gui/glPane.cpp:642
 msgid "Use shift/ctrl-space or double tap to alter reset axis"
 msgstr ""
@@ -41,9 +262,9 @@ msgstr ""
 msgid "Saving Image "
 msgstr ""
 
-#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4401
-#: ../src/gui/mainFrame.cpp:4405 ../src/gui/mainFrame.cpp:4418
-#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4504
+#: ../src/gui/mainFrame.cpp:4508 ../src/gui/mainFrame.cpp:4521
+#: ../src/backend/filters/dataLoad.cpp:339
 msgid " of "
 msgstr ""
 
@@ -60,14 +281,14 @@ msgid "Source Filter"
 msgstr ""
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:54
-#: ../src/backend/filters/rangeFile.cpp:656
+#: ../src/backend/filters/rangeFile.cpp:657
 msgid "Ions"
 msgstr ""
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:55
 #: ../src/gui/dialogs/rangeEditDialog.cpp:1587
-#: ../src/backend/filters/voxelise.cpp:834
-#: ../src/backend/filters/rangeFile.cpp:723
+#: ../src/backend/filters/voxelise.cpp:1049
+#: ../src/backend/filters/rangeFile.cpp:724
 msgid "Ranges"
 msgstr ""
 
@@ -76,10 +297,10 @@ msgid "Param"
 msgstr ""
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:89
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:105
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:352
-#: ../src/backend/filters/dataLoad.cpp:581
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
+#: ../src/backend/filters/dataLoad.cpp:610
 msgid "Value"
 msgstr ""
 
@@ -96,7 +317,7 @@ msgid "Num Ranges"
 msgstr ""
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:116
-#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:53
+#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:52
 msgid "Ion"
 msgstr ""
 
@@ -108,7 +329,7 @@ msgstr ""
 msgid "Range end"
 msgstr ""
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2376
+#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2395
 msgid "Save pos..."
 msgstr ""
 
@@ -118,21 +339,13 @@ msgid ""
 "(*.env)|*.env|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1638 ../src/gui/mainFrame.cpp:1713
-#: ../src/gui/mainFrame.cpp:2266 ../src/gui/mainFrame.cpp:2443
-#: ../src/gui/mainFrame.cpp:2556
+#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1478
+#: ../src/gui/mainFrame.cpp:1653 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2285 ../src/gui/mainFrame.cpp:2461
+#: ../src/gui/mainFrame.cpp:2574
 msgid "Unable to save. Check output destination can be written to."
 msgstr ""
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:187 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1588 ../src/gui/mainFrame.cpp:1637
-#: ../src/gui/mainFrame.cpp:1713 ../src/gui/mainFrame.cpp:2265
-#: ../src/gui/mainFrame.cpp:2338 ../src/gui/mainFrame.cpp:2442
-#: ../src/gui/mainFrame.cpp:2555 ../src/wx/wxcomponents.cpp:204
-msgid "Save error"
-msgstr ""
-
 #: ../src/gui/dialogs/ExportRngDialog.cpp:253
 msgid "Export Range"
 msgstr ""
@@ -145,234 +358,109 @@ msgstr ""
 msgid "Detailed view of selected range"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:92
-msgid "Cameca/Ametek RRNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:221
+msgid "Show Overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:93
-msgid "Oak-Ridge RNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:246
+msgid "e.g. H2O"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:94
-msgid "Cameca/Ametek ENV"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:561
+#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:6071
+#: ../src/backend/filter.cpp:53
+msgid "Plot"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:156
-msgid "Key frames"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:562
+msgid "Short Name"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:157
-msgid "Output Data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:563
+msgid "Long Name"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:158
-msgid "Filters and properties"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:564
+#: ../src/backend/filters/voxelise.cpp:1188
+#: ../src/backend/filters/profile.cpp:1159
+#: ../src/backend/filters/annotation.cpp:909
+#: ../src/backend/filters/spectrumPlot.cpp:679
+msgid "Colour"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:164
-msgid "Dir : "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:697
+#: ../src/backend/filters/annotation.cpp:613
+#: ../src/backend/filters/annotation.cpp:654
+#: ../src/backend/filters/annotation.cpp:823
+msgid "Start"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:167
-msgid "Output only when refresh required"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:698
+#: ../src/backend/filters/annotation.cpp:621
+#: ../src/backend/filters/annotation.cpp:663
+#: ../src/backend/filters/annotation.cpp:831
+msgid "End"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:169
-msgid "Data Types:"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
+msgid "Range or ion?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:170
-msgid "3D Images"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
+msgid "Select type to add"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:171
-msgid "File Prefix: "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
+msgid "Range Editor"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:173
-msgid "Size : "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
+msgid "Enable or disable all overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:175
-msgid "..."
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
+msgid "Entered overlays, use delete to remove"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:176
-msgid "Point data"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:177
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1586
-msgid "Plots"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:178
-msgid "Voxel data"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:179
-msgid "Range files"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:180
-msgid "Format"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:197
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
-msgid "Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-msgid "transition frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-#: ../src/gui/mainFrame.cpp:1690
-msgid "Frame count"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:774
-msgid "Key frame : Colour"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:827
-msgid "File existed, but was unable to read or interpret file contents."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:828
-msgid "String load failed"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:849
-msgid "Keyframe : decimal"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:858
-msgid "Keyframe : integer"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:867
-msgid "Keyframe : 3D Point"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:995
-msgid "Select or create new folder"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
-msgid "Export Animation"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
-msgid "Select filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1177
-msgid "Select property"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
-msgid "Filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
-msgid "Property"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
-#: ../src/backend/filters/annotation.cpp:545
-#: ../src/backend/filters/annotation.cpp:551
-#: ../src/backend/filters/transform.cpp:1150
-#: ../src/backend/filters/ionDownsample.cpp:465
-#: ../src/backend/filters/spatialAnalysis.cpp:1173
-msgid "Mode"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
-msgid "Start Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
-msgid "End Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
-msgid "Keyframe table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
-msgid "Remove the selected keyframe from the table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
-msgid "Enter where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1187
-msgid "Browse to directory where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
-msgid ""
-"Title for files, result will be saved as #-name.png, where # is image number."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
-msgid "Target resolution (image size)"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
-msgid "Select frame for property display"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
-msgid "Enter frame number to change frame (eg 1/20)"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
-msgid "Save point data (POS files) in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
+msgid "Available plots for ranging"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
-msgid "Save plots (as text files) in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
+msgid "Enter species to display as overlay, e.g. SiO2"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
-msgid "Save voxel data (raw files) in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
+msgid "Editable ranges"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1196
-msgid "Save range files  in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
+msgid "Editable ions"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
-msgid "Animation parameters for current frame"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1586
+#: ../src/gui/dialogs/animateFilterDialog.cpp:177
+msgid "Plots"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
-msgid "Abort animation"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
+msgid "Overlay"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1203
-msgid "Run Animation"
+#: ../src/gui/dialogs/autosaveDialog.cpp:39
+msgid "Remove &All"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
-msgid "Filter view"
+#: ../src/gui/dialogs/autosaveDialog.cpp:123
+msgid "Restore state?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1275
-msgid "Frame view"
+#: ../src/gui/dialogs/autosaveDialog.cpp:133
+msgid "Multiple autosave states were found; would you like to restore one?"
 msgstr ""
 
-#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:476
-#: ../src/backend/filter.cpp:479
+#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:481
+#: ../src/backend/filter.cpp:484
 msgid "Error"
 msgstr ""
 
@@ -425,35 +513,6 @@ msgstr ""
 msgid "Available stashes"
 msgstr ""
 
-#: ../src/gui/dialogs/resolutionDialog.cpp:45
-msgid "Width :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:47
-msgid "Height :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:50
-#: ../src/gui/dialogs/prefDialog.cpp:85
-msgid "Reset"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:336
-msgid "Resolution Selection"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:39
-msgid "Remove &All"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:123
-msgid "Restore state?"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:133
-msgid "Multiple autosave states were found; would you like to restore one?"
-msgstr ""
-
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:45
 msgid "Start Frame: "
 msgstr ""
@@ -466,6 +525,12 @@ msgstr ""
 msgid "From Table"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
+#: ../src/gui/dialogs/animateFilterDialog.cpp:197
+msgid "Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:240
 msgid "Select text file..."
 msgstr ""
@@ -530,6 +595,16 @@ msgstr ""
 msgid "Ramp"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
+msgid "Start Frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
+msgid "End Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:73
 msgid "Initial Value"
 msgstr ""
@@ -558,2045 +633,1753 @@ msgstr ""
 msgid "Colour at end of transition"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:73
-msgid "Panel Display"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:92
+msgid "Cameca/Ametek RRNG"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:75
-msgid "Online Updates"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:93
+msgid "Oak-Ridge RNG"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
-msgid "Startup"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:94
+msgid "Cameca/Ametek ENV"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:78
-msgid "Camera Speed"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:156
+msgid "Key frames"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:79
-msgid "Available Filters"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:157
+msgid "Output Data"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:84
-msgid "Reset All"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:158
+msgid "Filters and properties"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:87
-msgid "Show all panels"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:164
+msgid "Dir : "
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:88
-msgid "Remember last"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:167
+msgid "Output only when refresh required"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:89
-msgid "Show Selected"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:169
+msgid "Data Types:"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:92
-msgid "Control Pane"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:170
+msgid "3D Images"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:93
-msgid "Raw Data Panel"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:171
+msgid "File Prefix: "
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:691
-msgid "Plot List"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:173
+msgid "Size : "
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:96
-msgid "Periodically notify about available updates"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:175
+msgid "..."
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:98
-msgid "Prefer orthographic at startup"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:176
+msgid "Point data"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:99
-msgid "Move Rate"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:100 ../src/gui/dialogs/prefDialog.cpp:104
-msgid "(slow)"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:102 ../src/gui/dialogs/prefDialog.cpp:106
-msgid "(fast)"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:103
-msgid "Zoom Rate"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:416
-msgid "Show all panels when starting program"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:419
-msgid "Show panels visible at last shutdown when starting program"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:426
-msgid "Show selected panels when starting program"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:475
-msgid "Preferences"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:477
-msgid "Set the method of panel layout when starting the program"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:480
-msgid ""
-"Lets the program check the internet to see if updates to the program version "
-"are available, then notifies you about updates now and again."
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:482
-msgid ""
-"By default, use an orthographic camera at startup. State files will override "
-"this preference."
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:483
-msgid "Camera translation, orbit and swivel rates. "
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:484
-msgid "Camera zooming rate."
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:486
-msgid "Reset the filter initial values back to program defaults"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:487
-msgid "Reset all filter initial values back to program defaults"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:559
-msgid "Filt. Default"
-msgstr ""
-
-#: ../src/gui/dialogs/prefDialog.cpp:561
-msgid "Camera"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:63
-msgid "Export:"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:64
-#: ../src/backend/filters/boundingBox.cpp:567
-msgid "Visible"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:65
-msgid "Selected Data"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:67
-msgid "Available Data"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:73
-msgid "Selection"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:98 ../src/gui/dialogs/ExportPos.cpp:101
-msgid "Index"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:99 ../src/gui/dialogs/ExportPos.cpp:102
-#: ../src/backend/filters/profile.cpp:604
-#: ../src/backend/filters/spatialAnalysis.cpp:2520
-#: ../src/backend/filters/spatialAnalysis.cpp:2613
-#: ../src/backend/filters/spatialAnalysis.cpp:2673
-#: ../src/backend/filters/spatialAnalysis.cpp:3628
-#: ../src/backend/filters/spatialAnalysis.cpp:3831
-#: ../src/backend/filters/spatialAnalysis.cpp:3890
-#: ../src/backend/filters/spectrumPlot.cpp:65
-msgid "Count"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:451
-msgid "Export Pos Data"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:454
-msgid "Tree of filters, select leaves to show ion data."
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:456
-msgid "Add all data from all filters"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:457
-msgid "Add all data from currently selected filter"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:458
-msgid "Add selected data from currently selected filter"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:221
-msgid "Show Overlays"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:246
-msgid "e.g. H2O"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:561
-#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:5966
-#: ../src/backend/filter.cpp:54
-msgid "Plot"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:562
-msgid "Short Name"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:563
-msgid "Long Name"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:564
-#: ../src/backend/filters/annotation.cpp:901
-#: ../src/backend/filters/voxelise.cpp:976
-#: ../src/backend/filters/profile.cpp:1155
-#: ../src/backend/filters/spectrumPlot.cpp:676
-msgid "Colour"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:697
-#: ../src/backend/filters/annotation.cpp:605
-#: ../src/backend/filters/annotation.cpp:646
-#: ../src/backend/filters/annotation.cpp:815
-msgid "Start"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:698
-#: ../src/backend/filters/annotation.cpp:613
-#: ../src/backend/filters/annotation.cpp:655
-#: ../src/backend/filters/annotation.cpp:823
-msgid "End"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
-msgid "Range or ion?"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
-msgid "Select type to add"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
-msgid "Range Editor"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
-msgid "Enable or disable all overlays"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
-msgid "Entered overlays, use delete to remove"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
-msgid "Available plots for ranging"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
-msgid "Enter species to display as overlay, e.g. SiO2"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
-msgid "Editable ranges"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
-msgid "Editable ions"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
-msgid "Overlay"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:119
-msgid "New camera name..."
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:120
-msgid "New stash name..."
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:125
-msgid "New Filter..."
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:560
-#: ../src/backend/filters/annotation.cpp:664
-#: ../src/backend/filters/annotation.h:96
-msgid "Annotation"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:143
-msgid "Bounding Box"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:144 ../src/backend/filters/ionClip.cpp:629
-#: ../src/backend/filters/ionClip.h:66
-msgid "Clipping"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:145 ../src/backend/filters/clusterAnalysis.h:151
-msgid "Cluster Analysis"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:146
-msgid "Compos. Profiles"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:147
-msgid "Downsampling"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:148
-msgid "Extern. Prog."
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:149
-msgid "Ion Colour"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:150
-msgid "Ion Info"
-msgstr ""
-
-#: ../src/gui/mainFrame.cpp:151
-msgid "Ion Transform"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:178
+msgid "Voxel data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:152 ../src/backend/filters/spectrumPlot.h:76
-msgid "Spectrum"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:179
+msgid "Range files"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:153
-msgid "Range File"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:180
+msgid "Format"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:202
-msgid "Spat. Analysis"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701
+msgid "transition frame"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:122
-msgid "Voxelisation"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701 ../src/gui/mainFrame.cpp:1705
+msgid "Frame count"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:451
-msgid "OpenGL Failed"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:773
+msgid "Key frame : Colour"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:452 ../src/gui/mainFrame.cpp:454
-msgid ""
-"Unable to initialise the openGL (3D) panel. Program cannot start. Please "
-"check your video drivers."
+#: ../src/gui/dialogs/animateFilterDialog.cpp:826
+msgid "File existed, but was unable to read or interpret file contents."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:475
-msgid "&Open...\tCtrl+O"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:827
+msgid "String load failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:475
-msgid "Open state file"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:848
+msgid "Keyframe : decimal"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:476
-msgid "&Merge...\tCtrl+Shift+O"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:857
+msgid "Keyframe : integer"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:476
-msgid "Merge other file"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:866
+msgid "Keyframe : 3D Point"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:480
-msgid "&Recent"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:994
+msgid "Select or create new folder"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:481
-msgid "&Save\tCtrl+S"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1174
+msgid "Export Animation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:481
-msgid "Save state to file"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
+msgid "Select filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:483
-msgid "Save &As...\tCtrl+Shift+S"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
+msgid "Select property"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:483
-msgid "Save current state to new file"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1178
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1197
+msgid "Filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:486
-msgid "&Plot...\tCtrl+P"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
+msgid "Property"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:486
-msgid "Export Current Plot"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
+#: ../src/backend/filters/spatialAnalysis.cpp:1062
+#: ../src/backend/filters/transform.cpp:1149
+#: ../src/backend/filters/annotation.cpp:553
+#: ../src/backend/filters/annotation.cpp:559
+#: ../src/backend/filters/ionDownsample.cpp:466
+msgid "Mode"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:487
-msgid "&Image...\tCtrl+I"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
+msgid "Keyframe table"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:487
-msgid "Export Current 3D View"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
+msgid "Remove the selected keyframe from the table"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:488
-msgid "Ion&s...\tCtrl+N"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
+msgid "Enter where the animation frames will be exported to"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:488
-msgid "Export Ion Data"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
+msgid "Browse to directory where the animation frames will be exported to"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:489
-msgid "Ran&ges...\tCtrl+G"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1188
+msgid ""
+"Title for files, result will be saved as #-name.png, where # is image number."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:489
-msgid "Export Range Data"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
+msgid "Target resolution (image size)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:490
-msgid "&Animate Filters...\tCtrl+T"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
+msgid "Select frame for property display"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:490
-msgid "Export Animated Filter"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
+msgid "Enter frame number to change frame (eg 1/20)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
-msgid "Ani&mate Camera...\tCtrl+M"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
+msgid "Save point data (POS files) in output folder?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
-msgid "Export Animated Camera"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
+msgid "Save plots (as text files) in output folder?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:492
-msgid "Pac&kage...\tCtrl+K"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
+msgid "Save voxel data (raw files) in output folder?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:492
-msgid "Export analysis package"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
+msgid "Save range files  in output folder?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:494
-msgid "&Export"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
+msgid "Animation parameters for current frame"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:497
-msgid "&Quit\tCtrl+Q"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
+msgid "Abort animation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:497 ../src/gui/mainFrame.cpp:499
-msgid "Exit Program"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
+msgid "Run Animation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:499
-msgid "E&xit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1273
+msgid "Filter view"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:501
-msgid "&File"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
+msgid "Frame view"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:505
-msgid "&Background Colour...\tCtrl+B"
+#: ../src/gui/dialogs/resolutionDialog.cpp:45
+msgid "Width :"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:505
-msgid "Change background colour"
+#: ../src/gui/dialogs/resolutionDialog.cpp:47
+msgid "Height :"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:509
-msgid "&Control Pane\tF2"
+#: ../src/gui/dialogs/resolutionDialog.cpp:50
+#: ../src/gui/dialogs/prefDialog.cpp:85
+msgid "Reset"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:509 ../src/gui/mainFrame.cpp:512
-msgid "Toggle left control pane"
+#: ../src/gui/dialogs/resolutionDialog.cpp:336
+msgid "Resolution Selection"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:512
-msgid "&Control Pane\tAlt+C"
+#: ../src/gui/dialogs/ExportPos.cpp:63
+msgid "Export:"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:518
-msgid "&Raw Data Pane\tF3"
+#: ../src/gui/dialogs/ExportPos.cpp:64
+#: ../src/backend/filters/boundingBox.cpp:568
+msgid "Visible"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:518 ../src/gui/mainFrame.cpp:521
-msgid "Toggle raw data  pane (bottom)"
+#: ../src/gui/dialogs/ExportPos.cpp:65
+msgid "Selected Data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:521
-msgid "&Raw Data Pane\tAlt+R"
+#: ../src/gui/dialogs/ExportPos.cpp:67
+msgid "Available Data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:525
-msgid "&Plot List\tF4"
+#: ../src/gui/dialogs/ExportPos.cpp:73
+msgid "Selection"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:525 ../src/gui/mainFrame.cpp:527
-msgid "Toggle plot list"
+#: ../src/gui/dialogs/ExportPos.cpp:98 ../src/gui/dialogs/ExportPos.cpp:101
+msgid "Index"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:527
-msgid "&Plot List\tAlt+P"
+#: ../src/gui/dialogs/ExportPos.cpp:99 ../src/gui/dialogs/ExportPos.cpp:102
+#: ../src/backend/filters/spatialAnalysis.cpp:2388
+#: ../src/backend/filters/spatialAnalysis.cpp:2481
+#: ../src/backend/filters/spatialAnalysis.cpp:2541
+#: ../src/backend/filters/spatialAnalysis.cpp:3292
+#: ../src/backend/filters/spatialAnalysis.cpp:3481
+#: ../src/backend/filters/profile.cpp:608
+#: ../src/backend/filters/spectrumPlot.cpp:65
+msgid "Count"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:533
-msgid "&Legend\tCtrl+L"
+#: ../src/gui/dialogs/ExportPos.cpp:451
+msgid "Export Pos Data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:533
-msgid "Toggle Legend display"
+#: ../src/gui/dialogs/ExportPos.cpp:454
+msgid "Tree of filters, select leaves to show ion data."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:535
-msgid "P&lot..."
+#: ../src/gui/dialogs/ExportPos.cpp:456
+msgid "Add all data from all filters"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:536
-msgid "&Axis\tCtrl+Shift+I"
+#: ../src/gui/dialogs/ExportPos.cpp:457
+msgid "Add all data from currently selected filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:536
-msgid "Toggle World Axis display"
+#: ../src/gui/dialogs/ExportPos.cpp:458
+msgid "Add selected data from currently selected filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:541
-msgid "&Fullscreen mode\tF11"
+#: ../src/gui/dialogs/prefDialog.cpp:73
+msgid "Panel Display"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:541 ../src/gui/mainFrame.cpp:543
-msgid "Next fullscreen mode: with toolbars"
+#: ../src/gui/dialogs/prefDialog.cpp:75
+msgid "Online Updates"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:543
-msgid "&Fullscreen mode\tCtrl+Shift+F"
+#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
+msgid "Startup"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:548
-msgid "&Undo\tCtrl+Z"
+#: ../src/gui/dialogs/prefDialog.cpp:78
+msgid "Camera Speed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:550
-msgid "&Redo\tCtrl+Y"
+#: ../src/gui/dialogs/prefDialog.cpp:79
+msgid "Available Filters"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:553
-msgid "&Range"
+#: ../src/gui/dialogs/prefDialog.cpp:84
+msgid "Reset All"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:556
-msgid "&Preferences"
+#: ../src/gui/dialogs/prefDialog.cpp:87
+msgid "Show all panels"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:558
-msgid "&Edit"
+#: ../src/gui/dialogs/prefDialog.cpp:88
+msgid "Remember last"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:561
-msgid "&View"
+#: ../src/gui/dialogs/prefDialog.cpp:89
+msgid "Show Selected"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:563
-msgid "&Help...\tCtrl+H"
+#: ../src/gui/dialogs/prefDialog.cpp:92
+msgid "Control Pane"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:563
-msgid "Show help files and documentation"
+#: ../src/gui/dialogs/prefDialog.cpp:93
+msgid "Raw Data Panel"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:564
-msgid "&Contact..."
+#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:693
+msgid "Plot List"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:564
-msgid "Open contact page"
+#: ../src/gui/dialogs/prefDialog.cpp:96
+msgid "Periodically notify about available updates"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:566
-msgid "&About..."
+#: ../src/gui/dialogs/prefDialog.cpp:98
+msgid "Prefer orthographic at startup"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:566
-msgid "Information about this program"
+#: ../src/gui/dialogs/prefDialog.cpp:99
+msgid "Move Rate"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:567
-msgid "&Help"
+#: ../src/gui/dialogs/prefDialog.cpp:100 ../src/gui/dialogs/prefDialog.cpp:104
+msgid "(slow)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:569
-msgid "Stashed Filters"
+#: ../src/gui/dialogs/prefDialog.cpp:102 ../src/gui/dialogs/prefDialog.cpp:106
+msgid "(fast)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:574
-msgid "New Filters"
+#: ../src/gui/dialogs/prefDialog.cpp:103
+msgid "Zoom Rate"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:604
-msgid "Auto Refresh"
+#: ../src/gui/dialogs/prefDialog.cpp:416
+msgid "Show all panels when starting program"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:610
-msgid "Filter settings"
+#: ../src/gui/dialogs/prefDialog.cpp:419
+msgid "Show panels visible at last shutdown when starting program"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:613
-msgid "Camera Name"
+#: ../src/gui/dialogs/prefDialog.cpp:426
+msgid "Show selected panels when starting program"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:625
-msgid "Resize to Fit"
+#: ../src/gui/dialogs/prefDialog.cpp:475
+msgid "Preferences"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:627
-msgid "3D Post-processing"
+#: ../src/gui/dialogs/prefDialog.cpp:477
+msgid "Set the method of panel layout when starting the program"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:629
-msgid "Enable Cropping"
+#: ../src/gui/dialogs/prefDialog.cpp:480
+msgid ""
+"Lets the program check the internet to see if updates to the program version "
+"are available, then notifies you about updates now and again."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:631 ../src/gui/mainFrame.cpp:642
-msgid "x-y"
+#: ../src/gui/dialogs/prefDialog.cpp:482
+msgid ""
+"By default, use an orthographic camera at startup. State files will override "
+"this preference."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:632 ../src/gui/mainFrame.cpp:643
-msgid "x-z"
+#: ../src/gui/dialogs/prefDialog.cpp:483
+msgid "Camera translation, orbit and swivel rates. "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
-msgid "y-x"
+#: ../src/gui/dialogs/prefDialog.cpp:484
+msgid "Camera zooming rate."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
-msgid "y-z"
+#: ../src/gui/dialogs/prefDialog.cpp:486
+msgid "Reset the filter initial values back to program defaults"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
-msgid "z-x"
+#: ../src/gui/dialogs/prefDialog.cpp:487
+msgid "Reset all filter initial values back to program defaults"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
-msgid "z-y"
+#: ../src/gui/dialogs/prefDialog.cpp:559
+msgid "Filt. Default"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:651
-msgid "Use camera coordinates"
+#: ../src/gui/dialogs/prefDialog.cpp:561
+msgid "Camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:652
-msgid "dX"
+#: ../src/gui/mainFrame.cpp:119
+msgid "New camera name..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:654
-msgid "dY"
+#: ../src/gui/mainFrame.cpp:120
+msgid "New stash name..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:656
-msgid "dZ"
+#: ../src/gui/mainFrame.cpp:125
+msgid "New Filter..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:658
-msgid "Enable Anaglyphic Stereo"
+#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:568
+#: ../src/backend/filters/annotation.cpp:672
+#: ../src/backend/filters/annotation.h:96
+msgid "Annotation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:659
-msgid "Flip Channels"
+#: ../src/gui/mainFrame.cpp:143
+msgid "Bounding Box"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:660
-msgid "Anaglyph Mode"
+#: ../src/gui/mainFrame.cpp:144 ../src/backend/filters/ionClip.cpp:629
+#: ../src/backend/filters/ionClip.h:66
+msgid "Clipping"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:662
-msgid "Red-Blue"
+#: ../src/gui/mainFrame.cpp:145 ../src/backend/filters/clusterAnalysis.h:151
+msgid "Cluster Analysis"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:663
-msgid "Red-Green"
+#: ../src/gui/mainFrame.cpp:146
+msgid "Compos. Profiles"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:664
-msgid "Red-Cyan"
+#: ../src/gui/mainFrame.cpp:147
+msgid "Downsampling"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:665
-msgid "Green-Magenta"
+#: ../src/gui/mainFrame.cpp:148
+msgid "Extern. Prog."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:669
-msgid "Baseline Separation"
+#: ../src/gui/mainFrame.cpp:149
+msgid "Ion Colour"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:671 ../src/backend/filters/annotation.cpp:906
-#: ../src/backend/filters/voxelise.cpp:938
-#: ../src/backend/filters/voxelise.cpp:1106
-#: ../src/backend/filters/profile.cpp:1164
-#: ../src/backend/filters/boundingBox.cpp:731
-#: ../src/backend/filters/dataLoad.cpp:666
-#: ../src/backend/filters/spectrumPlot.cpp:683
-msgid "Appearance"
+#: ../src/gui/mainFrame.cpp:150
+msgid "Ion Info"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:672
-msgid "Smooth && translucent objects"
+#: ../src/gui/mainFrame.cpp:151
+msgid "Ion Transform"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:674
-msgid "3D lighting"
+#: ../src/gui/mainFrame.cpp:152 ../src/backend/filters/spectrumPlot.h:76
+msgid "Spectrum"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:677
-msgid "Performance"
+#: ../src/gui/mainFrame.cpp:153
+msgid "Range File"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:678
-msgid "Fast and weak randomisation."
+#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:192
+msgid "Spat. Analysis"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:680
-msgid "Limit Output Pts"
+#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:126
+msgid "Voxelisation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:685
-msgid "Filter caching"
+#: ../src/gui/mainFrame.cpp:453
+msgid "OpenGL Failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:687
-msgid "Max. Ram usage (%)"
+#: ../src/gui/mainFrame.cpp:454 ../src/gui/mainFrame.cpp:456
+msgid ""
+"Unable to initialise the openGL (3D) panel. Program cannot start. Please "
+"check your video drivers."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:759
-msgid "Warning: Your configuration file appears to be invalid:\n"
+#: ../src/gui/mainFrame.cpp:477
+msgid "&Open...\tCtrl+O"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:760
-msgid "\tConfig Load: "
+#: ../src/gui/mainFrame.cpp:477
+msgid "Open state file"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1054
-msgid "Current state has not been saved, would you like to save it now?"
+#: ../src/gui/mainFrame.cpp:478
+msgid "&Merge...\tCtrl+Shift+O"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1055
-msgid "State changed"
+#: ../src/gui/mainFrame.cpp:478
+msgid "Merge other file"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1073
-msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)"
+#: ../src/gui/mainFrame.cpp:482
+msgid "&Recent"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1075
-msgid "XML State File (*.xml)"
+#: ../src/gui/mainFrame.cpp:483
+msgid "&Save\tCtrl+S"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1076
-msgid "POS File (*.pos)"
+#: ../src/gui/mainFrame.cpp:483
+msgid "Save state to file"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1077
-msgid "LAWATAP ATO File (*.ato)"
+#: ../src/gui/mainFrame.cpp:485
+msgid "Save &As...\tCtrl+Shift+S"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1078
-msgid "Text File (*.txt, *.csv)"
+#: ../src/gui/mainFrame.cpp:485
+msgid "Save current state to new file"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1079
-msgid "All Files (*)"
+#: ../src/gui/mainFrame.cpp:488
+msgid "&Plot...\tCtrl+P"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1092 ../src/gui/mainFrame.cpp:1141
-msgid "Select Data or State File..."
+#: ../src/gui/mainFrame.cpp:488
+msgid "Export Current Plot"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1142
-msgid ""
-"3Depict file (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS File (*.pos)|*.pos|"
-"XML State File (*.xml)|*.xml|All Files (*)|*"
+#: ../src/gui/mainFrame.cpp:489
+msgid "&Image...\tCtrl+I"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1153
-msgid "Merged file."
+#: ../src/gui/mainFrame.cpp:489
+msgid "Export Current 3D View"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1256
-msgid "Tip: You can use ⌘ (command) to merge"
+#: ../src/gui/mainFrame.cpp:490
+msgid "Ion&s...\tCtrl+N"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1258
-msgid "Tip: You can use ctrl to merge"
+#: ../src/gui/mainFrame.cpp:490
+msgid "Export Ion Data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1292
-msgid "Load error"
+#: ../src/gui/mainFrame.cpp:491
+msgid "Ran&ges...\tCtrl+G"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1293
-msgid ""
-"Error loading state file.\n"
-"See console for more info."
+#: ../src/gui/mainFrame.cpp:491
+msgid "Export Range Data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1301
-msgid ""
-"This state file contains filters that can be unsafe to run\n"
-"Do you wish to remove these before continuing?."
+#: ../src/gui/mainFrame.cpp:492
+msgid "&Animate Filters...\tCtrl+T"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1302
-msgid "Security warning"
+#: ../src/gui/mainFrame.cpp:492
+msgid "Export Animated Filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1484 ../src/gui/mainFrame.cpp:1580
-#: ../src/gui/mainFrame.cpp:2010
-msgid "Unable to save"
+#: ../src/gui/mainFrame.cpp:493
+msgid "Ani&mate Camera...\tCtrl+M"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1485
-msgid "No plot available. Please create a plot before exporting."
+#: ../src/gui/mainFrame.cpp:493
+msgid "Export Animated Camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1489
-msgid "Save plot..."
+#: ../src/gui/mainFrame.cpp:494
+msgid "Pac&kage...\tCtrl+K"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1490
-msgid ""
-"By Extension (svg,png)|*.svg;*.png|Scalable Vector Graphics File (*.svg)|*."
-"svg|PNG File (*.png)|*.png|All Files (*)|*"
+#: ../src/gui/mainFrame.cpp:494
+msgid "Export analysis package"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1544
-msgid "Select type for save"
+#: ../src/gui/mainFrame.cpp:496
+msgid "&Export"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1545
-msgid "Choose file type"
+#: ../src/gui/mainFrame.cpp:499
+msgid "&Quit\tCtrl+Q"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1565 ../src/gui/mainFrame.cpp:1622
-#: ../src/gui/mainFrame.cpp:1658
-msgid "Choose resolution"
+#: ../src/gui/mainFrame.cpp:499 ../src/gui/mainFrame.cpp:501
+msgid "Exit Program"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1581
-msgid "Unknown file extension. Please use \"svg\" or \"png\""
+#: ../src/gui/mainFrame.cpp:501
+msgid "E&xit"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1592
-msgid "Saved plot: "
+#: ../src/gui/mainFrame.cpp:503
+msgid "&File"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1599 ../src/gui/mainFrame.cpp:1651
-msgid "Save Image..."
+#: ../src/gui/mainFrame.cpp:507
+msgid "&Background Colour...\tCtrl+B"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1600 ../src/gui/mainFrame.cpp:1652
-msgid "PNG File (*.png)|*.png|All Files (*)|*"
+#: ../src/gui/mainFrame.cpp:507
+msgid "Change background colour"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1614
-msgid "File already exists. Overwrite?"
+#: ../src/gui/mainFrame.cpp:511
+msgid "&Control Pane\tF2"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:2407
-#: ../src/gui/mainFrame.cpp:2513 ../src/gui/mainFrame.cpp:2536
-msgid "Overwrite?"
+#: ../src/gui/mainFrame.cpp:511 ../src/gui/mainFrame.cpp:514
+msgid "Toggle left control pane"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1642 ../src/gui/mainFrame.cpp:1718
-msgid "Saved 3D View :"
+#: ../src/gui/mainFrame.cpp:514
+msgid "&Control Pane\tAlt+C"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1672
-msgid "Program limitation"
+#: ../src/gui/mainFrame.cpp:520
+msgid "&Raw Data Pane\tF3"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1673
-msgid ""
-"Limitation on the screenshot dimension; please ensure that both width and "
-"height exceed the initial values,\n"
-" or that they are smaller than the initial values.\n"
-" If this bothers, please submit a bug."
+#: ../src/gui/mainFrame.cpp:520 ../src/gui/mainFrame.cpp:523
+msgid "Toggle raw data  pane (bottom)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1690
-msgid "Number of frames"
+#: ../src/gui/mainFrame.cpp:523
+msgid "&Raw Data Pane\tAlt+R"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1744
-msgid "Abo&rt"
+#: ../src/gui/mainFrame.cpp:527
+msgid "&Plot List\tF4"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1746
-msgid "&Refresh"
+#: ../src/gui/mainFrame.cpp:527 ../src/gui/mainFrame.cpp:529
+msgid "Toggle plot list"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1855
-msgid "Cannot animate with no filters."
+#: ../src/gui/mainFrame.cpp:529
+msgid "&Plot List\tAlt+P"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1933
-msgid "Animating"
+#: ../src/gui/mainFrame.cpp:535
+msgid "&Legend\tCtrl+L"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1934
-msgid "Performing refresh"
+#: ../src/gui/mainFrame.cpp:535
+msgid "Toggle Legend display"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1960
-msgid "Filter property change failed"
+#: ../src/gui/mainFrame.cpp:537
+msgid "P&lot..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1982
-msgid "Refresh failed on frame :"
+#: ../src/gui/mainFrame.cpp:538
+msgid "&Axis\tCtrl+Shift+I"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2011
-msgid "Image save failed for frame "
+#: ../src/gui/mainFrame.cpp:538
+msgid "Toggle World Axis display"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2036
-msgid "Ion save failed"
+#: ../src/gui/mainFrame.cpp:543
+msgid "&Fullscreen mode\tF11"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2037
-msgid "Unable to save ions for frame "
+#: ../src/gui/mainFrame.cpp:543 ../src/gui/mainFrame.cpp:545
+msgid "Next fullscreen mode: with toolbars"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2068
-msgid "Plot save failed"
+#: ../src/gui/mainFrame.cpp:545
+msgid "&Fullscreen mode\tCtrl+Shift+F"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2069
-msgid "Unable to save plot or frame "
+#: ../src/gui/mainFrame.cpp:550
+msgid "&Undo\tCtrl+Z"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2110
-msgid "Range save failed"
+#: ../src/gui/mainFrame.cpp:552
+msgid "&Redo\tCtrl+Y"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2111
-msgid "Unable to save range for frame "
+#: ../src/gui/mainFrame.cpp:555
+msgid "&Range"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2140
-msgid "Voxel save failed"
+#: ../src/gui/mainFrame.cpp:558
+msgid "&Preferences"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2141
-msgid "Unable to save voxels for frame "
+#: ../src/gui/mainFrame.cpp:560
+msgid "&Edit"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2170
-msgid "Animate failed"
+#: ../src/gui/mainFrame.cpp:563
+msgid "&View"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2194 ../src/gui/mainFrame.cpp:2360
-#: ../src/gui/mainFrame.cpp:2468
-msgid "No filters means no data to export"
+#: ../src/gui/mainFrame.cpp:565
+msgid "&Help...\tCtrl+H"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2208
-msgid "Package name"
+#: ../src/gui/mainFrame.cpp:565
+msgid "Show help files and documentation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2209
-msgid "Package directory name"
+#: ../src/gui/mainFrame.cpp:566
+msgid "&Contact..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2211
-msgid "AnalysisPackage"
+#: ../src/gui/mainFrame.cpp:566
+msgid "Open contact page"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2224
-msgid "Package folder already exists, won't overwrite."
+#: ../src/gui/mainFrame.cpp:568
+msgid "&About..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2225
-msgid "Not available"
+#: ../src/gui/mainFrame.cpp:568
+msgid "Information about this program"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2250
-msgid ""
-"Package folder creation failed\n"
-"check writing to this location is possible."
+#: ../src/gui/mainFrame.cpp:569
+msgid "&Help"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2251
-msgid "Folder creation failed"
+#: ../src/gui/mainFrame.cpp:571
+msgid "Stashed Filters"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2271
-msgid "Copying"
+#: ../src/gui/mainFrame.cpp:576
+msgid "New Filters"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2272
-msgid "Copying referenced files"
+#: ../src/gui/mainFrame.cpp:606
+msgid "Auto Refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2338
-msgid "Error copying file"
+#: ../src/gui/mainFrame.cpp:612
+msgid "Filter settings"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2347
-msgid "Saved package: "
+#: ../src/gui/mainFrame.cpp:615
+msgid "Camera Name"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2371
-msgid "Export"
+#: ../src/gui/mainFrame.cpp:627
+msgid "Resize to Fit"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2377
-msgid ""
-"POS Data (*.pos)|*.pos|Text File (*.txt)|*.txt|VTK Legacy (*.vtk)|*.vtk|All "
-"Files (*)|*"
+#: ../src/gui/mainFrame.cpp:629
+msgid "3D Post-processing"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2406 ../src/gui/mainFrame.cpp:2512
-msgid "File already exists, overwrite?"
+#: ../src/gui/mainFrame.cpp:631
+msgid "Enable Cropping"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2447
-msgid "Saved ions: "
+#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
+msgid "x-y"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2472
-msgid "Export Ranges"
+#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
+msgid "x-z"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2494
-msgid "Save state..."
+#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
+msgid "y-x"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2495
-msgid "XML state file (*.xml)|*.xml|All Files (*)|*"
+#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
+msgid "y-z"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2535
-msgid "Files have been referred to using relative paths. Keep relative paths?"
+#: ../src/gui/mainFrame.cpp:637 ../src/gui/mainFrame.cpp:648
+msgid "z-x"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2568
-msgid "Saved state: "
+#: ../src/gui/mainFrame.cpp:638 ../src/gui/mainFrame.cpp:649
+msgid "z-y"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2644
-msgid "Range editor"
+#: ../src/gui/mainFrame.cpp:653
+msgid "Use camera coordinates"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2901
-msgid "Manual not found locally. Launching web browser"
+#: ../src/gui/mainFrame.cpp:654
+msgid "dX"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2910
-msgid "Opening contact page in external web browser"
+#: ../src/gui/mainFrame.cpp:656
+msgid "dY"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2918
-msgid "No filter stashes to edit."
+#: ../src/gui/mainFrame.cpp:658
+msgid "dZ"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2922
-msgid "Filter Stashes"
+#: ../src/gui/mainFrame.cpp:660
+msgid "Enable Anaglyphic Stereo"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2939
-msgid "Quick and dirty analysis for point data."
+#: ../src/gui/mainFrame.cpp:661
+msgid "Flip Channels"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2949
-msgid "Compiled with wx Version: "
+#: ../src/gui/mainFrame.cpp:662
+msgid "Anaglyph Mode"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2970
-msgid "Press enter to store new stash"
+#: ../src/gui/mainFrame.cpp:664
+msgid "Red-Blue"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2976
-msgid "Press enter to restore stash"
+#: ../src/gui/mainFrame.cpp:665
+msgid "Red-Green"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3009
-msgid "Unable to create stash, selection invalid"
+#: ../src/gui/mainFrame.cpp:666
+msgid "Red-Cyan"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3016
-msgid "Created new filter tree stash"
+#: ../src/gui/mainFrame.cpp:667
+msgid "Green-Magenta"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3123
-msgid "Filter type not a data source - can't be at tree base"
+#: ../src/gui/mainFrame.cpp:671
+msgid "Baseline Separation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3263
-msgid "Moving - Hold ⌘ (command) to copy"
+#: ../src/gui/mainFrame.cpp:673 ../src/backend/filters/voxelise.cpp:1150
+#: ../src/backend/filters/voxelise.cpp:1409
+#: ../src/backend/filters/profile.cpp:1168
+#: ../src/backend/filters/boundingBox.cpp:732
+#: ../src/backend/filters/annotation.cpp:914
+#: ../src/backend/filters/dataLoad.cpp:755
+#: ../src/backend/filters/spectrumPlot.cpp:686
+msgid "Appearance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3265
-msgid "Moving - Hold control to copy"
+#: ../src/gui/mainFrame.cpp:674
+msgid "Smooth && translucent objects"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3604
-msgid "Press enter to store new camera"
+#: ../src/gui/mainFrame.cpp:676
+msgid "3D lighting"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3606
-msgid "Press enter to restore camera"
+#: ../src/gui/mainFrame.cpp:679
+msgid "Performance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3631 ../src/gui/mainFrame.cpp:3672
-msgid "Restored camera: "
+#: ../src/gui/mainFrame.cpp:680
+msgid "Fast and weak randomisation."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3649
-msgid "Stored camera: "
+#: ../src/gui/mainFrame.cpp:682
+msgid "Limit Output Pts"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3735
-msgid "Select an item from the filter tree before choosing a new filter"
+#: ../src/gui/mainFrame.cpp:687
+msgid "Filter caching"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3737
-msgid "Load data source (file->open) before choosing a new filter"
+#: ../src/gui/mainFrame.cpp:689
+msgid "Max. Ram usage (%)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3763
-msgid "Select RNG File..."
+#: ../src/gui/mainFrame.cpp:761
+msgid "Warning: Your configuration file appears to be invalid:\n"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3784
-msgid "Failed reading range file."
+#: ../src/gui/mainFrame.cpp:762
+msgid "\tConfig Load: "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3788
-msgid "Error loading file"
+#: ../src/gui/mainFrame.cpp:1060
+msgid "Current state has not been saved, would you like to save it now?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3849 ../src/gui/mainFrame.cpp:3944
-#: ../src/gui/mainFrame.cpp:5449 ../src/gui/mainFrame.cpp:5968
-msgid "Cons."
+#: ../src/gui/mainFrame.cpp:1061
+msgid "State changed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3907
-msgid "Refresh Aborted."
+#: ../src/gui/mainFrame.cpp:1079
+msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3948
-msgid "*Cons."
+#: ../src/gui/mainFrame.cpp:1081
+msgid "XML State File (*.xml)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3950
-msgid "§Cons."
+#: ../src/gui/mainFrame.cpp:1082
+msgid "POS File (*.pos)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4007
-msgid "Complete"
+#: ../src/gui/mainFrame.cpp:1083
+msgid "LAWATAP ATO File (*.ato)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4105
-msgid "msgs"
+#: ../src/gui/mainFrame.cpp:1084
+msgid "Text File (*.txt, *.csv)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4146
-msgid "Autosave complete."
+#: ../src/gui/mainFrame.cpp:1085
+msgid "3Dap Files (*.ops)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4350
-msgid "Aborting...."
+#: ../src/gui/mainFrame.cpp:1086
+msgid "All Files (*)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4416
-msgid "Updated."
+#: ../src/gui/mainFrame.cpp:1099 ../src/gui/mainFrame.cpp:1148
+msgid "Select Data or State File..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4425
-msgid "Calculating..."
+#: ../src/gui/mainFrame.cpp:1149
+msgid ""
+"3Depict file (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS File (*.pos)|*.pos|"
+"XML State File (*.xml)|*.xml|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4428
-msgid "\\% Done (Esc aborts)"
+#: ../src/gui/mainFrame.cpp:1160
+msgid "Merged file."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4430
-msgid "\\% Done"
+#: ../src/gui/mainFrame.cpp:1263
+msgid "Tip: You can use ⌘ (command) to merge"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4704
-msgid "Tip: You can shift-click to force full refresh, if required"
+#: ../src/gui/mainFrame.cpp:1265
+msgid "Tip: You can use ctrl to merge"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4766
-msgid "No data to save"
+#: ../src/gui/mainFrame.cpp:1299
+msgid "Load error"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4950
-msgid "Aborting..."
+#: ../src/gui/mainFrame.cpp:1300
+msgid ""
+"Error loading state file.\n"
+"See console for more info."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4956
+#: ../src/gui/mainFrame.cpp:1308
 msgid ""
-"Waiting for refresh to abort. Exiting could lead to the program "
-"backgrounding. Exit anyway? "
+"This state file contains filters that can be unsafe to run\n"
+"Do you wish to remove these before continuing?."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4957 ../src/gui/mainFrame.cpp:4977
-msgid "Confirmation request"
+#: ../src/gui/mainFrame.cpp:1309
+msgid "Security warning"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4976
-msgid "Are you sure you wish to exit 3Depict?"
+#: ../src/gui/mainFrame.cpp:1499 ../src/gui/mainFrame.cpp:1595
+#: ../src/gui/mainFrame.cpp:2029
+msgid "Unable to save"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5314 ../src/gl/cameras.cpp:627
-#: ../src/gl/cameras.cpp:730
-msgid "Orthogonal"
+#: ../src/gui/mainFrame.cpp:1500
+msgid "No plot available. Please create a plot before exporting."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5477
-msgid "Update Notice: New version "
+#: ../src/gui/mainFrame.cpp:1504
+msgid "Save plot..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5477
-msgid " found online."
+#: ../src/gui/mainFrame.cpp:1505
+msgid ""
+"By Extension (svg,png)|*.svg;*.png|Scalable Vector Graphics File (*.svg)|*."
+"svg|PNG File (*.png)|*.png|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5481
-msgid "Online Check: "
+#: ../src/gui/mainFrame.cpp:1559
+msgid "Select type for save"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5481
-msgid " is up-to-date."
+#: ../src/gui/mainFrame.cpp:1560
+msgid "Choose file type"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5571
-msgid "An auto-save state was found, would you like to restore it?."
+#: ../src/gui/mainFrame.cpp:1580 ../src/gui/mainFrame.cpp:1637
+#: ../src/gui/mainFrame.cpp:1673
+msgid "Choose resolution"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5572
-msgid "Autosave"
+#: ../src/gui/mainFrame.cpp:1596
+msgid "Unknown file extension. Please use \"svg\" or \"png\""
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5579
-msgid "Unable to load autosave file.."
+#: ../src/gui/mainFrame.cpp:1607
+msgid "Saved plot: "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5770
-msgid "List of available filters"
+#: ../src/gui/mainFrame.cpp:1614 ../src/gui/mainFrame.cpp:1666
+msgid "Save Image..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5772
-msgid "Tree - drag to move items, hold ⌘ for copy. Tap delete to remove items"
+#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:1667
+msgid "PNG File (*.png)|*.png|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5774
-msgid ""
-"Tree - drag to move items, hold Ctrl for copy. Tap delete to remove items."
+#: ../src/gui/mainFrame.cpp:1629
+msgid "File already exists. Overwrite?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5776
-msgid ""
-"Enable/Disable automatic updates of data when filter change takes effect"
+#: ../src/gui/mainFrame.cpp:1630 ../src/gui/mainFrame.cpp:2425
+#: ../src/gui/mainFrame.cpp:2531 ../src/gui/mainFrame.cpp:2554
+msgid "Overwrite?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5779
-msgid ""
-"Enable/Disable \"Alpha blending\" (transparency) in rendering system. "
-"Blending is used to smooth objects (avoids artefacts known as \"jaggies\") "
-"and to make transparent surfaces. Disabling will provide faster rendering "
-"but look more blocky"
+#: ../src/gui/mainFrame.cpp:1657 ../src/gui/mainFrame.cpp:1733
+msgid "Saved 3D View :"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5780
-msgid ""
-"Enable/Disable lighting calculations in rendering, for objects that request "
-"this. Lighting provides important depth cues for objects comprised of 3D "
-"surfaces. Disabling may allow faster rendering in complex scenes"
+#: ../src/gui/mainFrame.cpp:1687
+msgid "Program limitation"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5781
+#: ../src/gui/mainFrame.cpp:1688
 msgid ""
-"Enable/Disable weak randomisation (Galois linear feedback shift register). "
-"Strong randomisation uses a much slower random selection method, but "
-"provides better protection against inadvertent correlations, and is "
-"recommended for final analyses"
+"Limitation on the screenshot dimension; please ensure that both width and "
+"height exceed the initial values,\n"
+" or that they are smaller than the initial values.\n"
+" If this bothers, please submit a bug."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5783
-msgid ""
-"Limit the number of points that can be displayed in the 3D  scene. Does not "
-"affect filter tree calculations. Disabling this can severely reduce "
-"performance, due to large numbers of points being visible at once."
+#: ../src/gui/mainFrame.cpp:1705
+msgid "Number of frames"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5784
-msgid ""
-"Enable/Disable caching of intermediate results during filter updates. "
-"Disabling caching will use less system RAM, though changes to any filter "
-"property will cause the entire filter tree to be recomputed, greatly slowing "
-"computations"
+#: ../src/gui/mainFrame.cpp:1759
+msgid "Abo&rt"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5786
-msgid "Camera data information"
+#: ../src/gui/mainFrame.cpp:1761
+msgid "&Refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5790
-msgid "Enable/disable visual effects on final 3D output"
+#: ../src/gui/mainFrame.cpp:1870
+msgid "Cannot animate with no filters."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5792
-msgid "Enable cropping post-process effect"
+#: ../src/gui/mainFrame.cpp:1952
+msgid "Animating"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5795
-msgid ""
-"Colour based 3D effect enable/disable - requires appropriate colour filter "
-"3D glasses."
+#: ../src/gui/mainFrame.cpp:1953
+msgid "Performing refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5796
-msgid "Glasses colour mode"
+#: ../src/gui/mainFrame.cpp:1979
+msgid "Filter property change failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5798
-msgid ""
-"Level of separation between left and right images, which sets 3D depth to "
-"visual distortion tradeoff"
+#: ../src/gui/mainFrame.cpp:2001
+msgid "Refresh failed on frame :"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5802
-msgid "X"
+#: ../src/gui/mainFrame.cpp:2030
+msgid "Image save failed for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5803
-msgid "Y"
+#: ../src/gui/mainFrame.cpp:2055
+msgid "Ion save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5804
-msgid "Save raw data to file"
+#: ../src/gui/mainFrame.cpp:2056
+msgid "Unable to save ions for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5805
-msgid "Copy raw data to clipboard"
+#: ../src/gui/mainFrame.cpp:2087
+msgid "Plot save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5806
-msgid "Manage \"stashed\" data."
+#: ../src/gui/mainFrame.cpp:2088
+msgid "Unable to save plot or frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5807
-msgid "Program text output"
+#: ../src/gui/mainFrame.cpp:2129
+msgid "Range save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5808
-msgid "Select active camera, or type to create new named camera"
+#: ../src/gui/mainFrame.cpp:2130
+msgid "Unable to save range for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5809
-msgid "Remove the selected camera"
+#: ../src/gui/mainFrame.cpp:2159
+msgid "Voxel save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5810
-msgid "Perform cropping from coordinate frame of camera"
+#: ../src/gui/mainFrame.cpp:2160
+msgid "Unable to save voxels for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5811
-msgid ""
-"Set the maximum amount of RAM to use in order to speed repeat computations"
+#: ../src/gui/mainFrame.cpp:2189
+msgid "Animate failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5812
-msgid "Collapse the filter tree"
+#: ../src/gui/mainFrame.cpp:2213 ../src/gui/mainFrame.cpp:2379
+#: ../src/gui/mainFrame.cpp:2486
+msgid "No filters means no data to export"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5813
-msgid "Expand the filter tree"
+#: ../src/gui/mainFrame.cpp:2227
+msgid "Package name"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5814
-msgid "Process the filter tree, hold shift to purge cached filter data"
+#: ../src/gui/mainFrame.cpp:2228
+msgid "Package directory name"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5928
-msgid "Crop"
+#: ../src/gui/mainFrame.cpp:2230
+msgid "AnalysisPackage"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5929
-msgid "Stereo"
+#: ../src/gui/mainFrame.cpp:2243
+msgid "Package folder already exists, won't overwrite."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5946
-#: ../src/backend/filters/externalProgram.cpp:596
-#: ../src/backend/filters/ionColour.cpp:308
-#: ../src/backend/filters/spectrumPlot.cpp:612
-msgid "Data"
+#: ../src/gui/mainFrame.cpp:2244
+msgid "Not available"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5947
-msgid "Cam"
+#: ../src/gui/mainFrame.cpp:2269
+msgid ""
+"Package folder creation failed\n"
+"check writing to this location is possible."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5948
-msgid "Post"
+#: ../src/gui/mainFrame.cpp:2270
+msgid "Folder creation failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5949
-msgid "Tools"
+#: ../src/gui/mainFrame.cpp:2290
+msgid "Copying"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5967
-msgid "Raw"
+#: ../src/gui/mainFrame.cpp:2291
+msgid "Copying referenced files"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:6010
-msgid "Align Camera"
+#: ../src/gui/mainFrame.cpp:2357
+msgid "Error copying file"
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:259
-msgid "No plots selected."
+#: ../src/gui/mainFrame.cpp:2366
+msgid "Saved package: "
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:1201
-msgid ""
-"Unable to allocate requested memory.\n"
-" Try a lower resolution, or save as vector (SVG)."
+#: ../src/gui/mainFrame.cpp:2390
+msgid "Export"
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:1203
-msgid "Plotting functions returned an error:\n"
+#: ../src/gui/mainFrame.cpp:2396
+msgid ""
+"POS Data (*.pos)|*.pos|Text File (*.txt)|*.txt|VTK Legacy (*.vtk)|*.vtk|All "
+"Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:1205
-msgid "File readback check failed"
+#: ../src/gui/mainFrame.cpp:2424 ../src/gui/mainFrame.cpp:2530
+msgid "File already exists, overwrite?"
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:1207
-msgid "Filesize during readback appears to be zero."
+#: ../src/gui/mainFrame.cpp:2465
+msgid "Saved ions: "
 msgstr ""
 
-#: ../src/backend/filter.cpp:55
-msgid "2D Plot"
+#: ../src/gui/mainFrame.cpp:2490
+msgid "Export Ranges"
 msgstr ""
 
-#: ../src/backend/filter.cpp:56
-msgid "Draw"
+#: ../src/gui/mainFrame.cpp:2512
+msgid "Save state..."
 msgstr ""
 
-#: ../src/backend/filter.cpp:57
-msgid "Range"
+#: ../src/gui/mainFrame.cpp:2513
+msgid "XML state file (*.xml)|*.xml|All Files (*)|*"
 msgstr ""
 
-#: ../src/backend/filter.cpp:58
-msgid "Voxel"
+#: ../src/gui/mainFrame.cpp:2553
+msgid "Files have been referred to using relative paths. Keep relative paths?"
 msgstr ""
 
-#: ../src/backend/filter.cpp:192 ../src/backend/filters/ionColour.cpp:411
-msgid "Aborted"
+#: ../src/gui/mainFrame.cpp:2586
+msgid "Saved state: "
 msgstr ""
 
-#: ../src/backend/state.cpp:151
-msgid ""
-"This file is a \"state\" file for the 3Depict program, and stores "
-"information about a particular analysis session. This file should be a valid "
-"\"XML\" file"
+#: ../src/gui/mainFrame.cpp:2662
+msgid "Range editor"
 msgstr ""
 
-#: ../src/backend/state.cpp:319
-msgid "Failed to allocate parser"
+#: ../src/gui/mainFrame.cpp:2929
+msgid "Manual not found locally. Launching web browser"
 msgstr ""
 
-#: ../src/backend/state.cpp:354
-msgid ""
-"Unable to retrieve root node in input state file... Is this really a non-"
-"empty XML file?"
+#: ../src/gui/mainFrame.cpp:2938
+msgid "Opening contact page in external web browser"
 msgstr ""
 
-#: ../src/backend/state.cpp:361
-msgid "Base state node missing. Is this really a state XML file??"
+#: ../src/gui/mainFrame.cpp:2946
+msgid "No filter stashes to edit."
 msgstr ""
 
-#: ../src/backend/state.cpp:390
-msgid "State was created by a newer version of this program.. "
+#: ../src/gui/mainFrame.cpp:2950
+msgid "Filter Stashes"
 msgstr ""
 
-#: ../src/backend/state.cpp:391
-msgid "file reading will continue, but may fail."
+#: ../src/gui/mainFrame.cpp:2967
+msgid "Quick and dirty analysis for point data."
 msgstr ""
 
-#: ../src/backend/state.cpp:396
-msgid ""
-"Warning, unparseable version number in state file. File reading will "
-"continue, but may fail"
+#: ../src/gui/mainFrame.cpp:2977
+msgid "Compiled with wx Version: "
 msgstr ""
 
-#: ../src/backend/state.cpp:403
-msgid "Unable to find the \"writer\" node"
+#: ../src/gui/mainFrame.cpp:2998
+msgid "Press enter to store new stash"
 msgstr ""
 
-#: ../src/backend/state.cpp:413
-msgid "Unable to find the \"backcolour\" node."
+#: ../src/gui/mainFrame.cpp:3004
+msgid "Press enter to restore stash"
 msgstr ""
 
-#: ../src/backend/state.cpp:420
-msgid "\"backcolour\" node missing \"r\" value."
+#: ../src/gui/mainFrame.cpp:3037
+msgid "Unable to create stash, selection invalid"
 msgstr ""
 
-#: ../src/backend/state.cpp:425
-msgid "Unable to interpret \"backColour\" node's \"r\" value."
+#: ../src/gui/mainFrame.cpp:3044
+msgid "Created new filter tree stash"
 msgstr ""
 
-#: ../src/backend/state.cpp:433
-msgid "\"backcolour\" node missing \"g\" value."
+#: ../src/gui/mainFrame.cpp:3156
+msgid "Filter type not a data source - can't be at tree base"
 msgstr ""
 
-#: ../src/backend/state.cpp:439
-msgid "Unable to interpret \"backColour\" node's \"g\" value."
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete\tDel"
 msgstr ""
 
-#: ../src/backend/state.cpp:447
-msgid "\"backcolour\" node missing \"b\" value."
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete the selected filter"
 msgstr ""
 
-#: ../src/backend/state.cpp:453
-msgid "Unable to interpret \"backColour\" node's \"b\" value."
+#: ../src/gui/mainFrame.cpp:3351
+msgid "Moving - Hold ⌘ (command) to copy, shift to splice"
 msgstr ""
 
-#: ../src/backend/state.cpp:460
-msgid "\"backcolour\"s rgb values must be in range [0,1]"
+#: ../src/gui/mainFrame.cpp:3353
+msgid "Moving - Hold control to copy, shift to splice"
 msgstr ""
 
-#: ../src/backend/state.cpp:488
-msgid "Unable to find or interpret \"showaxis\" node"
+#: ../src/gui/mainFrame.cpp:3696
+msgid "Press enter to store new camera"
 msgstr ""
 
-#: ../src/backend/state.cpp:532
-msgid "Unable to locate \"filtertree\" node."
+#: ../src/gui/mainFrame.cpp:3698
+msgid "Press enter to restore camera"
 msgstr ""
 
-#: ../src/backend/state.cpp:548
-msgid "Cameras section missing \"active\" node."
+#: ../src/gui/mainFrame.cpp:3723 ../src/gui/mainFrame.cpp:3764
+msgid "Restored camera: "
 msgstr ""
 
-#: ../src/backend/state.cpp:556
-msgid "Unable to find property \"value\"  for \"cameras->active\" node."
+#: ../src/gui/mainFrame.cpp:3741
+msgid "Stored camera: "
 msgstr ""
 
-#: ../src/backend/state.cpp:562
-msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
+#: ../src/gui/mainFrame.cpp:3827
+msgid "Select an item from the filter tree before choosing a new filter"
 msgstr ""
 
-#: ../src/backend/state.cpp:582
-msgid "Failed to interpret camera state for camera : "
+#: ../src/gui/mainFrame.cpp:3829
+msgid "Load data source (file->open) before choosing a new filter"
 msgstr ""
 
-#: ../src/backend/state.cpp:590
-msgid "Unable to interpret the camera type for camera : "
+#: ../src/gui/mainFrame.cpp:3855
+msgid "Select RNG File..."
 msgstr ""
 
-#: ../src/backend/state.cpp:648
-msgid "Unable to locate stash name for stash "
+#: ../src/gui/mainFrame.cpp:3876
+msgid "Failed reading range file."
 msgstr ""
 
-#: ../src/backend/state.cpp:655
-msgid "Empty stash name for stash "
+#: ../src/gui/mainFrame.cpp:3880
+msgid "Error loading file"
 msgstr ""
 
-#: ../src/backend/state.cpp:664
-msgid "No filter tree for stash:"
+#: ../src/gui/mainFrame.cpp:3941 ../src/gui/mainFrame.cpp:4042
+#: ../src/gui/mainFrame.cpp:5554 ../src/gui/mainFrame.cpp:6073
+msgid "Cons."
 msgstr ""
 
-#: ../src/backend/state.cpp:670
-msgid "For stash "
+#: ../src/gui/mainFrame.cpp:4005
+msgid "Refresh Aborted."
 msgstr ""
 
-#: ../src/backend/state.cpp:702
-msgid "Unrecognised effect :"
+#: ../src/gui/mainFrame.cpp:4046
+msgid "*Cons."
 msgstr ""
 
-#: ../src/backend/state.cpp:712
-msgid "Duplicate effect found"
+#: ../src/gui/mainFrame.cpp:4048
+msgid "§Cons."
 msgstr ""
 
-#: ../src/backend/state.cpp:712
-msgid " cannot use."
+#: ../src/gui/mainFrame.cpp:4110
+msgid "Complete"
 msgstr ""
 
-#: ../src/backend/state.cpp:722
-msgid "Error reading effect : "
+#: ../src/gui/mainFrame.cpp:4208
+msgid "msgs"
 msgstr ""
 
-#: ../src/backend/state.cpp:927
-msgid "-merge"
+#: ../src/gui/mainFrame.cpp:4249
+msgid "Autosave complete."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
-#: ../src/backend/APT/APTFileIO.cpp:103
-msgid "Error opening file"
+#: ../src/gui/mainFrame.cpp:4453
+msgid "Aborting...."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:45
-msgid "Only found header, no data"
+#: ../src/gui/mainFrame.cpp:4519
+msgid "Updated."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:46
-msgid "Unable to reopen file after first scan"
+#: ../src/gui/mainFrame.cpp:4528
+msgid "Calculating..."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:47
-msgid "Error whilst reading file contents"
+#: ../src/gui/mainFrame.cpp:4531
+msgid "% Done (Esc aborts)"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
-msgid "Unexpected file format"
+#: ../src/gui/mainFrame.cpp:4533
+msgid "% Done"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:50
-msgid "Insufficient memory to continue"
+#: ../src/gui/mainFrame.cpp:4808
+msgid "Tip: You can shift-click to force full refresh, if required"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:54
-msgid "Memory allocation failure on POS load"
+#: ../src/gui/mainFrame.cpp:4870
+msgid "No data to save"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:55
-msgid "Error opening pos file"
+#: ../src/gui/mainFrame.cpp:5052
+msgid "Aborting..."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:56
-msgid "Pos file empty"
+#: ../src/gui/mainFrame.cpp:5058
+msgid ""
+"Waiting for refresh to abort. Exiting could lead to the program "
+"backgrounding. Exit anyway? "
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:57
-msgid "Pos file size appears to have non-integer number of entries"
+#: ../src/gui/mainFrame.cpp:5059 ../src/gui/mainFrame.cpp:5079
+msgid "Confirmation request"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:58
-msgid "Error reading from pos file (after open)"
+#: ../src/gui/mainFrame.cpp:5078
+msgid "Are you sure you wish to exit 3Depict?"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:59
-msgid "Error - Found NaN in pos file"
+#: ../src/gui/mainFrame.cpp:5582
+msgid "Update Notice: New version "
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:60
-msgid "Error - Found Inf in pos file"
+#: ../src/gui/mainFrame.cpp:5582
+msgid " found online."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:61
-msgid "Pos load aborted by interrupt."
+#: ../src/gui/mainFrame.cpp:5586
+msgid "Online Check: "
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:80
-msgid "No numerical data found"
+#: ../src/gui/mainFrame.cpp:5586
+msgid " is up-to-date."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:81
-msgid "Error re-opening file, after first scan"
+#: ../src/gui/mainFrame.cpp:5676
+msgid "An auto-save state was found, would you like to restore it?."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:82
-msgid "Unable to read file contents after open"
+#: ../src/gui/mainFrame.cpp:5677
+msgid "Autosave"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:83
-msgid "Error interpreting field in file"
+#: ../src/gui/mainFrame.cpp:5684
+msgid "Unable to load autosave file.."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:84
-msgid "Incorrect number of fields in file"
+#: ../src/gui/mainFrame.cpp:5875
+msgid "List of available filters"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
-msgid "Unable to allocate memory to store data"
+#: ../src/gui/mainFrame.cpp:5877
+msgid ""
+"Tree - drag to move items, hold ⌘ for copy, shift for splice. Tap delete to "
+"remove items, multi-click to rename"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:104
-msgid "File is empty"
+#: ../src/gui/mainFrame.cpp:5879
+msgid ""
+"Tree - drag to move items, hold Ctrl for copy, shift for splice. Tap delete "
+"to remove items, multi-click to rename."
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:105
-msgid "Filesize does not match expected format"
+#: ../src/gui/mainFrame.cpp:5881
+msgid ""
+"Enable/Disable automatic updates of data when filter change takes effect"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:106
-msgid "File version number not <4, as expected"
+#: ../src/gui/mainFrame.cpp:5884
+msgid ""
+"Enable/Disable \"Alpha blending\" (transparency) in rendering system. "
+"Blending is used to smooth objects (avoids artefacts known as \"jaggies\") "
+"and to make transparent surfaces. Disabling will provide faster rendering "
+"but look more blocky"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:108
-msgid "Unable to detect endian-ness in file"
+#: ../src/gui/mainFrame.cpp:5885
+msgid ""
+"Enable/Disable lighting calculations in rendering, for objects that request "
+"this. Lighting provides important depth cues for objects comprised of 3D "
+"surfaces. Disabling may allow faster rendering in complex scenes"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:48
-msgid "Error opening file, check name and permissions."
+#: ../src/gui/mainFrame.cpp:5886
+msgid ""
+"Enable/Disable weak randomisation (Galois linear feedback shift register). "
+"Strong randomisation uses a much slower random selection method, but "
+"provides better protection against inadvertent correlations, and is "
+"recommended for final analyses"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:49
+#: ../src/gui/mainFrame.cpp:5888
 msgid ""
-"Error interpreting range file header, expecting ion count and range count, "
-"respectively."
+"Limit the number of points that can be displayed in the 3D  scene. Does not "
+"affect filter tree calculations. Disabling this can severely reduce "
+"performance, due to large numbers of points being visible at once."
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:50
+#: ../src/gui/mainFrame.cpp:5889
 msgid ""
-"Range file appears to be empty, check file is a proper range file and is not "
-"empty."
+"Enable/Disable caching of intermediate results during filter updates. "
+"Disabling caching will use less system RAM, though changes to any filter "
+"property will cause the entire filter tree to be recomputed, greatly slowing "
+"computations"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:51
-msgid "Error reading the long name for ion."
+#: ../src/gui/mainFrame.cpp:5891
+msgid "Camera data information"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:52
-msgid "Error reading the short name for ion."
+#: ../src/gui/mainFrame.cpp:5895
+msgid "Enable/disable visual effects on final 3D output"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:53
-msgid ""
-"Error reading colour data in the file, expecting 3 decimal values, space "
-"separated."
+#: ../src/gui/mainFrame.cpp:5897
+msgid "Enable cropping post-process effect"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:54
+#: ../src/gui/mainFrame.cpp:5900
 msgid ""
-"Tried skipping to table separator line (line with dashes), but did not find "
-"it."
+"Colour based 3D effect enable/disable - requires appropriate colour filter "
+"3D glasses."
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:55
-msgid ""
-"Number of ions in the table header did not match the number specified at the "
-"start of the file"
+#: ../src/gui/mainFrame.cpp:5901
+msgid "Glasses colour mode"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:56
+#: ../src/gui/mainFrame.cpp:5903
 msgid ""
-"Unexpected failure whilst trying to skip over range lead-in data (bit before "
-"range start value)"
+"Level of separation between left and right images, which sets 3D depth to "
+"visual distortion tradeoff"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:57
-msgid ""
-"Range table had an incorrect number of entries, should be 2 or 3 + number of "
-"ranges"
+#: ../src/gui/mainFrame.cpp:5907
+msgid "X"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:58
-msgid "Unable to read range start and end values"
+#: ../src/gui/mainFrame.cpp:5908
+msgid "Y"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:59
-msgid "Unable to read range table entry"
+#: ../src/gui/mainFrame.cpp:5909
+msgid "Save raw data to file"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:60
-msgid ""
-"Error reading file, unexpected format, are you sure it is a proper range "
-"file?"
+#: ../src/gui/mainFrame.cpp:5910
+msgid "Copy raw data to clipboard"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:61
-msgid ""
-"Too many ranges appeared to have range entries with no usable data (eg, all "
-"blank)"
+#: ../src/gui/mainFrame.cpp:5911
+msgid "Manage \"stashed\" data."
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:62
-msgid ""
-"Range file appears to contain malformed data, check things like start and "
-"ends of m/c are not equal or flipped."
+#: ../src/gui/mainFrame.cpp:5912
+msgid "Program text output"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:63
-msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
+#: ../src/gui/mainFrame.cpp:5913
+msgid "Select active camera, or type to create new named camera"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:64
-msgid "No ion name mapping found  for multiple ion."
+#: ../src/gui/mainFrame.cpp:5914
+msgid "Remove the selected camera"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:65
-msgid "Polyatomic extension range matches multiple masses in first section"
+#: ../src/gui/mainFrame.cpp:5915
+msgid "Perform cropping from coordinate frame of camera"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:66
-msgid "Range file is exceedingly large. Refusing to open"
+#: ../src/gui/mainFrame.cpp:5916
+msgid ""
+"Set the maximum amount of RAM to use in order to speed repeat computations"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:1404
-msgid ""
-"Range headings do not match order of the ions listed in the name "
-"specifications. The name specification ordering will be used when reading "
-"the range table, as the range heading section is declared as a comment in "
-"the file-format specifications, and is not to be intepreted by this program. "
-"Check range-species associations actually match what you expect."
+#: ../src/gui/mainFrame.cpp:5917
+msgid "Collapse the filter tree"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:73
-msgid "Arrow"
+#: ../src/gui/mainFrame.cpp:5918
+msgid "Expand the filter tree"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:74
-msgid "Text"
+#: ../src/gui/mainFrame.cpp:5919
+msgid "Process the filter tree, hold shift to purge cached filter data"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:75
-msgid "Arrow+Text"
+#: ../src/gui/mainFrame.cpp:6033
+msgid "Crop"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:76
-msgid "Angle"
+#: ../src/gui/mainFrame.cpp:6034
+msgid "Stereo"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:77
-msgid "Ruler"
+#: ../src/gui/mainFrame.cpp:6051 ../src/backend/filters/externalProgram.cpp:596
+#: ../src/backend/filters/ionColour.cpp:352
+#: ../src/backend/filters/spectrumPlot.cpp:615
+msgid "Data"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:6052
+msgid "Cam"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:6053
+msgid "Post"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:524
-msgid "Enable"
+#: ../src/gui/mainFrame.cpp:6054
+msgid "Tools"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:527
-msgid "Enable/disable annotation"
+#: ../src/gui/mainFrame.cpp:6072
+msgid "Raw"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:548
-msgid "Type or style of annotation"
+#: ../src/gui/mainFrame.cpp:6115
+msgid "Align Camera"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:564
-#: ../src/backend/filters/annotation.cpp:668
-msgid "Text of annotation"
+#: ../src/gui/mathglPane.cpp:264
+msgid "No plots selected."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:568
-#: ../src/backend/filters/ionClip.cpp:529
-#: ../src/backend/filters/ionClip.cpp:551
-#: ../src/backend/filters/ionClip.cpp:573
-#: ../src/backend/filters/ionClip.cpp:610
-#: ../src/backend/filters/transform.cpp:1233
-#: ../src/backend/filters/transform.cpp:1260
-#: ../src/backend/filters/transform.cpp:1286
-#: ../src/backend/filters/profile.cpp:1013
-#: ../src/backend/filters/profile.cpp:1051
-#: ../src/backend/filters/spatialAnalysis.cpp:1041 ../src/gl/cameras.cpp:603
-msgid "Origin"
+#: ../src/gui/mathglPane.cpp:1228
+msgid ""
+"Unable to allocate requested memory.\n"
+" Try a lower resolution, or save as vector (SVG)."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:572
-msgid "Position of annotation"
+#: ../src/gui/mathglPane.cpp:1230
+msgid "Plotting functions returned an error:\n"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:576
-#: ../src/backend/filters/annotation.cpp:683
-#: ../src/backend/filters/annotation.cpp:742
-#: ../src/backend/filters/annotation.cpp:831
-msgid "Up dir"
+#: ../src/gui/mathglPane.cpp:1232
+msgid "File readback check failed"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:580
-#: ../src/backend/filters/annotation.cpp:835
-msgid "Vector for up direction of annotation text"
+#: ../src/gui/mathglPane.cpp:1234
+msgid "Filesize during readback appears to be zero."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:584
-#: ../src/backend/filters/annotation.cpp:690
-#: ../src/backend/filters/annotation.cpp:734
-#: ../src/backend/filters/annotation.cpp:839
-msgid "Across dir"
+#: ../src/3Depict.cpp:399
+msgid "File : "
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:588
-#: ../src/backend/filters/annotation.cpp:843
-msgid "Reading direction for annotation"
+#: ../src/3Depict.cpp:399
+msgid " does not exist. Skipping"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:593
-#: ../src/backend/filters/annotation.cpp:675
-#: ../src/backend/filters/annotation.cpp:769
-msgid "Text size"
+#: ../src/backend/configFile.cpp:187
+msgid "Config file present, but is not valid (root node test)"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:597
-#: ../src/backend/filters/annotation.cpp:679
-#: ../src/backend/filters/annotation.cpp:851
-msgid "Relative size of annotation text"
+#: ../src/backend/configFile.cpp:228
+msgid "Unable to interpret recent file entry"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:609
-#: ../src/backend/filters/annotation.cpp:650
-msgid "3D position for tail of arrow"
+#: ../src/backend/configFile.cpp:268
+msgid "Unable to determine filter type in defaults listing."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:617
-#: ../src/backend/filters/annotation.cpp:659
-msgid "3D Position to which arrow points"
+#: ../src/backend/configFile.cpp:605
+msgid "Online access for non win32/apple platforms is intentionally disabled, "
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:620
-#: ../src/backend/filters/annotation.cpp:730
-msgid "Positioning"
+#: ../src/backend/configFile.cpp:606
+msgid ""
+"regardless of the settings you use here. Use your package manager to keep up-"
+"to-date"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:625
-#: ../src/backend/filters/annotation.cpp:697
-msgid "Tip radius"
+#: ../src/backend/plot.cpp:28 ../src/backend/filters/algorithms/mass.cpp:25
+#: ../src/backend/filters/voxelise.cpp:130
+#: ../src/backend/filters/voxelise.cpp:136
+#: ../src/backend/filters/spectrumPlot.cpp:76
+msgid "None"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:629
-msgid "Size of the arrow head"
+#: ../src/backend/plot.cpp:29
+msgid "Moving avg."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:633
-msgid "Line size"
+#: ../src/backend/plot.cpp:33
+msgid "Lines"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:637
-msgid "Thickness of line used to draw arrow stem"
+#: ../src/backend/plot.cpp:34
+msgid "Bars"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:671
-msgid "Options"
+#: ../src/backend/plot.cpp:35
+msgid "Steps"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:707
-msgid "Position A"
+#: ../src/backend/plot.cpp:36
+msgid "Stem"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:711
-msgid "Location of first non-central vertex"
+#: ../src/backend/plot.cpp:37
+msgid "Points"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:715
-msgid "Origin "
+#: ../src/backend/plot.cpp:39
+msgid "Density"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:719
-msgid "Location of central vertex"
+#: ../src/backend/plot.cpp:40
+msgid "Scatter"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:723
-msgid "Position B"
+#: ../src/backend/plot.cpp:746 ../src/backend/plot.cpp:754
+msgid "Multiple data types"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:727
-msgid "Location of second non-central vertex"
+#: ../src/backend/plot.cpp:1577
+msgid "error"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:738
-msgid "Reading direction for angle text"
+#: ../src/backend/plot.cpp:1818
+msgid "Amplitude"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:743
-msgid "Vector for up direction of angle text"
+#: ../src/backend/filtertree.cpp:1150
+msgid "WARNING: Skipping node "
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:751
-msgid "Reflexive"
+#: ../src/backend/filtertree.cpp:1150
+msgid " as it was not recognised"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:754
-msgid "Measure interor (enabled) or exterior angle (disabled)"
+#: ../src/backend/filtertree.cpp:1188
+msgid "Error processing node: "
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:759
-msgid "Show Angle"
+#: ../src/backend/filters/externalProgram.cpp:259
+msgid "Collate Input"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:763
-msgid "Display angle text (when enabled)"
+#: ../src/backend/filters/externalProgram.cpp:348
+msgid "Execute"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:773
-msgid "Size of angle text"
+#: ../src/backend/filters/externalProgram.cpp:389
+msgid "Collate output"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:791
-msgid "Digit format"
+#: ../src/backend/filters/externalProgram.cpp:564
+#: ../src/backend/filters/externalProgram.cpp:578
+msgid "Command"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:795
+#: ../src/backend/filters/externalProgram.cpp:567
 msgid ""
-"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
-"gives 12.34"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:801
-#: ../src/backend/filters/annotation.cpp:886
-msgid "Sphere size"
+"Full command to send to operating system. See manual for escape sequence "
+"meanings"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:805
-#: ../src/backend/filters/annotation.cpp:890
-msgid "Marker sphere size for manipulating tool"
+#: ../src/backend/filters/externalProgram.cpp:571
+msgid "Work Dir"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:819
-msgid "Ruler beginning 3D location"
+#: ../src/backend/filters/externalProgram.cpp:574
+msgid "Directory to run the command in"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:827
-msgid "Ruler finish 3D location"
+#: ../src/backend/filters/externalProgram.cpp:581
+msgid "Cleanup input"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:848
-#: ../src/backend/filters/boundingBox.cpp:715
-msgid "Font Size"
+#: ../src/backend/filters/externalProgram.cpp:584
+msgid "Erase input files when command completed"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:857
-msgid "Fixed ticks"
+#: ../src/backend/filters/externalProgram.cpp:589
+msgid "Cache"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:860
+#: ../src/backend/filters/externalProgram.cpp:592
 msgid ""
-"Use fixed (enabled) number of text markers, or one every fixed distance "
-"(disabled)"
+"Assume program does not alter its output, unless inputs from 3Depict are "
+"altered"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:867
-msgid "Num Ticks"
+#: ../src/backend/filters/algorithms/mass.cpp:26
+msgid "Flat TOF"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:870
-msgid "Number of tick marks along ruler"
+#: ../src/backend/filters/algorithms/mass.cpp:33
+msgid "INsufficient bins to perform fit"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:877
-msgid "Tick Spacing"
+#: ../src/backend/filters/algorithms/mass.cpp:34
+msgid "Insufficient counts to perform fit"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:880
-msgid "Distance between tick marks along ruler"
+#: ../src/backend/filters/algorithms/mass.cpp:35
+msgid "Insufficient data to perform fit"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:904
-msgid "Colour for ruler and ticks"
+#: ../src/backend/filters/algorithms/mass.cpp:36
+msgid "Data did not appear to be random noise - cannot fit noise level"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:65 ../src/backend/filters/profile.cpp:53
@@ -2616,7 +2399,7 @@ msgid "Aligned box"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:498
-#: ../src/backend/filters/profile.cpp:991
+#: ../src/backend/filters/profile.cpp:995
 msgid "Primitive"
 msgstr ""
 
@@ -2625,7 +2408,7 @@ msgid "Shape of clipping object"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:507
-#: ../src/backend/filters/profile.cpp:997
+#: ../src/backend/filters/profile.cpp:1001
 msgid "Show Primitive"
 msgstr ""
 
@@ -2644,21 +2427,20 @@ msgid ""
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:532
-#: ../src/backend/filters/profile.cpp:1054
+#: ../src/backend/filters/profile.cpp:1058
 msgid "Position for centre of sphere"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:537
 #: ../src/backend/filters/ionClip.cpp:597
-#: ../src/backend/filters/profile.cpp:1037
-#: ../src/backend/filters/profile.cpp:1059
 #: ../src/backend/filters/spatialAnalysis.cpp:134
-#: ../src/backend/filters/spatialAnalysis.cpp:1058
+#: ../src/backend/filters/profile.cpp:1041
+#: ../src/backend/filters/profile.cpp:1063
 msgid "Radius"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:540
-#: ../src/backend/filters/profile.cpp:1062
+#: ../src/backend/filters/profile.cpp:1066
 msgid "Radius of sphere"
 msgstr ""
 
@@ -2679,2105 +2461,2276 @@ msgid "Centre of cylinder"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:581
-#: ../src/backend/filters/transform.cpp:1294
-#: ../src/backend/filters/profile.cpp:1021
-#: ../src/backend/filters/spatialAnalysis.cpp:1049
+#: ../src/backend/filters/spatialAnalysis.cpp:947
+#: ../src/backend/filters/profile.cpp:1025
+#: ../src/backend/filters/transform.cpp:1293
 msgid "Axis"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:584
-msgid "Positive vector for cylinder"
+#: ../src/backend/filters/ionClip.cpp:584
+msgid "Positive vector for cylinder"
+msgstr ""
+
+#: ../src/backend/filters/ionClip.cpp:589
+#: ../src/backend/filters/profile.cpp:1033
+msgid "Lock Axis Mag."
+msgstr ""
+
+#: ../src/backend/filters/ionClip.cpp:592
+msgid "Prevent changing length of cylinder during 3D interaction"
+msgstr ""
+
+#: ../src/backend/filters/ionClip.cpp:600
+#: ../src/backend/filters/profile.cpp:1044
+msgid "Radius of cylinder"
+msgstr ""
+
+#: ../src/backend/filters/ionClip.cpp:613
+msgid "Centre of axis aligned box"
+msgstr ""
+
+#: ../src/backend/filters/ionClip.cpp:618
+msgid "Corner offset"
+msgstr ""
+
+#: ../src/backend/filters/ionClip.cpp:621
+msgid "Vector to corner of box"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:84
+#: ../src/backend/filters/clusterAnalysis.cpp:1060
+msgid "Size Distribution"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:85
+msgid "Chemistry Distribution"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:503
+msgid "No range data. Can't cluster."
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:514
+msgid ""
+"No ranges selected for cluster \"core\". Cannot continue with clustering."
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:523
+msgid ""
+"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:689
+msgid "Morphology Plot"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:690
+msgid "\\lambda_1:\\lambda_2 ratio"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:691
+msgid "\\lambda_2:\\lambda_3 ratio"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:736
+msgid "No clusters had sufficient dimensionality to compute singular values"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:794
+msgid "Found :"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:796
+msgid " clusters"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:888
+msgid "Compositions (fractional, core+bulk)"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:890
+msgid "Compositions (fractional, core only)"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:908
+msgid "Frequencies (core+bulk)"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:939
+msgid "Core Link + Erode"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:943
+#: ../src/backend/filters/clusterAnalysis.cpp:951
+#: ../src/backend/filters/spatialAnalysis.cpp:707
+#: ../src/backend/filters/spatialAnalysis.cpp:715
+#: ../src/backend/filters/transform.cpp:1156
+#: ../src/backend/filters/ionInfo.cpp:549
+msgid "Algorithm"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:947
+msgid "Cluster algorithm mode"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:589
-#: ../src/backend/filters/profile.cpp:1029
-msgid "Lock Axis Mag."
+#: ../src/backend/filters/clusterAnalysis.cpp:958
+msgid "Core Classify"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:592
-msgid "Prevent changing length of cylinder during 3D interaction"
+#: ../src/backend/filters/clusterAnalysis.cpp:961
+msgid ""
+"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:600
-#: ../src/backend/filters/profile.cpp:1040
-#: ../src/backend/filters/spatialAnalysis.cpp:1061
-msgid "Radius of cylinder"
+#: ../src/backend/filters/clusterAnalysis.cpp:967
+msgid "Core Classify Dist"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:613
-msgid "Centre of axis aligned box"
+#: ../src/backend/filters/clusterAnalysis.cpp:970
+msgid "Restrict only atoms by distance to be cluster sources"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:618
-msgid "Corner offset"
+#: ../src/backend/filters/clusterAnalysis.cpp:975
+msgid "Classify Knn Max"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:621
-msgid "Vector to corner of box"
+#: ../src/backend/filters/clusterAnalysis.cpp:978
+msgid ""
+"Require that the kth NN (this number) is within the classify distance, to be "
+"a cluster source"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:111
-msgid "None (Raw count)"
+#: ../src/backend/filters/clusterAnalysis.cpp:984
+msgid "Core Link Dist"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:112
-msgid "Volume (Density)"
+#: ../src/backend/filters/clusterAnalysis.cpp:987
+msgid "Distance between clusters to allow linking"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:113
-msgid "All Ions (conc)"
+#: ../src/backend/filters/clusterAnalysis.cpp:992
+msgid "Bulk Link"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:114
-msgid "Ratio (Num/Denom)"
+#: ../src/backend/filters/clusterAnalysis.cpp:995
+#: ../src/backend/filters/clusterAnalysis.cpp:1012
+msgid "Enable  linking of non-cluster species - eg for composition analysis "
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:118
-msgid "Point Cloud"
+#: ../src/backend/filters/clusterAnalysis.cpp:1002
+msgid "Bulk Link (Envelope) Dist"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:119
-msgid "Isosurface"
+#: ../src/backend/filters/clusterAnalysis.cpp:1005
+msgid ""
+"Distance from core points that form cluster that is used to grab surrounding "
+"bulk points"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:120
-msgid "Axial slice"
+#: ../src/backend/filters/clusterAnalysis.cpp:1009
+msgid "Erosion"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:124
-#: ../src/backend/filters/voxelise.cpp:130
-#: ../src/backend/filters/algorithms/mass.cpp:25
-#: ../src/backend/filters/spectrumPlot.cpp:76 ../src/backend/plot.cpp:28
-msgid "None"
+#: ../src/backend/filters/clusterAnalysis.cpp:1018
+msgid "Erode Dist"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:125
-msgid "Gaussian (blur)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1021
+msgid ""
+"Distance from unclustered material in which bulk points are eroded from "
+"cluster"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:126
-msgid "Lapl. of Gauss. (edges)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1028
+msgid "Clustering Params"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:131
-msgid "Linear"
+#: ../src/backend/filters/clusterAnalysis.cpp:1033
+msgid "Size Cropping"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:564
-msgid "Voxel Limits (min,max): ("
+#: ../src/backend/filters/clusterAnalysis.cpp:1036
+msgid "Remove clusters based upon size distribution"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:709
-msgid "Fixed width"
+#: ../src/backend/filters/clusterAnalysis.cpp:1043
+msgid "Min Size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:713
-msgid "If true, use fixed size voxels, otherwise use fixed count"
+#: ../src/backend/filters/clusterAnalysis.cpp:1046
+msgid "Remove clusters below this size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:719
-msgid "Bin width x"
+#: ../src/backend/filters/clusterAnalysis.cpp:1051
+msgid "Max Size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:723
-msgid "Voxel size in X direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1054
+msgid "Remove clusters above this size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:727
-msgid "Bin width y"
+#: ../src/backend/filters/clusterAnalysis.cpp:1063
+msgid "Show number of clusters as a function of cluster size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:730
-msgid "Voxel size in Y direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1069
+msgid "Log Scale"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:736
-msgid "Bin width z"
+#: ../src/backend/filters/clusterAnalysis.cpp:1072
+msgid "Use logarithmic scale for size distribution"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:739
-msgid "Voxel size in Z direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1079
+msgid "Morphology Dist."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:746
-msgid "Num bins x"
+#: ../src/backend/filters/clusterAnalysis.cpp:1082
+msgid "Create a plot showing cluster aspect ratio"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:750
-msgid "Number of voxels to use in X direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1088
+msgid "Cluster Id"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:755
-msgid "Num bins y"
+#: ../src/backend/filters/clusterAnalysis.cpp:1091
+msgid "Assign cluster output a unique per-cluster value (id)."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:758
-msgid "Number of voxels to use in Y direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1098
+msgid "Chemistry Dist."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:764
-msgid "Num bins z"
+#: ../src/backend/filters/clusterAnalysis.cpp:1101
+msgid "Create a plot showing chemistry for each cluster size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:766
-msgid "Number of voxels to use in Z direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1108
+#: ../src/backend/filters/spatialAnalysis.cpp:1006
+#: ../src/backend/filters/profile.cpp:1111
+#: ../src/backend/filters/ionInfo.cpp:465
+msgid "Normalise"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:796
-msgid "Normalise by"
+#: ../src/backend/filters/clusterAnalysis.cpp:1111
+msgid "Convert cluster counts to composition"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:799
-msgid "Method to use to normalise scalar value in each voxel"
+#: ../src/backend/filters/clusterAnalysis.cpp:1117
+msgid "Postprocess"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:802
-msgid "Computation"
+#: ../src/backend/filters/clusterAnalysis.cpp:1136
+msgid "If selected, use as \"core\" ion type (can make clusters)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:809
-#: ../src/backend/filters/spatialAnalysis.cpp:1233
-#: ../src/backend/filters/spatialAnalysis.cpp:1254
-msgid "Numerator"
+#: ../src/backend/filters/clusterAnalysis.cpp:1141
+msgid "Core Ranges"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:812
-msgid "Parmeter \"a\" used in fraction (a/b) to get voxel value"
+#: ../src/backend/filters/clusterAnalysis.cpp:1147
+msgid "Enable/Disable All"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:829
-msgid "Enable this ion for numerator"
+#: ../src/backend/filters/clusterAnalysis.cpp:1151
+msgid "Enable/disable all ions"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:841
-#: ../src/backend/filters/voxelise.cpp:862
-#: ../src/backend/filters/spatialAnalysis.cpp:1261
-#: ../src/backend/filters/spatialAnalysis.cpp:1280
-msgid "Denominator"
+#: ../src/backend/filters/clusterAnalysis.cpp:1164
+msgid ""
+"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:844
-msgid "Parameter \"b\" used in fraction (a/b) to get voxel value"
+#: ../src/backend/filters/clusterAnalysis.cpp:1169
+msgid "Bulk Ranges"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:858
-msgid "Enable this ion for denominator contribution"
+#: ../src/backend/filters/clusterAnalysis.cpp:1185
+msgid "Max. Sep + Erode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:880
-#: ../src/backend/filters/voxelise.cpp:911
-msgid "Filtering"
+#: ../src/backend/filters/clusterAnalysis.cpp:1938
+msgid " --------------------------- Parameter selection notice ------------- "
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:884
-msgid "Smoothing method to use on voxels"
+#: ../src/backend/filters/clusterAnalysis.cpp:1939
+msgid "You have specified a bulk distance larger than half your link distance."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:887
-msgid "Processing"
+#: ../src/backend/filters/clusterAnalysis.cpp:1940
+msgid ""
+"You can do this; thats OK, but the output is no longer independent of the "
+"computational process;"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:893
-msgid "Standard Dev"
+#: ../src/backend/filters/clusterAnalysis.cpp:1941
+msgid ""
+"This will be a problem in the case where two or more clusters can equally "
+"lay claim to a \"bulk\" ion. "
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:897
-msgid "Filtering Scale"
+#: ../src/backend/filters/clusterAnalysis.cpp:1942
+msgid ""
+" If your inter-cluster distance is sufficiently large (larger than your bulk "
+"linking distance), then you can get away with this."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:903
-msgid "Kernel Size"
+#: ../src/backend/filters/clusterAnalysis.cpp:1943
+msgid ""
+" In theory it is possible to \"join\" the clusters, but this has not been "
+"implemented for speed reasons."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:907
+#: ../src/backend/filters/clusterAnalysis.cpp:1944
 msgid ""
-"Filter radius, in multiples of std. dev. Larger -> slower, more accurate"
+"If you want this, please contact the author, or just use the source to add "
+"this in yourself."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:927
-msgid "Representation"
+#: ../src/backend/filters/clusterAnalysis.cpp:1945
+msgid "---------------------------------------------------------------------- "
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:930
-msgid "3D display method"
+#: ../src/backend/filters/clusterAnalysis.cpp:1955
+#: ../src/backend/filters/spatialAnalysis.cpp:476
+#: ../src/backend/filters/spatialAnalysis.cpp:2166
+#: ../src/backend/filters/spatialAnalysis.cpp:2595
+#: ../src/backend/filters/spatialAnalysis.cpp:2887
+#: ../src/backend/filters/spatialAnalysis.cpp:3188
+#: ../src/backend/filters/spatialAnalysis.cpp:3334
+#: ../src/backend/filters/spatialAnalysis.cpp:3597
+#: ../src/backend/filters/spatialAnalysis.cpp:3810
+#: ../src/backend/filters/transform.cpp:1015
+msgid "Collate"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:941
-msgid "Spot size"
+#: ../src/backend/filters/clusterAnalysis.cpp:1974
+msgid "Build Core"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:944
-msgid "Size of the spots to use for display"
+#: ../src/backend/filters/clusterAnalysis.cpp:2002
+msgid "Core"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:949
-#: ../src/backend/filters/voxelise.cpp:984
-#: ../src/backend/filters/voxelise.cpp:1056
-msgid "Transparency"
+#: ../src/backend/filters/clusterAnalysis.cpp:2125
+msgid "Bulk"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:952
-msgid "How \"see through\" each point is (0 - opaque, 1 - invisible)"
+#: ../src/backend/filters/clusterAnalysis.cpp:2203
+msgid "Erode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:961
-msgid "Surf. param."
+#: ../src/backend/filters/clusterAnalysis.cpp:2281
+msgid "Re-Collate"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:964
-msgid "Isovalue"
+#: ../src/backend/filters/clusterAnalysis.cpp:2336
+msgid "Classify Core"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:967
-msgid "Scalar value to show as isosurface"
+#: ../src/backend/filters/clusterAnalysis.cpp:2427
+msgid "Build Bulk"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:972
-#: ../src/backend/filters/voxelise.cpp:1037
-#: ../src/backend/filters/spatialAnalysis.cpp:2344
-#: ../src/backend/filters/spatialAnalysis.cpp:2397
-msgid "Surface"
+#: ../src/backend/filters/clusterAnalysis.cpp:2675
+#: ../src/backend/filters/clusterAnalysis.cpp:2878
+msgid "Cluster Size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:979
-msgid "Colour of isosurface"
+#: ../src/backend/filters/clusterAnalysis.cpp:2676
+#: ../src/backend/filters/clusterAnalysis.cpp:2882
+msgid "Frequency"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:987
-#: ../src/backend/filters/voxelise.cpp:1059
-msgid "How \"see through\" each facet is (0 - opaque, 1 - invisible)"
+#: ../src/backend/filters/clusterAnalysis.cpp:2880
+msgid "Composition"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:998
-msgid "Slice param."
+#: ../src/backend/filters/voxelise.cpp:116
+msgid "None (Raw count)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1006
-msgid "Slice Axis"
+#: ../src/backend/filters/voxelise.cpp:117
+msgid "Volume (Density)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1009
-msgid "Normal for the planar slice"
+#: ../src/backend/filters/voxelise.cpp:118
+msgid "All Ions (conc)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1016
-msgid "Slice Coord"
+#: ../src/backend/filters/voxelise.cpp:119
+msgid "Ratio (Num/Denom)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1019
-msgid "Fractional coordinate that slice plane passes through"
+#: ../src/backend/filters/voxelise.cpp:123
+msgid "Point Cloud"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1024
-msgid "Interp. Mode"
+#: ../src/backend/filters/voxelise.cpp:124
+msgid "Isosurface"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1032
-msgid "Interpolation mode for direction normal to slice"
+#: ../src/backend/filters/voxelise.cpp:125
+msgid "Axial slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1048
-msgid "Colour mode"
+#: ../src/backend/filters/voxelise.cpp:126
+msgid "Slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1051
-#: ../src/backend/filters/ionColour.cpp:261
-msgid "Colour scheme used to assign points colours by value"
+#: ../src/backend/filters/voxelise.cpp:131
+msgid "Gaussian (blur)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1064
-#: ../src/backend/filters/ionColour.cpp:273
-msgid "Show Bar"
+#: ../src/backend/filters/voxelise.cpp:132
+msgid "Lapl. of Gauss. (edges)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1071
-msgid "Auto Bounds"
+#: ../src/backend/filters/voxelise.cpp:137
+msgid "Linear"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1072
-msgid "Auto-compute min/max values in map"
+#: ../src/backend/filters/voxelise.cpp:404
+msgid "Counting"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1082
-#: ../src/backend/filters/ionColour.cpp:294
-msgid "Map start"
+#: ../src/backend/filters/voxelise.cpp:579
+msgid "Gauss Smooth"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1083
-#: ../src/backend/filters/ionColour.cpp:295
-msgid "Assign points with this value to the first colour in map"
+#: ../src/backend/filters/voxelise.cpp:585
+msgid "Calc. Laplace"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1090
-#: ../src/backend/filters/ionColour.cpp:302
-msgid "Map end"
+#: ../src/backend/filters/voxelise.cpp:609
+msgid "Voxel Limits (min,max): ("
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1091
-#: ../src/backend/filters/ionColour.cpp:303
-msgid "Assign points with this value to the last colour in map"
+#: ../src/backend/filters/voxelise.cpp:619
+#: ../src/backend/filters/voxelise.cpp:1139
+msgid "Representation"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:84
-msgid "Translate"
+#: ../src/backend/filters/voxelise.cpp:924
+msgid "Fixed width"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:85
-msgid "Scale (isotropic)"
+#: ../src/backend/filters/voxelise.cpp:928
+msgid "If true, use fixed size voxels, otherwise use fixed count"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:86
-msgid "Scale (anisotropic)"
+#: ../src/backend/filters/voxelise.cpp:934
+msgid "Bin width x"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:938
+msgid "Voxel size in X direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:87
-msgid "Rotate"
+#: ../src/backend/filters/voxelise.cpp:942
+msgid "Bin width y"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:88
-msgid "Value Shuffle"
+#: ../src/backend/filters/voxelise.cpp:945
+msgid "Voxel size in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:89
-msgid "Spatial Noise"
+#: ../src/backend/filters/voxelise.cpp:951
+msgid "Bin width z"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:90
-msgid "Translate Value"
+#: ../src/backend/filters/voxelise.cpp:954
+msgid "Voxel size in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:91
-msgid "Crop Value"
+#: ../src/backend/filters/voxelise.cpp:961
+msgid "Num bins x"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:95
-msgid "Specify"
+#: ../src/backend/filters/voxelise.cpp:965
+msgid "Number of voxels to use in X direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:96
-msgid "Boundbox Centre"
+#: ../src/backend/filters/voxelise.cpp:970
+msgid "Num bins y"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:97
-msgid "Mass Centre"
+#: ../src/backend/filters/voxelise.cpp:973
+msgid "Number of voxels to use in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1008
-#: ../src/backend/filters/clusterAnalysis.cpp:1956
-#: ../src/backend/filters/spatialAnalysis.cpp:635
-#: ../src/backend/filters/spatialAnalysis.cpp:2298
-#: ../src/backend/filters/spatialAnalysis.cpp:2727
-#: ../src/backend/filters/spatialAnalysis.cpp:3016
-#: ../src/backend/filters/spatialAnalysis.cpp:3689
-#: ../src/backend/filters/spatialAnalysis.cpp:3952
-#: ../src/backend/filters/spatialAnalysis.cpp:4165
-msgid "Collate"
+#: ../src/backend/filters/voxelise.cpp:979
+msgid "Num bins z"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1027
-msgid "Mass-to-Charge (Da/e)"
+#: ../src/backend/filters/voxelise.cpp:981
+msgid "Number of voxels to use in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1081
-msgid "Shuffle"
+#: ../src/backend/filters/voxelise.cpp:1011
+msgid "Normalise by"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1105
-msgid "Splice"
+#: ../src/backend/filters/voxelise.cpp:1014
+msgid "Method to use to normalise scalar value in each voxel"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1153
-msgid "Algorithm to use to transform point data"
+#: ../src/backend/filters/voxelise.cpp:1017
+msgid "Computation"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1157
-#: ../src/backend/filters/ionInfo.cpp:546
-#: ../src/backend/filters/clusterAnalysis.cpp:943
-#: ../src/backend/filters/clusterAnalysis.cpp:951
-#: ../src/backend/filters/spatialAnalysis.cpp:800
-#: ../src/backend/filters/spatialAnalysis.cpp:808
-msgid "Algorithm"
+#: ../src/backend/filters/voxelise.cpp:1024
+#: ../src/backend/filters/spatialAnalysis.cpp:1122
+#: ../src/backend/filters/spatialAnalysis.cpp:1143
+msgid "Numerator"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1170
-msgid "Origin mode"
+#: ../src/backend/filters/voxelise.cpp:1027
+msgid "Parmeter \"a\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1173
-msgid "Select how transform origin is computed"
+#: ../src/backend/filters/voxelise.cpp:1044
+msgid "Enable this ion for numerator"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1178
-msgid "Show marker"
+#: ../src/backend/filters/voxelise.cpp:1056
+#: ../src/backend/filters/voxelise.cpp:1077
+#: ../src/backend/filters/spatialAnalysis.cpp:1150
+#: ../src/backend/filters/spatialAnalysis.cpp:1169
+msgid "Denominator"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1182
-msgid "Display an interactive object to set transform origin"
+#: ../src/backend/filters/voxelise.cpp:1059
+msgid "Parameter \"b\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1184
-msgid "Display a small marker to denote transform origin"
+#: ../src/backend/filters/voxelise.cpp:1073
+msgid "Enable this ion for denominator contribution"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1200
-msgid "Translation"
+#: ../src/backend/filters/voxelise.cpp:1095
+#: ../src/backend/filters/voxelise.cpp:1126
+msgid "Filtering"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1203
-msgid "Translation vector for transform"
+#: ../src/backend/filters/voxelise.cpp:1099
+msgid "Smoothing method to use on voxels"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1215
-msgid "Offset"
+#: ../src/backend/filters/voxelise.cpp:1102
+msgid "Processing"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1219
-msgid "Scalar to use to offset each point's associated value"
+#: ../src/backend/filters/voxelise.cpp:1108
+msgid "Standard Dev"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1236
-#: ../src/backend/filters/transform.cpp:1263
-msgid "Origin of scale trasnform"
+#: ../src/backend/filters/voxelise.cpp:1112
+msgid "Filtering Scale"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1243
-#: ../src/backend/filters/transform.cpp:1270
-msgid "Scale Fact."
+#: ../src/backend/filters/voxelise.cpp:1118
+msgid "Kernel Size"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1246
-#: ../src/backend/filters/transform.cpp:1273
-msgid "Enlargement factor for scaling around origin"
+#: ../src/backend/filters/voxelise.cpp:1122
+msgid ""
+"Filter radius, in multiples of std. dev. Larger -> slower, more accurate"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1289
-msgid "Origin of rotation"
+#: ../src/backend/filters/voxelise.cpp:1142
+msgid "3D display method"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1297
-msgid "Axis around which to revolve"
+#: ../src/backend/filters/voxelise.cpp:1153
+msgid "Spot size"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1302
-msgid "Angle (deg)"
+#: ../src/backend/filters/voxelise.cpp:1156
+msgid "Size of the spots to use for display"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1305
-msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
+#: ../src/backend/filters/voxelise.cpp:1161
+#: ../src/backend/filters/voxelise.cpp:1196
+#: ../src/backend/filters/voxelise.cpp:1268
+#: ../src/backend/filters/voxelise.cpp:1358
+msgid "Transparency"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1322
-msgid "Noise Type"
+#: ../src/backend/filters/voxelise.cpp:1164
+msgid "How \"see through\" each point is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1325
-msgid "Method to use to degrade point data"
+#: ../src/backend/filters/voxelise.cpp:1173
+msgid "Surf. param."
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1332
-msgid "Noise level"
+#: ../src/backend/filters/voxelise.cpp:1176
+msgid "Isovalue"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1334
-msgid "Standard dev."
+#: ../src/backend/filters/voxelise.cpp:1179
+msgid "Scalar value to show as isosurface"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1342
-msgid "Amplitude of noise"
+#: ../src/backend/filters/voxelise.cpp:1184
+#: ../src/backend/filters/voxelise.cpp:1249
+#: ../src/backend/filters/voxelise.cpp:1338
+#: ../src/backend/filters/spatialAnalysis.cpp:2212
+#: ../src/backend/filters/spatialAnalysis.cpp:2265
+msgid "Surface"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1356
-msgid "Min Value"
+#: ../src/backend/filters/voxelise.cpp:1191
+msgid "Colour of isosurface"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1360
-msgid "Minimum value to use for crop"
+#: ../src/backend/filters/voxelise.cpp:1199
+#: ../src/backend/filters/voxelise.cpp:1271
+#: ../src/backend/filters/voxelise.cpp:1361
+msgid "How \"see through\" each facet is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1364
-msgid "Max Value"
+#: ../src/backend/filters/voxelise.cpp:1210
+#: ../src/backend/filters/voxelise.cpp:1317
+msgid "Slice param."
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1368
-msgid "Maximum value to use for crop"
+#: ../src/backend/filters/voxelise.cpp:1218
+msgid "Slice Axis"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1377
-msgid "Transform Params"
+#: ../src/backend/filters/voxelise.cpp:1221
+msgid "Normal for the planar slice"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1738
-msgid "White"
+#: ../src/backend/filters/voxelise.cpp:1228
+msgid "Slice Coord"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1740
-msgid "Gaussian"
+#: ../src/backend/filters/voxelise.cpp:1231
+msgid "Fractional coordinate that slice plane passes through"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:259
-msgid "Collate Input"
+#: ../src/backend/filters/voxelise.cpp:1236
+msgid "Interp. Mode"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:348
-msgid "Execute"
+#: ../src/backend/filters/voxelise.cpp:1244
+msgid "Interpolation mode for direction normal to slice"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:389
-msgid "Collate output"
+#: ../src/backend/filters/voxelise.cpp:1260
+#: ../src/backend/filters/voxelise.cpp:1350
+msgid "Colour mode"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:564
-#: ../src/backend/filters/externalProgram.cpp:578
-msgid "Command"
+#: ../src/backend/filters/voxelise.cpp:1263
+#: ../src/backend/filters/voxelise.cpp:1353
+#: ../src/backend/filters/ionColour.cpp:293
+msgid "Colour scheme used to assign points colours by value"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:567
-msgid ""
-"Full command to send to operating system. See manual for escape sequence "
-"meanings"
+#: ../src/backend/filters/voxelise.cpp:1276
+#: ../src/backend/filters/voxelise.cpp:1366
+#: ../src/backend/filters/ionColour.cpp:305
+msgid "Show Bar"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:571
-msgid "Work Dir"
+#: ../src/backend/filters/voxelise.cpp:1279
+msgid "Display colour bar in 3D view?"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:574
-msgid "Directory to run the command in"
+#: ../src/backend/filters/voxelise.cpp:1284
+#: ../src/backend/filters/voxelise.cpp:1373
+msgid "Auto Bounds"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:581
-msgid "Cleanup input"
+#: ../src/backend/filters/voxelise.cpp:1285
+#: ../src/backend/filters/voxelise.cpp:1374
+msgid "Auto-compute min/max values in map"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:584
-msgid "Erase input files when command completed"
+#: ../src/backend/filters/voxelise.cpp:1295
+#: ../src/backend/filters/voxelise.cpp:1384
+#: ../src/backend/filters/ionColour.cpp:337
+msgid "Map start"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:589
-msgid "Cache"
+#: ../src/backend/filters/voxelise.cpp:1296
+#: ../src/backend/filters/voxelise.cpp:1385
+#: ../src/backend/filters/ionColour.cpp:338
+msgid "Assign points with this value to the first colour in map"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:592
-msgid ""
-"Assume program does not alter its output, unless inputs from 3Depict are "
-"altered"
+#: ../src/backend/filters/voxelise.cpp:1303
+#: ../src/backend/filters/voxelise.cpp:1392
+#: ../src/backend/filters/ionColour.cpp:345
+msgid "Map end"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:26
-msgid "Flat TOF"
+#: ../src/backend/filters/voxelise.cpp:1304
+#: ../src/backend/filters/voxelise.cpp:1393
+#: ../src/backend/filters/ionColour.cpp:346
+msgid "Assign points with this value to the last colour in map"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:33
-msgid "INsufficient bins to perform fit"
+#: ../src/backend/filters/voxelise.cpp:1320
+msgid "Slice Offset"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:34
-msgid "Insufficient counts to perform fit"
+#: ../src/backend/filters/voxelise.cpp:1323
+msgid "Point on plane for slice, in 0->1 coordinates"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:35
-msgid "Insufficient data to perform fit"
+#: ../src/backend/filters/voxelise.cpp:1330
+msgid "Slice Normal"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:36
-msgid "Data did not appear to be random noise - cannot fit noise level"
+#: ../src/backend/filters/voxelise.cpp:1333
+msgid "Normal vector for slice"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:37
-msgid "Rectilinear"
+#: ../src/backend/filters/ionColour.cpp:289
+msgid "Colour Map"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:38
-msgid "Convex hull"
+#: ../src/backend/filters/ionColour.cpp:297
+msgid "Reverse map"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:200
-msgid "No ions"
+#: ../src/backend/filters/ionColour.cpp:298
+msgid "Reverse the colour scale"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:226
-#: ../src/backend/filters/spectrumPlot.cpp:432
-msgid ""
-"Background fit failed - input data was considered ill formed (gauss-test)"
+#: ../src/backend/filters/ionColour.cpp:306
+msgid "Display the colour legend in the 3D view"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:227
-msgid "Following data has not been corrected"
+#: ../src/backend/filters/ionColour.cpp:312
+msgid "Opacity"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:279
-msgid "--Counts--"
+#: ../src/backend/filters/ionColour.cpp:313
+msgid "How see-through to make the legend (0- transparent, 1- solid)"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:289
-msgid "Total Ranged\t"
+#: ../src/backend/filters/ionColour.cpp:320
+msgid "Num Colours"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:294
-msgid "Total (incl. unranged)\t"
+#: ../src/backend/filters/ionColour.cpp:322
+msgid "Number of unique colours to use in colour map"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:307
-msgid "n/a"
+#: ../src/backend/filters/ionColour.cpp:327
+msgid "Auto bounds"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:317
-#: ../src/backend/filters/ionDownsample.cpp:496
-msgid "Unranged"
+#: ../src/backend/filters/ionColour.cpp:329
+msgid "Automatically scale colour to min/max of data range"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:330
-msgid "Number of points : "
+#: ../src/backend/filters/ionColour.cpp:460 ../src/backend/filter.cpp:197
+msgid "Aborted"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:359
-msgid "Rectilinear Bounds : "
+#: ../src/backend/filters/spatialAnalysis.cpp:123
+msgid "Local Density"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:364
-msgid "Volume (len^3): "
+#: ../src/backend/filters/spatialAnalysis.cpp:124
+msgid "Density Filtering"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:381
-msgid "Convex Volume (len^3): "
+#: ../src/backend/filters/spatialAnalysis.cpp:125
+msgid "Radial Distribution"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:384
-msgid "Unable to compute volume"
+#: ../src/backend/filters/spatialAnalysis.cpp:126
+msgid "Axial Distribution"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:413
-msgid "Ranged Density (pts/vol):"
+#: ../src/backend/filters/spatialAnalysis.cpp:127
+msgid "Binomial Distribution"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:418
-msgid "Total Density (pts/vol):"
+#: ../src/backend/filters/spatialAnalysis.cpp:128
+msgid "Point Em/Replacement"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:445
-msgid "Compositions"
+#: ../src/backend/filters/spatialAnalysis.cpp:129
+msgid "Local Chemistry"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:446
-msgid "Display compositional data for points in console"
+#: ../src/backend/filters/spatialAnalysis.cpp:133
+msgid "Neighbour Count"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:450
-msgid "Counts"
+#: ../src/backend/filters/spatialAnalysis.cpp:484
+msgid "Load"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:451
-msgid "Display count data for points in console"
+#: ../src/backend/filters/spatialAnalysis.cpp:539
+#: ../src/backend/filters/spatialAnalysis.cpp:2198
+#: ../src/backend/filters/spatialAnalysis.cpp:2251
+#: ../src/backend/filters/spatialAnalysis.cpp:2601
+#: ../src/backend/filters/spatialAnalysis.cpp:2893
+#: ../src/backend/filters/spatialAnalysis.cpp:3200
+#: ../src/backend/filters/spatialAnalysis.cpp:3829
+msgid "Build"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:458
-msgid "Ion data"
+#: ../src/backend/filters/spatialAnalysis.cpp:588
+#: ../src/backend/filters/spatialAnalysis.cpp:3222
+#: ../src/backend/filters/spatialAnalysis.cpp:3718
+#: ../src/backend/filters/spatialAnalysis.cpp:3846
+msgid "Compute"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:462
-#: ../src/backend/filters/profile.cpp:1107
-#: ../src/backend/filters/clusterAnalysis.cpp:1108
-#: ../src/backend/filters/spatialAnalysis.cpp:1116
-msgid "Normalise"
+#: ../src/backend/filters/spatialAnalysis.cpp:710
+msgid "Spatial analysis algorithm to use"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:466
-msgid "Normalise count data"
+#: ../src/backend/filters/spatialAnalysis.cpp:734
+#: ../src/backend/filters/spatialAnalysis.cpp:785
+msgid "Stop Mode"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:530
-msgid "Volume"
+#: ../src/backend/filters/spatialAnalysis.cpp:737
+msgid "Method to use to terminate algorithm when examining each point"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:533
-msgid "Compute volume for point data"
+#: ../src/backend/filters/spatialAnalysis.cpp:744
+msgid "NN Max"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:549
-msgid "Select volume counting technique"
+#: ../src/backend/filters/spatialAnalysis.cpp:747
+msgid "Maximum number of neighbours to examine"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:562
-msgid "Volume data"
+#: ../src/backend/filters/spatialAnalysis.cpp:754
+msgid "Normalise bins"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:120
-#: ../src/backend/filters/rangeFile.h:96
-msgid "Ranging"
+#: ../src/backend/filters/spatialAnalysis.cpp:757
+msgid ""
+"Normalise counts by binwidth. Needed when comparing NN histograms against "
+"one another"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:560
-#: ../src/backend/filters/rangeFile.cpp:580
-#: ../src/backend/filters/dataLoad.cpp:484
-#: ../src/backend/filters/dataLoad.cpp:505
-msgid "File"
+#: ../src/backend/filters/spatialAnalysis.cpp:763
+msgid "Show Random"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:563
-msgid "File to use for range data"
+#: ../src/backend/filters/spatialAnalysis.cpp:766
+msgid "Show a fitted (density matched) theoretical distribution"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:573
-msgid "Drop unranged"
+#: ../src/backend/filters/spatialAnalysis.cpp:777
+msgid "Dist Max"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:575
-msgid "Remove unranged points when generating output"
+#: ../src/backend/filters/spatialAnalysis.cpp:780
+msgid "Maximum distance from each point for search"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:585
-msgid "Legend"
+#: ../src/backend/filters/spatialAnalysis.cpp:794
+#: ../src/backend/filters/spatialAnalysis.cpp:928
+#: ../src/backend/filters/profile.cpp:1089
+msgid "Num Bins"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:587
-msgid "Display colour legend for enabled ions"
+#: ../src/backend/filters/spatialAnalysis.cpp:797
+#: ../src/backend/filters/spatialAnalysis.cpp:931
+msgid "Number of bins for output 1D RDF plot"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:591
-msgid "View"
+#: ../src/backend/filters/spatialAnalysis.cpp:803
+msgid "Surface Remove"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:607
-msgid "All Ions"
+#: ../src/backend/filters/spatialAnalysis.cpp:806
+msgid ""
+"Exclude surface as part of source to minimise bias in RDF (at cost of "
+"increased noise)"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:608
-msgid "Enable/disable all ions at once"
+#: ../src/backend/filters/spatialAnalysis.cpp:813
+msgid "Remove Dist"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:616
-msgid "Species"
+#: ../src/backend/filters/spatialAnalysis.cpp:816
+msgid "Minimum distance to remove from surface"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:623
-msgid "IonID "
+#: ../src/backend/filters/spatialAnalysis.cpp:824
+#: ../src/backend/filters/spatialAnalysis.cpp:936
+msgid "Plot colour "
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:624
-msgid "Enable/disable specified ion"
+#: ../src/backend/filters/spatialAnalysis.cpp:827
+#: ../src/backend/filters/spatialAnalysis.cpp:939
+msgid "Colour of output plot"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:634
-msgid "Active Ion "
+#: ../src/backend/filters/spatialAnalysis.cpp:831
+#: ../src/backend/filters/spatialAnalysis.cpp:917
+#: ../src/backend/filters/spatialAnalysis.cpp:922
+#: ../src/backend/filters/spatialAnalysis.cpp:954
+#: ../src/backend/filters/spatialAnalysis.cpp:993
+msgid "Alg. Params."
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:636
-msgid "If true, ion is used in output"
+#: ../src/backend/filters/spatialAnalysis.cpp:844
+#: ../src/backend/filters/spatialAnalysis.cpp:1096
+msgid "Source"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:646
-msgid "Colour "
+#: ../src/backend/filters/spatialAnalysis.cpp:847
+msgid "Ions to use for initiating RDF search"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:650
-msgid "Colour used to represent ion"
+#: ../src/backend/filters/spatialAnalysis.cpp:860
+#: ../src/backend/filters/spatialAnalysis.cpp:1112
+#: ../src/backend/filters/spatialAnalysis.cpp:1138
+msgid "Enable/disable ion as source"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:673
-msgid "All Ranges"
+#: ../src/backend/filters/spatialAnalysis.cpp:865
+#: ../src/backend/filters/spatialAnalysis.cpp:1117
+msgid "Source Ion"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:674
-msgid "Enable/disable all ranges"
+#: ../src/backend/filters/spatialAnalysis.cpp:875
+#: ../src/backend/filters/spatialAnalysis.cpp:1153
+msgid "Enable/disable all ions as target"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:689
-msgid "Active Rng "
+#: ../src/backend/filters/spatialAnalysis.cpp:887
+#: ../src/backend/filters/spatialAnalysis.cpp:1165
+msgid "Enable/disable this ion as target"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:692
-msgid ""
-"Enable/disable specified range (ion must also be enabled to activiate range)"
+#: ../src/backend/filters/spatialAnalysis.cpp:891
+msgid "Target Ion"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:696
-msgid "Ion "
+#: ../src/backend/filters/spatialAnalysis.cpp:901
+msgid "Cutoff"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:699
-msgid "Name of ion associate to this range"
+#: ../src/backend/filters/spatialAnalysis.cpp:904
+msgid "Remove points with local density above/below this value"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:708
-msgid "Start rng "
+#: ../src/backend/filters/spatialAnalysis.cpp:910
+msgid "Retain Upper"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:711
-msgid "Start value for range"
+#: ../src/backend/filters/spatialAnalysis.cpp:913
+msgid "Retain either points with density above (enabled) or below cutoff"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:716
-msgid "End rng "
+#: ../src/backend/filters/spatialAnalysis.cpp:950
+msgid "Vector along which to calculate distribution function"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:719
-msgid "Stopping value for range`"
+#: ../src/backend/filters/spatialAnalysis.cpp:961
+msgid "Block size"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:51
-msgid "Cylinder (axial)"
+#: ../src/backend/filters/spatialAnalysis.cpp:964
+msgid "Number of ions to use per block"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:52
-msgid "Cylinder (radial)"
+#: ../src/backend/filters/spatialAnalysis.cpp:971
+msgid "Max Block Aspect"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:591
-msgid "Distance"
+#: ../src/backend/filters/spatialAnalysis.cpp:974
+msgid ""
+"Maximum allowable block aspect ratio. Blocks above this aspect are "
+"discarded. Setting too high decreases correlation strength. Too low causes "
+"loss of statistical power."
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:599
-msgid "Fraction"
+#: ../src/backend/filters/spatialAnalysis.cpp:985
+msgid "Extrusion Direction"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:601
-msgid "Density (\\frac{\\#}{len^3})"
+#: ../src/backend/filters/spatialAnalysis.cpp:988
+msgid "Direction in which blocks are extended during construction."
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:628
-msgid "Freq. Profile"
+#: ../src/backend/filters/spatialAnalysis.cpp:997
+msgid "Plot Counts"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:680
-msgid "No data remained in profile - cannot display result"
+#: ../src/backend/filters/spatialAnalysis.cpp:1000
+msgid "Show the counts in the binomial histogram"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:967
-msgid "Total Density"
+#: ../src/backend/filters/spatialAnalysis.cpp:1009
+msgid ""
+"Normalise the counts in the binomial histogram to a probability density "
+"function"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:971
-msgid "Do not do per-species analysis, perform density computation only"
+#: ../src/backend/filters/spatialAnalysis.cpp:1013
+msgid "Expected Freq"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:985
-msgid "Primitive type"
+#: ../src/backend/filters/spatialAnalysis.cpp:1016
+msgid ""
+"Show the theoretically expected probability density function for a random "
+"dataset with the same mean"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:989
-msgid "Basic shape to use for profile"
+#: ../src/backend/filters/spatialAnalysis.cpp:1024
+msgid "Display Grid"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1001
-msgid "Display the 3D composition profile interaction object"
+#: ../src/backend/filters/spatialAnalysis.cpp:1027
+msgid "Show the extruded grid in the 3D view. This may be slow"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1016
-#: ../src/backend/filters/spatialAnalysis.cpp:1044
-msgid "Position for centre of cylinder"
+#: ../src/backend/filters/spatialAnalysis.cpp:1031
+msgid "View Options"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1024
-msgid "Vector between ends of cylinder"
+#: ../src/backend/filters/spatialAnalysis.cpp:1037
+msgid "Data File"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1032
-msgid "Prevent length of cylinder changing during interaction"
+#: ../src/backend/filters/spatialAnalysis.cpp:1041
+msgid "Pos file of points to subtract/replace/etc"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1075
-msgid "Fixed Bin Num"
+#: ../src/backend/filters/spatialAnalysis.cpp:1046
+msgid "Match Tol."
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1078
-msgid ""
-"If true, use a fixed number of bins for profile, otherwise use fixed step "
-"size"
+#: ../src/backend/filters/spatialAnalysis.cpp:1049
+msgid "Tolerance to allow for matching"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1085
-#: ../src/backend/filters/spatialAnalysis.cpp:887
-#: ../src/backend/filters/spatialAnalysis.cpp:1021
-msgid "Num Bins"
+#: ../src/backend/filters/spatialAnalysis.cpp:1065
+msgid "Replacment condition"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1090
-msgid "Number of bins to use for profile"
+#: ../src/backend/filters/spatialAnalysis.cpp:1071
+msgid "Replace value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1096
-#: ../src/backend/filters/spectrumPlot.cpp:580
-msgid "Bin width"
+#: ../src/backend/filters/spatialAnalysis.cpp:1074
+msgid "Use value data from file when replacing ions"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1102
-msgid "Size of each bin in profile"
+#: ../src/backend/filters/spatialAnalysis.cpp:1079
+msgid "Replacement"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1111
-msgid "Convert bin counts into relative frequencies in each bin"
+#: ../src/backend/filters/spatialAnalysis.cpp:1099
+msgid "Enable/disable all ions as source"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1115
-msgid "Min. events"
+#: ../src/backend/filters/spatialAnalysis.cpp:1125
+msgid "Ions to use as Numerator for conc. calculation"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1119
-msgid "Drop data that does not have this many events"
+#: ../src/backend/filters/spatialAnalysis.cpp:1681
+msgid "Spatial analysis aborted by user"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1122
-msgid "Settings"
+#: ../src/backend/filters/spatialAnalysis.cpp:1682
+msgid "Insufficient memory for binomial. Reduce input size?"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1144
-#: ../src/backend/filters/spectrumPlot.cpp:669
-msgid "Plot Type"
+#: ../src/backend/filters/spatialAnalysis.cpp:1683
+msgid "Required range data not present"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1147
-msgid "Visual style for plot"
+#: ../src/backend/filters/spatialAnalysis.cpp:1684
+msgid "Unable to generate usable binomial grid"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1158
-msgid "Colour of plot"
+#: ../src/backend/filters/spatialAnalysis.cpp:1686
+msgid "Insufficient points to continue"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1174
-msgid "Err. Estimator"
+#: ../src/backend/filters/spatialAnalysis.cpp:1687
+msgid "Unable to load file"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1177
-msgid "Method of estimating error associated with each bin"
+#: ../src/backend/filters/spatialAnalysis.cpp:2305
+#: ../src/backend/filters/spatialAnalysis.cpp:2624
+#: ../src/backend/filters/spatialAnalysis.cpp:2917
+msgid "Analyse"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1184
-msgid "Avg. Window"
+#: ../src/backend/filters/spatialAnalysis.cpp:2384
+#: ../src/backend/filters/spatialAnalysis.cpp:2474
+#: ../src/backend/filters/spatialAnalysis.cpp:2540
+msgid "Radial Distance"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1187
-msgid "Number of bins to include in moving average filter"
+#: ../src/backend/filters/spatialAnalysis.cpp:2386
+#: ../src/backend/filters/spatialAnalysis.cpp:2479
+msgid "Count/Distance"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1191
-msgid "Error analysis"
+#: ../src/backend/filters/spatialAnalysis.cpp:2391
+#: ../src/backend/filters/spatialAnalysis.cpp:2484
+msgid "NN Freq."
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:64
-msgid "Box only"
+#: ../src/backend/filters/spatialAnalysis.cpp:2531
+msgid "Warning, "
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:65
-msgid "Tick"
+#: ../src/backend/filters/spatialAnalysis.cpp:2532
+msgid ""
+" points were unable to find neighbour points that exceeded the search "
+"radius, and thus terminated prematurely"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:66
-msgid "Dimension"
+#: ../src/backend/filters/spatialAnalysis.cpp:2542
+msgid " RDF"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:571
-msgid "If true, show box, otherwise hide box"
+#: ../src/backend/filters/spatialAnalysis.cpp:2823
+#: ../src/backend/filters/spatialAnalysis.cpp:3123
+msgid "Number Density (\\#/Vol^3)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:584
-msgid "Style"
+#: ../src/backend/filters/spatialAnalysis.cpp:2848
+#: ../src/backend/filters/spatialAnalysis.cpp:3145
+msgid "Warning,"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:587
-msgid "Box display mode"
+#: ../src/backend/filters/spatialAnalysis.cpp:2849
+#: ../src/backend/filters/spatialAnalysis.cpp:3146
+msgid " points were un-analysable. These have been dropped"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:590
-msgid "Display mode"
+#: ../src/backend/filters/spatialAnalysis.cpp:2871
+#: ../src/backend/filters/spatialAnalysis.cpp:3168
+msgid "And so on..."
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:599
-msgid "Fixed Tick Num"
+#: ../src/backend/filters/spatialAnalysis.cpp:3268
+msgid "Insufficient points to complete analysis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:603
-msgid ""
-"If true, evenly use specified number of ticks. Otherwise, use distance to "
-"determine tick count"
+#: ../src/backend/filters/spatialAnalysis.cpp:3291
+msgid "Axial Distance"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:611
-msgid "Num X"
+#: ../src/backend/filters/spatialAnalysis.cpp:3293
+msgid " 1D Dist. Func."
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:614
-msgid "Tick count in X direction"
+#: ../src/backend/filters/spatialAnalysis.cpp:3344
+msgid "Binomial"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:619
-msgid "Num Y"
+#: ../src/backend/filters/spatialAnalysis.cpp:3477
+#: ../src/backend/filters/spatialAnalysis.cpp:3542
+msgid "Ions in Block"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:622
-msgid "Tick count in Y direction"
+#: ../src/backend/filters/spatialAnalysis.cpp:3479
+#: ../src/backend/filters/spatialAnalysis.cpp:3544
+#: ../src/backend/filters/spectrumPlot.cpp:79
+msgid "Probability"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:627
-msgid "Num Z"
+#: ../src/backend/filters/spatialAnalysis.cpp:3546
+msgid "Count (blocks)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:630
-msgid "Tick count in Z direction"
+#: ../src/backend/filters/spatialAnalysis.cpp:3611
+msgid "Build Numerator"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:636
-msgid "Spacing X"
+#: ../src/backend/filters/spatialAnalysis.cpp:3625
+msgid "Build Denominator"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:640
-msgid "Distance between ticks on X axis"
+#: ../src/backend/filters/spatialAnalysis.cpp:3961
+msgid "Relative Conc. (%)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:644
-msgid "Spacing Y"
+#: ../src/backend/filters/profile.cpp:51
+msgid "Cylinder (axial)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:648
-msgid "Distance between ticks on Y axis"
+#: ../src/backend/filters/profile.cpp:52
+msgid "Cylinder (radial)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:652
-msgid "Spacing Z"
+#: ../src/backend/filters/profile.cpp:595
+msgid "Distance"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:656
-msgid "Distance between ticks on Z axis"
+#: ../src/backend/filters/profile.cpp:603
+msgid "Fraction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:664
-msgid "Ticks X"
+#: ../src/backend/filters/profile.cpp:605
+msgid "Density (\\frac{\\#}{len^3})"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:668
-msgid "Display tick marks on X axis"
+#: ../src/backend/filters/profile.cpp:632
+msgid "Freq. Profile"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:672
-msgid "Ticks Y"
+#: ../src/backend/filters/profile.cpp:684
+msgid "No data remained in profile - cannot display result"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:676
-msgid "Display tick marks on Y axis"
+#: ../src/backend/filters/profile.cpp:971
+msgid "Total Density"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:680
-msgid "Ticks Z"
+#: ../src/backend/filters/profile.cpp:975
+msgid "Do not do per-species analysis, perform density computation only"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:684
-msgid "Display tick marks on Z axis"
+#: ../src/backend/filters/profile.cpp:989
+msgid "Primitive type"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:687
-msgid "Tick marks"
+#: ../src/backend/filters/profile.cpp:993
+msgid "Basic shape to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:694
-msgid "Box Colour"
+#: ../src/backend/filters/profile.cpp:1005
+msgid "Display the 3D composition profile interaction object"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:698
-msgid "Colour of the bounding box"
+#: ../src/backend/filters/profile.cpp:1020
+msgid "Position for centre of cylinder"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:703
-msgid "Line thickness"
+#: ../src/backend/filters/profile.cpp:1028
+msgid "Vector between ends of cylinder"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:707
-msgid "Thickness of the lines used to draw the box"
+#: ../src/backend/filters/profile.cpp:1036
+msgid "Prevent length of cylinder changing during interaction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:718
-msgid "Relative size for text"
+#: ../src/backend/filters/profile.cpp:1079
+msgid "Fixed Bin Num"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:723
-msgid "Abs. Coords"
+#: ../src/backend/filters/profile.cpp:1082
+msgid ""
+"If true, use a fixed number of bins for profile, otherwise use fixed step "
+"size"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:726
-msgid "Show labels using aboslute coo-ordinates"
+#: ../src/backend/filters/profile.cpp:1094
+msgid "Number of bins to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:191
-msgid "Sampling"
+#: ../src/backend/filters/profile.cpp:1100
+#: ../src/backend/filters/spectrumPlot.cpp:583
+msgid "Bin width"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:447
-msgid "By Count"
+#: ../src/backend/filters/profile.cpp:1106
+msgid "Size of each bin in profile"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:450
-msgid "Sample up to a fixed number of ions"
+#: ../src/backend/filters/profile.cpp:1115
+msgid "Convert bin counts into relative frequencies in each bin"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:456
-msgid "Per Species"
+#: ../src/backend/filters/profile.cpp:1119
+msgid "Min. events"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:460
-msgid "Use species specific (from ranging) sampling values"
+#: ../src/backend/filters/profile.cpp:1123
+msgid "Drop data that does not have this many events"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:489
-msgid "Sampling value for species"
+#: ../src/backend/filters/profile.cpp:1126
+msgid "Settings"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:505
-#: ../src/backend/filters/ionDownsample.cpp:529
-msgid "Sampling rates"
+#: ../src/backend/filters/profile.cpp:1148
+#: ../src/backend/filters/spectrumPlot.cpp:672
+msgid "Plot Type"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:513
-msgid "Output Count"
+#: ../src/backend/filters/profile.cpp:1151
+msgid "Visual style for plot"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:516
-msgid "Sample up to this value of points"
+#: ../src/backend/filters/profile.cpp:1162
+msgid "Colour of plot"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:521
-msgid "Out Fraction"
+#: ../src/backend/filters/profile.cpp:1178
+msgid "Err. Estimator"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:525
-msgid "Sample this fraction of points"
+#: ../src/backend/filters/profile.cpp:1181
+msgid "Method of estimating error associated with each bin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:84
-#: ../src/backend/filters/clusterAnalysis.cpp:1060
-msgid "Size Distribution"
+#: ../src/backend/filters/profile.cpp:1188
+msgid "Avg. Window"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:85
-msgid "Chemistry Distribution"
+#: ../src/backend/filters/profile.cpp:1191
+msgid "Number of bins to include in moving average filter"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:503
-msgid "No range data. Can't cluster."
+#: ../src/backend/filters/profile.cpp:1195
+msgid "Error analysis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:514
-msgid ""
-"No ranges selected for cluster \"core\". Cannot continue with clustering."
+#: ../src/backend/filters/transform.cpp:84
+msgid "Translate"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:523
-msgid ""
-"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
+#: ../src/backend/filters/transform.cpp:85
+msgid "Scale (isotropic)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:689
-msgid "Morphology Plot"
+#: ../src/backend/filters/transform.cpp:86
+msgid "Scale (anisotropic)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:690
-msgid "\\lambda_1:\\lambda_2 ratio"
+#: ../src/backend/filters/transform.cpp:87
+msgid "Rotate"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:691
-msgid "\\lambda_2:\\lambda_3 ratio"
+#: ../src/backend/filters/transform.cpp:88
+msgid "Value Shuffle"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:736
-msgid "No clusters had sufficient dimensionality to compute singular values"
+#: ../src/backend/filters/transform.cpp:89
+msgid "Spatial Noise"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:794
-msgid "Found :"
+#: ../src/backend/filters/transform.cpp:90
+msgid "Translate Value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:796
-msgid " clusters"
+#: ../src/backend/filters/transform.cpp:91
+msgid "Crop Value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:888
-msgid "Compositions (fractional, core+bulk)"
+#: ../src/backend/filters/transform.cpp:95
+msgid "Specify"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:890
-msgid "Compositions (fractional, core only)"
+#: ../src/backend/filters/transform.cpp:96
+msgid "Boundbox Centre"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:908
-msgid "Frequencies (core+bulk)"
+#: ../src/backend/filters/transform.cpp:97
+msgid "Mass Centre"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:939
-msgid "Core Link + Erode"
+#: ../src/backend/filters/transform.cpp:1080
+msgid "Shuffle"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:947
-msgid "Cluster algorithm mode"
+#: ../src/backend/filters/transform.cpp:1104
+msgid "Splice"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:958
-msgid "Core Classify"
+#: ../src/backend/filters/transform.cpp:1152
+msgid "Algorithm to use to transform point data"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:961
-msgid ""
-"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
+#: ../src/backend/filters/transform.cpp:1169
+msgid "Origin mode"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:967
-msgid "Core Classify Dist"
+#: ../src/backend/filters/transform.cpp:1172
+msgid "Select how transform origin is computed"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:970
-msgid "Restrict only atoms by distance to be cluster sources"
+#: ../src/backend/filters/transform.cpp:1177
+msgid "Show marker"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:975
-msgid "Classify Knn Max"
+#: ../src/backend/filters/transform.cpp:1181
+msgid "Display an interactive object to set transform origin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:978
-msgid ""
-"Require that the kth NN (this number) is within the classify distance, to be "
-"a cluster source"
+#: ../src/backend/filters/transform.cpp:1183
+msgid "Display a small marker to denote transform origin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:984
-msgid "Core Link Dist"
+#: ../src/backend/filters/transform.cpp:1199
+msgid "Translation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:987
-msgid "Distance between clusters to allow linking"
+#: ../src/backend/filters/transform.cpp:1202
+msgid "Translation vector for transform"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:992
-msgid "Bulk Link"
+#: ../src/backend/filters/transform.cpp:1214
+msgid "Offset"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:995
-#: ../src/backend/filters/clusterAnalysis.cpp:1012
-msgid "Enable  linking of non-cluster species - eg for composition analysis "
+#: ../src/backend/filters/transform.cpp:1218
+msgid "Scalar to use to offset each point's associated value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1002
-msgid "Bulk Link (Envelope) Dist"
+#: ../src/backend/filters/transform.cpp:1235
+#: ../src/backend/filters/transform.cpp:1262
+msgid "Origin of scale transform"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1005
-msgid ""
-"Distance from core points that form cluster that is used to grab surrounding "
-"bulk points"
+#: ../src/backend/filters/transform.cpp:1242
+#: ../src/backend/filters/transform.cpp:1269
+msgid "Scale Fact."
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1009
-msgid "Erosion"
+#: ../src/backend/filters/transform.cpp:1245
+#: ../src/backend/filters/transform.cpp:1272
+msgid "Enlargement factor for scaling around origin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1018
-msgid "Erode Dist"
+#: ../src/backend/filters/transform.cpp:1288
+msgid "Origin of rotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1021
-msgid ""
-"Distance from unclustered material in which bulk points are eroded from "
-"cluster"
+#: ../src/backend/filters/transform.cpp:1296
+msgid "Axis around which to revolve"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1028
-msgid "Clustering Params"
+#: ../src/backend/filters/transform.cpp:1301
+msgid "Angle (deg)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1033
-msgid "Size Cropping"
+#: ../src/backend/filters/transform.cpp:1304
+msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1036
-msgid "Remove clusters based upon size distribution"
+#: ../src/backend/filters/transform.cpp:1321
+msgid "Noise Type"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1043
-msgid "Min Size"
+#: ../src/backend/filters/transform.cpp:1324
+msgid "Method to use to degrade point data"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1046
-msgid "Remove clusters below this size"
+#: ../src/backend/filters/transform.cpp:1331
+msgid "Noise level"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1051
-msgid "Max Size"
+#: ../src/backend/filters/transform.cpp:1333
+msgid "Standard dev."
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1054
-msgid "Remove clusters above this size"
+#: ../src/backend/filters/transform.cpp:1341
+msgid "Amplitude of noise"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1063
-msgid "Show number of clusters as a function of cluster size"
+#: ../src/backend/filters/transform.cpp:1355
+msgid "Min Value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1069
-msgid "Log Scale"
+#: ../src/backend/filters/transform.cpp:1359
+msgid "Minimum value to use for crop"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1072
-msgid "Use logarithmic scale for size distribution"
+#: ../src/backend/filters/transform.cpp:1363
+msgid "Max Value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1079
-msgid "Morphology Dist."
+#: ../src/backend/filters/transform.cpp:1367
+msgid "Maximum value to use for crop"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1082
-msgid "Create a plot showing cluster aspect ratio"
+#: ../src/backend/filters/transform.cpp:1376
+msgid "Transform Params"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1088
-msgid "Cluster Id"
+#: ../src/backend/filters/transform.cpp:1745
+msgid "White"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1091
-msgid "Assign cluster output a unique per-cluster value (id)."
+#: ../src/backend/filters/transform.cpp:1747
+msgid "Gaussian"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1098
-msgid "Chemistry Dist."
+#: ../src/backend/filters/boundingBox.cpp:64
+msgid "Box only"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1101
-msgid "Create a plot showing chemistry for each cluster size"
+#: ../src/backend/filters/boundingBox.cpp:65
+msgid "Tick"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1111
-msgid "Convert cluster counts to composition"
+#: ../src/backend/filters/boundingBox.cpp:66
+msgid "Dimension"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1117
-msgid "Postprocess"
+#: ../src/backend/filters/boundingBox.cpp:572
+msgid "If true, show box, otherwise hide box"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1136
-msgid "If selected, use as \"core\" ion type (can make clusters)"
+#: ../src/backend/filters/boundingBox.cpp:585
+msgid "Style"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1141
-msgid "Core Ranges"
+#: ../src/backend/filters/boundingBox.cpp:588
+msgid "Box display mode"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1147
-msgid "Enable/Disable All"
+#: ../src/backend/filters/boundingBox.cpp:591
+msgid "Display mode"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1152
-msgid "Enable/disable all ions"
+#: ../src/backend/filters/boundingBox.cpp:600
+msgid "Fixed Tick Num"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1165
+#: ../src/backend/filters/boundingBox.cpp:604
 msgid ""
-"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
+"If true, evenly use specified number of ticks. Otherwise, use distance to "
+"determine tick count"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1170
-msgid "Bulk Ranges"
+#: ../src/backend/filters/boundingBox.cpp:612
+msgid "Num X"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1186
-msgid "Max. Sep + Erode"
+#: ../src/backend/filters/boundingBox.cpp:615
+msgid "Tick count in X direction"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1939
-msgid " --------------------------- Parameter selection notice ------------- "
+#: ../src/backend/filters/boundingBox.cpp:620
+msgid "Num Y"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1940
-msgid "You have specified a bulk distance larger than half your link distance."
+#: ../src/backend/filters/boundingBox.cpp:623
+msgid "Tick count in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1941
-msgid ""
-"You can do this; thats OK, but the output is no longer independent of the "
-"computational process;"
+#: ../src/backend/filters/boundingBox.cpp:628
+msgid "Num Z"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1942
-msgid ""
-"This will be a problem in the case where two or more clusters can equally "
-"lay claim to a \"bulk\" ion. "
+#: ../src/backend/filters/boundingBox.cpp:631
+msgid "Tick count in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1943
-msgid ""
-" If your inter-cluster distance is sufficiently large (larger than your bulk "
-"linking distance), then you can get away with this."
+#: ../src/backend/filters/boundingBox.cpp:637
+msgid "Spacing X"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1944
-msgid ""
-" In theory it is possible to \"join\" the clusters, but this has not been "
-"implemented for speed reasons."
+#: ../src/backend/filters/boundingBox.cpp:641
+msgid "Distance between ticks on X axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1945
-msgid ""
-"If you want this, please contact the author, or just use the source to add "
-"this in yourself."
+#: ../src/backend/filters/boundingBox.cpp:645
+msgid "Spacing Y"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1946
-msgid "---------------------------------------------------------------------- "
+#: ../src/backend/filters/boundingBox.cpp:649
+msgid "Distance between ticks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1975
-msgid "Build Core"
+#: ../src/backend/filters/boundingBox.cpp:653
+msgid "Spacing Z"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2003
-msgid "Core"
+#: ../src/backend/filters/boundingBox.cpp:657
+msgid "Distance between ticks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2126
-msgid "Bulk"
+#: ../src/backend/filters/boundingBox.cpp:665
+msgid "Ticks X"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2204
-msgid "Erode"
+#: ../src/backend/filters/boundingBox.cpp:669
+msgid "Display tick marks on X axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2282
-msgid "Re-Collate"
+#: ../src/backend/filters/boundingBox.cpp:673
+msgid "Ticks Y"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2337
-msgid "Classify Core"
+#: ../src/backend/filters/boundingBox.cpp:677
+msgid "Display tick marks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2428
-msgid "Build Bulk"
+#: ../src/backend/filters/boundingBox.cpp:681
+msgid "Ticks Z"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2676
-#: ../src/backend/filters/clusterAnalysis.cpp:2879
-msgid "Cluster Size"
+#: ../src/backend/filters/boundingBox.cpp:685
+msgid "Display tick marks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2677
-#: ../src/backend/filters/clusterAnalysis.cpp:2883
-msgid "Frequency"
+#: ../src/backend/filters/boundingBox.cpp:688
+msgid "Tick marks"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2881
-msgid "Composition"
+#: ../src/backend/filters/boundingBox.cpp:695
+msgid "Box Colour"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:123
-msgid "Local Density"
+#: ../src/backend/filters/boundingBox.cpp:699
+msgid "Colour of the bounding box"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:124
-msgid "Density Filtering"
+#: ../src/backend/filters/boundingBox.cpp:704
+msgid "Line thickness"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:125
-msgid "Radial Distribution"
+#: ../src/backend/filters/boundingBox.cpp:708
+msgid "Thickness of the lines used to draw the box"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:126
-msgid "Axial Distribution"
+#: ../src/backend/filters/boundingBox.cpp:716
+#: ../src/backend/filters/annotation.cpp:856
+msgid "Font Size"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:127
-msgid "Binomial Distribution"
+#: ../src/backend/filters/boundingBox.cpp:719
+msgid "Relative size for text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:128
-msgid "Point Em/Replacement"
+#: ../src/backend/filters/boundingBox.cpp:724
+msgid "Abs. Coords"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:129
-msgid "Local Concentration"
+#: ../src/backend/filters/boundingBox.cpp:727
+msgid "Show labels using aboslute coo-ordinates"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:133
-msgid "Neighbour Count"
+#: ../src/backend/filters/annotation.cpp:73
+msgid "Arrow"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:643
-msgid "Load"
+#: ../src/backend/filters/annotation.cpp:74
+msgid "Text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:660
-#: ../src/backend/filters/spatialAnalysis.cpp:2330
-#: ../src/backend/filters/spatialAnalysis.cpp:2383
-#: ../src/backend/filters/spatialAnalysis.cpp:2733
-#: ../src/backend/filters/spatialAnalysis.cpp:3022
-#: ../src/backend/filters/spatialAnalysis.cpp:3540
-#: ../src/backend/filters/spatialAnalysis.cpp:4184
-msgid "Build"
+#: ../src/backend/filters/annotation.cpp:75
+msgid "Arrow+Text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:705
-#: ../src/backend/filters/spatialAnalysis.cpp:3558
-#: ../src/backend/filters/spatialAnalysis.cpp:4073
-#: ../src/backend/filters/spatialAnalysis.cpp:4201
-msgid "Compute"
+#: ../src/backend/filters/annotation.cpp:76
+msgid "Angle"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:803
-msgid "Spatial analysis algorithm to use"
+#: ../src/backend/filters/annotation.cpp:77
+msgid "Ruler"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:827
-#: ../src/backend/filters/spatialAnalysis.cpp:878
-msgid "Stop Mode"
+#: ../src/backend/filters/annotation.cpp:177 ../src/backend/filter.cpp:55
+msgid "Draw"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:830
-msgid "Method to use to terminate algorithm when examining each point"
+#: ../src/backend/filters/annotation.cpp:532
+msgid "Enable"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:837
-msgid "NN Max"
+#: ../src/backend/filters/annotation.cpp:535
+msgid "Enable/disable annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:840
-msgid "Maximum number of neighbours to examine"
+#: ../src/backend/filters/annotation.cpp:556
+msgid "Type or style of annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:847
-msgid "Normalise bins"
+#: ../src/backend/filters/annotation.cpp:572
+#: ../src/backend/filters/annotation.cpp:676
+msgid "Text of annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:850
-msgid ""
-"Normalise counts by binwidth. Needed when comparing NN histograms against "
-"one another"
+#: ../src/backend/filters/annotation.cpp:580
+msgid "Position of annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:856
-msgid "Show Random"
+#: ../src/backend/filters/annotation.cpp:584
+#: ../src/backend/filters/annotation.cpp:691
+#: ../src/backend/filters/annotation.cpp:750
+#: ../src/backend/filters/annotation.cpp:839
+msgid "Up dir"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:859
-msgid "Show a fitted (density matched) theoretical distribution"
+#: ../src/backend/filters/annotation.cpp:588
+#: ../src/backend/filters/annotation.cpp:843
+msgid "Vector for up direction of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:870
-msgid "Dist Max"
+#: ../src/backend/filters/annotation.cpp:592
+#: ../src/backend/filters/annotation.cpp:698
+#: ../src/backend/filters/annotation.cpp:742
+#: ../src/backend/filters/annotation.cpp:847
+msgid "Across dir"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:873
-msgid "Maximum distance from each point for search"
+#: ../src/backend/filters/annotation.cpp:596
+#: ../src/backend/filters/annotation.cpp:851
+msgid "Reading direction for annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:890
-#: ../src/backend/filters/spatialAnalysis.cpp:1024
-msgid "Number of bins for output 1D RDF plot"
+#: ../src/backend/filters/annotation.cpp:601
+#: ../src/backend/filters/annotation.cpp:683
+#: ../src/backend/filters/annotation.cpp:777
+msgid "Text size"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:896
-msgid "Surface Remove"
+#: ../src/backend/filters/annotation.cpp:605
+#: ../src/backend/filters/annotation.cpp:687
+#: ../src/backend/filters/annotation.cpp:859
+msgid "Relative size of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:899
-msgid ""
-"Exclude surface as part of source to minimise bias in RDF (at cost of "
-"increased noise)"
+#: ../src/backend/filters/annotation.cpp:617
+#: ../src/backend/filters/annotation.cpp:658
+msgid "3D position for tail of arrow"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:906
-msgid "Remove Dist"
+#: ../src/backend/filters/annotation.cpp:625
+#: ../src/backend/filters/annotation.cpp:667
+msgid "3D Position to which arrow points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:909
-msgid "Minimum distance to remove from surface"
+#: ../src/backend/filters/annotation.cpp:628
+#: ../src/backend/filters/annotation.cpp:738
+msgid "Positioning"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:917
-#: ../src/backend/filters/spatialAnalysis.cpp:1029
-msgid "Plot colour "
+#: ../src/backend/filters/annotation.cpp:633
+#: ../src/backend/filters/annotation.cpp:705
+msgid "Tip radius"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:920
-#: ../src/backend/filters/spatialAnalysis.cpp:1032
-msgid "Colour of output plot"
+#: ../src/backend/filters/annotation.cpp:637
+msgid "Size of the arrow head"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:924
-#: ../src/backend/filters/spatialAnalysis.cpp:1010
-#: ../src/backend/filters/spatialAnalysis.cpp:1015
-#: ../src/backend/filters/spatialAnalysis.cpp:1064
-#: ../src/backend/filters/spatialAnalysis.cpp:1103
-msgid "Alg. Params."
+#: ../src/backend/filters/annotation.cpp:641
+msgid "Line size"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:937
-#: ../src/backend/filters/spatialAnalysis.cpp:1207
-msgid "Source"
+#: ../src/backend/filters/annotation.cpp:645
+msgid "Thickness of line used to draw arrow stem"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:940
-msgid "Ions to use for initiating RDF search"
+#: ../src/backend/filters/annotation.cpp:679
+msgid "Options"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:953
-#: ../src/backend/filters/spatialAnalysis.cpp:1223
-#: ../src/backend/filters/spatialAnalysis.cpp:1249
-msgid "Enable/disable ion as source"
+#: ../src/backend/filters/annotation.cpp:715
+msgid "Position A"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:958
-#: ../src/backend/filters/spatialAnalysis.cpp:1228
-msgid "Source Ion"
+#: ../src/backend/filters/annotation.cpp:719
+msgid "Location of first non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:965 ../src/gl/cameras.cpp:611
-msgid "Target"
+#: ../src/backend/filters/annotation.cpp:723
+msgid "Origin "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:968
-#: ../src/backend/filters/spatialAnalysis.cpp:1264
-msgid "Enable/disable all ions as target"
+#: ../src/backend/filters/annotation.cpp:727
+msgid "Location of central vertex"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:980
-#: ../src/backend/filters/spatialAnalysis.cpp:1276
-msgid "Enable/disable this ion as target"
+#: ../src/backend/filters/annotation.cpp:731
+msgid "Position B"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:984
-msgid "Target Ion"
+#: ../src/backend/filters/annotation.cpp:735
+msgid "Location of second non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:994
-msgid "Cutoff"
+#: ../src/backend/filters/annotation.cpp:746
+msgid "Reading direction for angle text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:997
-msgid "Remove points with local density above/below this value"
+#: ../src/backend/filters/annotation.cpp:751
+msgid "Vector for up direction of angle text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1003
-msgid "Retain Upper"
+#: ../src/backend/filters/annotation.cpp:759
+msgid "Reflexive"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1006
-msgid "Retain either points with density above (enabled) or below cutoff"
+#: ../src/backend/filters/annotation.cpp:762
+msgid "Measure interor (enabled) or exterior angle (disabled)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1052
-msgid "Vector between centre and end of cylinder"
+#: ../src/backend/filters/annotation.cpp:767
+msgid "Show Angle"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1071
-#: ../src/backend/filters/spatialAnalysis.cpp:3827
-#: ../src/backend/filters/spatialAnalysis.cpp:3886
-msgid "Block size"
+#: ../src/backend/filters/annotation.cpp:771
+msgid "Display angle text (when enabled)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1074
-msgid "Number of ions to use per block"
+#: ../src/backend/filters/annotation.cpp:781
+msgid "Size of angle text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1081
-msgid "Max Block Aspect"
+#: ../src/backend/filters/annotation.cpp:799
+msgid "Digit format"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1084
+#: ../src/backend/filters/annotation.cpp:803
 msgid ""
-"Maximum allowable block aspect ratio. Blocks above this aspect are "
-"discarded. Setting too high decreases correlation strength. Too low causes "
-"loss of statistical power."
+"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
+"gives 12.34"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1095
-msgid "Extrusion Direction"
+#: ../src/backend/filters/annotation.cpp:809
+#: ../src/backend/filters/annotation.cpp:894
+msgid "Sphere size"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1098
-msgid "Direction in which blocks are extended during construction."
+#: ../src/backend/filters/annotation.cpp:813
+#: ../src/backend/filters/annotation.cpp:898
+msgid "Marker sphere size for manipulating tool"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1107
-msgid "Plot Counts"
+#: ../src/backend/filters/annotation.cpp:827
+msgid "Ruler beginning 3D location"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1110
-msgid "Show the counts in the binomial histogram"
+#: ../src/backend/filters/annotation.cpp:835
+msgid "Ruler finish 3D location"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1119
-msgid ""
-"Normalise the counts in the binomial histogram to a probability density "
-"function"
+#: ../src/backend/filters/annotation.cpp:865
+msgid "Fixed ticks"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1133
-msgid "Display Grid"
+#: ../src/backend/filters/annotation.cpp:868
+msgid ""
+"Use fixed (enabled) number of text markers, or one every fixed distance "
+"(disabled)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1142
-msgid "View Options"
+#: ../src/backend/filters/annotation.cpp:875
+msgid "Num Ticks"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1148
-msgid "Data File"
+#: ../src/backend/filters/annotation.cpp:878
+msgid "Number of tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1152
-msgid "Pos file of points to subtract/replace/etc"
+#: ../src/backend/filters/annotation.cpp:885
+msgid "Tick Spacing"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1157
-msgid "Match Tol."
+#: ../src/backend/filters/annotation.cpp:888
+msgid "Distance between tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1160
-msgid "Tolerance to allow for matching"
+#: ../src/backend/filters/annotation.cpp:912
+msgid "Colour for ruler and ticks"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1176
-msgid "Replacment condition"
+#: ../src/backend/filters/ionDownsample.cpp:192
+msgid "Sampling"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1182
-msgid "Replace value"
+#: ../src/backend/filters/ionDownsample.cpp:448
+msgid "By Count"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1185
-msgid "Use value data from file when replacing ions"
+#: ../src/backend/filters/ionDownsample.cpp:451
+msgid "Sample up to a fixed number of ions"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1190
-msgid "Replacement"
+#: ../src/backend/filters/ionDownsample.cpp:457
+msgid "Per Species"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1210
-msgid "Enable/disable all ions as source"
+#: ../src/backend/filters/ionDownsample.cpp:461
+msgid "Use species specific (from ranging) sampling values"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1236
-msgid "Ions to use as Numerator for conc. calculation"
+#: ../src/backend/filters/ionDownsample.cpp:491
+msgid "Sampling value for species"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1785
-msgid "Spatial analysis aborted by user"
+#: ../src/backend/filters/ionDownsample.cpp:498
+#: ../src/backend/filters/ionInfo.cpp:317
+msgid "Unranged"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1786
-msgid "Insufficient memory to complete analysis"
+#: ../src/backend/filters/ionDownsample.cpp:507
+#: ../src/backend/filters/ionDownsample.cpp:531
+msgid "Sampling rates"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1787
-msgid "Required range data not present"
+#: ../src/backend/filters/ionDownsample.cpp:515
+msgid "Output Count"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1788
-msgid "Insufficient memory for binomial. Reduce input size?"
+#: ../src/backend/filters/ionDownsample.cpp:518
+msgid "Sample up to this value of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1789
-msgid "Insufficient points to continue"
+#: ../src/backend/filters/ionDownsample.cpp:523
+msgid "Out Fraction"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1790
-msgid "Unable to load file"
+#: ../src/backend/filters/ionDownsample.cpp:527
+msgid "Sample this fraction of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2437
-#: ../src/backend/filters/spatialAnalysis.cpp:2756
-#: ../src/backend/filters/spatialAnalysis.cpp:3046
-msgid "Analyse"
+#: ../src/backend/filters/ionInfo.cpp:37
+msgid "Rectilinear"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2516
-#: ../src/backend/filters/spatialAnalysis.cpp:2606
-#: ../src/backend/filters/spatialAnalysis.cpp:2672
-msgid "Radial Distance"
+#: ../src/backend/filters/ionInfo.cpp:38
+msgid "Convex hull"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2518
-#: ../src/backend/filters/spatialAnalysis.cpp:2611
-msgid "Count/Distance"
+#: ../src/backend/filters/ionInfo.cpp:200
+msgid "No ions"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2523
-#: ../src/backend/filters/spatialAnalysis.cpp:2616
-msgid "NN Freq."
+#: ../src/backend/filters/ionInfo.cpp:226
+#: ../src/backend/filters/spectrumPlot.cpp:433
+msgid ""
+"Background fit failed - input data was considered ill formed (gauss-test)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2663
-msgid "Warning, "
+#: ../src/backend/filters/ionInfo.cpp:227
+msgid "Following data has not been corrected"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2664
-msgid ""
-" points were unable to find neighbour points that exceeded the search "
-"radius, and thus terminated prematurely"
+#: ../src/backend/filters/ionInfo.cpp:279
+msgid "--Counts--"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2674
-msgid " RDF"
+#: ../src/backend/filters/ionInfo.cpp:289
+msgid "Total Ranged\t"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2952
-#: ../src/backend/filters/spatialAnalysis.cpp:3251
-msgid "Number Density (\\#/Vol^3)"
+#: ../src/backend/filters/ionInfo.cpp:294
+msgid "Total (incl. unranged)\t"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2977
-#: ../src/backend/filters/spatialAnalysis.cpp:3271
-msgid "Warning,"
+#: ../src/backend/filters/ionInfo.cpp:307
+msgid "n/a"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2978
-#: ../src/backend/filters/spatialAnalysis.cpp:3272
-msgid " points were un-analysable. These have been dropped"
+#: ../src/backend/filters/ionInfo.cpp:330
+msgid "Number of points : "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3000
-#: ../src/backend/filters/spatialAnalysis.cpp:3294
-msgid "And so on..."
+#: ../src/backend/filters/ionInfo.cpp:359
+msgid "Rectilinear Bounds : "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3376
-msgid "Extract"
+#: ../src/backend/filters/ionInfo.cpp:364
+msgid "Volume (len^3): "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3449
-msgid "Reduce"
+#: ../src/backend/filters/ionInfo.cpp:381
+msgid "Convex Volume (len^3): "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3604
-msgid "Insufficient points to complete analysis"
+#: ../src/backend/filters/ionInfo.cpp:384
+msgid "Unable to compute volume"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3627
-msgid "Axial Distance"
+#: ../src/backend/filters/ionInfo.cpp:413
+msgid "Ranged Density (pts/vol):"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3629
-msgid " 1D Dist. Func."
+#: ../src/backend/filters/ionInfo.cpp:418
+msgid "Total Density (pts/vol):"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3698
-msgid "Binomial"
+#: ../src/backend/filters/ionInfo.cpp:448
+msgid "Compositions"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3829
-#: ../src/backend/filters/spatialAnalysis.cpp:3888
-msgid "Rel. Frequency"
+#: ../src/backend/filters/ionInfo.cpp:449
+msgid "Display compositional data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3966
-msgid "Build Numerator"
+#: ../src/backend/filters/ionInfo.cpp:453
+msgid "Counts"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3980
-msgid "Build Denominator"
+#: ../src/backend/filters/ionInfo.cpp:454
+msgid "Display count data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:257
-msgid "Colour Map"
+#: ../src/backend/filters/ionInfo.cpp:461
+msgid "Ion data"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:265
-msgid "Reverse map"
+#: ../src/backend/filters/ionInfo.cpp:469
+msgid "Normalise count data"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:266
-msgid "Reverse the colour scale"
+#: ../src/backend/filters/ionInfo.cpp:533
+msgid "Volume"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:279
-msgid "Opacity"
+#: ../src/backend/filters/ionInfo.cpp:536
+msgid "Compute volume for point data"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:286
-msgid "Num Colours"
+#: ../src/backend/filters/ionInfo.cpp:552
+msgid "Select volume counting technique"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:288
-msgid "Number of unique colours to use in colour map"
+#: ../src/backend/filters/ionInfo.cpp:565
+msgid "Volume data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:61
+#: ../src/backend/filters/dataLoad.cpp:64
 msgid "Auto"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:62
+#: ../src/backend/filters/dataLoad.cpp:65
 msgid "Little"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:63
+#: ../src/backend/filters/dataLoad.cpp:66
 msgid "Big"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:66
+#: ../src/backend/filters/dataLoad.cpp:69
 msgid "POS Data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:67
+#: ../src/backend/filters/dataLoad.cpp:70
 msgid "Text Data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:68
+#: ../src/backend/filters/dataLoad.cpp:71
 msgid "ATO Data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:248
+#: ../src/backend/filters/dataLoad.cpp:72
+msgid "Tapsim Data"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:73
+msgid "3Dap/Posap OPS Data"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:266
 msgid " does not exist"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:275
+#: ../src/backend/filters/dataLoad.cpp:293
 msgid "Reading File"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:290
-#: ../src/backend/filters/dataLoad.cpp:303
-#: ../src/backend/filters/dataLoad.cpp:347
-#: ../src/backend/filters/dataLoad.cpp:358
-#: ../src/backend/filters/dataLoad.cpp:418
+#: ../src/backend/filters/dataLoad.cpp:308
+#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/backend/filters/dataLoad.cpp:365
+#: ../src/backend/filters/dataLoad.cpp:376
+#: ../src/backend/filters/dataLoad.cpp:436
+#: ../src/backend/filters/dataLoad.cpp:458
+#: ../src/backend/filters/dataLoad.cpp:476
 msgid "Error loading file: "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:320
+#: ../src/backend/filters/dataLoad.cpp:338
 msgid "Sampling is active, loaded "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/backend/filters/dataLoad.cpp:339
 msgid " available."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:329
+#: ../src/backend/filters/dataLoad.cpp:347
 msgid "Loaded entire dataset, "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:329
-#: ../src/backend/filters/dataLoad.cpp:428
+#: ../src/backend/filters/dataLoad.cpp:347
+#: ../src/backend/filters/dataLoad.cpp:446
+#: ../src/backend/filters/dataLoad.cpp:468
+#: ../src/backend/filters/dataLoad.cpp:486
 msgid " points."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:373
+#: ../src/backend/filters/dataLoad.cpp:391
 msgid ""
 "Data file contained incorrect number of columns -- should be 3 or 4, was "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:427
+#: ../src/backend/filters/dataLoad.cpp:445
+#: ../src/backend/filters/dataLoad.cpp:467
+#: ../src/backend/filters/dataLoad.cpp:485
 msgid "Loaded dataset, "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:460
+#: ../src/backend/filters/dataLoad.cpp:517
 msgid ""
 "Warning:One or more bounds of the loaded data approaches the limits of "
 "numerical stability for the internal data type(magnitude too large). "
 "Consider rescaling data before loading"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:485
+#: ../src/backend/filters/dataLoad.cpp:541
+#: ../src/backend/filters/dataLoad.cpp:562
+#: ../src/backend/filters/rangeFile.cpp:561
+#: ../src/backend/filters/rangeFile.cpp:581
+msgid "File"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:542
 msgid "File from which to load data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:488
+#: ../src/backend/filters/dataLoad.cpp:545
 msgid ""
-"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)|*.xml;*.pos;*.txt;*.csv;*."
-"ato|All Files|*"
+"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)|*.xml;*.pos;*.txt;*."
+"csv;*.ato;*.ops|All Files|*"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:498
+#: ../src/backend/filters/dataLoad.cpp:555
 msgid "File type"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:500
+#: ../src/backend/filters/dataLoad.cpp:557
 msgid "Type of file to be loaded"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:515
+#: ../src/backend/filters/dataLoad.cpp:572
 msgid "Entries per point"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:516
-msgid "Number of decimal values in file per 3D point (normally 4)"
+#: ../src/backend/filters/dataLoad.cpp:573
+msgid "Number of decimal values in file per 3D point (normally 4)"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:590
+msgid "Relative offset of each entry in file for point's X position"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:598
+msgid "Relative offset of each entry in file for point's Y position"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:606
+msgid "Relative offset of each entry in file for point's Z position"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:614
+msgid ""
+"Relative offset of each entry in file to use for scalar value of 3D point"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:535
+#: ../src/backend/filters/dataLoad.cpp:630
 msgid "File \"Endianness\""
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:536
+#: ../src/backend/filters/dataLoad.cpp:631
 msgid "On-disk data storage format. If file won't load, just try each"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:561
-msgid "Relative offset of each entry in file for point's X position"
+#: ../src/backend/filters/dataLoad.cpp:643
+msgid "Recon. Width"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:569
-msgid "Relative offset of each entry in file for point's Y position"
+#: ../src/backend/filters/dataLoad.cpp:644
+msgid ""
+"Width of box onto which to place reconstructed detector hits (similar to tip "
+"radius)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:577
-msgid "Relative offset of each entry in file for point's Z position"
+#: ../src/backend/filters/dataLoad.cpp:653
+msgid "Ion Volume"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:654
+msgid "Effective volume of an ion (incl. free packing volume)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:585
+#: ../src/backend/filters/dataLoad.cpp:662
+msgid "Det. Efficiency"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:663
 msgid ""
-"Relative offset of each entry in file to use for scalar value of 3D point"
+"Effiency of system (ions evaporated towards detector/ions detected by "
+"detector)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:588
+#: ../src/backend/filters/dataLoad.cpp:677
 msgid "Value Label"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:592
+#: ../src/backend/filters/dataLoad.cpp:681
 msgid "Name for the scalar value associated with each point"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:595
+#: ../src/backend/filters/dataLoad.cpp:684
 msgid "Format params."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:601
+#: ../src/backend/filters/dataLoad.cpp:690
 msgid "Enabled"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:605
+#: ../src/backend/filters/dataLoad.cpp:694
 msgid "Load this file?"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:616
+#: ../src/backend/filters/dataLoad.cpp:705
 msgid "Sample data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:619
+#: ../src/backend/filters/dataLoad.cpp:708
 msgid ""
 "Perform random selection on file contents, instead of loading entire file"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:626
+#: ../src/backend/filters/dataLoad.cpp:715
 msgid "Load Limit (MB)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:629
+#: ../src/backend/filters/dataLoad.cpp:718
 msgid "Limit for size of data to load"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:636
+#: ../src/backend/filters/dataLoad.cpp:725
 msgid "Monitor"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:640
+#: ../src/backend/filters/dataLoad.cpp:729
 msgid ""
 "Watch file timestamp to track changes to file contents from other programs"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:644
+#: ../src/backend/filters/dataLoad.cpp:733
 msgid "Load params."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:651
+#: ../src/backend/filters/dataLoad.cpp:740
 msgid "Default colour "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:654
+#: ../src/backend/filters/dataLoad.cpp:743
 msgid "Default colour for points, if not overridden by other filters"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:659
+#: ../src/backend/filters/dataLoad.cpp:748
 msgid "Draw Size"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:662
+#: ../src/backend/filters/dataLoad.cpp:751
 msgid "Default size for points, if not overridden by other filters"
 msgstr ""
 
@@ -4789,516 +4742,714 @@ msgstr ""
 msgid "Max in limit"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:79
-msgid "Probability"
-msgstr ""
-
-#: ../src/backend/filters/spectrumPlot.cpp:170
+#: ../src/backend/filters/spectrumPlot.cpp:171
 msgid "Extrema"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:219
+#: ../src/backend/filters/spectrumPlot.cpp:220
 msgid "count"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:304
+#: ../src/backend/filters/spectrumPlot.cpp:305
 msgid "Mixed data"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:445
+#: ../src/backend/filters/spectrumPlot.cpp:446
 msgid "Background:"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:504
+#: ../src/backend/filters/spectrumPlot.cpp:505
 msgid "Relative "
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:507
+#: ../src/backend/filters/spectrumPlot.cpp:508
 msgid "Probability Density"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:584
+#: ../src/backend/filters/spectrumPlot.cpp:587
 msgid "Step size for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:589
+#: ../src/backend/filters/spectrumPlot.cpp:592
 msgid "Auto Min/max"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:593
+#: ../src/backend/filters/spectrumPlot.cpp:596
 msgid "Automatically compute spectrum upper and lower bound"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:598
+#: ../src/backend/filters/spectrumPlot.cpp:601
 msgid "Min"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:601
+#: ../src/backend/filters/spectrumPlot.cpp:604
 msgid "Starting position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:606
+#: ../src/backend/filters/spectrumPlot.cpp:609
 msgid "Max"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:609
+#: ../src/backend/filters/spectrumPlot.cpp:612
 msgid "Ending position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:617
+#: ../src/backend/filters/spectrumPlot.cpp:620
 msgid "Logarithmic"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:620
+#: ../src/backend/filters/spectrumPlot.cpp:623
 msgid "Convert the plot to logarithmic mode"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:632
+#: ../src/backend/filters/spectrumPlot.cpp:635
 msgid "Normalisation"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:635
+#: ../src/backend/filters/spectrumPlot.cpp:638
 msgid "Rescale the plot height, to make inter-spectrum comparisons easier"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:642
+#: ../src/backend/filters/spectrumPlot.cpp:645
 msgid "Lower Bound"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:646
+#: ../src/backend/filters/spectrumPlot.cpp:649
 msgid "Do not use data below this x-value for normalisation"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:650
+#: ../src/backend/filters/spectrumPlot.cpp:653
 msgid "Upper Bound"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:654
+#: ../src/backend/filters/spectrumPlot.cpp:657
 msgid "Do not use data above this x-value for normalisation"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:672
+#: ../src/backend/filters/spectrumPlot.cpp:675
 msgid "Visual style of plot"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:679
+#: ../src/backend/filters/spectrumPlot.cpp:682
 msgid "Colour of plotted spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:694
+#: ../src/backend/filters/spectrumPlot.cpp:697
 msgid "Model"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:697
+#: ../src/backend/filters/spectrumPlot.cpp:700
 msgid "Fitting method to use"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:708
+#: ../src/backend/filters/spectrumPlot.cpp:711
 msgid "Fit Start"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:709
+#: ../src/backend/filters/spectrumPlot.cpp:712
 msgid "Start mass value for fitting background"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:715
+#: ../src/backend/filters/spectrumPlot.cpp:718
 msgid "Fit End"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:716
+#: ../src/backend/filters/spectrumPlot.cpp:719
 msgid "End mass value for fitting background"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:729
+#: ../src/backend/filters/spectrumPlot.cpp:732
 msgid "Corr. Only"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:730
+#: ../src/backend/filters/spectrumPlot.cpp:733
 msgid "Only show corrected spectrum, not fit"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:738
+#: ../src/backend/filters/spectrumPlot.cpp:741
 msgid "Background Mode"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:187
-msgid "Config file present, but is not valid (root node test)"
+#: ../src/backend/filters/rangeFile.cpp:121
+#: ../src/backend/filters/rangeFile.h:96
+msgid "Ranging"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:228
-msgid "Unable to interpret recent file entry"
+#: ../src/backend/filters/rangeFile.cpp:564
+msgid "File to use for range data"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:268
-msgid "Unable to determine filter type in defaults listing."
+#: ../src/backend/filters/rangeFile.cpp:574
+msgid "Drop unranged"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:605
-msgid "Online access for non win32/apple platforms is intentionally disabled, "
+#: ../src/backend/filters/rangeFile.cpp:576
+msgid "Remove unranged points when generating output"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:606
-msgid ""
-"regardless of the settings you use here. Use your package manager to keep up-"
-"to-date"
+#: ../src/backend/filters/rangeFile.cpp:586
+msgid "Legend"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:223
-msgid ""
-"Parent filter has no output, but filter requires input -- there is no point "
-"in placing a child filter here."
+#: ../src/backend/filters/rangeFile.cpp:588
+msgid "Display colour legend for enabled ions"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:224
-msgid "Leaf-only filter with child"
+#: ../src/backend/filters/rangeFile.cpp:592
+msgid "View"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:608
+msgid "All Ions"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:234
+#: ../src/backend/filters/rangeFile.cpp:609
+msgid "Enable/disable all ions at once"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:617
+msgid "Species"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:624
+msgid "IonID "
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:625
+msgid "Enable/disable specified ion"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:635
+msgid "Active Ion "
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:637
+msgid "If true, ion is used in output"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:647
+msgid "Colour "
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:651
+msgid "Colour used to represent ion"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:674
+msgid "All Ranges"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:675
+msgid "Enable/disable all ranges"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:690
+msgid "Active Rng "
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:693
 msgid ""
-"Parent filters' output will be blocked by child, without use. Parent results "
-"will be dropped."
+"Enable/disable specified range (ion must also be enabled to activiate range)"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:235
-#: ../src/backend/filtertreeAnalyse.cpp:249
-msgid "Bad parent->child pair"
+#: ../src/backend/filters/rangeFile.cpp:697
+msgid "Ion "
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:700
+msgid "Name of ion associate to this range"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:709
+msgid "Start rng "
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:712
+msgid "Start value for range"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:717
+msgid "End rng "
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:248
+#: ../src/backend/filters/rangeFile.cpp:720
+msgid "Stopping value for range`"
+msgstr ""
+
+#: ../src/backend/state.cpp:165
 msgid ""
-"First filter does not output anything useable by child filter. Child filter "
-"not useful."
+"This file is a \"state\" file for the 3Depict program, and stores "
+"information about a particular analysis session. This file should be a valid "
+"\"XML\" file"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:328
-msgid "Spatial results possibly altered"
+#: ../src/backend/state.cpp:337
+msgid "Failed to allocate parser"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:329
+#: ../src/backend/state.cpp:372
 msgid ""
-"Filters and settings selected that could alter reported results that depend "
-"upon density. Check to see if spatial sampling may be happening in the "
-"filter tree - this warning is provisional only."
+"Unable to retrieve root node in input state file... Is this really a non-"
+"empty XML file?"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:397
-msgid "Filter needs parent \""
+#: ../src/backend/state.cpp:379
+msgid "Base state node missing. Is this really a state XML file??"
+msgstr ""
+
+#: ../src/backend/state.cpp:408
+msgid "State was created by a newer version of this program.. "
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:398
+#: ../src/backend/state.cpp:409
+msgid "file reading will continue, but may fail."
+msgstr ""
+
+#: ../src/backend/state.cpp:419
 msgid ""
-"\" but does not have one. Filter may not function correctly until this "
-"parent is given."
+"Warning, unparseable version number in state file. File reading will "
+"continue, but may fail"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:399
-msgid "Filter missing needed parent"
+#: ../src/backend/state.cpp:428
+msgid "Unable to find the \"writer\" node"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:430
-msgid "Bad range filter settings"
+#: ../src/backend/state.cpp:438
+msgid "Unable to find the \"backcolour\" node."
+msgstr ""
+
+#: ../src/backend/state.cpp:445
+msgid "\"backcolour\" node missing \"r\" value."
+msgstr ""
+
+#: ../src/backend/state.cpp:450
+msgid "Unable to interpret \"backColour\" node's \"r\" value."
+msgstr ""
+
+#: ../src/backend/state.cpp:458
+msgid "\"backcolour\" node missing \"g\" value."
+msgstr ""
+
+#: ../src/backend/state.cpp:464
+msgid "Unable to interpret \"backColour\" node's \"g\" value."
+msgstr ""
+
+#: ../src/backend/state.cpp:472
+msgid "\"backcolour\" node missing \"b\" value."
+msgstr ""
+
+#: ../src/backend/state.cpp:478
+msgid "Unable to interpret \"backColour\" node's \"b\" value."
+msgstr ""
+
+#: ../src/backend/state.cpp:485
+msgid "\"backcolour\"s rgb values must be in range [0,1]"
+msgstr ""
+
+#: ../src/backend/state.cpp:513
+msgid "Unable to find or interpret \"showaxis\" node"
+msgstr ""
+
+#: ../src/backend/state.cpp:557
+msgid "Unable to locate \"filtertree\" node."
+msgstr ""
+
+#: ../src/backend/state.cpp:573
+msgid "Cameras section missing \"active\" node."
+msgstr ""
+
+#: ../src/backend/state.cpp:581
+msgid "Unable to find property \"value\"  for \"cameras->active\" node."
+msgstr ""
+
+#: ../src/backend/state.cpp:587
+msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
+msgstr ""
+
+#: ../src/backend/state.cpp:607
+msgid "Failed to interpret camera state for camera : "
+msgstr ""
+
+#: ../src/backend/state.cpp:615
+msgid "Unable to interpret the camera type for camera : "
+msgstr ""
+
+#: ../src/backend/state.cpp:671
+msgid "Unable to locate stash name for stash "
+msgstr ""
+
+#: ../src/backend/state.cpp:678
+msgid "Empty stash name for stash "
+msgstr ""
+
+#: ../src/backend/state.cpp:687
+msgid "No filter tree for stash:"
+msgstr ""
+
+#: ../src/backend/state.cpp:693
+msgid "For stash "
+msgstr ""
+
+#: ../src/backend/state.cpp:725
+msgid "Unrecognised effect :"
+msgstr ""
+
+#: ../src/backend/state.cpp:735
+msgid "Duplicate effect found"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:431
+#: ../src/backend/state.cpp:735
+msgid " cannot use."
+msgstr ""
+
+#: ../src/backend/state.cpp:745
+msgid "Error reading effect : "
+msgstr ""
+
+#: ../src/backend/state.cpp:965
+msgid "-merge"
+msgstr ""
+
+#: ../src/backend/filtertreeAnalyse.cpp:225
 msgid ""
-"Rangefile set to drop unranged data, however a child filter requires it."
+"Parent filter has no output, but filter requires input -- there is no point "
+"in placing a child filter here."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:613
-msgid "Composition results possibly altered"
+#: ../src/backend/filtertreeAnalyse.cpp:226
+msgid "Leaf-only filter with child"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:614
+#: ../src/backend/filtertreeAnalyse.cpp:236
 msgid ""
-"Filters and settings selected that could bias reported composition. Check to "
-"see if species biasing may occcur in the filter tree - this warning is "
-"provisional only."
+"Parent filters' output will be blocked by child, without use. Parent results "
+"will be dropped."
 msgstr ""
 
-#: ../src/backend/plot.cpp:29
-msgid "Moving avg."
+#: ../src/backend/filtertreeAnalyse.cpp:237
+#: ../src/backend/filtertreeAnalyse.cpp:251
+msgid "Bad parent->child pair"
 msgstr ""
 
-#: ../src/backend/plot.cpp:33
-msgid "Lines"
+#: ../src/backend/filtertreeAnalyse.cpp:250
+msgid ""
+"First filter does not output anything useable by child filter. Child filter "
+"not useful."
 msgstr ""
 
-#: ../src/backend/plot.cpp:34
-msgid "Bars"
+#: ../src/backend/filtertreeAnalyse.cpp:330
+msgid "Spatial results possibly altered"
 msgstr ""
 
-#: ../src/backend/plot.cpp:35
-msgid "Steps"
+#: ../src/backend/filtertreeAnalyse.cpp:331
+msgid ""
+"Filters and settings selected that could alter reported results that depend "
+"upon density. Check to see if spatial sampling may be happening in the "
+"filter tree - this warning is provisional only."
 msgstr ""
 
-#: ../src/backend/plot.cpp:36
-msgid "Stem"
+#: ../src/backend/filtertreeAnalyse.cpp:399
+msgid "Filter needs parent \""
 msgstr ""
 
-#: ../src/backend/plot.cpp:37
-msgid "Points"
+#: ../src/backend/filtertreeAnalyse.cpp:400
+msgid ""
+"\" but does not have one. Filter may not function correctly until this "
+"parent is given."
 msgstr ""
 
-#: ../src/backend/plot.cpp:39
-msgid "Density"
+#: ../src/backend/filtertreeAnalyse.cpp:401
+msgid "Filter missing needed parent"
 msgstr ""
 
-#: ../src/backend/plot.cpp:40
-msgid "Scatter"
+#: ../src/backend/filtertreeAnalyse.cpp:432
+msgid "Bad range filter settings"
 msgstr ""
 
-#: ../src/backend/plot.cpp:739 ../src/backend/plot.cpp:747
-msgid "Multiple data types"
+#: ../src/backend/filtertreeAnalyse.cpp:433
+msgid ""
+"Rangefile set to drop unranged data, however a child filter requires it."
 msgstr ""
 
-#: ../src/backend/plot.cpp:1581
-msgid "error"
+#: ../src/backend/filtertreeAnalyse.cpp:529
+msgid "Filter cannot generate data, but has no input - it is at the tree base."
 msgstr ""
 
-#: ../src/backend/plot.cpp:1821
-msgid "Amplitude"
+#: ../src/backend/filtertreeAnalyse.cpp:530
+msgid "Non data-generating filter at root"
 msgstr ""
 
-#: ../src/backend/filtertree.cpp:1151
-msgid "WARNING: Skipping node "
+#: ../src/backend/filtertreeAnalyse.cpp:632
+msgid "Composition results possibly altered"
 msgstr ""
 
-#: ../src/backend/filtertree.cpp:1151
-msgid " as it was not recognised"
+#: ../src/backend/filtertreeAnalyse.cpp:633
+msgid ""
+"Filters and settings selected that could bias reported composition. Check to "
+"see if species biasing may occcur in the filter tree - this warning is "
+"provisional only."
 msgstr ""
 
-#: ../src/backend/filtertree.cpp:1189
-msgid "Error processing node: "
+#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
+#: ../src/backend/APT/APTFileIO.cpp:103 ../src/backend/APT/APTFileIO.cpp:123
+msgid "Error opening file"
 msgstr ""
 
-#: ../src/gl/cameras.cpp:596
-msgid "Lock"
+#: ../src/backend/APT/APTFileIO.cpp:45
+msgid "Only found header, no data"
 msgstr ""
 
-#: ../src/gl/cameras.cpp:617
-msgid "Up Dir."
+#: ../src/backend/APT/APTFileIO.cpp:46
+msgid "Unable to reopen file after first scan"
 msgstr ""
 
-#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
-msgid "Perspective"
+#: ../src/backend/APT/APTFileIO.cpp:47
+msgid "Error whilst reading file contents"
 msgstr ""
 
-#: ../src/gl/cameras.cpp:631
-msgid "Projection"
+#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
+msgid "Unexpected file format"
 msgstr ""
 
-#: ../src/gl/cameras.cpp:640
-msgid "Field of View (deg)"
+#: ../src/backend/APT/APTFileIO.cpp:50
+msgid "Insufficient memory to continue"
 msgstr ""
 
-#: ../src/gl/cameras.cpp:646
-msgid "View size"
+#: ../src/backend/APT/APTFileIO.cpp:54
+msgid "Memory allocation failure on POS load"
 msgstr ""
 
-#: ../src/3Depict.cpp:397
-msgid "File : "
+#: ../src/backend/APT/APTFileIO.cpp:55
+msgid "Error opening pos file"
 msgstr ""
 
-#: ../src/3Depict.cpp:397
-msgid " does not exist. Skipping"
+#: ../src/backend/APT/APTFileIO.cpp:56
+msgid "Pos file empty"
 msgstr ""
 
-#: ../src/common/constants.cpp:22
-msgid ""
-"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
-"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
-"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+#: ../src/backend/APT/APTFileIO.cpp:57
+msgid "Pos file size appears to have non-integer number of entries"
 msgstr ""
 
-#: ../src/common/basics.cpp:183
-msgid "in the future?"
+#: ../src/backend/APT/APTFileIO.cpp:58
+msgid "Error reading from pos file (after open)"
 msgstr ""
 
-#: ../src/common/basics.cpp:234
-msgid "a decade ago"
+#: ../src/backend/APT/APTFileIO.cpp:59
+msgid "Error - Found NaN in pos file"
 msgstr ""
 
-#: ../src/common/basics.cpp:235
-msgid "a year ago"
+#: ../src/backend/APT/APTFileIO.cpp:60
+msgid "Error - Found Inf in pos file"
 msgstr ""
 
-#: ../src/common/basics.cpp:236
-msgid "a month ago"
+#: ../src/backend/APT/APTFileIO.cpp:61
+msgid "Pos load aborted by interrupt."
 msgstr ""
 
-#: ../src/common/basics.cpp:237
-msgid "a week ago"
+#: ../src/backend/APT/APTFileIO.cpp:80
+msgid "No numerical data found"
 msgstr ""
 
-#: ../src/common/basics.cpp:238
-msgid "a day ago"
+#: ../src/backend/APT/APTFileIO.cpp:81
+msgid "Error re-opening file, after first scan"
 msgstr ""
 
-#: ../src/common/basics.cpp:239
-msgid "an hour ago"
+#: ../src/backend/APT/APTFileIO.cpp:82
+msgid "Unable to read file contents after open"
 msgstr ""
 
-#: ../src/common/basics.cpp:240
-msgid "45 minutes ago"
+#: ../src/backend/APT/APTFileIO.cpp:83
+msgid "Error interpreting field in file"
 msgstr ""
 
-#: ../src/common/basics.cpp:241
-msgid "30 minutes ago"
+#: ../src/backend/APT/APTFileIO.cpp:84
+msgid "Incorrect number of fields in file"
 msgstr ""
 
-#: ../src/common/basics.cpp:242
-msgid "20 minutes ago"
+#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
+msgid "Unable to allocate memory to store data"
 msgstr ""
 
-#: ../src/common/basics.cpp:243
-msgid "15 minutes ago"
+#: ../src/backend/APT/APTFileIO.cpp:104
+msgid "File is empty"
 msgstr ""
 
-#: ../src/common/basics.cpp:244
-msgid "10 minutes ago"
+#: ../src/backend/APT/APTFileIO.cpp:105
+msgid "Filesize does not match expected format"
 msgstr ""
 
-#: ../src/common/basics.cpp:245
-msgid "5 minutes ago"
+#: ../src/backend/APT/APTFileIO.cpp:106
+msgid "File version number not <4, as expected"
 msgstr ""
 
-#: ../src/common/basics.cpp:246
-msgid "a minute ago"
+#: ../src/backend/APT/APTFileIO.cpp:108
+msgid "Unable to detect endian-ness in file"
 msgstr ""
 
-#: ../src/common/basics.cpp:247
-msgid "30 seconds ago"
+#: ../src/backend/APT/APTFileIO.cpp:122
+msgid "Error interpreting file contents"
 msgstr ""
 
-#: ../src/common/basics.cpp:248
-msgid "10 seconds ago"
+#: ../src/backend/APT/APTFileIO.cpp:124
+msgid "Aborted opening file"
 msgstr ""
 
-#: ../src/common/basics.cpp:249
-msgid "a second ago"
+#: ../src/backend/APT/APTRanges.cpp:48
+msgid "Error opening file, check name and permissions."
 msgstr ""
 
-#: ../src/common/basics.cpp:254
-msgid "a few decades ago"
+#: ../src/backend/APT/APTRanges.cpp:49
+msgid ""
+"Error interpreting range file header, expecting ion count and range count, "
+"respectively."
 msgstr ""
 
-#: ../src/common/basics.cpp:255
-msgid "a few years ago"
+#: ../src/backend/APT/APTRanges.cpp:50
+msgid ""
+"Range file appears to be empty, check file is a proper range file and is not "
+"empty."
 msgstr ""
 
-#: ../src/common/basics.cpp:256
-msgid "a few months ago"
+#: ../src/backend/APT/APTRanges.cpp:51
+msgid "Error reading the long name for ion."
 msgstr ""
 
-#: ../src/common/basics.cpp:257
-msgid "a few weeks ago"
+#: ../src/backend/APT/APTRanges.cpp:52
+msgid "Error reading the short name for ion."
 msgstr ""
 
-#: ../src/common/basics.cpp:258
-msgid "a few days ago"
+#: ../src/backend/APT/APTRanges.cpp:53
+msgid ""
+"Error reading colour data in the file, expecting 3 decimal values, space "
+"separated."
 msgstr ""
 
-#: ../src/common/basics.cpp:259
-msgid "a few hours ago"
+#: ../src/backend/APT/APTRanges.cpp:54
+msgid ""
+"Tried skipping to table separator line (line with dashes), but did not find "
+"it."
 msgstr ""
 
-#: ../src/common/basics.cpp:266
-msgid "a few minutes ago"
+#: ../src/backend/APT/APTRanges.cpp:55
+msgid ""
+"Number of ions in the table header did not match the number specified at the "
+"start of the file"
 msgstr ""
 
-#: ../src/common/basics.cpp:269
-msgid "a few seconds ago"
+#: ../src/backend/APT/APTRanges.cpp:56
+msgid ""
+"Unexpected failure whilst trying to skip over range lead-in data (bit before "
+"range start value)"
 msgstr ""
 
-#: ../src/common/basics.cpp:296
-msgid "moments ago"
+#: ../src/backend/APT/APTRanges.cpp:57
+msgid ""
+"Range table had an incorrect number of entries, should be 2 or 3 + number of "
+"ranges"
 msgstr ""
 
-#: ../src/common/colourmap.cpp:242
-msgid "Jet"
+#: ../src/backend/APT/APTRanges.cpp:58
+msgid "Unable to read range start and end values"
 msgstr ""
 
-#: ../src/common/colourmap.cpp:243
-msgid "Hot"
+#: ../src/backend/APT/APTRanges.cpp:59
+msgid "Unable to read range table entry"
 msgstr ""
 
-#: ../src/common/colourmap.cpp:244
-msgid "Cold"
+#: ../src/backend/APT/APTRanges.cpp:60
+msgid ""
+"Error reading file, unexpected format, are you sure it is a proper range "
+"file?"
 msgstr ""
 
-#: ../src/common/colourmap.cpp:245
-msgid "Grey"
+#: ../src/backend/APT/APTRanges.cpp:61
+msgid ""
+"Too many ranges appeared to have range entries with no usable data (eg, all "
+"blank)"
 msgstr ""
 
-#: ../src/common/colourmap.cpp:246
-msgid "Cyclic"
+#: ../src/backend/APT/APTRanges.cpp:62
+msgid ""
+"Range file appears to contain malformed data, check things like start and "
+"ends of m/c are not equal or flipped."
 msgstr ""
 
-#: ../src/common/colourmap.cpp:247
-msgid "General"
+#: ../src/backend/APT/APTRanges.cpp:63
+msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
 msgstr ""
 
-#: ../src/common/colourmap.cpp:248
-msgid "Blue"
+#: ../src/backend/APT/APTRanges.cpp:64
+msgid "No ion name mapping found  for multiple ion."
 msgstr ""
 
-#: ../src/common/colourmap.cpp:249
-msgid "Pseudo-Random"
+#: ../src/backend/APT/APTRanges.cpp:65
+msgid "Polyatomic extension range matches multiple masses in first section"
 msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:191
-msgid "Save Data..."
+#: ../src/backend/APT/APTRanges.cpp:66
+msgid "Range file is exceedingly large. Refusing to open"
 msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:192
-msgid "Text File (*.txt)|*.txt|All Files (*)|*"
+#: ../src/backend/APT/APTRanges.cpp:1404
+msgid ""
+"Range headings do not match order of the ions listed in the name "
+"specifications. The name specification ordering will be used when reading "
+"the range table, as the range heading section is declared as a comment in "
+"the file-format specifications, and is not to be intepreted by this program. "
+"Check range-species associations actually match what you expect."
 msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:204
-msgid "Error saving file. Check output dir is writable."
+#: ../src/backend/filter.cpp:54
+msgid "2D Plot"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.h:135
-msgid "Pos Data"
+#: ../src/backend/filter.cpp:56
+msgid "Range"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.h:103
-msgid "Ion info"
+#: ../src/backend/filter.cpp:57
+msgid "Voxel"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.h:69
-msgid "Ext. Program"
+#: ../src/backend/filters/transform.h:71
+msgid "Ion. Transform"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.h:63
+#: ../src/backend/filters/ionColour.h:66
 msgid "Spectral Colour"
 msgstr ""
 
-#: ../src/backend/filters/profile.h:123
-msgid "Comp. Prof."
+#: ../src/backend/filters/boundingBox.h:76
+msgid "Bound box"
 msgstr ""
 
 #: ../src/backend/filters/ionDownsample.h:79
 msgid "Ion Sampler"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.h:76
-msgid "Bound box"
+#: ../src/backend/filters/profile.h:123
+msgid "Comp. Prof."
 msgstr ""
 
-#: ../src/backend/filters/transform.h:71
-msgid "Ion. Transform"
+#: ../src/backend/filters/ionInfo.h:103
+msgid "Ion info"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.h:145
+msgid "Pos Data"
 msgstr ""
 
-#: ../src/wx/wxcomponents.h:82
-msgid "treeCtrl"
+#: ../src/backend/filters/externalProgram.h:69
+msgid "Ext. Program"
 msgstr ""
 
 #: ../data/startup-tips.txt:5
 msgid ""
 "You can reset the main view by tapping the space bar. Hold down modifier "
 "keys like shift,ctrl to change the axis. Double tap to switch which axis to "
-"look down"
+"look the other way (+ve or -ve direction)"
 msgstr ""
 
 #: ../data/startup-tips.txt:6
@@ -5315,7 +5466,8 @@ msgstr ""
 #: ../data/startup-tips.txt:8
 msgid ""
 "Package files can be easily shared to allow others to view your analysis, "
-"using the File->Export->Package menu item"
+"using the File->Export->Package menu item. This will automatically import "
+"all referenced files (eg pos/rng files) into a single shareable folder"
 msgstr ""
 
 #: ../data/startup-tips.txt:9
@@ -5354,12 +5506,13 @@ msgstr ""
 #: ../data/startup-tips.txt:15
 msgid ""
 "That anyone can contribute to improving this program, even without knowing "
-"about computer programming?"
+"about computer programming? Reporting bugs helps us to prioritise our work, "
+"and directs us to fix real problems for all users"
 msgstr ""
 
 #: ../data/startup-tips.txt:16
 msgid ""
-"You can load more than one file at a time, then either operate on the "
+"You can load more than one file at a time, then either operate on them "
 "separately, or together"
 msgstr ""
 
@@ -5399,8 +5552,8 @@ msgstr ""
 
 #: ../data/startup-tips.txt:23
 msgid ""
-"By creating a camera, you can switch between orthographic and perspective "
-"views"
+"By creating a camera, you can switch between orthographic (parallel) and "
+"perspective views"
 msgstr ""
 
 #: ../data/startup-tips.txt:24
@@ -5408,3 +5561,30 @@ msgid ""
 "You can open multiple files at once, and get a side-by-side view by "
 "translating (shifting) one of the datasets to one side"
 msgstr ""
+
+#: ../data/startup-tips.txt:25
+msgid ""
+"From version 0.0.20, vector values in filter properties (e.g. \"(1,0,0)\") "
+"can be specified using ISO 31-11 spherical coordinates using the following "
+"notation <r,theta,phi>, with angles in degrees"
+msgstr ""
+
+#: ../data/startup-tips.txt:26
+msgid ""
+"You can change the behavior of filter dragging by holding Ctrl (mac: cmd) or "
+"Shift whilst dragging? This switches between move, copy and \"splice"
+msgstr ""
+
+#: ../data/startup-tips.txt:27
+msgid ""
+"We like to know where we are being helpful? Please consider writing the "
+"program and version number in any work you might publish - whether in print "
+"or online. Alternatively, link to our website, or write to us to let us know "
+"we helped!"
+msgstr ""
+
+#: ../data/startup-tips.txt:28
+msgid ""
+"You can merge files by placing two \"Pos Data\" filters in series,  then  "
+"saving the result?"
+msgstr ""
diff --git a/translations/3Depict_de_DE.mo b/translations/3Depict_de_DE.mo
index d746b34..630c294 100644
Binary files a/translations/3Depict_de_DE.mo and b/translations/3Depict_de_DE.mo differ
diff --git a/translations/3Depict_de_DE.po b/translations/3Depict_de_DE.po
index ecaad27..944ebdb 100644
--- a/translations/3Depict_de_DE.po
+++ b/translations/3Depict_de_DE.po
@@ -1,6 +1,6 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
+# Translation file for 3Depict
+# Copyright (C) 2017
+# This file is distributed under the same license as the 3Depict package.
 #
 # Translators:
 # epix1234 <erich_s at gmx.de>, 2011.
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 3Depict\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-31 11:15+1000\n"
+"POT-Creation-Date: 2017-02-04 23:42+0000\n"
 "PO-Revision-Date: 2012-07-09 08:21+0000\n"
 "Last-Translator: epix1234 <erich_s at gmx.de>\n"
 "Language-Team: German (Germany) (http://www.transifex.com/projects/p/3depict/"
@@ -21,6 +21,229 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: ../src/gl/cameras.cpp:596
+msgid "Lock"
+msgstr "Sperren"
+
+#: ../src/gl/cameras.cpp:603 ../src/backend/filters/ionClip.cpp:529
+#: ../src/backend/filters/ionClip.cpp:551
+#: ../src/backend/filters/ionClip.cpp:573
+#: ../src/backend/filters/ionClip.cpp:610
+#: ../src/backend/filters/profile.cpp:1017
+#: ../src/backend/filters/profile.cpp:1055
+#: ../src/backend/filters/transform.cpp:1232
+#: ../src/backend/filters/transform.cpp:1259
+#: ../src/backend/filters/transform.cpp:1285
+#: ../src/backend/filters/annotation.cpp:576
+msgid "Origin"
+msgstr "Ursprung"
+
+#: ../src/gl/cameras.cpp:611 ../src/backend/filters/spatialAnalysis.cpp:872
+msgid "Target"
+msgstr "Ziel"
+
+#: ../src/gl/cameras.cpp:617
+msgid "Up Dir."
+msgstr "Up Dir."
+
+#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
+msgid "Perspective"
+msgstr "Perspektivisch"
+
+#: ../src/gl/cameras.cpp:627 ../src/gl/cameras.cpp:730
+#: ../src/gui/mainFrame.cpp:5416
+msgid "Orthogonal"
+msgstr "Orthogonal"
+
+#: ../src/gl/cameras.cpp:631
+msgid "Projection"
+msgstr "Projektion"
+
+#: ../src/gl/cameras.cpp:640
+msgid "Field of View (deg)"
+msgstr "Bildausschnitt"
+
+#: ../src/gl/cameras.cpp:646
+msgid "View size"
+msgstr "Anzeigegröße"
+
+#: ../src/wx/wxcomponents.cpp:191
+msgid "Save Data..."
+msgstr "Datei speichern..."
+
+#: ../src/wx/wxcomponents.cpp:192
+msgid "Text File (*.txt)|*.txt|All Files (*)|*"
+msgstr "Text Datei (*.txt)|*.txt|Alle Dateien (*)|*"
+
+#: ../src/wx/wxcomponents.cpp:204
+msgid "Error saving file. Check output dir is writable."
+msgstr ""
+"Fehler beim Schreiben der Datei. Stellen Sie sicher, dass das "
+"Zielverzeichnis nicht schreibgeschüzt ist."
+
+#: ../src/wx/wxcomponents.cpp:204 ../src/gui/dialogs/ExportRngDialog.cpp:187
+#: ../src/gui/mainFrame.cpp:1478 ../src/gui/mainFrame.cpp:1603
+#: ../src/gui/mainFrame.cpp:1652 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2284 ../src/gui/mainFrame.cpp:2357
+#: ../src/gui/mainFrame.cpp:2460 ../src/gui/mainFrame.cpp:2573
+msgid "Save error"
+msgstr "Fehler speichern"
+
+#: ../src/common/basics.cpp:183
+msgid "in the future?"
+msgstr "in Zukunft?"
+
+#: ../src/common/basics.cpp:234
+msgid "a decade ago"
+msgstr "vor zehn Jahren"
+
+#: ../src/common/basics.cpp:235
+msgid "a year ago"
+msgstr "vor einem Jahr"
+
+#: ../src/common/basics.cpp:236
+msgid "a month ago"
+msgstr "vor einem Monat"
+
+#: ../src/common/basics.cpp:237
+msgid "a week ago"
+msgstr "vor einer Woche"
+
+#: ../src/common/basics.cpp:238
+msgid "a day ago"
+msgstr "gestern"
+
+#: ../src/common/basics.cpp:239
+msgid "an hour ago"
+msgstr "vor einer Stunde"
+
+#: ../src/common/basics.cpp:240
+msgid "45 minutes ago"
+msgstr "vor 45 Minuten"
+
+#: ../src/common/basics.cpp:241
+msgid "30 minutes ago"
+msgstr "vor 30 Minuten"
+
+#: ../src/common/basics.cpp:242
+msgid "20 minutes ago"
+msgstr "vor 20 Minuten"
+
+#: ../src/common/basics.cpp:243
+msgid "15 minutes ago"
+msgstr "vor 15 Minuten"
+
+#: ../src/common/basics.cpp:244
+msgid "10 minutes ago"
+msgstr "vor 10 Minuten"
+
+#: ../src/common/basics.cpp:245
+msgid "5 minutes ago"
+msgstr "vor 5 Minuten"
+
+#: ../src/common/basics.cpp:246
+msgid "a minute ago"
+msgstr "vor einer Minute"
+
+#: ../src/common/basics.cpp:247
+msgid "30 seconds ago"
+msgstr "vor 30 Sekunden"
+
+#: ../src/common/basics.cpp:248
+msgid "10 seconds ago"
+msgstr "vor 10 Sekunden"
+
+#: ../src/common/basics.cpp:249
+msgid "a second ago"
+msgstr "vor einer Sekunde"
+
+#: ../src/common/basics.cpp:254
+msgid "a few decades ago"
+msgstr "vor einigen Dekaden"
+
+#: ../src/common/basics.cpp:255
+msgid "a few years ago"
+msgstr "vor einigen Jahren"
+
+#: ../src/common/basics.cpp:256
+msgid "a few months ago"
+msgstr "vor einigen Monaten"
+
+#: ../src/common/basics.cpp:257
+msgid "a few weeks ago"
+msgstr "vor einigen Wochen"
+
+#: ../src/common/basics.cpp:258
+msgid "a few days ago"
+msgstr "vor einigen Tagen"
+
+#: ../src/common/basics.cpp:259
+msgid "a few hours ago"
+msgstr "vor einigen Stunden"
+
+#: ../src/common/basics.cpp:262
+msgid "tens of minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:266
+msgid "a few minutes ago"
+msgstr "vor einigen Minuten"
+
+#: ../src/common/basics.cpp:269
+msgid "a few seconds ago"
+msgstr "vor einigen Sekunden"
+
+#: ../src/common/basics.cpp:296
+msgid "moments ago"
+msgstr "kürzlich"
+
+#: ../src/common/colourmap.cpp:307
+msgid "Jet"
+msgstr "Jet"
+
+#: ../src/common/colourmap.cpp:308
+msgid "Hot"
+msgstr "Heiss"
+
+#: ../src/common/colourmap.cpp:309
+msgid "Cold"
+msgstr "Kalt"
+
+#: ../src/common/colourmap.cpp:310
+msgid "Grey"
+msgstr "Grau"
+
+#: ../src/common/colourmap.cpp:311
+msgid "Cyclic"
+msgstr "Cyclic"
+
+#: ../src/common/colourmap.cpp:312
+msgid "General"
+msgstr "Allgemein"
+
+#: ../src/common/colourmap.cpp:313
+msgid "Blue"
+msgstr "Blau"
+
+#: ../src/common/colourmap.cpp:314
+msgid "Pseudo-Random"
+msgstr "Pseudo-Random"
+
+#: ../src/common/colourmap.cpp:315
+msgid "Inferno"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:316
+msgid "Viridis"
+msgstr ""
+
+#: ../src/common/constants.cpp:22
+msgid ""
+"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
+"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
+"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+msgstr ""
+
 #: ../src/gui/glPane.cpp:642
 msgid "Use shift/ctrl-space or double tap to alter reset axis"
 msgstr ""
@@ -47,9 +270,9 @@ msgstr "Renderreihenfolge..."
 msgid "Saving Image "
 msgstr "Speichere Bild "
 
-#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4401
-#: ../src/gui/mainFrame.cpp:4405 ../src/gui/mainFrame.cpp:4418
-#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4504
+#: ../src/gui/mainFrame.cpp:4508 ../src/gui/mainFrame.cpp:4521
+#: ../src/backend/filters/dataLoad.cpp:339
 msgid " of "
 msgstr " von "
 
@@ -66,14 +289,14 @@ msgid "Source Filter"
 msgstr "Source Filter"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:54
-#: ../src/backend/filters/rangeFile.cpp:656
+#: ../src/backend/filters/rangeFile.cpp:657
 msgid "Ions"
 msgstr "Ionen"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:55
 #: ../src/gui/dialogs/rangeEditDialog.cpp:1587
-#: ../src/backend/filters/voxelise.cpp:834
-#: ../src/backend/filters/rangeFile.cpp:723
+#: ../src/backend/filters/voxelise.cpp:1049
+#: ../src/backend/filters/rangeFile.cpp:724
 msgid "Ranges"
 msgstr "Ranges"
 
@@ -82,10 +305,10 @@ msgid "Param"
 msgstr "Param."
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:89
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:105
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:352
-#: ../src/backend/filters/dataLoad.cpp:581
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
+#: ../src/backend/filters/dataLoad.cpp:610
 msgid "Value"
 msgstr "Wert"
 
@@ -102,7 +325,7 @@ msgid "Num Ranges"
 msgstr "Num Ranges"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:116
-#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:53
+#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:52
 msgid "Ion"
 msgstr "Ion"
 
@@ -114,7 +337,7 @@ msgstr "Range Anfang"
 msgid "Range end"
 msgstr "Range Ende"
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2376
+#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2395
 msgid "Save pos..."
 msgstr "pos speichern..."
 
@@ -124,23 +347,15 @@ msgid ""
 "(*.env)|*.env|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1638 ../src/gui/mainFrame.cpp:1713
-#: ../src/gui/mainFrame.cpp:2266 ../src/gui/mainFrame.cpp:2443
-#: ../src/gui/mainFrame.cpp:2556
+#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1478
+#: ../src/gui/mainFrame.cpp:1653 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2285 ../src/gui/mainFrame.cpp:2461
+#: ../src/gui/mainFrame.cpp:2574
 msgid "Unable to save. Check output destination can be written to."
 msgstr ""
 "Speichern nicht möglich. Bitte überprüfen Sie ob der Ausgabepfad "
 "schreibgeschützt ist."
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:187 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1588 ../src/gui/mainFrame.cpp:1637
-#: ../src/gui/mainFrame.cpp:1713 ../src/gui/mainFrame.cpp:2265
-#: ../src/gui/mainFrame.cpp:2338 ../src/gui/mainFrame.cpp:2442
-#: ../src/gui/mainFrame.cpp:2555 ../src/wx/wxcomponents.cpp:204
-msgid "Save error"
-msgstr "Fehler speichern"
-
 #: ../src/gui/dialogs/ExportRngDialog.cpp:253
 msgid "Export Range"
 msgstr "Range exportieren"
@@ -153,240 +368,115 @@ msgstr "Liste der Rangedateien im Filterbaum"
 msgid "Detailed view of selected range"
 msgstr "Detailierte Ansicht des ausgewählten Range"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:92
-msgid "Cameca/Ametek RRNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:221
+msgid "Show Overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:93
-msgid "Oak-Ridge RNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:246
+msgid "e.g. H2O"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:94
-msgid "Cameca/Ametek ENV"
-msgstr ""
+#: ../src/gui/dialogs/rangeEditDialog.cpp:561
+#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:6071
+#: ../src/backend/filter.cpp:53
+msgid "Plot"
+msgstr "Plot"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:156
-msgid "Key frames"
-msgstr ""
+#: ../src/gui/dialogs/rangeEditDialog.cpp:562
+msgid "Short Name"
+msgstr "Kurz Name"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:157
-msgid "Output Data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:563
+msgid "Long Name"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:158
-msgid "Filters and properties"
-msgstr ""
+#: ../src/gui/dialogs/rangeEditDialog.cpp:564
+#: ../src/backend/filters/voxelise.cpp:1188
+#: ../src/backend/filters/profile.cpp:1159
+#: ../src/backend/filters/annotation.cpp:909
+#: ../src/backend/filters/spectrumPlot.cpp:679
+msgid "Colour"
+msgstr "Farbe"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:164
-msgid "Dir : "
-msgstr ""
+#: ../src/gui/dialogs/rangeEditDialog.cpp:697
+#: ../src/backend/filters/annotation.cpp:613
+#: ../src/backend/filters/annotation.cpp:654
+#: ../src/backend/filters/annotation.cpp:823
+msgid "Start"
+msgstr "Anfang"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:167
-msgid "Output only when refresh required"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:698
+#: ../src/backend/filters/annotation.cpp:621
+#: ../src/backend/filters/annotation.cpp:663
+#: ../src/backend/filters/annotation.cpp:831
+msgid "End"
+msgstr "Ende"
+
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
+msgid "Range or ion?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:169
-msgid "Data Types:"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
+msgid "Select type to add"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:170
-msgid "3D Images"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
+msgid "Range Editor"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:171
-msgid "File Prefix: "
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:173
-msgid "Size : "
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:175
-msgid "..."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:176
-msgid "Point data"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:177
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1586
-msgid "Plots"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:178
-msgid "Voxel data"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:179
-msgid "Range files"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:180
-msgid "Format"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:197
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
-msgid "Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-msgid "transition frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-#: ../src/gui/mainFrame.cpp:1690
-msgid "Frame count"
-msgstr "Bildanzahl"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:774
-msgid "Key frame : Colour"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:827
-msgid "File existed, but was unable to read or interpret file contents."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:828
-msgid "String load failed"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:849
-msgid "Keyframe : decimal"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:858
-msgid "Keyframe : integer"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:867
-msgid "Keyframe : 3D Point"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:995
-msgid "Select or create new folder"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
-msgid "Export Animation"
-msgstr "Animation exportieren"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
-msgid "Select filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1177
-msgid "Select property"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
-msgid "Filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
-msgid "Property"
-msgstr "Eigenschaft"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
-#: ../src/backend/filters/annotation.cpp:545
-#: ../src/backend/filters/annotation.cpp:551
-#: ../src/backend/filters/transform.cpp:1150
-#: ../src/backend/filters/ionDownsample.cpp:465
-#: ../src/backend/filters/spatialAnalysis.cpp:1173
-msgid "Mode"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
-msgid "Start Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
-msgid "End Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
-msgid "Keyframe table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
-msgid "Remove the selected keyframe from the table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
-msgid "Enter where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1187
-msgid "Browse to directory where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
-msgid ""
-"Title for files, result will be saved as #-name.png, where # is image number."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
-msgid "Target resolution (image size)"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
-msgid "Select frame for property display"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
+msgid "Enable or disable all overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
-msgid "Enter frame number to change frame (eg 1/20)"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
+msgid "Entered overlays, use delete to remove"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
-msgid "Save point data (POS files) in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
+msgid "Available plots for ranging"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
-msgid "Save plots (as text files) in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
+msgid "Enter species to display as overlay, e.g. SiO2"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
-msgid "Save voxel data (raw files) in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
+msgid "Editable ranges"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1196
-msgid "Save range files  in output folder?"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
+msgid "Editable ions"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
-msgid "Animation parameters for current frame"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1586
+#: ../src/gui/dialogs/animateFilterDialog.cpp:177
+msgid "Plots"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
-msgid "Abort animation"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
+msgid "Overlay"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1203
-msgid "Run Animation"
+#: ../src/gui/dialogs/autosaveDialog.cpp:39
+msgid "Remove &All"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
-msgid "Filter view"
+#: ../src/gui/dialogs/autosaveDialog.cpp:123
+msgid "Restore state?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1275
-msgid "Frame view"
+#: ../src/gui/dialogs/autosaveDialog.cpp:133
+msgid "Multiple autosave states were found; would you like to restore one?"
 msgstr ""
 
-#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:476
-#: ../src/backend/filter.cpp:479
+#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:481
+#: ../src/backend/filter.cpp:484
 msgid "Error"
-msgstr ""
+msgstr "Fehler"
 
 #: ../src/gui/dialogs/filterErrorDialog.cpp:39
 msgid "Warning"
-msgstr ""
+msgstr "Warnung"
 
 #: ../src/gui/dialogs/filterErrorDialog.cpp:42
 #: ../src/gui/dialogs/filterErrorDialog.cpp:52
@@ -403,7 +493,7 @@ msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:54
 msgid "Properties"
-msgstr ""
+msgstr "Eigenschaften"
 
 #: ../src/gui/dialogs/StashDialog.cpp:60
 msgid "Stash Name"
@@ -433,35 +523,6 @@ msgstr "Einstellungen für den ausgewählten Stash"
 msgid "Available stashes"
 msgstr "Verfügbare Stash"
 
-#: ../src/gui/dialogs/resolutionDialog.cpp:45
-msgid "Width :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:47
-msgid "Height :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:50
-#: ../src/gui/dialogs/prefDialog.cpp:85
-msgid "Reset"
-msgstr "Zurücksetzen"
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:336
-msgid "Resolution Selection"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:39
-msgid "Remove &All"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:123
-msgid "Restore state?"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:133
-msgid "Multiple autosave states were found; would you like to restore one?"
-msgstr ""
-
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:45
 msgid "Start Frame: "
 msgstr ""
@@ -474,9 +535,15 @@ msgstr ""
 msgid "From Table"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
+#: ../src/gui/dialogs/animateFilterDialog.cpp:197
+msgid "Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:240
 msgid "Select text file..."
-msgstr ""
+msgstr "Text Datei wahlen"
 
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:241
 msgid "Text files (*.txt)|*.txt;|All Files (*)|*"
@@ -538,6 +605,16 @@ msgstr ""
 msgid "Ramp"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
+msgid "Start Frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
+msgid "End Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:73
 msgid "Initial Value"
 msgstr ""
@@ -566,32 +643,309 @@ msgstr ""
 msgid "Colour at end of transition"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:73
-msgid "Panel Display"
-msgstr "Panel Display"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:92
+msgid "Cameca/Ametek RRNG"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:75
-msgid "Online Updates"
-msgstr "Online Updates"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:93
+msgid "Oak-Ridge RNG"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
-msgid "Startup"
-msgstr "Startup"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:94
+msgid "Cameca/Ametek ENV"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:78
-msgid "Camera Speed"
-msgstr "Kamerageschwindigkeit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:156
+msgid "Key frames"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:79
-msgid "Available Filters"
-msgstr "Verfügbare Filter"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:157
+msgid "Output Data"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:84
-msgid "Reset All"
-msgstr "Alle zurücksetzen"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:158
+msgid "Filters and properties"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:87
-msgid "Show all panels"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:164
+msgid "Dir : "
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:167
+msgid "Output only when refresh required"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:169
+msgid "Data Types:"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:170
+msgid "3D Images"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:171
+msgid "File Prefix: "
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:173
+msgid "Size : "
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:175
+msgid "..."
+msgstr "..."
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:176
+msgid "Point data"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:178
+msgid "Voxel data"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:179
+msgid "Range files"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:180
+msgid "Format"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701
+msgid "transition frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701 ../src/gui/mainFrame.cpp:1705
+msgid "Frame count"
+msgstr "Bildanzahl"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:773
+msgid "Key frame : Colour"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:826
+msgid "File existed, but was unable to read or interpret file contents."
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:827
+msgid "String load failed"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:848
+msgid "Keyframe : decimal"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:857
+msgid "Keyframe : integer"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:866
+msgid "Keyframe : 3D Point"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:994
+msgid "Select or create new folder"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1174
+msgid "Export Animation"
+msgstr "Animation exportieren"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
+msgid "Select filter"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
+msgid "Select property"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1178
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1197
+msgid "Filter"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
+msgid "Property"
+msgstr "Eigenschaft"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
+#: ../src/backend/filters/spatialAnalysis.cpp:1062
+#: ../src/backend/filters/transform.cpp:1149
+#: ../src/backend/filters/annotation.cpp:553
+#: ../src/backend/filters/annotation.cpp:559
+#: ../src/backend/filters/ionDownsample.cpp:466
+msgid "Mode"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
+msgid "Keyframe table"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
+msgid "Remove the selected keyframe from the table"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
+msgid "Enter where the animation frames will be exported to"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
+msgid "Browse to directory where the animation frames will be exported to"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1188
+msgid ""
+"Title for files, result will be saved as #-name.png, where # is image number."
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
+msgid "Target resolution (image size)"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
+msgid "Select frame for property display"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
+msgid "Enter frame number to change frame (eg 1/20)"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
+msgid "Save point data (POS files) in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
+msgid "Save plots (as text files) in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
+msgid "Save voxel data (raw files) in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
+msgid "Save range files  in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
+msgid "Animation parameters for current frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
+msgid "Abort animation"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
+msgid "Run Animation"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1273
+msgid "Filter view"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
+msgid "Frame view"
+msgstr ""
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:45
+msgid "Width :"
+msgstr "Breite :"
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:47
+msgid "Height :"
+msgstr "Höhe :"
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:50
+#: ../src/gui/dialogs/prefDialog.cpp:85
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:336
+msgid "Resolution Selection"
+msgstr ""
+
+#: ../src/gui/dialogs/ExportPos.cpp:63
+msgid "Export:"
+msgstr "Exportieren:"
+
+#: ../src/gui/dialogs/ExportPos.cpp:64
+#: ../src/backend/filters/boundingBox.cpp:568
+msgid "Visible"
+msgstr "Sichtbar"
+
+#: ../src/gui/dialogs/ExportPos.cpp:65
+msgid "Selected Data"
+msgstr "Daten auswählen"
+
+#: ../src/gui/dialogs/ExportPos.cpp:67
+msgid "Available Data"
+msgstr "Verfügbare Daten"
+
+#: ../src/gui/dialogs/ExportPos.cpp:73
+msgid "Selection"
+msgstr "Auswahl"
+
+#: ../src/gui/dialogs/ExportPos.cpp:98 ../src/gui/dialogs/ExportPos.cpp:101
+msgid "Index"
+msgstr "Index"
+
+#: ../src/gui/dialogs/ExportPos.cpp:99 ../src/gui/dialogs/ExportPos.cpp:102
+#: ../src/backend/filters/spatialAnalysis.cpp:2388
+#: ../src/backend/filters/spatialAnalysis.cpp:2481
+#: ../src/backend/filters/spatialAnalysis.cpp:2541
+#: ../src/backend/filters/spatialAnalysis.cpp:3292
+#: ../src/backend/filters/spatialAnalysis.cpp:3481
+#: ../src/backend/filters/profile.cpp:608
+#: ../src/backend/filters/spectrumPlot.cpp:65
+msgid "Count"
+msgstr "Anzahl"
+
+#: ../src/gui/dialogs/ExportPos.cpp:451
+msgid "Export Pos Data"
+msgstr "POS Daten exportieren"
+
+#: ../src/gui/dialogs/ExportPos.cpp:454
+msgid "Tree of filters, select leaves to show ion data."
+msgstr ""
+
+#: ../src/gui/dialogs/ExportPos.cpp:456
+msgid "Add all data from all filters"
+msgstr ""
+
+#: ../src/gui/dialogs/ExportPos.cpp:457
+msgid "Add all data from currently selected filter"
+msgstr ""
+
+#: ../src/gui/dialogs/ExportPos.cpp:458
+msgid "Add selected data from currently selected filter"
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:73
+msgid "Panel Display"
+msgstr "Panel Display"
+
+#: ../src/gui/dialogs/prefDialog.cpp:75
+msgid "Online Updates"
+msgstr "Online Updates"
+
+#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
+msgid "Startup"
+msgstr "Startup"
+
+#: ../src/gui/dialogs/prefDialog.cpp:78
+msgid "Camera Speed"
+msgstr "Kamerageschwindigkeit"
+
+#: ../src/gui/dialogs/prefDialog.cpp:79
+msgid "Available Filters"
+msgstr "Verfügbare Filter"
+
+#: ../src/gui/dialogs/prefDialog.cpp:84
+msgid "Reset All"
+msgstr "Alle zurücksetzen"
+
+#: ../src/gui/dialogs/prefDialog.cpp:87
+msgid "Show all panels"
 msgstr "Zeige alle Fenster"
 
 #: ../src/gui/dialogs/prefDialog.cpp:88
@@ -610,7 +964,7 @@ msgstr "Kontrollfenster"
 msgid "Raw Data Panel"
 msgstr "Rohdatenfenster"
 
-#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:691
+#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:693
 msgid "Plot List"
 msgstr "Plotliste"
 
@@ -696,147 +1050,6 @@ msgstr ""
 msgid "Camera"
 msgstr "Kamera"
 
-#: ../src/gui/dialogs/ExportPos.cpp:63
-msgid "Export:"
-msgstr "Exportieren:"
-
-#: ../src/gui/dialogs/ExportPos.cpp:64
-#: ../src/backend/filters/boundingBox.cpp:567
-msgid "Visible"
-msgstr "Sichtbar"
-
-#: ../src/gui/dialogs/ExportPos.cpp:65
-msgid "Selected Data"
-msgstr "Daten auswählen"
-
-#: ../src/gui/dialogs/ExportPos.cpp:67
-msgid "Available Data"
-msgstr "Verfügbare Daten"
-
-#: ../src/gui/dialogs/ExportPos.cpp:73
-msgid "Selection"
-msgstr "Auswahl"
-
-#: ../src/gui/dialogs/ExportPos.cpp:98 ../src/gui/dialogs/ExportPos.cpp:101
-msgid "Index"
-msgstr "Index"
-
-#: ../src/gui/dialogs/ExportPos.cpp:99 ../src/gui/dialogs/ExportPos.cpp:102
-#: ../src/backend/filters/profile.cpp:604
-#: ../src/backend/filters/spatialAnalysis.cpp:2520
-#: ../src/backend/filters/spatialAnalysis.cpp:2613
-#: ../src/backend/filters/spatialAnalysis.cpp:2673
-#: ../src/backend/filters/spatialAnalysis.cpp:3628
-#: ../src/backend/filters/spatialAnalysis.cpp:3831
-#: ../src/backend/filters/spatialAnalysis.cpp:3890
-#: ../src/backend/filters/spectrumPlot.cpp:65
-msgid "Count"
-msgstr "Anzahl"
-
-#: ../src/gui/dialogs/ExportPos.cpp:451
-msgid "Export Pos Data"
-msgstr "POS Daten exportieren"
-
-#: ../src/gui/dialogs/ExportPos.cpp:454
-msgid "Tree of filters, select leaves to show ion data."
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:456
-msgid "Add all data from all filters"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:457
-msgid "Add all data from currently selected filter"
-msgstr ""
-
-#: ../src/gui/dialogs/ExportPos.cpp:458
-msgid "Add selected data from currently selected filter"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:221
-msgid "Show Overlays"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:246
-msgid "e.g. H2O"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:561
-#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:5966
-#: ../src/backend/filter.cpp:54
-msgid "Plot"
-msgstr "Plot"
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:562
-msgid "Short Name"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:563
-msgid "Long Name"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:564
-#: ../src/backend/filters/annotation.cpp:901
-#: ../src/backend/filters/voxelise.cpp:976
-#: ../src/backend/filters/profile.cpp:1155
-#: ../src/backend/filters/spectrumPlot.cpp:676
-msgid "Colour"
-msgstr "Farbe"
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:697
-#: ../src/backend/filters/annotation.cpp:605
-#: ../src/backend/filters/annotation.cpp:646
-#: ../src/backend/filters/annotation.cpp:815
-msgid "Start"
-msgstr "Anfang"
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:698
-#: ../src/backend/filters/annotation.cpp:613
-#: ../src/backend/filters/annotation.cpp:655
-#: ../src/backend/filters/annotation.cpp:823
-msgid "End"
-msgstr "Ende"
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
-msgid "Range or ion?"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
-msgid "Select type to add"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
-msgid "Range Editor"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
-msgid "Enable or disable all overlays"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
-msgid "Entered overlays, use delete to remove"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
-msgid "Available plots for ranging"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
-msgid "Enter species to display as overlay, e.g. SiO2"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
-msgid "Editable ranges"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
-msgid "Editable ions"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
-msgid "Overlay"
-msgstr ""
-
 #: ../src/gui/mainFrame.cpp:119
 msgid "New camera name..."
 msgstr "Neuer Kameraname..."
@@ -849,8 +1062,8 @@ msgstr ""
 msgid "New Filter..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:560
-#: ../src/backend/filters/annotation.cpp:664
+#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:568
+#: ../src/backend/filters/annotation.cpp:672
 #: ../src/backend/filters/annotation.h:96
 msgid "Annotation"
 msgstr "Kommentar"
@@ -900,19 +1113,19 @@ msgstr "Spektrum"
 msgid "Range File"
 msgstr "Rangedatei"
 
-#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:202
+#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:192
 msgid "Spat. Analysis"
 msgstr "Räumliche Analyse"
 
-#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:122
+#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:126
 msgid "Voxelisation"
 msgstr "Voxelisation"
 
-#: ../src/gui/mainFrame.cpp:451
+#: ../src/gui/mainFrame.cpp:453
 msgid "OpenGL Failed"
 msgstr "OpenGL fehlgeschlagen"
 
-#: ../src/gui/mainFrame.cpp:452 ../src/gui/mainFrame.cpp:454
+#: ../src/gui/mainFrame.cpp:454 ../src/gui/mainFrame.cpp:456
 msgid ""
 "Unable to initialise the openGL (3D) panel. Program cannot start. Please "
 "check your video drivers."
@@ -920,435 +1133,439 @@ msgstr ""
 "Kann das OpenGL (3D)-Panel nicht initialisieren. Das Programm kann nicht "
 "gestartet werden. Bitte überprüfen Sie Ihren Video-Treiber."
 
-#: ../src/gui/mainFrame.cpp:475
+#: ../src/gui/mainFrame.cpp:477
 msgid "&Open...\tCtrl+O"
 msgstr "&Öffnen...\tCtrl+O"
 
-#: ../src/gui/mainFrame.cpp:475
+#: ../src/gui/mainFrame.cpp:477
 msgid "Open state file"
 msgstr "Statusdatei öffnen"
 
-#: ../src/gui/mainFrame.cpp:476
+#: ../src/gui/mainFrame.cpp:478
 msgid "&Merge...\tCtrl+Shift+O"
 msgstr "&Zusammenführen...\tCtrl+Shift+O"
 
-#: ../src/gui/mainFrame.cpp:476
+#: ../src/gui/mainFrame.cpp:478
 msgid "Merge other file"
 msgstr "Merge other file"
 
-#: ../src/gui/mainFrame.cpp:480
+#: ../src/gui/mainFrame.cpp:482
 msgid "&Recent"
 msgstr "&Letzte"
 
-#: ../src/gui/mainFrame.cpp:481
+#: ../src/gui/mainFrame.cpp:483
 msgid "&Save\tCtrl+S"
 msgstr "&Speichern\tCtrl+S"
 
-#: ../src/gui/mainFrame.cpp:481
+#: ../src/gui/mainFrame.cpp:483
 msgid "Save state to file"
 msgstr "Status in Datei speichern"
 
-#: ../src/gui/mainFrame.cpp:483
+#: ../src/gui/mainFrame.cpp:485
 msgid "Save &As...\tCtrl+Shift+S"
 msgstr "Speichern &als...\tCtrl+Shift+S"
 
-#: ../src/gui/mainFrame.cpp:483
+#: ../src/gui/mainFrame.cpp:485
 msgid "Save current state to new file"
 msgstr "Aktuellen Status als neue Datei speichern"
 
-#: ../src/gui/mainFrame.cpp:486
+#: ../src/gui/mainFrame.cpp:488
 msgid "&Plot...\tCtrl+P"
 msgstr "&Plot...\tCtrl+P"
 
-#: ../src/gui/mainFrame.cpp:486
+#: ../src/gui/mainFrame.cpp:488
 msgid "Export Current Plot"
 msgstr "Aktuellen Plot exportieren"
 
-#: ../src/gui/mainFrame.cpp:487
+#: ../src/gui/mainFrame.cpp:489
 msgid "&Image...\tCtrl+I"
 msgstr "&Bild...\tCtrl+I"
 
-#: ../src/gui/mainFrame.cpp:487
+#: ../src/gui/mainFrame.cpp:489
 msgid "Export Current 3D View"
 msgstr "Aktuelle 3D Ansicht exportieren"
 
-#: ../src/gui/mainFrame.cpp:488
+#: ../src/gui/mainFrame.cpp:490
 msgid "Ion&s...\tCtrl+N"
 msgstr "Ion&en...\tCtrl+N"
 
-#: ../src/gui/mainFrame.cpp:488
+#: ../src/gui/mainFrame.cpp:490
 msgid "Export Ion Data"
 msgstr "Ionendaten exportieren"
 
-#: ../src/gui/mainFrame.cpp:489
+#: ../src/gui/mainFrame.cpp:491
 msgid "Ran&ges...\tCtrl+G"
 msgstr "Ran&ges...\tCtrl+G"
 
-#: ../src/gui/mainFrame.cpp:489
+#: ../src/gui/mainFrame.cpp:491
 msgid "Export Range Data"
 msgstr "Rangedaten exportieren"
 
-#: ../src/gui/mainFrame.cpp:490
+#: ../src/gui/mainFrame.cpp:492
 msgid "&Animate Filters...\tCtrl+T"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:490
+#: ../src/gui/mainFrame.cpp:492
 msgid "Export Animated Filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
+#: ../src/gui/mainFrame.cpp:493
 msgid "Ani&mate Camera...\tCtrl+M"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
+#: ../src/gui/mainFrame.cpp:493
 msgid "Export Animated Camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:492
+#: ../src/gui/mainFrame.cpp:494
 msgid "Pac&kage...\tCtrl+K"
 msgstr "Pa&ket...\tCtrl+K"
 
-#: ../src/gui/mainFrame.cpp:492
+#: ../src/gui/mainFrame.cpp:494
 msgid "Export analysis package"
 msgstr "Analysepaket exportieren"
 
-#: ../src/gui/mainFrame.cpp:494
+#: ../src/gui/mainFrame.cpp:496
 msgid "&Export"
 msgstr "&Exportieren"
 
-#: ../src/gui/mainFrame.cpp:497
+#: ../src/gui/mainFrame.cpp:499
 msgid "&Quit\tCtrl+Q"
 msgstr "&Beenden\tCtrl+Q"
 
-#: ../src/gui/mainFrame.cpp:497 ../src/gui/mainFrame.cpp:499
+#: ../src/gui/mainFrame.cpp:499 ../src/gui/mainFrame.cpp:501
 msgid "Exit Program"
 msgstr "Programm beenden"
 
-#: ../src/gui/mainFrame.cpp:499
+#: ../src/gui/mainFrame.cpp:501
 msgid "E&xit"
 msgstr "E&xit"
 
-#: ../src/gui/mainFrame.cpp:501
+#: ../src/gui/mainFrame.cpp:503
 msgid "&File"
 msgstr "&Datei"
 
-#: ../src/gui/mainFrame.cpp:505
+#: ../src/gui/mainFrame.cpp:507
 msgid "&Background Colour...\tCtrl+B"
 msgstr "&Hintergrundfarbe...\tCtrl+B"
 
-#: ../src/gui/mainFrame.cpp:505
+#: ../src/gui/mainFrame.cpp:507
 msgid "Change background colour"
 msgstr "Hintergrundfarbe ändern"
 
-#: ../src/gui/mainFrame.cpp:509
+#: ../src/gui/mainFrame.cpp:511
 msgid "&Control Pane\tF2"
 msgstr "&Kontrollfenster\tF2"
 
-#: ../src/gui/mainFrame.cpp:509 ../src/gui/mainFrame.cpp:512
+#: ../src/gui/mainFrame.cpp:511 ../src/gui/mainFrame.cpp:514
 msgid "Toggle left control pane"
 msgstr "Linkes Kontrollfenster ein/aus schalten"
 
-#: ../src/gui/mainFrame.cpp:512
+#: ../src/gui/mainFrame.cpp:514
 msgid "&Control Pane\tAlt+C"
 msgstr "&Kontrollfenster\tAlt+C"
 
-#: ../src/gui/mainFrame.cpp:518
+#: ../src/gui/mainFrame.cpp:520
 msgid "&Raw Data Pane\tF3"
 msgstr "&Rohdatenfenster\tF3"
 
-#: ../src/gui/mainFrame.cpp:518 ../src/gui/mainFrame.cpp:521
+#: ../src/gui/mainFrame.cpp:520 ../src/gui/mainFrame.cpp:523
 msgid "Toggle raw data  pane (bottom)"
 msgstr "Rohdatenfenster (unten)"
 
-#: ../src/gui/mainFrame.cpp:521
+#: ../src/gui/mainFrame.cpp:523
 msgid "&Raw Data Pane\tAlt+R"
 msgstr "&Rohdatenfenster\tAlt+R"
 
-#: ../src/gui/mainFrame.cpp:525
+#: ../src/gui/mainFrame.cpp:527
 msgid "&Plot List\tF4"
 msgstr "&Plot Liste\tF4"
 
-#: ../src/gui/mainFrame.cpp:525 ../src/gui/mainFrame.cpp:527
+#: ../src/gui/mainFrame.cpp:527 ../src/gui/mainFrame.cpp:529
 msgid "Toggle plot list"
 msgstr "Plotliste ein/aus schalten"
 
-#: ../src/gui/mainFrame.cpp:527
+#: ../src/gui/mainFrame.cpp:529
 msgid "&Plot List\tAlt+P"
 msgstr "&Plot Liste\tAlt+P"
 
-#: ../src/gui/mainFrame.cpp:533
+#: ../src/gui/mainFrame.cpp:535
 msgid "&Legend\tCtrl+L"
 msgstr "&Legende\tCtrl+L"
 
-#: ../src/gui/mainFrame.cpp:533
+#: ../src/gui/mainFrame.cpp:535
 msgid "Toggle Legend display"
 msgstr "Legende anzeigen ein/aus"
 
-#: ../src/gui/mainFrame.cpp:535
+#: ../src/gui/mainFrame.cpp:537
 msgid "P&lot..."
 msgstr "P&lot..."
 
-#: ../src/gui/mainFrame.cpp:536
+#: ../src/gui/mainFrame.cpp:538
 msgid "&Axis\tCtrl+Shift+I"
 msgstr "&Achsen\tCtrl+Shift+I"
 
-#: ../src/gui/mainFrame.cpp:536
+#: ../src/gui/mainFrame.cpp:538
 msgid "Toggle World Axis display"
 msgstr "Hauptachsen ein/aus schalten"
 
-#: ../src/gui/mainFrame.cpp:541
+#: ../src/gui/mainFrame.cpp:543
 msgid "&Fullscreen mode\tF11"
 msgstr "&Vollbildmodus\tF11"
 
-#: ../src/gui/mainFrame.cpp:541 ../src/gui/mainFrame.cpp:543
+#: ../src/gui/mainFrame.cpp:543 ../src/gui/mainFrame.cpp:545
 msgid "Next fullscreen mode: with toolbars"
 msgstr "Nächster Vollbildmodus: ohne Werkzeugleisten"
 
-#: ../src/gui/mainFrame.cpp:543
+#: ../src/gui/mainFrame.cpp:545
 msgid "&Fullscreen mode\tCtrl+Shift+F"
 msgstr "&Vollbildmodus\tCtrl+Shift+F"
 
-#: ../src/gui/mainFrame.cpp:548
+#: ../src/gui/mainFrame.cpp:550
 msgid "&Undo\tCtrl+Z"
 msgstr "&Zurück\tCtrl+Z"
 
-#: ../src/gui/mainFrame.cpp:550
+#: ../src/gui/mainFrame.cpp:552
 msgid "&Redo\tCtrl+Y"
 msgstr "&Wiederholen\tCtrl+Y"
 
-#: ../src/gui/mainFrame.cpp:553
+#: ../src/gui/mainFrame.cpp:555
 msgid "&Range"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:556
+#: ../src/gui/mainFrame.cpp:558
 msgid "&Preferences"
 msgstr "&Voreinstellungen"
 
-#: ../src/gui/mainFrame.cpp:558
+#: ../src/gui/mainFrame.cpp:560
 msgid "&Edit"
 msgstr "&Bearbeiten"
 
-#: ../src/gui/mainFrame.cpp:561
+#: ../src/gui/mainFrame.cpp:563
 msgid "&View"
 msgstr "&Ansicht"
 
-#: ../src/gui/mainFrame.cpp:563
+#: ../src/gui/mainFrame.cpp:565
 msgid "&Help...\tCtrl+H"
 msgstr "&Hilfe...\tCtrl+H"
 
-#: ../src/gui/mainFrame.cpp:563
+#: ../src/gui/mainFrame.cpp:565
 msgid "Show help files and documentation"
 msgstr "Hilfedateien und Dokumentation anzeigen"
 
-#: ../src/gui/mainFrame.cpp:564
+#: ../src/gui/mainFrame.cpp:566
 msgid "&Contact..."
 msgstr "&Kontakt..."
 
-#: ../src/gui/mainFrame.cpp:564
+#: ../src/gui/mainFrame.cpp:566
 msgid "Open contact page"
 msgstr "Kontaktseite öffnen"
 
-#: ../src/gui/mainFrame.cpp:566
+#: ../src/gui/mainFrame.cpp:568
 msgid "&About..."
 msgstr "Über 3Depict..."
 
-#: ../src/gui/mainFrame.cpp:566
+#: ../src/gui/mainFrame.cpp:568
 msgid "Information about this program"
 msgstr "Informationen zu diesem Programm"
 
-#: ../src/gui/mainFrame.cpp:567
+#: ../src/gui/mainFrame.cpp:569
 msgid "&Help"
 msgstr "&Hilfe"
 
-#: ../src/gui/mainFrame.cpp:569
+#: ../src/gui/mainFrame.cpp:571
 msgid "Stashed Filters"
 msgstr "Zwischengelagerte Filter"
 
-#: ../src/gui/mainFrame.cpp:574
+#: ../src/gui/mainFrame.cpp:576
 msgid "New Filters"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:604
+#: ../src/gui/mainFrame.cpp:606
 msgid "Auto Refresh"
 msgstr ""
 "Autom.\n"
 "aktualisieren"
 
-#: ../src/gui/mainFrame.cpp:610
+#: ../src/gui/mainFrame.cpp:612
 msgid "Filter settings"
 msgstr "Filtereinstellungen"
 
-#: ../src/gui/mainFrame.cpp:613
+#: ../src/gui/mainFrame.cpp:615
 msgid "Camera Name"
 msgstr "Kameraname"
 
-#: ../src/gui/mainFrame.cpp:625
+#: ../src/gui/mainFrame.cpp:627
 msgid "Resize to Fit"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:627
+#: ../src/gui/mainFrame.cpp:629
 msgid "3D Post-processing"
 msgstr "3D Nachbearbeitung"
 
-#: ../src/gui/mainFrame.cpp:629
+#: ../src/gui/mainFrame.cpp:631
 msgid "Enable Cropping"
 msgstr "Zuschneiden aktivieren"
 
-#: ../src/gui/mainFrame.cpp:631 ../src/gui/mainFrame.cpp:642
+#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
 msgid "x-y"
 msgstr "x-y"
 
-#: ../src/gui/mainFrame.cpp:632 ../src/gui/mainFrame.cpp:643
+#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
 msgid "x-z"
 msgstr "x-z"
 
-#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
+#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
 msgid "y-x"
 msgstr "y-x"
 
-#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
+#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
 msgid "y-z"
 msgstr "y-z"
 
-#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
+#: ../src/gui/mainFrame.cpp:637 ../src/gui/mainFrame.cpp:648
 msgid "z-x"
 msgstr "z-x"
 
-#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
+#: ../src/gui/mainFrame.cpp:638 ../src/gui/mainFrame.cpp:649
 msgid "z-y"
 msgstr "z-y"
 
-#: ../src/gui/mainFrame.cpp:651
+#: ../src/gui/mainFrame.cpp:653
 msgid "Use camera coordinates"
 msgstr "Verwende Kamerakoordinaten"
 
-#: ../src/gui/mainFrame.cpp:652
+#: ../src/gui/mainFrame.cpp:654
 msgid "dX"
 msgstr "dX"
 
-#: ../src/gui/mainFrame.cpp:654
+#: ../src/gui/mainFrame.cpp:656
 msgid "dY"
 msgstr "dY"
 
-#: ../src/gui/mainFrame.cpp:656
+#: ../src/gui/mainFrame.cpp:658
 msgid "dZ"
 msgstr "dZ"
 
-#: ../src/gui/mainFrame.cpp:658
+#: ../src/gui/mainFrame.cpp:660
 msgid "Enable Anaglyphic Stereo"
 msgstr "Anaglyphic Stereo aktivieren"
 
-#: ../src/gui/mainFrame.cpp:659
+#: ../src/gui/mainFrame.cpp:661
 msgid "Flip Channels"
 msgstr "Kanäle tauschen"
 
-#: ../src/gui/mainFrame.cpp:660
+#: ../src/gui/mainFrame.cpp:662
 msgid "Anaglyph Mode"
 msgstr "Anaglyphmodus"
 
-#: ../src/gui/mainFrame.cpp:662
+#: ../src/gui/mainFrame.cpp:664
 msgid "Red-Blue"
 msgstr "Rot-Blau"
 
-#: ../src/gui/mainFrame.cpp:663
+#: ../src/gui/mainFrame.cpp:665
 msgid "Red-Green"
 msgstr "Rot-Grün"
 
-#: ../src/gui/mainFrame.cpp:664
+#: ../src/gui/mainFrame.cpp:666
 msgid "Red-Cyan"
 msgstr "Rot-Zyan"
 
-#: ../src/gui/mainFrame.cpp:665
+#: ../src/gui/mainFrame.cpp:667
 msgid "Green-Magenta"
 msgstr "Grün-Magenta"
 
-#: ../src/gui/mainFrame.cpp:669
+#: ../src/gui/mainFrame.cpp:671
 msgid "Baseline Separation"
 msgstr "Basislinienabstand"
 
-#: ../src/gui/mainFrame.cpp:671 ../src/backend/filters/annotation.cpp:906
-#: ../src/backend/filters/voxelise.cpp:938
-#: ../src/backend/filters/voxelise.cpp:1106
-#: ../src/backend/filters/profile.cpp:1164
-#: ../src/backend/filters/boundingBox.cpp:731
-#: ../src/backend/filters/dataLoad.cpp:666
-#: ../src/backend/filters/spectrumPlot.cpp:683
+#: ../src/gui/mainFrame.cpp:673 ../src/backend/filters/voxelise.cpp:1150
+#: ../src/backend/filters/voxelise.cpp:1409
+#: ../src/backend/filters/profile.cpp:1168
+#: ../src/backend/filters/boundingBox.cpp:732
+#: ../src/backend/filters/annotation.cpp:914
+#: ../src/backend/filters/dataLoad.cpp:755
+#: ../src/backend/filters/spectrumPlot.cpp:686
 msgid "Appearance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:672
+#: ../src/gui/mainFrame.cpp:674
 msgid "Smooth && translucent objects"
 msgstr "Glatte && durchsichtige Objekte"
 
-#: ../src/gui/mainFrame.cpp:674
+#: ../src/gui/mainFrame.cpp:676
 msgid "3D lighting"
 msgstr "3D Beleuchtung"
 
-#: ../src/gui/mainFrame.cpp:677
+#: ../src/gui/mainFrame.cpp:679
 msgid "Performance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:678
+#: ../src/gui/mainFrame.cpp:680
 msgid "Fast and weak randomisation."
 msgstr "Schnelle aber schwache Randomisierung"
 
-#: ../src/gui/mainFrame.cpp:680
+#: ../src/gui/mainFrame.cpp:682
 msgid "Limit Output Pts"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:685
+#: ../src/gui/mainFrame.cpp:687
 msgid "Filter caching"
 msgstr "Filter zwischenspeichern"
 
-#: ../src/gui/mainFrame.cpp:687
+#: ../src/gui/mainFrame.cpp:689
 msgid "Max. Ram usage (%)"
 msgstr "Max. RAM-Nutzung (%)"
 
-#: ../src/gui/mainFrame.cpp:759
+#: ../src/gui/mainFrame.cpp:761
 msgid "Warning: Your configuration file appears to be invalid:\n"
 msgstr "Warnung: Ihre Konfigurationsdatei scheint ungültig zu sein.\n"
 
-#: ../src/gui/mainFrame.cpp:760
+#: ../src/gui/mainFrame.cpp:762
 msgid "\tConfig Load: "
 msgstr "\tConfig Load: "
 
-#: ../src/gui/mainFrame.cpp:1054
+#: ../src/gui/mainFrame.cpp:1060
 msgid "Current state has not been saved, would you like to save it now?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1055
+#: ../src/gui/mainFrame.cpp:1061
 msgid "State changed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1073
-msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)"
-msgstr "Lesbare Dateien (*.xml, *.pos, *.txt,*.csv,*.ato)"
+#: ../src/gui/mainFrame.cpp:1079
+msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1075
+#: ../src/gui/mainFrame.cpp:1081
 msgid "XML State File (*.xml)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1076
+#: ../src/gui/mainFrame.cpp:1082
 msgid "POS File (*.pos)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1077
+#: ../src/gui/mainFrame.cpp:1083
 msgid "LAWATAP ATO File (*.ato)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1078
+#: ../src/gui/mainFrame.cpp:1084
 msgid "Text File (*.txt, *.csv)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1079
+#: ../src/gui/mainFrame.cpp:1085
+msgid "3Dap Files (*.ops)"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:1086
 msgid "All Files (*)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1092 ../src/gui/mainFrame.cpp:1141
+#: ../src/gui/mainFrame.cpp:1099 ../src/gui/mainFrame.cpp:1148
 msgid "Select Data or State File..."
 msgstr "Daten oder Statusdatei auswählen..."
 
-#: ../src/gui/mainFrame.cpp:1142
+#: ../src/gui/mainFrame.cpp:1149
 msgid ""
 "3Depict file (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS File (*.pos)|*.pos|"
 "XML State File (*.xml)|*.xml|All Files (*)|*"
@@ -1356,23 +1573,23 @@ msgstr ""
 "3Depictdateien (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS Datei (*.pos)|*."
 "pos|XML Status Datei (*.xml)|*.xml|All Files (*)|*"
 
-#: ../src/gui/mainFrame.cpp:1153
+#: ../src/gui/mainFrame.cpp:1160
 msgid "Merged file."
 msgstr "Datei zusammengeführt."
 
-#: ../src/gui/mainFrame.cpp:1256
+#: ../src/gui/mainFrame.cpp:1263
 msgid "Tip: You can use ⌘ (command) to merge"
 msgstr "Tip: Sie können ⌘ (command) zum Zusammenführen verwenden"
 
-#: ../src/gui/mainFrame.cpp:1258
+#: ../src/gui/mainFrame.cpp:1265
 msgid "Tip: You can use ctrl to merge"
 msgstr "Tip: Sie können strg zum Zusammen führen verwenden"
 
-#: ../src/gui/mainFrame.cpp:1292
+#: ../src/gui/mainFrame.cpp:1299
 msgid "Load error"
 msgstr "Fehler beim Laden"
 
-#: ../src/gui/mainFrame.cpp:1293
+#: ../src/gui/mainFrame.cpp:1300
 msgid ""
 "Error loading state file.\n"
 "See console for more info."
@@ -1380,7 +1597,7 @@ msgstr ""
 "Fehler beim Laden der Statusdatei.\n"
 "Konsole für mehr Informationen."
 
-#: ../src/gui/mainFrame.cpp:1301
+#: ../src/gui/mainFrame.cpp:1308
 msgid ""
 "This state file contains filters that can be unsafe to run\n"
 "Do you wish to remove these before continuing?."
@@ -1388,24 +1605,24 @@ msgstr ""
 "Diese Statusdatei enthält Filter deren Anwendung möglicherweise unsicher "
 "ist. Wollen Sie diese entfernen."
 
-#: ../src/gui/mainFrame.cpp:1302
+#: ../src/gui/mainFrame.cpp:1309
 msgid "Security warning"
 msgstr "Sicherheitswarnung"
 
-#: ../src/gui/mainFrame.cpp:1484 ../src/gui/mainFrame.cpp:1580
-#: ../src/gui/mainFrame.cpp:2010
+#: ../src/gui/mainFrame.cpp:1499 ../src/gui/mainFrame.cpp:1595
+#: ../src/gui/mainFrame.cpp:2029
 msgid "Unable to save"
 msgstr "Speichern nicht möglich"
 
-#: ../src/gui/mainFrame.cpp:1485
+#: ../src/gui/mainFrame.cpp:1500
 msgid "No plot available. Please create a plot before exporting."
 msgstr "Kein Plot vefügbar. Plot muss vor dem Exportieren erzeugt werden."
 
-#: ../src/gui/mainFrame.cpp:1489
+#: ../src/gui/mainFrame.cpp:1504
 msgid "Save plot..."
 msgstr "Plot speichern..."
 
-#: ../src/gui/mainFrame.cpp:1490
+#: ../src/gui/mainFrame.cpp:1505
 msgid ""
 "By Extension (svg,png)|*.svg;*.png|Scalable Vector Graphics File (*.svg)|*."
 "svg|PNG File (*.png)|*.png|All Files (*)|*"
@@ -1413,53 +1630,53 @@ msgstr ""
 "Dateierweiterung (svg,png)|*.svg;*.png|Skalierbare Vektorgrafik (*.svg)|*."
 "svg|PNG Datei (*.png)|*.png|Alle Dateien (*)|*"
 
-#: ../src/gui/mainFrame.cpp:1544
+#: ../src/gui/mainFrame.cpp:1559
 msgid "Select type for save"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1545
+#: ../src/gui/mainFrame.cpp:1560
 msgid "Choose file type"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1565 ../src/gui/mainFrame.cpp:1622
-#: ../src/gui/mainFrame.cpp:1658
+#: ../src/gui/mainFrame.cpp:1580 ../src/gui/mainFrame.cpp:1637
+#: ../src/gui/mainFrame.cpp:1673
 msgid "Choose resolution"
 msgstr "Auflösung auswählen"
 
-#: ../src/gui/mainFrame.cpp:1581
+#: ../src/gui/mainFrame.cpp:1596
 msgid "Unknown file extension. Please use \"svg\" or \"png\""
 msgstr "Unbekannte Dateierweiterung. Bitte verwenden Sie \"svg\" oder \"png\""
 
-#: ../src/gui/mainFrame.cpp:1592
+#: ../src/gui/mainFrame.cpp:1607
 msgid "Saved plot: "
 msgstr "Gespeicherter Plot:"
 
-#: ../src/gui/mainFrame.cpp:1599 ../src/gui/mainFrame.cpp:1651
+#: ../src/gui/mainFrame.cpp:1614 ../src/gui/mainFrame.cpp:1666
 msgid "Save Image..."
 msgstr "Speichere Bild..."
 
-#: ../src/gui/mainFrame.cpp:1600 ../src/gui/mainFrame.cpp:1652
+#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:1667
 msgid "PNG File (*.png)|*.png|All Files (*)|*"
 msgstr "PNG Datei (*.png)|*.png|Alle Dateien (*)|*"
 
-#: ../src/gui/mainFrame.cpp:1614
+#: ../src/gui/mainFrame.cpp:1629
 msgid "File already exists. Overwrite?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:2407
-#: ../src/gui/mainFrame.cpp:2513 ../src/gui/mainFrame.cpp:2536
+#: ../src/gui/mainFrame.cpp:1630 ../src/gui/mainFrame.cpp:2425
+#: ../src/gui/mainFrame.cpp:2531 ../src/gui/mainFrame.cpp:2554
 msgid "Overwrite?"
 msgstr "Überschreiben?"
 
-#: ../src/gui/mainFrame.cpp:1642 ../src/gui/mainFrame.cpp:1718
+#: ../src/gui/mainFrame.cpp:1657 ../src/gui/mainFrame.cpp:1733
 msgid "Saved 3D View :"
 msgstr "Gespeicherte 3D Ansicht"
 
-#: ../src/gui/mainFrame.cpp:1672
+#: ../src/gui/mainFrame.cpp:1687
 msgid "Program limitation"
 msgstr "Programmeinschränkung"
 
-#: ../src/gui/mainFrame.cpp:1673
+#: ../src/gui/mainFrame.cpp:1688
 msgid ""
 "Limitation on the screenshot dimension; please ensure that both width and "
 "height exceed the initial values,\n"
@@ -1471,104 +1688,104 @@ msgstr ""
 "kleiner als die ursprünglichen Werte sind. Sollte Sie dies stören, melden "
 "Sie bitte einen Bug."
 
-#: ../src/gui/mainFrame.cpp:1690
+#: ../src/gui/mainFrame.cpp:1705
 msgid "Number of frames"
 msgstr "Bilderanzahl"
 
-#: ../src/gui/mainFrame.cpp:1744
+#: ../src/gui/mainFrame.cpp:1759
 msgid "Abo&rt"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1746
+#: ../src/gui/mainFrame.cpp:1761
 msgid "&Refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1855
+#: ../src/gui/mainFrame.cpp:1870
 msgid "Cannot animate with no filters."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1933
+#: ../src/gui/mainFrame.cpp:1952
 msgid "Animating"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1934
+#: ../src/gui/mainFrame.cpp:1953
 msgid "Performing refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1960
+#: ../src/gui/mainFrame.cpp:1979
 msgid "Filter property change failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1982
+#: ../src/gui/mainFrame.cpp:2001
 msgid "Refresh failed on frame :"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2011
+#: ../src/gui/mainFrame.cpp:2030
 msgid "Image save failed for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2036
+#: ../src/gui/mainFrame.cpp:2055
 msgid "Ion save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2037
+#: ../src/gui/mainFrame.cpp:2056
 msgid "Unable to save ions for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2068
+#: ../src/gui/mainFrame.cpp:2087
 msgid "Plot save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2069
+#: ../src/gui/mainFrame.cpp:2088
 msgid "Unable to save plot or frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2110
+#: ../src/gui/mainFrame.cpp:2129
 msgid "Range save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2111
+#: ../src/gui/mainFrame.cpp:2130
 msgid "Unable to save range for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2140
+#: ../src/gui/mainFrame.cpp:2159
 msgid "Voxel save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2141
+#: ../src/gui/mainFrame.cpp:2160
 msgid "Unable to save voxels for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2170
+#: ../src/gui/mainFrame.cpp:2189
 msgid "Animate failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2194 ../src/gui/mainFrame.cpp:2360
-#: ../src/gui/mainFrame.cpp:2468
+#: ../src/gui/mainFrame.cpp:2213 ../src/gui/mainFrame.cpp:2379
+#: ../src/gui/mainFrame.cpp:2486
 msgid "No filters means no data to export"
 msgstr "Keine Filter bedeutet keine Daten zum Exportieren"
 
-#: ../src/gui/mainFrame.cpp:2208
+#: ../src/gui/mainFrame.cpp:2227
 msgid "Package name"
 msgstr "Paketname"
 
-#: ../src/gui/mainFrame.cpp:2209
+#: ../src/gui/mainFrame.cpp:2228
 msgid "Package directory name"
 msgstr "Paketverzeichnis"
 
-#: ../src/gui/mainFrame.cpp:2211
+#: ../src/gui/mainFrame.cpp:2230
 msgid "AnalysisPackage"
 msgstr "Analysepaket"
 
-#: ../src/gui/mainFrame.cpp:2224
+#: ../src/gui/mainFrame.cpp:2243
 msgid "Package folder already exists, won't overwrite."
 msgstr "Paketverzeichnis existiert bereits. Werde es nicht überschreiben."
 
-#: ../src/gui/mainFrame.cpp:2225
+#: ../src/gui/mainFrame.cpp:2244
 msgid "Not available"
 msgstr "Nicht verfügbar"
 
-#: ../src/gui/mainFrame.cpp:2250
+#: ../src/gui/mainFrame.cpp:2269
 msgid ""
 "Package folder creation failed\n"
 "check writing to this location is possible."
@@ -1576,221 +1793,229 @@ msgstr ""
 "Anlegen des Paketverzeichnisses fehlgeschlagen\n"
 "Überprüfen Sie ob der angegenbene Ort schreibgeschützt ist."
 
-#: ../src/gui/mainFrame.cpp:2251
+#: ../src/gui/mainFrame.cpp:2270
 msgid "Folder creation failed"
 msgstr "Anlegen des Ordners ist fehlgeschlagen"
 
-#: ../src/gui/mainFrame.cpp:2271
+#: ../src/gui/mainFrame.cpp:2290
 msgid "Copying"
 msgstr "kopiere"
 
-#: ../src/gui/mainFrame.cpp:2272
+#: ../src/gui/mainFrame.cpp:2291
 msgid "Copying referenced files"
 msgstr "Copying referenced files"
 
-#: ../src/gui/mainFrame.cpp:2338
+#: ../src/gui/mainFrame.cpp:2357
 msgid "Error copying file"
 msgstr "Fehler beim Kopieren der Datei"
 
-#: ../src/gui/mainFrame.cpp:2347
+#: ../src/gui/mainFrame.cpp:2366
 msgid "Saved package: "
 msgstr "Gespeicherte Pakete: "
 
-#: ../src/gui/mainFrame.cpp:2371
+#: ../src/gui/mainFrame.cpp:2390
 msgid "Export"
 msgstr "Exportieren"
 
-#: ../src/gui/mainFrame.cpp:2377
+#: ../src/gui/mainFrame.cpp:2396
 msgid ""
 "POS Data (*.pos)|*.pos|Text File (*.txt)|*.txt|VTK Legacy (*.vtk)|*.vtk|All "
 "Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2406 ../src/gui/mainFrame.cpp:2512
+#: ../src/gui/mainFrame.cpp:2424 ../src/gui/mainFrame.cpp:2530
 msgid "File already exists, overwrite?"
 msgstr "Datei existiert bereits. Überschreiben?"
 
-#: ../src/gui/mainFrame.cpp:2447
+#: ../src/gui/mainFrame.cpp:2465
 msgid "Saved ions: "
 msgstr "Gespeicherte Ionen:"
 
-#: ../src/gui/mainFrame.cpp:2472
+#: ../src/gui/mainFrame.cpp:2490
 msgid "Export Ranges"
 msgstr "Range exportieren"
 
-#: ../src/gui/mainFrame.cpp:2494
+#: ../src/gui/mainFrame.cpp:2512
 msgid "Save state..."
 msgstr "Speichere Status..."
 
-#: ../src/gui/mainFrame.cpp:2495
+#: ../src/gui/mainFrame.cpp:2513
 msgid "XML state file (*.xml)|*.xml|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2535
+#: ../src/gui/mainFrame.cpp:2553
 msgid "Files have been referred to using relative paths. Keep relative paths?"
 msgstr ""
 "Auf Dateien wurde mit relativen Pfaden verwiesen. Relative Pfade beibehalten?"
 
-#: ../src/gui/mainFrame.cpp:2568
+#: ../src/gui/mainFrame.cpp:2586
 msgid "Saved state: "
 msgstr "Gespeicherter Status: "
 
-#: ../src/gui/mainFrame.cpp:2644
+#: ../src/gui/mainFrame.cpp:2662
 msgid "Range editor"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2901
+#: ../src/gui/mainFrame.cpp:2929
 msgid "Manual not found locally. Launching web browser"
 msgstr "Anleitung konnte lokal nicht gefunden werden. Starte Webbrowser"
 
-#: ../src/gui/mainFrame.cpp:2910
+#: ../src/gui/mainFrame.cpp:2938
 msgid "Opening contact page in external web browser"
 msgstr "Öffne Kontaktseite in externem Browser"
 
-#: ../src/gui/mainFrame.cpp:2918
+#: ../src/gui/mainFrame.cpp:2946
 msgid "No filter stashes to edit."
 msgstr "Keine Filterstashes zum Bearbeiten."
 
-#: ../src/gui/mainFrame.cpp:2922
+#: ../src/gui/mainFrame.cpp:2950
 msgid "Filter Stashes"
 msgstr "Filter Stashes"
 
-#: ../src/gui/mainFrame.cpp:2939
+#: ../src/gui/mainFrame.cpp:2967
 msgid "Quick and dirty analysis for point data."
 msgstr "\"Quick and dirty\" Analyse von Punktdaten."
 
-#: ../src/gui/mainFrame.cpp:2949
+#: ../src/gui/mainFrame.cpp:2977
 msgid "Compiled with wx Version: "
 msgstr "Kompiliert mit wx Version: "
 
-#: ../src/gui/mainFrame.cpp:2970
+#: ../src/gui/mainFrame.cpp:2998
 msgid "Press enter to store new stash"
 msgstr "Eingabe drücken um neuen Filterstash zu speichern"
 
-#: ../src/gui/mainFrame.cpp:2976
+#: ../src/gui/mainFrame.cpp:3004
 msgid "Press enter to restore stash"
 msgstr "Eingabe drücken um Stash wiederherzustellen"
 
-#: ../src/gui/mainFrame.cpp:3009
+#: ../src/gui/mainFrame.cpp:3037
 msgid "Unable to create stash, selection invalid"
 msgstr "Stash kann nicht erstellt werden, Auswahl ungültig"
 
-#: ../src/gui/mainFrame.cpp:3016
+#: ../src/gui/mainFrame.cpp:3044
 msgid "Created new filter tree stash"
 msgstr "Neuer Filterstash wurde erzeugt"
 
-#: ../src/gui/mainFrame.cpp:3123
+#: ../src/gui/mainFrame.cpp:3156
 msgid "Filter type not a data source - can't be at tree base"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3263
-msgid "Moving - Hold ⌘ (command) to copy"
-msgstr "Verschieben - Halte ⌘ (command) um zu kopieren"
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete\tDel"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete the selected filter"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:3351
+msgid "Moving - Hold ⌘ (command) to copy, shift to splice"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3265
-msgid "Moving - Hold control to copy"
-msgstr "Verschieben - Halte Strg zum kopieren"
+#: ../src/gui/mainFrame.cpp:3353
+msgid "Moving - Hold control to copy, shift to splice"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3604
+#: ../src/gui/mainFrame.cpp:3696
 msgid "Press enter to store new camera"
 msgstr "Eingabe drücken um neue Kamera zu speichern"
 
-#: ../src/gui/mainFrame.cpp:3606
+#: ../src/gui/mainFrame.cpp:3698
 msgid "Press enter to restore camera"
 msgstr "Eingabe drücken um Kamera wiederherzustellen"
 
-#: ../src/gui/mainFrame.cpp:3631 ../src/gui/mainFrame.cpp:3672
+#: ../src/gui/mainFrame.cpp:3723 ../src/gui/mainFrame.cpp:3764
 msgid "Restored camera: "
 msgstr "Wiederhergestellte Kamera: "
 
-#: ../src/gui/mainFrame.cpp:3649
+#: ../src/gui/mainFrame.cpp:3741
 msgid "Stored camera: "
 msgstr "Gespeicherte Kamera: "
 
-#: ../src/gui/mainFrame.cpp:3735
+#: ../src/gui/mainFrame.cpp:3827
 msgid "Select an item from the filter tree before choosing a new filter"
 msgstr ""
 "Aktivieren Sie zuerst ein Punkt aus dem Filterverlauf bevor Sie einen neuen "
 "Filter auswählen"
 
-#: ../src/gui/mainFrame.cpp:3737
+#: ../src/gui/mainFrame.cpp:3829
 msgid "Load data source (file->open) before choosing a new filter"
 msgstr "Lade Datenquelle (Datei->öffnen) vor dem Auswählen eines neuen Filters"
 
-#: ../src/gui/mainFrame.cpp:3763
+#: ../src/gui/mainFrame.cpp:3855
 msgid "Select RNG File..."
 msgstr "RNG Datei auswählen..."
 
-#: ../src/gui/mainFrame.cpp:3784
+#: ../src/gui/mainFrame.cpp:3876
 msgid "Failed reading range file."
 msgstr "Fehler beim Lesen der Rangedatei."
 
-#: ../src/gui/mainFrame.cpp:3788
+#: ../src/gui/mainFrame.cpp:3880
 msgid "Error loading file"
 msgstr "Fehler beim Laden der Datei"
 
-#: ../src/gui/mainFrame.cpp:3849 ../src/gui/mainFrame.cpp:3944
-#: ../src/gui/mainFrame.cpp:5449 ../src/gui/mainFrame.cpp:5968
+#: ../src/gui/mainFrame.cpp:3941 ../src/gui/mainFrame.cpp:4042
+#: ../src/gui/mainFrame.cpp:5554 ../src/gui/mainFrame.cpp:6073
 msgid "Cons."
 msgstr "Kons."
 
-#: ../src/gui/mainFrame.cpp:3907
+#: ../src/gui/mainFrame.cpp:4005
 msgid "Refresh Aborted."
 msgstr "Aktualisieren abgebrochen"
 
-#: ../src/gui/mainFrame.cpp:3948
+#: ../src/gui/mainFrame.cpp:4046
 msgid "*Cons."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3950
+#: ../src/gui/mainFrame.cpp:4048
 msgid "§Cons."
 msgstr "§Kons."
 
-#: ../src/gui/mainFrame.cpp:4007
+#: ../src/gui/mainFrame.cpp:4110
 msgid "Complete"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4105
+#: ../src/gui/mainFrame.cpp:4208
 msgid "msgs"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4146
+#: ../src/gui/mainFrame.cpp:4249
 msgid "Autosave complete."
 msgstr "Autosave beendet."
 
-#: ../src/gui/mainFrame.cpp:4350
+#: ../src/gui/mainFrame.cpp:4453
 msgid "Aborting...."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4416
+#: ../src/gui/mainFrame.cpp:4519
 msgid "Updated."
 msgstr "Updated."
 
-#: ../src/gui/mainFrame.cpp:4425
+#: ../src/gui/mainFrame.cpp:4528
 msgid "Calculating..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4428
-msgid "\\% Done (Esc aborts)"
-msgstr "\\% fertig (Esc abbrechen)"
+#: ../src/gui/mainFrame.cpp:4531
+msgid "% Done (Esc aborts)"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4430
-msgid "\\% Done"
-msgstr "\\% fertig"
+#: ../src/gui/mainFrame.cpp:4533
+msgid "% Done"
+msgstr "\\% Fertig"
 
-#: ../src/gui/mainFrame.cpp:4704
+#: ../src/gui/mainFrame.cpp:4808
 msgid "Tip: You can shift-click to force full refresh, if required"
 msgstr "Tipp: Verwende shift-click um komplettes Aktualisieren zu erzwingen"
 
-#: ../src/gui/mainFrame.cpp:4766
+#: ../src/gui/mainFrame.cpp:4870
 msgid "No data to save"
 msgstr "Keine Daten zum Sichern"
 
-#: ../src/gui/mainFrame.cpp:4950
+#: ../src/gui/mainFrame.cpp:5052
 msgid "Aborting..."
 msgstr "Abbrechen..."
 
-#: ../src/gui/mainFrame.cpp:4956
+#: ../src/gui/mainFrame.cpp:5058
 msgid ""
 "Waiting for refresh to abort. Exiting could lead to the program "
 "backgrounding. Exit anyway? "
@@ -1798,68 +2023,66 @@ msgstr ""
 "Waiting for refresh to abort. Exiting could lead to the program "
 "backgrounding. Exit anyway? "
 
-#: ../src/gui/mainFrame.cpp:4957 ../src/gui/mainFrame.cpp:4977
+#: ../src/gui/mainFrame.cpp:5059 ../src/gui/mainFrame.cpp:5079
 msgid "Confirmation request"
 msgstr "Bestätigungsabfrage"
 
-#: ../src/gui/mainFrame.cpp:4976
+#: ../src/gui/mainFrame.cpp:5078
 msgid "Are you sure you wish to exit 3Depict?"
 msgstr "Sind Sie sicher, dass Sie 3Depict beenden wollen?"
 
-#: ../src/gui/mainFrame.cpp:5314 ../src/gl/cameras.cpp:627
-#: ../src/gl/cameras.cpp:730
-msgid "Orthogonal"
-msgstr "Orthogonal"
-
-#: ../src/gui/mainFrame.cpp:5477
+#: ../src/gui/mainFrame.cpp:5582
 msgid "Update Notice: New version "
 msgstr "Updatenotiz: Neue Version "
 
-#: ../src/gui/mainFrame.cpp:5477
+#: ../src/gui/mainFrame.cpp:5582
 msgid " found online."
 msgstr " online gefunden."
 
-#: ../src/gui/mainFrame.cpp:5481
+#: ../src/gui/mainFrame.cpp:5586
 msgid "Online Check: "
 msgstr "Überprüfe online:"
 
-#: ../src/gui/mainFrame.cpp:5481
+#: ../src/gui/mainFrame.cpp:5586
 msgid " is up-to-date."
 msgstr "ist up-to-date."
 
-#: ../src/gui/mainFrame.cpp:5571
+#: ../src/gui/mainFrame.cpp:5676
 msgid "An auto-save state was found, would you like to restore it?."
 msgstr "Ein auto-save Status wurde gefunden. Wollen Sie ihn wiederherstellen?"
 
-#: ../src/gui/mainFrame.cpp:5572
+#: ../src/gui/mainFrame.cpp:5677
 msgid "Autosave"
 msgstr "Automatisch speichern"
 
-#: ../src/gui/mainFrame.cpp:5579
+#: ../src/gui/mainFrame.cpp:5684
 msgid "Unable to load autosave file.."
 msgstr "Kann Autosavedatei nicht laden.."
 
-#: ../src/gui/mainFrame.cpp:5770
+#: ../src/gui/mainFrame.cpp:5875
 msgid "List of available filters"
 msgstr "Liste der verfügbaren Filter"
 
-#: ../src/gui/mainFrame.cpp:5772
-msgid "Tree - drag to move items, hold ⌘ for copy. Tap delete to remove items"
+#: ../src/gui/mainFrame.cpp:5877
+msgid ""
+"Tree - drag to move items, hold ⌘ for copy, shift for splice. Tap delete to "
+"remove items, multi-click to rename"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5774
+#: ../src/gui/mainFrame.cpp:5879
 msgid ""
-"Tree - drag to move items, hold Ctrl for copy. Tap delete to remove items."
+"Tree - drag to move items, hold Ctrl for copy, shift for splice. Tap delete "
+"to remove items, multi-click to rename."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5776
+#: ../src/gui/mainFrame.cpp:5881
 msgid ""
 "Enable/Disable automatic updates of data when filter change takes effect"
 msgstr ""
 "Ein/Ausschalten vom automatischen Aktualisieren der Daten wenn Änderungen am "
 "Filter wirksam werden"
 
-#: ../src/gui/mainFrame.cpp:5779
+#: ../src/gui/mainFrame.cpp:5884
 msgid ""
 "Enable/Disable \"Alpha blending\" (transparency) in rendering system. "
 "Blending is used to smooth objects (avoids artefacts known as \"jaggies\") "
@@ -1871,7 +2094,7 @@ msgstr ""
 "und transparente Oberflächen zu generieren. Ausschalten erlaubt schnelleres "
 "Renden führt jedoch zu blockigerer Darstellung."
 
-#: ../src/gui/mainFrame.cpp:5780
+#: ../src/gui/mainFrame.cpp:5885
 msgid ""
 "Enable/Disable lighting calculations in rendering, for objects that request "
 "this. Lighting provides important depth cues for objects comprised of 3D "
@@ -1882,7 +2105,7 @@ msgstr ""
 "umrandete Objekte. Deaktivieren erlaubt u.U. schnelleres Rendern bei "
 "komplizierten Szenen."
 
-#: ../src/gui/mainFrame.cpp:5781
+#: ../src/gui/mainFrame.cpp:5886
 msgid ""
 "Enable/Disable weak randomisation (Galois linear feedback shift register). "
 "Strong randomisation uses a much slower random selection method, but "
@@ -1894,14 +2117,14 @@ msgstr ""
 "Auswahlmethode bietet dafür aber einen besseren Schutz gegen unbeabsichtigte "
 "Korrelationen und wird für die endgültige Analyse empfohlen."
 
-#: ../src/gui/mainFrame.cpp:5783
+#: ../src/gui/mainFrame.cpp:5888
 msgid ""
 "Limit the number of points that can be displayed in the 3D  scene. Does not "
 "affect filter tree calculations. Disabling this can severely reduce "
 "performance, due to large numbers of points being visible at once."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5784
+#: ../src/gui/mainFrame.cpp:5889
 msgid ""
 "Enable/Disable caching of intermediate results during filter updates. "
 "Disabling caching will use less system RAM, though changes to any filter "
@@ -1913,30 +2136,30 @@ msgstr ""
 "bei Änderungen der Filterparameter der ganze Filterbaum neu berechnet wird. "
 "Dies erhöht den Rechenaufwand deutlich."
 
-#: ../src/gui/mainFrame.cpp:5786
+#: ../src/gui/mainFrame.cpp:5891
 msgid "Camera data information"
 msgstr "Kamerainformation"
 
-#: ../src/gui/mainFrame.cpp:5790
+#: ../src/gui/mainFrame.cpp:5895
 msgid "Enable/disable visual effects on final 3D output"
 msgstr "Ein/Ausschalten von visuellen Effekten in der finalen 3D Ausgabe."
 
-#: ../src/gui/mainFrame.cpp:5792
+#: ../src/gui/mainFrame.cpp:5897
 msgid "Enable cropping post-process effect"
 msgstr "Cropping post-Prozess Effect einschalten"
 
-#: ../src/gui/mainFrame.cpp:5795
+#: ../src/gui/mainFrame.cpp:5900
 msgid ""
 "Colour based 3D effect enable/disable - requires appropriate colour filter "
 "3D glasses."
 msgstr ""
 "Farbbasierte 3D-Effekte ein/ausschalten - erfordert geeignete 3D-Brillen"
 
-#: ../src/gui/mainFrame.cpp:5796
+#: ../src/gui/mainFrame.cpp:5901
 msgid "Glasses colour mode"
 msgstr "Brillenfarbmodus"
 
-#: ../src/gui/mainFrame.cpp:5798
+#: ../src/gui/mainFrame.cpp:5903
 msgid ""
 "Level of separation between left and right images, which sets 3D depth to "
 "visual distortion tradeoff"
@@ -1944,99 +2167,98 @@ msgstr ""
 "Level of separation between left and right images, which sets 3D depth to "
 "visual distortion tradeoff"
 
-#: ../src/gui/mainFrame.cpp:5802
+#: ../src/gui/mainFrame.cpp:5907
 msgid "X"
 msgstr "X"
 
-#: ../src/gui/mainFrame.cpp:5803
+#: ../src/gui/mainFrame.cpp:5908
 msgid "Y"
 msgstr "Y"
 
-#: ../src/gui/mainFrame.cpp:5804
+#: ../src/gui/mainFrame.cpp:5909
 msgid "Save raw data to file"
 msgstr "Speichere Rohdaten in Datei"
 
-#: ../src/gui/mainFrame.cpp:5805
+#: ../src/gui/mainFrame.cpp:5910
 msgid "Copy raw data to clipboard"
 msgstr "Kopiere Rohdaten in die Zwischenablage"
 
-#: ../src/gui/mainFrame.cpp:5806
+#: ../src/gui/mainFrame.cpp:5911
 msgid "Manage \"stashed\" data."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5807
+#: ../src/gui/mainFrame.cpp:5912
 msgid "Program text output"
 msgstr "Programm Textausgabe"
 
-#: ../src/gui/mainFrame.cpp:5808
+#: ../src/gui/mainFrame.cpp:5913
 msgid "Select active camera, or type to create new named camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5809
+#: ../src/gui/mainFrame.cpp:5914
 msgid "Remove the selected camera"
 msgstr "Ausgewählte Kamera entfernen"
 
-#: ../src/gui/mainFrame.cpp:5810
+#: ../src/gui/mainFrame.cpp:5915
 msgid "Perform cropping from coordinate frame of camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5811
+#: ../src/gui/mainFrame.cpp:5916
 msgid ""
 "Set the maximum amount of RAM to use in order to speed repeat computations"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5812
+#: ../src/gui/mainFrame.cpp:5917
 msgid "Collapse the filter tree"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5813
+#: ../src/gui/mainFrame.cpp:5918
 msgid "Expand the filter tree"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5814
+#: ../src/gui/mainFrame.cpp:5919
 msgid "Process the filter tree, hold shift to purge cached filter data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5928
+#: ../src/gui/mainFrame.cpp:6033
 msgid "Crop"
 msgstr "Zuschneiden"
 
-#: ../src/gui/mainFrame.cpp:5929
+#: ../src/gui/mainFrame.cpp:6034
 msgid "Stereo"
 msgstr "Stereo"
 
-#: ../src/gui/mainFrame.cpp:5946
-#: ../src/backend/filters/externalProgram.cpp:596
-#: ../src/backend/filters/ionColour.cpp:308
-#: ../src/backend/filters/spectrumPlot.cpp:612
+#: ../src/gui/mainFrame.cpp:6051 ../src/backend/filters/externalProgram.cpp:596
+#: ../src/backend/filters/ionColour.cpp:352
+#: ../src/backend/filters/spectrumPlot.cpp:615
 msgid "Data"
 msgstr "Daten"
 
-#: ../src/gui/mainFrame.cpp:5947
+#: ../src/gui/mainFrame.cpp:6052
 msgid "Cam"
 msgstr "Cam"
 
-#: ../src/gui/mainFrame.cpp:5948
+#: ../src/gui/mainFrame.cpp:6053
 msgid "Post"
 msgstr "Post"
 
-#: ../src/gui/mainFrame.cpp:5949
+#: ../src/gui/mainFrame.cpp:6054
 msgid "Tools"
 msgstr "Werkz."
 
-#: ../src/gui/mainFrame.cpp:5967
+#: ../src/gui/mainFrame.cpp:6072
 msgid "Raw"
 msgstr "Roh"
 
-#: ../src/gui/mainFrame.cpp:6010
+#: ../src/gui/mainFrame.cpp:6115
 msgid "Align Camera"
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:259
+#: ../src/gui/mathglPane.cpp:264
 msgid "No plots selected."
 msgstr "Kein Plot ausgewählt."
 
-#: ../src/gui/mathglPane.cpp:1201
+#: ../src/gui/mathglPane.cpp:1228
 msgid ""
 "Unable to allocate requested memory.\n"
 " Try a lower resolution, or save as vector (SVG)."
@@ -2044,629 +2266,181 @@ msgstr ""
 "Kann den notwendigen Speicher nicht zuordnen. Versuche eine geringer "
 "Auflösung oder speichere als Vektografik (svg)."
 
-#: ../src/gui/mathglPane.cpp:1203
+#: ../src/gui/mathglPane.cpp:1230
 msgid "Plotting functions returned an error:\n"
 msgstr "Plot-Funktion meldete einen Fehler:\n"
 
-#: ../src/gui/mathglPane.cpp:1205
+#: ../src/gui/mathglPane.cpp:1232
 msgid "File readback check failed"
 msgstr "File readback check failed"
 
-#: ../src/gui/mathglPane.cpp:1207
+#: ../src/gui/mathglPane.cpp:1234
 msgid "Filesize during readback appears to be zero."
 msgstr "Filesize during readback appears to be zero."
 
-#: ../src/backend/filter.cpp:55
-msgid "2D Plot"
-msgstr ""
+#: ../src/3Depict.cpp:399
+msgid "File : "
+msgstr "Datei : "
 
-#: ../src/backend/filter.cpp:56
-msgid "Draw"
-msgstr "Zeichnen"
+#: ../src/3Depict.cpp:399
+msgid " does not exist. Skipping"
+msgstr " existiert nicht. Überspringe"
 
-#: ../src/backend/filter.cpp:57
-msgid "Range"
-msgstr "Range"
+#: ../src/backend/configFile.cpp:187
+msgid "Config file present, but is not valid (root node test)"
+msgstr "Konfigurationsdatei vorhanden, aber nicht gültig (root node test)"
 
-#: ../src/backend/filter.cpp:58
-msgid "Voxel"
-msgstr "Voxel"
+#: ../src/backend/configFile.cpp:228
+msgid "Unable to interpret recent file entry"
+msgstr "Kann den letzten Dateieintrag nicht interpretieren"
 
-#: ../src/backend/filter.cpp:192 ../src/backend/filters/ionColour.cpp:411
-msgid "Aborted"
-msgstr "Abgebrochen"
+#: ../src/backend/configFile.cpp:268
+msgid "Unable to determine filter type in defaults listing."
+msgstr "Kann den Filtertyp im Defaultslisting nicht bestimmen."
 
-#: ../src/backend/state.cpp:151
-msgid ""
-"This file is a \"state\" file for the 3Depict program, and stores "
-"information about a particular analysis session. This file should be a valid "
-"\"XML\" file"
-msgstr ""
-"Diese Datei ist ein \"Status\" Datei für das Programm 3Depict. Sie speichert "
-"Informationen über die jeweiligen Analysesitzung. Dies sollte ein gültige "
-"\"XML\" Datei sein."
-
-#: ../src/backend/state.cpp:319
-msgid "Failed to allocate parser"
-msgstr "Kann Parser nicht zuordnen"
-
-#: ../src/backend/state.cpp:354
-msgid ""
-"Unable to retrieve root node in input state file... Is this really a non-"
-"empty XML file?"
-msgstr ""
-
-#: ../src/backend/state.cpp:361
-msgid "Base state node missing. Is this really a state XML file??"
-msgstr ""
-
-#: ../src/backend/state.cpp:390
-msgid "State was created by a newer version of this program.. "
-msgstr "Status wurde von einer neueren Version dieses Programmes erstellt.. "
-
-#: ../src/backend/state.cpp:391
-msgid "file reading will continue, but may fail."
-msgstr "Datei wird weiter eingelesen kann aber unter Umständen fehlschlagen."
-
-#: ../src/backend/state.cpp:396
-msgid ""
-"Warning, unparseable version number in state file. File reading will "
-"continue, but may fail"
-msgstr ""
-"Warnung: Nicht lesbare Versionsnummer in Statusdatei. Datei wird weiter "
-"eingelesen kann aber unter Umständen fehlschlagen."
-
-#: ../src/backend/state.cpp:403
-msgid "Unable to find the \"writer\" node"
-msgstr "Kann \"writer\" node nicht finden"
-
-#: ../src/backend/state.cpp:413
-msgid "Unable to find the \"backcolour\" node."
-msgstr "Unable to find the \"backcolour\" node."
-
-#: ../src/backend/state.cpp:420
-msgid "\"backcolour\" node missing \"r\" value."
-msgstr "\"backcolour\" node fehlt \"r\" Wert."
-
-#: ../src/backend/state.cpp:425
-msgid "Unable to interpret \"backColour\" node's \"r\" value."
-msgstr "Kann \"backColour\" node's \"r\" Wert nicht interpretieren."
-
-#: ../src/backend/state.cpp:433
-msgid "\"backcolour\" node missing \"g\" value."
-msgstr "\"backcolour\" node fehlt \"g\" Wert."
-
-#: ../src/backend/state.cpp:439
-msgid "Unable to interpret \"backColour\" node's \"g\" value."
-msgstr "Kann \"backColour\" node's \"g\" Wert nicht interpretieren."
-
-#: ../src/backend/state.cpp:447
-msgid "\"backcolour\" node missing \"b\" value."
-msgstr "\"backcolour\" node fehlt \"b\" Wert."
-
-#: ../src/backend/state.cpp:453
-msgid "Unable to interpret \"backColour\" node's \"b\" value."
-msgstr "Kann \"backColour\" node's \"b\" Wert nicht interpretieren."
-
-#: ../src/backend/state.cpp:460
-msgid "\"backcolour\"s rgb values must be in range [0,1]"
-msgstr "\"backcolour\"s rgb Wert muss im Bereich [0,1] liegen"
-
-#: ../src/backend/state.cpp:488
-msgid "Unable to find or interpret \"showaxis\" node"
-msgstr "Kann \"showaxis\" node nicht interpretieren"
-
-#: ../src/backend/state.cpp:532
-msgid "Unable to locate \"filtertree\" node."
-msgstr "Kann \"filtertree\" node nicht finden."
-
-#: ../src/backend/state.cpp:548
-msgid "Cameras section missing \"active\" node."
-msgstr "Cameras section fehlt \"active\" node."
-
-#: ../src/backend/state.cpp:556
-msgid "Unable to find property \"value\"  for \"cameras->active\" node."
-msgstr "Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht finden."
-
-#: ../src/backend/state.cpp:562
-msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
-msgstr ""
-"Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht interpretieren."
-
-#: ../src/backend/state.cpp:582
-msgid "Failed to interpret camera state for camera : "
-msgstr ""
-
-#: ../src/backend/state.cpp:590
-msgid "Unable to interpret the camera type for camera : "
-msgstr "Kann den Kameratype nicht interpretieren für :"
-
-#: ../src/backend/state.cpp:648
-msgid "Unable to locate stash name for stash "
-msgstr "Kann den Stashnamen für Stash  nicht finden"
-
-#: ../src/backend/state.cpp:655
-msgid "Empty stash name for stash "
-msgstr "Leerer Stashname für Stash"
-
-#: ../src/backend/state.cpp:664
-msgid "No filter tree for stash:"
-msgstr ""
-
-#: ../src/backend/state.cpp:670
-msgid "For stash "
-msgstr "Für Stash "
-
-#: ../src/backend/state.cpp:702
-msgid "Unrecognised effect :"
-msgstr "Nichterkannter Effekt :"
-
-#: ../src/backend/state.cpp:712
-msgid "Duplicate effect found"
-msgstr "Doppelter Effekt gefunden"
-
-#: ../src/backend/state.cpp:712
-msgid " cannot use."
-msgstr "kann nicht   verwenden."
-
-#: ../src/backend/state.cpp:722
-msgid "Error reading effect : "
-msgstr "Fehler beim Lesen:"
-
-#: ../src/backend/state.cpp:927
-msgid "-merge"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
-#: ../src/backend/APT/APTFileIO.cpp:103
-msgid "Error opening file"
-msgstr "Fehler beim Öffnen der Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:45
-msgid "Only found header, no data"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:46
-msgid "Unable to reopen file after first scan"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:47
-msgid "Error whilst reading file contents"
-msgstr "Fehler beim Lesen des Dateiinhaltes"
-
-#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
-msgid "Unexpected file format"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:50
-msgid "Insufficient memory to continue"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:54
-msgid "Memory allocation failure on POS load"
-msgstr "Speicherzuweisungsfeher beim Laden der pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:55
-msgid "Error opening pos file"
-msgstr "Fehler beim Öffnen der pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:56
-msgid "Pos file empty"
-msgstr "Pos-Datei ist leer"
-
-#: ../src/backend/APT/APTFileIO.cpp:57
-msgid "Pos file size appears to have non-integer number of entries"
-msgstr ""
-"Pos-Dateigröße scheint eine nicht ganzzahlige Anzahl an Einträgen zu haben"
-
-#: ../src/backend/APT/APTFileIO.cpp:58
-msgid "Error reading from pos file (after open)"
-msgstr "Fehler beim Lesen aus pos-Datei (nach dem öffnen)"
-
-#: ../src/backend/APT/APTFileIO.cpp:59
-msgid "Error - Found NaN in pos file"
-msgstr "Fehler - Fand NaN in pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:60
-msgid "Error - Found Inf in pos file"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:61
-msgid "Pos load aborted by interrupt."
-msgstr "Pos laden durch Interrupt abgebrochen."
-
-#: ../src/backend/APT/APTFileIO.cpp:80
-msgid "No numerical data found"
-msgstr "Keine numerischen Daten gefunden"
-
-#: ../src/backend/APT/APTFileIO.cpp:81
-msgid "Error re-opening file, after first scan"
-msgstr "Fehler beim nochmaligen Öffnen der Datei nach dem ersten Scan"
-
-#: ../src/backend/APT/APTFileIO.cpp:82
-msgid "Unable to read file contents after open"
-msgstr "Kann den Dateiinhalt nach dem Öffnen nich lesen"
-
-#: ../src/backend/APT/APTFileIO.cpp:83
-msgid "Error interpreting field in file"
-msgstr "Fehler beim Interpretieren eine Feldes in der Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:84
-msgid "Incorrect number of fields in file"
-msgstr "Die Datei enthält eine falsche Anzahl von Feldern"
-
-#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
-msgid "Unable to allocate memory to store data"
-msgstr "Kann Speicher nicht zuordnen"
-
-#: ../src/backend/APT/APTFileIO.cpp:104
-msgid "File is empty"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:105
-msgid "Filesize does not match expected format"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:106
-msgid "File version number not <4, as expected"
-msgstr ""
-
-#: ../src/backend/APT/APTFileIO.cpp:108
-msgid "Unable to detect endian-ness in file"
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:48
-msgid "Error opening file, check name and permissions."
-msgstr "Fehler beim Öffnen der Datei, überprüfe Namen und Berechtigungen."
-
-#: ../src/backend/APT/APTRanges.cpp:49
-msgid ""
-"Error interpreting range file header, expecting ion count and range count, "
-"respectively."
-msgstr ""
-"Fehler beim Rangedatei interpretieren, erwarte Ionenanzahl bzw. Rangeanzahl."
-
-#: ../src/backend/APT/APTRanges.cpp:50
-msgid ""
-"Range file appears to be empty, check file is a proper range file and is not "
-"empty."
-msgstr ""
-"Rangedatei scheint leer zu sein. Prüfe ob die Datei wirklich ein Rangedatei "
-"und nicht leer ist."
-
-#: ../src/backend/APT/APTRanges.cpp:51
-msgid "Error reading the long name for ion."
-msgstr "Fehler beim Lesen des langen Namens für Ion."
-
-#: ../src/backend/APT/APTRanges.cpp:52
-msgid "Error reading the short name for ion."
-msgstr "Fehler beim Lesen des kurzen Namens für Ion."
-
-#: ../src/backend/APT/APTRanges.cpp:53
-msgid ""
-"Error reading colour data in the file, expecting 3 decimal values, space "
-"separated."
-msgstr ""
-"Fehler beim Lesen der Farbinformationen in der Datei. Erwarte 3, durch "
-"Leerzeichen getrennte, Dezimalwerte."
-
-#: ../src/backend/APT/APTRanges.cpp:54
-msgid ""
-"Tried skipping to table separator line (line with dashes), but did not find "
-"it."
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:55
-msgid ""
-"Number of ions in the table header did not match the number specified at the "
-"start of the file"
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:56
-msgid ""
-"Unexpected failure whilst trying to skip over range lead-in data (bit before "
-"range start value)"
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:57
-msgid ""
-"Range table had an incorrect number of entries, should be 2 or 3 + number of "
-"ranges"
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:58
-msgid "Unable to read range start and end values"
-msgstr "Kann Anfangs und Endwert des Range nicht lesen"
-
-#: ../src/backend/APT/APTRanges.cpp:59
-msgid "Unable to read range table entry"
-msgstr "Kann Rangetabelleneintrag nich lesen"
-
-#: ../src/backend/APT/APTRanges.cpp:60
-msgid ""
-"Error reading file, unexpected format, are you sure it is a proper range "
-"file?"
-msgstr ""
-"Fehler beim Lesen der Datei: Unerwartetes Format, sind Sie sicher, dass dies "
-"eine korrekte Rangedatei ist?"
-
-#: ../src/backend/APT/APTRanges.cpp:61
-msgid ""
-"Too many ranges appeared to have range entries with no usable data (eg, all "
-"blank)"
-msgstr "Zu viele Ranges scheinen  ungültige Einträge zu haben (z.B. alle leer)"
-
-#: ../src/backend/APT/APTRanges.cpp:62
-msgid ""
-"Range file appears to contain malformed data, check things like start and "
-"ends of m/c are not equal or flipped."
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:63
-msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
-msgstr "Rangedatei schein inkonsistent zu sein (z.B. überlappende Ranges)"
-
-#: ../src/backend/APT/APTRanges.cpp:64
-msgid "No ion name mapping found  for multiple ion."
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:65
-msgid "Polyatomic extension range matches multiple masses in first section"
-msgstr ""
-
-#: ../src/backend/APT/APTRanges.cpp:66
-msgid "Range file is exceedingly large. Refusing to open"
+#: ../src/backend/configFile.cpp:605
+msgid "Online access for non win32/apple platforms is intentionally disabled, "
 msgstr ""
+"Onlinezugang für nicht Win32/apple systeme wurde absichtlich deaktiviert."
 
-#: ../src/backend/APT/APTRanges.cpp:1404
+#: ../src/backend/configFile.cpp:606
 msgid ""
-"Range headings do not match order of the ions listed in the name "
-"specifications. The name specification ordering will be used when reading "
-"the range table, as the range heading section is declared as a comment in "
-"the file-format specifications, and is not to be intepreted by this program. "
-"Check range-species associations actually match what you expect."
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:73
-msgid "Arrow"
-msgstr "Pfeil"
-
-#: ../src/backend/filters/annotation.cpp:74
-msgid "Text"
-msgstr "Text"
-
-#: ../src/backend/filters/annotation.cpp:75
-msgid "Arrow+Text"
-msgstr "Pfeil+Text"
-
-#: ../src/backend/filters/annotation.cpp:76
-msgid "Angle"
-msgstr "Winkel"
-
-#: ../src/backend/filters/annotation.cpp:77
-msgid "Ruler"
-msgstr "Lineal"
-
-#: ../src/backend/filters/annotation.cpp:524
-msgid "Enable"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:527
-msgid "Enable/disable annotation"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:548
-msgid "Type or style of annotation"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:564
-#: ../src/backend/filters/annotation.cpp:668
-msgid "Text of annotation"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:568
-#: ../src/backend/filters/ionClip.cpp:529
-#: ../src/backend/filters/ionClip.cpp:551
-#: ../src/backend/filters/ionClip.cpp:573
-#: ../src/backend/filters/ionClip.cpp:610
-#: ../src/backend/filters/transform.cpp:1233
-#: ../src/backend/filters/transform.cpp:1260
-#: ../src/backend/filters/transform.cpp:1286
-#: ../src/backend/filters/profile.cpp:1013
-#: ../src/backend/filters/profile.cpp:1051
-#: ../src/backend/filters/spatialAnalysis.cpp:1041 ../src/gl/cameras.cpp:603
-msgid "Origin"
-msgstr "Ursprung"
-
-#: ../src/backend/filters/annotation.cpp:572
-msgid "Position of annotation"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:576
-#: ../src/backend/filters/annotation.cpp:683
-#: ../src/backend/filters/annotation.cpp:742
-#: ../src/backend/filters/annotation.cpp:831
-msgid "Up dir"
-msgstr "Up dir"
-
-#: ../src/backend/filters/annotation.cpp:580
-#: ../src/backend/filters/annotation.cpp:835
-msgid "Vector for up direction of annotation text"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:584
-#: ../src/backend/filters/annotation.cpp:690
-#: ../src/backend/filters/annotation.cpp:734
-#: ../src/backend/filters/annotation.cpp:839
-msgid "Across dir"
-msgstr "Across dir"
-
-#: ../src/backend/filters/annotation.cpp:588
-#: ../src/backend/filters/annotation.cpp:843
-msgid "Reading direction for annotation"
-msgstr ""
-
-#: ../src/backend/filters/annotation.cpp:593
-#: ../src/backend/filters/annotation.cpp:675
-#: ../src/backend/filters/annotation.cpp:769
-msgid "Text size"
-msgstr "Textgröße"
-
-#: ../src/backend/filters/annotation.cpp:597
-#: ../src/backend/filters/annotation.cpp:679
-#: ../src/backend/filters/annotation.cpp:851
-msgid "Relative size of annotation text"
+"regardless of the settings you use here. Use your package manager to keep up-"
+"to-date"
 msgstr ""
+"Nutzen Sie Ihren Paketmanager um up-to-date zu sein unabhängig von den "
+"Einstellungen die Sie hier verwenden"
 
-#: ../src/backend/filters/annotation.cpp:609
-#: ../src/backend/filters/annotation.cpp:650
-msgid "3D position for tail of arrow"
-msgstr ""
+#: ../src/backend/plot.cpp:28 ../src/backend/filters/algorithms/mass.cpp:25
+#: ../src/backend/filters/voxelise.cpp:130
+#: ../src/backend/filters/voxelise.cpp:136
+#: ../src/backend/filters/spectrumPlot.cpp:76
+msgid "None"
+msgstr "Keiner"
 
-#: ../src/backend/filters/annotation.cpp:617
-#: ../src/backend/filters/annotation.cpp:659
-msgid "3D Position to which arrow points"
-msgstr ""
+#: ../src/backend/plot.cpp:29
+msgid "Moving avg."
+msgstr "Gleit.Durchschn."
 
-#: ../src/backend/filters/annotation.cpp:620
-#: ../src/backend/filters/annotation.cpp:730
-msgid "Positioning"
-msgstr ""
+#: ../src/backend/plot.cpp:33
+msgid "Lines"
+msgstr "Linien"
 
-#: ../src/backend/filters/annotation.cpp:625
-#: ../src/backend/filters/annotation.cpp:697
-msgid "Tip radius"
-msgstr ""
+#: ../src/backend/plot.cpp:34
+msgid "Bars"
+msgstr "Block"
 
-#: ../src/backend/filters/annotation.cpp:629
-msgid "Size of the arrow head"
-msgstr ""
+#: ../src/backend/plot.cpp:35
+msgid "Steps"
+msgstr "Stufen"
 
-#: ../src/backend/filters/annotation.cpp:633
-msgid "Line size"
-msgstr ""
+#: ../src/backend/plot.cpp:36
+msgid "Stem"
+msgstr "Stem"
 
-#: ../src/backend/filters/annotation.cpp:637
-msgid "Thickness of line used to draw arrow stem"
-msgstr ""
+#: ../src/backend/plot.cpp:37
+msgid "Points"
+msgstr "Punkte"
 
-#: ../src/backend/filters/annotation.cpp:671
-msgid "Options"
+#: ../src/backend/plot.cpp:39
+msgid "Density"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:707
-msgid "Position A"
-msgstr "Position A"
-
-#: ../src/backend/filters/annotation.cpp:711
-msgid "Location of first non-central vertex"
+#: ../src/backend/plot.cpp:40
+msgid "Scatter"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:715
-msgid "Origin "
-msgstr "Ursprung "
-
-#: ../src/backend/filters/annotation.cpp:719
-msgid "Location of central vertex"
+#: ../src/backend/plot.cpp:746 ../src/backend/plot.cpp:754
+msgid "Multiple data types"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:723
-msgid "Position B"
-msgstr "Position B"
-
-#: ../src/backend/filters/annotation.cpp:727
-msgid "Location of second non-central vertex"
-msgstr ""
+#: ../src/backend/plot.cpp:1577
+msgid "error"
+msgstr "Fehler"
 
-#: ../src/backend/filters/annotation.cpp:738
-msgid "Reading direction for angle text"
+#: ../src/backend/plot.cpp:1818
+msgid "Amplitude"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:743
-msgid "Vector for up direction of angle text"
-msgstr ""
+#: ../src/backend/filtertree.cpp:1150
+msgid "WARNING: Skipping node "
+msgstr "WARNUNG: Skipping node "
 
-#: ../src/backend/filters/annotation.cpp:751
-msgid "Reflexive"
-msgstr "Reflexive"
+#: ../src/backend/filtertree.cpp:1150
+msgid " as it was not recognised"
+msgstr " wurde nicht erkannt."
 
-#: ../src/backend/filters/annotation.cpp:754
-msgid "Measure interor (enabled) or exterior angle (disabled)"
-msgstr ""
+#: ../src/backend/filtertree.cpp:1188
+msgid "Error processing node: "
+msgstr "Fehler beim Verarbeiten von Node: "
 
-#: ../src/backend/filters/annotation.cpp:759
-msgid "Show Angle"
-msgstr "Zeige Winkel"
+#: ../src/backend/filters/externalProgram.cpp:259
+msgid "Collate Input"
+msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:763
-msgid "Display angle text (when enabled)"
+#: ../src/backend/filters/externalProgram.cpp:348
+msgid "Execute"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:773
-msgid "Size of angle text"
+#: ../src/backend/filters/externalProgram.cpp:389
+msgid "Collate output"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:791
-msgid "Digit format"
-msgstr "Zahlenformat"
+#: ../src/backend/filters/externalProgram.cpp:564
+#: ../src/backend/filters/externalProgram.cpp:578
+msgid "Command"
+msgstr "Befehl"
 
-#: ../src/backend/filters/annotation.cpp:795
+#: ../src/backend/filters/externalProgram.cpp:567
 msgid ""
-"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
-"gives 12.34"
+"Full command to send to operating system. See manual for escape sequence "
+"meanings"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:801
-#: ../src/backend/filters/annotation.cpp:886
-msgid "Sphere size"
-msgstr "Kugelgröße"
+#: ../src/backend/filters/externalProgram.cpp:571
+msgid "Work Dir"
+msgstr "Arbeitsverzeichnis"
 
-#: ../src/backend/filters/annotation.cpp:805
-#: ../src/backend/filters/annotation.cpp:890
-msgid "Marker sphere size for manipulating tool"
+#: ../src/backend/filters/externalProgram.cpp:574
+msgid "Directory to run the command in"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:819
-msgid "Ruler beginning 3D location"
-msgstr ""
+#: ../src/backend/filters/externalProgram.cpp:581
+msgid "Cleanup input"
+msgstr "Bereinige Eingabe"
 
-#: ../src/backend/filters/annotation.cpp:827
-msgid "Ruler finish 3D location"
+#: ../src/backend/filters/externalProgram.cpp:584
+msgid "Erase input files when command completed"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:848
-#: ../src/backend/filters/boundingBox.cpp:715
-msgid "Font Size"
-msgstr "Schriftgröße"
-
-#: ../src/backend/filters/annotation.cpp:857
-msgid "Fixed ticks"
-msgstr "Fixe Marker"
+#: ../src/backend/filters/externalProgram.cpp:589
+msgid "Cache"
+msgstr "Zwischenspeicher"
 
-#: ../src/backend/filters/annotation.cpp:860
+#: ../src/backend/filters/externalProgram.cpp:592
 msgid ""
-"Use fixed (enabled) number of text markers, or one every fixed distance "
-"(disabled)"
+"Assume program does not alter its output, unless inputs from 3Depict are "
+"altered"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:867
-msgid "Num Ticks"
-msgstr "Anzahl Marker"
+#: ../src/backend/filters/algorithms/mass.cpp:26
+msgid "Flat TOF"
+msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:870
-msgid "Number of tick marks along ruler"
+#: ../src/backend/filters/algorithms/mass.cpp:33
+msgid "INsufficient bins to perform fit"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:877
-msgid "Tick Spacing"
-msgstr "Markerabstand"
+#: ../src/backend/filters/algorithms/mass.cpp:34
+msgid "Insufficient counts to perform fit"
+msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:880
-msgid "Distance between tick marks along ruler"
+#: ../src/backend/filters/algorithms/mass.cpp:35
+msgid "Insufficient data to perform fit"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:904
-msgid "Colour for ruler and ticks"
+#: ../src/backend/filters/algorithms/mass.cpp:36
+msgid "Data did not appear to be random noise - cannot fit noise level"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:65 ../src/backend/filters/profile.cpp:53
@@ -2686,7 +2460,7 @@ msgid "Aligned box"
 msgstr "Ausgerichtete Box"
 
 #: ../src/backend/filters/ionClip.cpp:498
-#: ../src/backend/filters/profile.cpp:991
+#: ../src/backend/filters/profile.cpp:995
 msgid "Primitive"
 msgstr "Primitiv"
 
@@ -2695,7 +2469,7 @@ msgid "Shape of clipping object"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:507
-#: ../src/backend/filters/profile.cpp:997
+#: ../src/backend/filters/profile.cpp:1001
 msgid "Show Primitive"
 msgstr "Zeige Primitiv"
 
@@ -2714,21 +2488,20 @@ msgid ""
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:532
-#: ../src/backend/filters/profile.cpp:1054
+#: ../src/backend/filters/profile.cpp:1058
 msgid "Position for centre of sphere"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:537
 #: ../src/backend/filters/ionClip.cpp:597
-#: ../src/backend/filters/profile.cpp:1037
-#: ../src/backend/filters/profile.cpp:1059
 #: ../src/backend/filters/spatialAnalysis.cpp:134
-#: ../src/backend/filters/spatialAnalysis.cpp:1058
+#: ../src/backend/filters/profile.cpp:1041
+#: ../src/backend/filters/profile.cpp:1063
 msgid "Radius"
 msgstr "Radius"
 
 #: ../src/backend/filters/ionClip.cpp:540
-#: ../src/backend/filters/profile.cpp:1062
+#: ../src/backend/filters/profile.cpp:1066
 msgid "Radius of sphere"
 msgstr ""
 
@@ -2749,9 +2522,9 @@ msgid "Centre of cylinder"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:581
-#: ../src/backend/filters/transform.cpp:1294
-#: ../src/backend/filters/profile.cpp:1021
-#: ../src/backend/filters/spatialAnalysis.cpp:1049
+#: ../src/backend/filters/spatialAnalysis.cpp:947
+#: ../src/backend/filters/profile.cpp:1025
+#: ../src/backend/filters/transform.cpp:1293
 msgid "Axis"
 msgstr "Achse"
 
@@ -2760,7 +2533,7 @@ msgid "Positive vector for cylinder"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:589
-#: ../src/backend/filters/profile.cpp:1029
+#: ../src/backend/filters/profile.cpp:1033
 msgid "Lock Axis Mag."
 msgstr "Achsen Vergr. sperren"
 
@@ -2769,8 +2542,7 @@ msgid "Prevent changing length of cylinder during 3D interaction"
 msgstr ""
 
 #: ../src/backend/filters/ionClip.cpp:600
-#: ../src/backend/filters/profile.cpp:1040
-#: ../src/backend/filters/spatialAnalysis.cpp:1061
+#: ../src/backend/filters/profile.cpp:1044
 msgid "Radius of cylinder"
 msgstr ""
 
@@ -2786,1964 +2558,2101 @@ msgstr "Corner offset"
 msgid "Vector to corner of box"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:111
-msgid "None (Raw count)"
-msgstr "Keine (Roh count)"
+#: ../src/backend/filters/clusterAnalysis.cpp:84
+#: ../src/backend/filters/clusterAnalysis.cpp:1060
+msgid "Size Distribution"
+msgstr "Größenverteilung"
 
-#: ../src/backend/filters/voxelise.cpp:112
-msgid "Volume (Density)"
-msgstr "Volumen (Dichte)"
+#: ../src/backend/filters/clusterAnalysis.cpp:85
+msgid "Chemistry Distribution"
+msgstr "Chemische Verteilung"
 
-#: ../src/backend/filters/voxelise.cpp:113
-msgid "All Ions (conc)"
-msgstr "Alle Ionen (Konz)"
+#: ../src/backend/filters/clusterAnalysis.cpp:503
+msgid "No range data. Can't cluster."
+msgstr "Keine Rangedaten. Clusteranalyse nicht möglich."
 
-#: ../src/backend/filters/voxelise.cpp:114
-msgid "Ratio (Num/Denom)"
-msgstr "Verhältnis (Zähler/Nenner)"
+#: ../src/backend/filters/clusterAnalysis.cpp:514
+msgid ""
+"No ranges selected for cluster \"core\". Cannot continue with clustering."
+msgstr ""
+"Kein Range für cluster \"core\" ausgewählt. Kann mit Clusteranalyse nicht "
+"weitermachen."
 
-#: ../src/backend/filters/voxelise.cpp:118
-msgid "Point Cloud"
-msgstr "Punktwolke"
+#: ../src/backend/filters/clusterAnalysis.cpp:523
+msgid ""
+"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
+msgstr ""
+"Kein Range für \"bulk\" ausgewählt. Kann mit Clusteranalyse nicht "
+"weitermachen."
 
-#: ../src/backend/filters/voxelise.cpp:119
-msgid "Isosurface"
-msgstr "Isosurface"
+#: ../src/backend/filters/clusterAnalysis.cpp:689
+msgid "Morphology Plot"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:120
-msgid "Axial slice"
+#: ../src/backend/filters/clusterAnalysis.cpp:690
+msgid "\\lambda_1:\\lambda_2 ratio"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:124
-#: ../src/backend/filters/voxelise.cpp:130
-#: ../src/backend/filters/algorithms/mass.cpp:25
-#: ../src/backend/filters/spectrumPlot.cpp:76 ../src/backend/plot.cpp:28
-msgid "None"
-msgstr "Keiner"
+#: ../src/backend/filters/clusterAnalysis.cpp:691
+msgid "\\lambda_2:\\lambda_3 ratio"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:125
-msgid "Gaussian (blur)"
+#: ../src/backend/filters/clusterAnalysis.cpp:736
+msgid "No clusters had sufficient dimensionality to compute singular values"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:126
-msgid "Lapl. of Gauss. (edges)"
+#: ../src/backend/filters/clusterAnalysis.cpp:794
+msgid "Found :"
+msgstr "Gefunden:"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:796
+msgid " clusters"
+msgstr " Cluster"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:888
+msgid "Compositions (fractional, core+bulk)"
+msgstr "Zusammensetzungen (fractional, core+bulk)"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:890
+msgid "Compositions (fractional, core only)"
+msgstr "Zusammensetzungen (fractional, core only)"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:908
+msgid "Frequencies (core+bulk)"
+msgstr "Häufigkeiten (core+bulk)"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:939
+msgid "Core Link + Erode"
+msgstr "Core Link + Erode"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:943
+#: ../src/backend/filters/clusterAnalysis.cpp:951
+#: ../src/backend/filters/spatialAnalysis.cpp:707
+#: ../src/backend/filters/spatialAnalysis.cpp:715
+#: ../src/backend/filters/transform.cpp:1156
+#: ../src/backend/filters/ionInfo.cpp:549
+msgid "Algorithm"
+msgstr "Algorithmus"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:947
+msgid "Cluster algorithm mode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:131
-msgid "Linear"
+#: ../src/backend/filters/clusterAnalysis.cpp:958
+msgid "Core Classify"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:564
-msgid "Voxel Limits (min,max): ("
-msgstr "Voxel Grenzen (min,max): ("
+#: ../src/backend/filters/clusterAnalysis.cpp:961
+msgid ""
+"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:709
-msgid "Fixed width"
-msgstr "Fixe Breite"
+#: ../src/backend/filters/clusterAnalysis.cpp:967
+msgid "Core Classify Dist"
+msgstr "Core Classify Dist"
 
-#: ../src/backend/filters/voxelise.cpp:713
-msgid "If true, use fixed size voxels, otherwise use fixed count"
+#: ../src/backend/filters/clusterAnalysis.cpp:970
+msgid "Restrict only atoms by distance to be cluster sources"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:719
-msgid "Bin width x"
-msgstr "Bin-Breite x"
+#: ../src/backend/filters/clusterAnalysis.cpp:975
+msgid "Classify Knn Max"
+msgstr "Classify Knn Max"
 
-#: ../src/backend/filters/voxelise.cpp:723
-msgid "Voxel size in X direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:978
+msgid ""
+"Require that the kth NN (this number) is within the classify distance, to be "
+"a cluster source"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:727
-msgid "Bin width y"
-msgstr "Bin-Breite y"
+#: ../src/backend/filters/clusterAnalysis.cpp:984
+msgid "Core Link Dist"
+msgstr "Core Link Dist"
 
-#: ../src/backend/filters/voxelise.cpp:730
-msgid "Voxel size in Y direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:987
+msgid "Distance between clusters to allow linking"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:736
-msgid "Bin width z"
-msgstr "Bin-Breite Z"
+#: ../src/backend/filters/clusterAnalysis.cpp:992
+msgid "Bulk Link"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:739
-msgid "Voxel size in Z direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:995
+#: ../src/backend/filters/clusterAnalysis.cpp:1012
+msgid "Enable  linking of non-cluster species - eg for composition analysis "
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:746
-msgid "Num bins x"
-msgstr "Anzahl Bins x"
+#: ../src/backend/filters/clusterAnalysis.cpp:1002
+msgid "Bulk Link (Envelope) Dist"
+msgstr "Bulk Link (Envelope) Dist"
 
-#: ../src/backend/filters/voxelise.cpp:750
-msgid "Number of voxels to use in X direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1005
+msgid ""
+"Distance from core points that form cluster that is used to grab surrounding "
+"bulk points"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:755
-msgid "Num bins y"
-msgstr "Anzahl Bins y"
+#: ../src/backend/filters/clusterAnalysis.cpp:1009
+msgid "Erosion"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:758
-msgid "Number of voxels to use in Y direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1018
+msgid "Erode Dist"
+msgstr "Erode Dist"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1021
+msgid ""
+"Distance from unclustered material in which bulk points are eroded from "
+"cluster"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:764
-msgid "Num bins z"
-msgstr "Anzahl Bins z"
+#: ../src/backend/filters/clusterAnalysis.cpp:1028
+msgid "Clustering Params"
+msgstr "Cluster Parameter"
 
-#: ../src/backend/filters/voxelise.cpp:766
-msgid "Number of voxels to use in Z direction"
+#: ../src/backend/filters/clusterAnalysis.cpp:1033
+msgid "Size Cropping"
+msgstr "Größeneinschrankungen"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1036
+msgid "Remove clusters based upon size distribution"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:796
-msgid "Normalise by"
-msgstr "Normalisieren mit"
+#: ../src/backend/filters/clusterAnalysis.cpp:1043
+msgid "Min Size"
+msgstr "Min Größe"
 
-#: ../src/backend/filters/voxelise.cpp:799
-msgid "Method to use to normalise scalar value in each voxel"
+#: ../src/backend/filters/clusterAnalysis.cpp:1046
+msgid "Remove clusters below this size"
+msgstr ""
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1051
+msgid "Max Size"
+msgstr "Max Größe"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1054
+msgid "Remove clusters above this size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:802
-msgid "Computation"
+#: ../src/backend/filters/clusterAnalysis.cpp:1063
+msgid "Show number of clusters as a function of cluster size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:809
-#: ../src/backend/filters/spatialAnalysis.cpp:1233
-#: ../src/backend/filters/spatialAnalysis.cpp:1254
-msgid "Numerator"
-msgstr "Zähler"
+#: ../src/backend/filters/clusterAnalysis.cpp:1069
+msgid "Log Scale"
+msgstr "Log. Skala"
 
-#: ../src/backend/filters/voxelise.cpp:812
-msgid "Parmeter \"a\" used in fraction (a/b) to get voxel value"
+#: ../src/backend/filters/clusterAnalysis.cpp:1072
+msgid "Use logarithmic scale for size distribution"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:829
-msgid "Enable this ion for numerator"
+#: ../src/backend/filters/clusterAnalysis.cpp:1079
+msgid "Morphology Dist."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:841
-#: ../src/backend/filters/voxelise.cpp:862
-#: ../src/backend/filters/spatialAnalysis.cpp:1261
-#: ../src/backend/filters/spatialAnalysis.cpp:1280
-msgid "Denominator"
-msgstr "Nenner"
+#: ../src/backend/filters/clusterAnalysis.cpp:1082
+msgid "Create a plot showing cluster aspect ratio"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:844
-msgid "Parameter \"b\" used in fraction (a/b) to get voxel value"
+#: ../src/backend/filters/clusterAnalysis.cpp:1088
+msgid "Cluster Id"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:858
-msgid "Enable this ion for denominator contribution"
+#: ../src/backend/filters/clusterAnalysis.cpp:1091
+msgid "Assign cluster output a unique per-cluster value (id)."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:880
-#: ../src/backend/filters/voxelise.cpp:911
-msgid "Filtering"
-msgstr "Filtern"
+#: ../src/backend/filters/clusterAnalysis.cpp:1098
+msgid "Chemistry Dist."
+msgstr "Chemistry Dist."
 
-#: ../src/backend/filters/voxelise.cpp:884
-msgid "Smoothing method to use on voxels"
+#: ../src/backend/filters/clusterAnalysis.cpp:1101
+msgid "Create a plot showing chemistry for each cluster size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:887
-msgid "Processing"
+#: ../src/backend/filters/clusterAnalysis.cpp:1108
+#: ../src/backend/filters/spatialAnalysis.cpp:1006
+#: ../src/backend/filters/profile.cpp:1111
+#: ../src/backend/filters/ionInfo.cpp:465
+msgid "Normalise"
+msgstr "Normalisieren"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1111
+msgid "Convert cluster counts to composition"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:893
-msgid "Standard Dev"
+#: ../src/backend/filters/clusterAnalysis.cpp:1117
+msgid "Postprocess"
+msgstr "Postprozess"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1136
+msgid "If selected, use as \"core\" ion type (can make clusters)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:897
-msgid "Filtering Scale"
+#: ../src/backend/filters/clusterAnalysis.cpp:1141
+msgid "Core Ranges"
+msgstr "Core Ranges"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1147
+msgid "Enable/Disable All"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:903
-msgid "Kernel Size"
+#: ../src/backend/filters/clusterAnalysis.cpp:1151
+msgid "Enable/disable all ions"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:907
+#: ../src/backend/filters/clusterAnalysis.cpp:1164
 msgid ""
-"Filter radius, in multiples of std. dev. Larger -> slower, more accurate"
+"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:927
-msgid "Representation"
-msgstr "Representation"
+#: ../src/backend/filters/clusterAnalysis.cpp:1169
+msgid "Bulk Ranges"
+msgstr "Bulk Ranges"
 
-#: ../src/backend/filters/voxelise.cpp:930
-msgid "3D display method"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1185
+msgid "Max. Sep + Erode"
+msgstr "Max. Sep + Erode"
 
-#: ../src/backend/filters/voxelise.cpp:941
-msgid "Spot size"
-msgstr "Spot size"
+#: ../src/backend/filters/clusterAnalysis.cpp:1938
+msgid " --------------------------- Parameter selection notice ------------- "
+msgstr " --------------------------- Parameterauswahl Notiz ------------- "
 
-#: ../src/backend/filters/voxelise.cpp:944
-msgid "Size of the spots to use for display"
+#: ../src/backend/filters/clusterAnalysis.cpp:1939
+msgid "You have specified a bulk distance larger than half your link distance."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:949
-#: ../src/backend/filters/voxelise.cpp:984
-#: ../src/backend/filters/voxelise.cpp:1056
-msgid "Transparency"
-msgstr "Transparenz"
+#: ../src/backend/filters/clusterAnalysis.cpp:1940
+msgid ""
+"You can do this; thats OK, but the output is no longer independent of the "
+"computational process;"
+msgstr ""
+"Sie könne das machen, das ist in Ordnung, aber die Ausgabe ist nicht länger "
+"unabhängig vom Berechnungsprozess"
 
-#: ../src/backend/filters/voxelise.cpp:952
-msgid "How \"see through\" each point is (0 - opaque, 1 - invisible)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1941
+msgid ""
+"This will be a problem in the case where two or more clusters can equally "
+"lay claim to a \"bulk\" ion. "
 msgstr ""
+"Dies ist ein Problem wenn zwei oder mehrere Cluster auf dasselbe \"bulk\" "
+"Ion Anspruch erheben. "
 
-#: ../src/backend/filters/voxelise.cpp:961
-msgid "Surf. param."
+#: ../src/backend/filters/clusterAnalysis.cpp:1942
+msgid ""
+" If your inter-cluster distance is sufficiently large (larger than your bulk "
+"linking distance), then you can get away with this."
 msgstr ""
+" If your inter-cluster distance is sufficiently large (larger than your bulk "
+"linking distance), then you can get away with this."
 
-#: ../src/backend/filters/voxelise.cpp:964
-msgid "Isovalue"
-msgstr "Isovalue"
+#: ../src/backend/filters/clusterAnalysis.cpp:1943
+msgid ""
+" In theory it is possible to \"join\" the clusters, but this has not been "
+"implemented for speed reasons."
+msgstr ""
+"Theoretisch ist es möglich die Cluster zu 'verbinden', dies wurde jedoch aus "
+"Gescheindigkeitsgründen nicht implementiert."
 
-#: ../src/backend/filters/voxelise.cpp:967
-msgid "Scalar value to show as isosurface"
+#: ../src/backend/filters/clusterAnalysis.cpp:1944
+msgid ""
+"If you want this, please contact the author, or just use the source to add "
+"this in yourself."
 msgstr ""
+"Sollten Sie dies wollen, kontaktieren Sie den Autor oder verwenden Sie den "
+"Sourcecode um es selbst hinzuzufügen."
 
-#: ../src/backend/filters/voxelise.cpp:972
-#: ../src/backend/filters/voxelise.cpp:1037
-#: ../src/backend/filters/spatialAnalysis.cpp:2344
-#: ../src/backend/filters/spatialAnalysis.cpp:2397
-msgid "Surface"
-msgstr "Oberfläche"
+#: ../src/backend/filters/clusterAnalysis.cpp:1945
+msgid "---------------------------------------------------------------------- "
+msgstr "---------------------------------------------------------------------- "
 
-#: ../src/backend/filters/voxelise.cpp:979
-msgid "Colour of isosurface"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1955
+#: ../src/backend/filters/spatialAnalysis.cpp:476
+#: ../src/backend/filters/spatialAnalysis.cpp:2166
+#: ../src/backend/filters/spatialAnalysis.cpp:2595
+#: ../src/backend/filters/spatialAnalysis.cpp:2887
+#: ../src/backend/filters/spatialAnalysis.cpp:3188
+#: ../src/backend/filters/spatialAnalysis.cpp:3334
+#: ../src/backend/filters/spatialAnalysis.cpp:3597
+#: ../src/backend/filters/spatialAnalysis.cpp:3810
+#: ../src/backend/filters/transform.cpp:1015
+msgid "Collate"
+msgstr "Abgleichen"
 
-#: ../src/backend/filters/voxelise.cpp:987
-#: ../src/backend/filters/voxelise.cpp:1059
-msgid "How \"see through\" each facet is (0 - opaque, 1 - invisible)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1974
+msgid "Build Core"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:998
-msgid "Slice param."
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2002
+msgid "Core"
+msgstr "Kern"
 
-#: ../src/backend/filters/voxelise.cpp:1006
-msgid "Slice Axis"
+#: ../src/backend/filters/clusterAnalysis.cpp:2125
+msgid "Bulk"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1009
-msgid "Normal for the planar slice"
+#: ../src/backend/filters/clusterAnalysis.cpp:2203
+msgid "Erode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1016
-msgid "Slice Coord"
+#: ../src/backend/filters/clusterAnalysis.cpp:2281
+msgid "Re-Collate"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1019
-msgid "Fractional coordinate that slice plane passes through"
+#: ../src/backend/filters/clusterAnalysis.cpp:2336
+msgid "Classify Core"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1024
-msgid "Interp. Mode"
+#: ../src/backend/filters/clusterAnalysis.cpp:2427
+msgid "Build Bulk"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1032
-msgid "Interpolation mode for direction normal to slice"
+#: ../src/backend/filters/clusterAnalysis.cpp:2675
+#: ../src/backend/filters/clusterAnalysis.cpp:2878
+msgid "Cluster Size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1048
-msgid "Colour mode"
+#: ../src/backend/filters/clusterAnalysis.cpp:2676
+#: ../src/backend/filters/clusterAnalysis.cpp:2882
+msgid "Frequency"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1051
-#: ../src/backend/filters/ionColour.cpp:261
-msgid "Colour scheme used to assign points colours by value"
+#: ../src/backend/filters/clusterAnalysis.cpp:2880
+msgid "Composition"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1064
-#: ../src/backend/filters/ionColour.cpp:273
-msgid "Show Bar"
-msgstr "Zeige Balken"
+#: ../src/backend/filters/voxelise.cpp:116
+msgid "None (Raw count)"
+msgstr "Keine (Roh count)"
 
-#: ../src/backend/filters/voxelise.cpp:1071
-msgid "Auto Bounds"
-msgstr ""
+#: ../src/backend/filters/voxelise.cpp:117
+msgid "Volume (Density)"
+msgstr "Volumen (Dichte)"
 
-#: ../src/backend/filters/voxelise.cpp:1072
-msgid "Auto-compute min/max values in map"
-msgstr ""
+#: ../src/backend/filters/voxelise.cpp:118
+msgid "All Ions (conc)"
+msgstr "Alle Ionen (Konz)"
 
-#: ../src/backend/filters/voxelise.cpp:1082
-#: ../src/backend/filters/ionColour.cpp:294
-msgid "Map start"
-msgstr ""
+#: ../src/backend/filters/voxelise.cpp:119
+msgid "Ratio (Num/Denom)"
+msgstr "Verhältnis (Zähler/Nenner)"
 
-#: ../src/backend/filters/voxelise.cpp:1083
-#: ../src/backend/filters/ionColour.cpp:295
-msgid "Assign points with this value to the first colour in map"
-msgstr ""
+#: ../src/backend/filters/voxelise.cpp:123
+msgid "Point Cloud"
+msgstr "Punktwolke"
 
-#: ../src/backend/filters/voxelise.cpp:1090
-#: ../src/backend/filters/ionColour.cpp:302
-msgid "Map end"
-msgstr ""
+#: ../src/backend/filters/voxelise.cpp:124
+msgid "Isosurface"
+msgstr "Isosurface"
 
-#: ../src/backend/filters/voxelise.cpp:1091
-#: ../src/backend/filters/ionColour.cpp:303
-msgid "Assign points with this value to the last colour in map"
+#: ../src/backend/filters/voxelise.cpp:125
+msgid "Axial slice"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:84
-msgid "Translate"
-msgstr "Translate"
-
-#: ../src/backend/filters/transform.cpp:85
-msgid "Scale (isotropic)"
+#: ../src/backend/filters/voxelise.cpp:126
+msgid "Slice"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:86
-msgid "Scale (anisotropic)"
+#: ../src/backend/filters/voxelise.cpp:131
+msgid "Gaussian (blur)"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:87
-msgid "Rotate"
-msgstr "Rotieren"
+#: ../src/backend/filters/voxelise.cpp:132
+msgid "Lapl. of Gauss. (edges)"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:88
-msgid "Value Shuffle"
+#: ../src/backend/filters/voxelise.cpp:137
+msgid "Linear"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:89
-msgid "Spatial Noise"
+#: ../src/backend/filters/voxelise.cpp:404
+msgid "Counting"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:90
-msgid "Translate Value"
-msgstr "Translate Wert"
+#: ../src/backend/filters/voxelise.cpp:579
+msgid "Gauss Smooth"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:91
-msgid "Crop Value"
+#: ../src/backend/filters/voxelise.cpp:585
+msgid "Calc. Laplace"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:95
-msgid "Specify"
-msgstr "Angeben"
+#: ../src/backend/filters/voxelise.cpp:609
+msgid "Voxel Limits (min,max): ("
+msgstr "Voxel Grenzen (min,max): ("
 
-#: ../src/backend/filters/transform.cpp:96
-msgid "Boundbox Centre"
-msgstr "Boundbox Zentrum"
+#: ../src/backend/filters/voxelise.cpp:619
+#: ../src/backend/filters/voxelise.cpp:1139
+msgid "Representation"
+msgstr "Representation"
 
-#: ../src/backend/filters/transform.cpp:97
-msgid "Mass Centre"
-msgstr "Massen-Zentrum"
+#: ../src/backend/filters/voxelise.cpp:924
+msgid "Fixed width"
+msgstr "Fixe Breite"
 
-#: ../src/backend/filters/transform.cpp:1008
-#: ../src/backend/filters/clusterAnalysis.cpp:1956
-#: ../src/backend/filters/spatialAnalysis.cpp:635
-#: ../src/backend/filters/spatialAnalysis.cpp:2298
-#: ../src/backend/filters/spatialAnalysis.cpp:2727
-#: ../src/backend/filters/spatialAnalysis.cpp:3016
-#: ../src/backend/filters/spatialAnalysis.cpp:3689
-#: ../src/backend/filters/spatialAnalysis.cpp:3952
-#: ../src/backend/filters/spatialAnalysis.cpp:4165
-msgid "Collate"
-msgstr "Abgleichen"
+#: ../src/backend/filters/voxelise.cpp:928
+msgid "If true, use fixed size voxels, otherwise use fixed count"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:934
+msgid "Bin width x"
+msgstr "Bin-Breite x"
 
-#: ../src/backend/filters/transform.cpp:1027
-msgid "Mass-to-Charge (Da/e)"
+#: ../src/backend/filters/voxelise.cpp:938
+msgid "Voxel size in X direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1081
-msgid "Shuffle"
+#: ../src/backend/filters/voxelise.cpp:942
+msgid "Bin width y"
+msgstr "Bin-Breite y"
+
+#: ../src/backend/filters/voxelise.cpp:945
+msgid "Voxel size in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1105
-msgid "Splice"
+#: ../src/backend/filters/voxelise.cpp:951
+msgid "Bin width z"
+msgstr "Bin-Breite Z"
+
+#: ../src/backend/filters/voxelise.cpp:954
+msgid "Voxel size in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1153
-msgid "Algorithm to use to transform point data"
+#: ../src/backend/filters/voxelise.cpp:961
+msgid "Num bins x"
+msgstr "Anzahl Bins x"
+
+#: ../src/backend/filters/voxelise.cpp:965
+msgid "Number of voxels to use in X direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1157
-#: ../src/backend/filters/ionInfo.cpp:546
-#: ../src/backend/filters/clusterAnalysis.cpp:943
-#: ../src/backend/filters/clusterAnalysis.cpp:951
-#: ../src/backend/filters/spatialAnalysis.cpp:800
-#: ../src/backend/filters/spatialAnalysis.cpp:808
-msgid "Algorithm"
-msgstr "Algorithmus"
+#: ../src/backend/filters/voxelise.cpp:970
+msgid "Num bins y"
+msgstr "Anzahl Bins y"
 
-#: ../src/backend/filters/transform.cpp:1170
-msgid "Origin mode"
+#: ../src/backend/filters/voxelise.cpp:973
+msgid "Number of voxels to use in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1173
-msgid "Select how transform origin is computed"
+#: ../src/backend/filters/voxelise.cpp:979
+msgid "Num bins z"
+msgstr "Anzahl Bins z"
+
+#: ../src/backend/filters/voxelise.cpp:981
+msgid "Number of voxels to use in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1178
-msgid "Show marker"
-msgstr "Zeige Markierung"
+#: ../src/backend/filters/voxelise.cpp:1011
+msgid "Normalise by"
+msgstr "Normalisieren mit"
 
-#: ../src/backend/filters/transform.cpp:1182
-msgid "Display an interactive object to set transform origin"
+#: ../src/backend/filters/voxelise.cpp:1014
+msgid "Method to use to normalise scalar value in each voxel"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1184
-msgid "Display a small marker to denote transform origin"
+#: ../src/backend/filters/voxelise.cpp:1017
+msgid "Computation"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1200
-msgid "Translation"
-msgstr "Translation"
+#: ../src/backend/filters/voxelise.cpp:1024
+#: ../src/backend/filters/spatialAnalysis.cpp:1122
+#: ../src/backend/filters/spatialAnalysis.cpp:1143
+msgid "Numerator"
+msgstr "Zähler"
 
-#: ../src/backend/filters/transform.cpp:1203
-msgid "Translation vector for transform"
+#: ../src/backend/filters/voxelise.cpp:1027
+msgid "Parmeter \"a\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1215
-msgid "Offset"
+#: ../src/backend/filters/voxelise.cpp:1044
+msgid "Enable this ion for numerator"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1219
-msgid "Scalar to use to offset each point's associated value"
+#: ../src/backend/filters/voxelise.cpp:1056
+#: ../src/backend/filters/voxelise.cpp:1077
+#: ../src/backend/filters/spatialAnalysis.cpp:1150
+#: ../src/backend/filters/spatialAnalysis.cpp:1169
+msgid "Denominator"
+msgstr "Nenner"
+
+#: ../src/backend/filters/voxelise.cpp:1059
+msgid "Parameter \"b\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1236
-#: ../src/backend/filters/transform.cpp:1263
-msgid "Origin of scale trasnform"
+#: ../src/backend/filters/voxelise.cpp:1073
+msgid "Enable this ion for denominator contribution"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1243
-#: ../src/backend/filters/transform.cpp:1270
-msgid "Scale Fact."
-msgstr "Skalierungsfaktor"
+#: ../src/backend/filters/voxelise.cpp:1095
+#: ../src/backend/filters/voxelise.cpp:1126
+msgid "Filtering"
+msgstr "Filtern"
 
-#: ../src/backend/filters/transform.cpp:1246
-#: ../src/backend/filters/transform.cpp:1273
-msgid "Enlargement factor for scaling around origin"
+#: ../src/backend/filters/voxelise.cpp:1099
+msgid "Smoothing method to use on voxels"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1289
-msgid "Origin of rotation"
+#: ../src/backend/filters/voxelise.cpp:1102
+msgid "Processing"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1297
-msgid "Axis around which to revolve"
+#: ../src/backend/filters/voxelise.cpp:1108
+msgid "Standard Dev"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1302
-msgid "Angle (deg)"
-msgstr "Winkel (deg)"
-
-#: ../src/backend/filters/transform.cpp:1305
-msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
+#: ../src/backend/filters/voxelise.cpp:1112
+msgid "Filtering Scale"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1322
-msgid "Noise Type"
+#: ../src/backend/filters/voxelise.cpp:1118
+msgid "Kernel Size"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1325
-msgid "Method to use to degrade point data"
+#: ../src/backend/filters/voxelise.cpp:1122
+msgid ""
+"Filter radius, in multiples of std. dev. Larger -> slower, more accurate"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1332
-msgid "Noise level"
+#: ../src/backend/filters/voxelise.cpp:1142
+msgid "3D display method"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1334
-msgid "Standard dev."
-msgstr "Standardabweichung"
+#: ../src/backend/filters/voxelise.cpp:1153
+msgid "Spot size"
+msgstr "Spot size"
 
-#: ../src/backend/filters/transform.cpp:1342
-msgid "Amplitude of noise"
+#: ../src/backend/filters/voxelise.cpp:1156
+msgid "Size of the spots to use for display"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1356
-msgid "Min Value"
-msgstr ""
+#: ../src/backend/filters/voxelise.cpp:1161
+#: ../src/backend/filters/voxelise.cpp:1196
+#: ../src/backend/filters/voxelise.cpp:1268
+#: ../src/backend/filters/voxelise.cpp:1358
+msgid "Transparency"
+msgstr "Transparenz"
 
-#: ../src/backend/filters/transform.cpp:1360
-msgid "Minimum value to use for crop"
+#: ../src/backend/filters/voxelise.cpp:1164
+msgid "How \"see through\" each point is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1364
-msgid "Max Value"
+#: ../src/backend/filters/voxelise.cpp:1173
+msgid "Surf. param."
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1368
-msgid "Maximum value to use for crop"
+#: ../src/backend/filters/voxelise.cpp:1176
+msgid "Isovalue"
+msgstr "Isovalue"
+
+#: ../src/backend/filters/voxelise.cpp:1179
+msgid "Scalar value to show as isosurface"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1377
-msgid "Transform Params"
-msgstr "Transformationsparameter"
+#: ../src/backend/filters/voxelise.cpp:1184
+#: ../src/backend/filters/voxelise.cpp:1249
+#: ../src/backend/filters/voxelise.cpp:1338
+#: ../src/backend/filters/spatialAnalysis.cpp:2212
+#: ../src/backend/filters/spatialAnalysis.cpp:2265
+msgid "Surface"
+msgstr "Oberfläche"
 
-#: ../src/backend/filters/transform.cpp:1738
-msgid "White"
+#: ../src/backend/filters/voxelise.cpp:1191
+msgid "Colour of isosurface"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1740
-msgid "Gaussian"
+#: ../src/backend/filters/voxelise.cpp:1199
+#: ../src/backend/filters/voxelise.cpp:1271
+#: ../src/backend/filters/voxelise.cpp:1361
+msgid "How \"see through\" each facet is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:259
-msgid "Collate Input"
+#: ../src/backend/filters/voxelise.cpp:1210
+#: ../src/backend/filters/voxelise.cpp:1317
+msgid "Slice param."
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:348
-msgid "Execute"
+#: ../src/backend/filters/voxelise.cpp:1218
+msgid "Slice Axis"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:389
-msgid "Collate output"
+#: ../src/backend/filters/voxelise.cpp:1221
+msgid "Normal for the planar slice"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:564
-#: ../src/backend/filters/externalProgram.cpp:578
-msgid "Command"
-msgstr "Befehl"
+#: ../src/backend/filters/voxelise.cpp:1228
+msgid "Slice Coord"
+msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:567
-msgid ""
-"Full command to send to operating system. See manual for escape sequence "
-"meanings"
+#: ../src/backend/filters/voxelise.cpp:1231
+msgid "Fractional coordinate that slice plane passes through"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:571
-msgid "Work Dir"
-msgstr "Arbeitsverzeichnis"
+#: ../src/backend/filters/voxelise.cpp:1236
+msgid "Interp. Mode"
+msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:574
-msgid "Directory to run the command in"
+#: ../src/backend/filters/voxelise.cpp:1244
+msgid "Interpolation mode for direction normal to slice"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:581
-msgid "Cleanup input"
-msgstr "Bereinige Eingabe"
+#: ../src/backend/filters/voxelise.cpp:1260
+#: ../src/backend/filters/voxelise.cpp:1350
+msgid "Colour mode"
+msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:584
-msgid "Erase input files when command completed"
+#: ../src/backend/filters/voxelise.cpp:1263
+#: ../src/backend/filters/voxelise.cpp:1353
+#: ../src/backend/filters/ionColour.cpp:293
+msgid "Colour scheme used to assign points colours by value"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:589
-msgid "Cache"
-msgstr "Zwischenspeicher"
+#: ../src/backend/filters/voxelise.cpp:1276
+#: ../src/backend/filters/voxelise.cpp:1366
+#: ../src/backend/filters/ionColour.cpp:305
+msgid "Show Bar"
+msgstr "Zeige Balken"
 
-#: ../src/backend/filters/externalProgram.cpp:592
-msgid ""
-"Assume program does not alter its output, unless inputs from 3Depict are "
-"altered"
+#: ../src/backend/filters/voxelise.cpp:1279
+msgid "Display colour bar in 3D view?"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:26
-msgid "Flat TOF"
+#: ../src/backend/filters/voxelise.cpp:1284
+#: ../src/backend/filters/voxelise.cpp:1373
+msgid "Auto Bounds"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:33
-msgid "INsufficient bins to perform fit"
+#: ../src/backend/filters/voxelise.cpp:1285
+#: ../src/backend/filters/voxelise.cpp:1374
+msgid "Auto-compute min/max values in map"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:34
-msgid "Insufficient counts to perform fit"
+#: ../src/backend/filters/voxelise.cpp:1295
+#: ../src/backend/filters/voxelise.cpp:1384
+#: ../src/backend/filters/ionColour.cpp:337
+msgid "Map start"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:35
-msgid "Insufficient data to perform fit"
+#: ../src/backend/filters/voxelise.cpp:1296
+#: ../src/backend/filters/voxelise.cpp:1385
+#: ../src/backend/filters/ionColour.cpp:338
+msgid "Assign points with this value to the first colour in map"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:36
-msgid "Data did not appear to be random noise - cannot fit noise level"
+#: ../src/backend/filters/voxelise.cpp:1303
+#: ../src/backend/filters/voxelise.cpp:1392
+#: ../src/backend/filters/ionColour.cpp:345
+msgid "Map end"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:37
-msgid "Rectilinear"
-msgstr "Geradlinig"
-
-#: ../src/backend/filters/ionInfo.cpp:38
-msgid "Convex hull"
-msgstr "Konvexe Hülle"
-
-#: ../src/backend/filters/ionInfo.cpp:200
-msgid "No ions"
+#: ../src/backend/filters/voxelise.cpp:1304
+#: ../src/backend/filters/voxelise.cpp:1393
+#: ../src/backend/filters/ionColour.cpp:346
+msgid "Assign points with this value to the last colour in map"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:226
-#: ../src/backend/filters/spectrumPlot.cpp:432
-msgid ""
-"Background fit failed - input data was considered ill formed (gauss-test)"
+#: ../src/backend/filters/voxelise.cpp:1320
+msgid "Slice Offset"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:227
-msgid "Following data has not been corrected"
+#: ../src/backend/filters/voxelise.cpp:1323
+msgid "Point on plane for slice, in 0->1 coordinates"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:279
-msgid "--Counts--"
-msgstr "- Anzahl -"
-
-#: ../src/backend/filters/ionInfo.cpp:289
-msgid "Total Ranged\t"
-msgstr "Gesamt ranged\t"
-
-#: ../src/backend/filters/ionInfo.cpp:294
-msgid "Total (incl. unranged)\t"
-msgstr "Total (inkl. nicht geranged)"
-
-#: ../src/backend/filters/ionInfo.cpp:307
-msgid "n/a"
+#: ../src/backend/filters/voxelise.cpp:1330
+msgid "Slice Normal"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:317
-#: ../src/backend/filters/ionDownsample.cpp:496
-msgid "Unranged"
-msgstr "Nicht Geranged"
-
-#: ../src/backend/filters/ionInfo.cpp:330
-msgid "Number of points : "
-msgstr "Anzahl der Punkte: "
-
-#: ../src/backend/filters/ionInfo.cpp:359
-msgid "Rectilinear Bounds : "
-msgstr "Geradlinige Grenzen:"
+#: ../src/backend/filters/voxelise.cpp:1333
+msgid "Normal vector for slice"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:364
-msgid "Volume (len^3): "
-msgstr "Volumen (Läng.^3)"
+#: ../src/backend/filters/ionColour.cpp:289
+msgid "Colour Map"
+msgstr "Farbtabelle"
 
-#: ../src/backend/filters/ionInfo.cpp:381
-msgid "Convex Volume (len^3): "
-msgstr "Konvexes Volumen (Läng.^3)"
+#: ../src/backend/filters/ionColour.cpp:297
+msgid "Reverse map"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:384
-msgid "Unable to compute volume"
-msgstr "Kann Volumen nicht berechnen"
+#: ../src/backend/filters/ionColour.cpp:298
+msgid "Reverse the colour scale"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:413
-msgid "Ranged Density (pts/vol):"
-msgstr "Ranged Dichte (pts / vol):"
+#: ../src/backend/filters/ionColour.cpp:306
+msgid "Display the colour legend in the 3D view"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:418
-msgid "Total Density (pts/vol):"
-msgstr "Gesamtdichte (pts / vol):"
+#: ../src/backend/filters/ionColour.cpp:312
+msgid "Opacity"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:445
-msgid "Compositions"
-msgstr "Zusammensetzungen"
+#: ../src/backend/filters/ionColour.cpp:313
+msgid "How see-through to make the legend (0- transparent, 1- solid)"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:446
-msgid "Display compositional data for points in console"
+#: ../src/backend/filters/ionColour.cpp:320
+msgid "Num Colours"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:450
-msgid "Counts"
-msgstr "Anzahl"
+#: ../src/backend/filters/ionColour.cpp:322
+msgid "Number of unique colours to use in colour map"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:451
-msgid "Display count data for points in console"
+#: ../src/backend/filters/ionColour.cpp:327
+msgid "Auto bounds"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:458
-msgid "Ion data"
+#: ../src/backend/filters/ionColour.cpp:329
+msgid "Automatically scale colour to min/max of data range"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:462
-#: ../src/backend/filters/profile.cpp:1107
-#: ../src/backend/filters/clusterAnalysis.cpp:1108
-#: ../src/backend/filters/spatialAnalysis.cpp:1116
-msgid "Normalise"
-msgstr "Normalisieren"
+#: ../src/backend/filters/ionColour.cpp:460 ../src/backend/filter.cpp:197
+msgid "Aborted"
+msgstr "Abgebrochen"
 
-#: ../src/backend/filters/ionInfo.cpp:466
-msgid "Normalise count data"
+#: ../src/backend/filters/spatialAnalysis.cpp:123
+msgid "Local Density"
+msgstr "Lokale Dichte"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:124
+msgid "Density Filtering"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:530
-msgid "Volume"
-msgstr "Volumen"
+#: ../src/backend/filters/spatialAnalysis.cpp:125
+msgid "Radial Distribution"
+msgstr "Radial Distribution"
 
-#: ../src/backend/filters/ionInfo.cpp:533
-msgid "Compute volume for point data"
+#: ../src/backend/filters/spatialAnalysis.cpp:126
+msgid "Axial Distribution"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:549
-msgid "Select volume counting technique"
+#: ../src/backend/filters/spatialAnalysis.cpp:127
+msgid "Binomial Distribution"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:562
-msgid "Volume data"
+#: ../src/backend/filters/spatialAnalysis.cpp:128
+msgid "Point Em/Replacement"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:120
-#: ../src/backend/filters/rangeFile.h:96
-msgid "Ranging"
-msgstr "Ranging"
+#: ../src/backend/filters/spatialAnalysis.cpp:129
+msgid "Local Chemistry"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:560
-#: ../src/backend/filters/rangeFile.cpp:580
-#: ../src/backend/filters/dataLoad.cpp:484
-#: ../src/backend/filters/dataLoad.cpp:505
-msgid "File"
-msgstr "Datei"
+#: ../src/backend/filters/spatialAnalysis.cpp:133
+msgid "Neighbour Count"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:563
-msgid "File to use for range data"
+#: ../src/backend/filters/spatialAnalysis.cpp:484
+msgid "Load"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:573
-msgid "Drop unranged"
-msgstr "Nicht gerangete ausschalten"
+#: ../src/backend/filters/spatialAnalysis.cpp:539
+#: ../src/backend/filters/spatialAnalysis.cpp:2198
+#: ../src/backend/filters/spatialAnalysis.cpp:2251
+#: ../src/backend/filters/spatialAnalysis.cpp:2601
+#: ../src/backend/filters/spatialAnalysis.cpp:2893
+#: ../src/backend/filters/spatialAnalysis.cpp:3200
+#: ../src/backend/filters/spatialAnalysis.cpp:3829
+msgid "Build"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:575
-msgid "Remove unranged points when generating output"
+#: ../src/backend/filters/spatialAnalysis.cpp:588
+#: ../src/backend/filters/spatialAnalysis.cpp:3222
+#: ../src/backend/filters/spatialAnalysis.cpp:3718
+#: ../src/backend/filters/spatialAnalysis.cpp:3846
+msgid "Compute"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:585
-msgid "Legend"
+#: ../src/backend/filters/spatialAnalysis.cpp:710
+msgid "Spatial analysis algorithm to use"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:587
-msgid "Display colour legend for enabled ions"
+#: ../src/backend/filters/spatialAnalysis.cpp:734
+#: ../src/backend/filters/spatialAnalysis.cpp:785
+msgid "Stop Mode"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:591
-msgid "View"
+#: ../src/backend/filters/spatialAnalysis.cpp:737
+msgid "Method to use to terminate algorithm when examining each point"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:607
-msgid "All Ions"
-msgstr "Alle Ionen"
+#: ../src/backend/filters/spatialAnalysis.cpp:744
+msgid "NN Max"
+msgstr "NN Max"
 
-#: ../src/backend/filters/rangeFile.cpp:608
-msgid "Enable/disable all ions at once"
+#: ../src/backend/filters/spatialAnalysis.cpp:747
+msgid "Maximum number of neighbours to examine"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:616
-msgid "Species"
+#: ../src/backend/filters/spatialAnalysis.cpp:754
+msgid "Normalise bins"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:623
-msgid "IonID "
-msgstr "IonID "
-
-#: ../src/backend/filters/rangeFile.cpp:624
-msgid "Enable/disable specified ion"
+#: ../src/backend/filters/spatialAnalysis.cpp:757
+msgid ""
+"Normalise counts by binwidth. Needed when comparing NN histograms against "
+"one another"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:634
-msgid "Active Ion "
-msgstr "Actives Ion "
+#: ../src/backend/filters/spatialAnalysis.cpp:763
+msgid "Show Random"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:636
-msgid "If true, ion is used in output"
+#: ../src/backend/filters/spatialAnalysis.cpp:766
+msgid "Show a fitted (density matched) theoretical distribution"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:646
-msgid "Colour "
-msgstr "Farbe"
+#: ../src/backend/filters/spatialAnalysis.cpp:777
+msgid "Dist Max"
+msgstr "Abst. Max."
 
-#: ../src/backend/filters/rangeFile.cpp:650
-msgid "Colour used to represent ion"
+#: ../src/backend/filters/spatialAnalysis.cpp:780
+msgid "Maximum distance from each point for search"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:673
-msgid "All Ranges"
-msgstr "Alle Range"
+#: ../src/backend/filters/spatialAnalysis.cpp:794
+#: ../src/backend/filters/spatialAnalysis.cpp:928
+#: ../src/backend/filters/profile.cpp:1089
+msgid "Num Bins"
+msgstr "Bin-Anz."
 
-#: ../src/backend/filters/rangeFile.cpp:674
-msgid "Enable/disable all ranges"
+#: ../src/backend/filters/spatialAnalysis.cpp:797
+#: ../src/backend/filters/spatialAnalysis.cpp:931
+msgid "Number of bins for output 1D RDF plot"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:689
-msgid "Active Rng "
-msgstr "Activer Rng "
+#: ../src/backend/filters/spatialAnalysis.cpp:803
+msgid "Surface Remove"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:692
+#: ../src/backend/filters/spatialAnalysis.cpp:806
 msgid ""
-"Enable/disable specified range (ion must also be enabled to activiate range)"
+"Exclude surface as part of source to minimise bias in RDF (at cost of "
+"increased noise)"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:696
-msgid "Ion "
-msgstr "Ion "
-
-#: ../src/backend/filters/rangeFile.cpp:699
-msgid "Name of ion associate to this range"
+#: ../src/backend/filters/spatialAnalysis.cpp:813
+msgid "Remove Dist"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:708
-msgid "Start rng "
-msgstr "Start rng "
-
-#: ../src/backend/filters/rangeFile.cpp:711
-msgid "Start value for range"
+#: ../src/backend/filters/spatialAnalysis.cpp:816
+msgid "Minimum distance to remove from surface"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:716
-msgid "End rng "
-msgstr "End rng "
+#: ../src/backend/filters/spatialAnalysis.cpp:824
+#: ../src/backend/filters/spatialAnalysis.cpp:936
+msgid "Plot colour "
+msgstr "Plotfarbe "
 
-#: ../src/backend/filters/rangeFile.cpp:719
-msgid "Stopping value for range`"
+#: ../src/backend/filters/spatialAnalysis.cpp:827
+#: ../src/backend/filters/spatialAnalysis.cpp:939
+msgid "Colour of output plot"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:51
-msgid "Cylinder (axial)"
+#: ../src/backend/filters/spatialAnalysis.cpp:831
+#: ../src/backend/filters/spatialAnalysis.cpp:917
+#: ../src/backend/filters/spatialAnalysis.cpp:922
+#: ../src/backend/filters/spatialAnalysis.cpp:954
+#: ../src/backend/filters/spatialAnalysis.cpp:993
+msgid "Alg. Params."
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:52
-msgid "Cylinder (radial)"
-msgstr ""
+#: ../src/backend/filters/spatialAnalysis.cpp:844
+#: ../src/backend/filters/spatialAnalysis.cpp:1096
+msgid "Source"
+msgstr "Quelle"
 
-#: ../src/backend/filters/profile.cpp:591
-msgid "Distance"
-msgstr "Abstand"
+#: ../src/backend/filters/spatialAnalysis.cpp:847
+msgid "Ions to use for initiating RDF search"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:599
-msgid "Fraction"
-msgstr "Anteil"
+#: ../src/backend/filters/spatialAnalysis.cpp:860
+#: ../src/backend/filters/spatialAnalysis.cpp:1112
+#: ../src/backend/filters/spatialAnalysis.cpp:1138
+msgid "Enable/disable ion as source"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:601
-msgid "Density (\\frac{\\#}{len^3})"
-msgstr "Dichte (\\frac{\\#}{len^3})"
+#: ../src/backend/filters/spatialAnalysis.cpp:865
+#: ../src/backend/filters/spatialAnalysis.cpp:1117
+msgid "Source Ion"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:628
-msgid "Freq. Profile"
-msgstr "Häufigkeitsprofil"
+#: ../src/backend/filters/spatialAnalysis.cpp:875
+#: ../src/backend/filters/spatialAnalysis.cpp:1153
+msgid "Enable/disable all ions as target"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:680
-msgid "No data remained in profile - cannot display result"
+#: ../src/backend/filters/spatialAnalysis.cpp:887
+#: ../src/backend/filters/spatialAnalysis.cpp:1165
+msgid "Enable/disable this ion as target"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:967
-msgid "Total Density"
+#: ../src/backend/filters/spatialAnalysis.cpp:891
+msgid "Target Ion"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:971
-msgid "Do not do per-species analysis, perform density computation only"
+#: ../src/backend/filters/spatialAnalysis.cpp:901
+msgid "Cutoff"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:985
-msgid "Primitive type"
+#: ../src/backend/filters/spatialAnalysis.cpp:904
+msgid "Remove points with local density above/below this value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:989
-msgid "Basic shape to use for profile"
+#: ../src/backend/filters/spatialAnalysis.cpp:910
+msgid "Retain Upper"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1001
-msgid "Display the 3D composition profile interaction object"
+#: ../src/backend/filters/spatialAnalysis.cpp:913
+msgid "Retain either points with density above (enabled) or below cutoff"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1016
-#: ../src/backend/filters/spatialAnalysis.cpp:1044
-msgid "Position for centre of cylinder"
+#: ../src/backend/filters/spatialAnalysis.cpp:950
+msgid "Vector along which to calculate distribution function"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1024
-msgid "Vector between ends of cylinder"
+#: ../src/backend/filters/spatialAnalysis.cpp:961
+msgid "Block size"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1032
-msgid "Prevent length of cylinder changing during interaction"
+#: ../src/backend/filters/spatialAnalysis.cpp:964
+msgid "Number of ions to use per block"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1075
-msgid "Fixed Bin Num"
-msgstr "Fix. Bin-Anz."
+#: ../src/backend/filters/spatialAnalysis.cpp:971
+msgid "Max Block Aspect"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1078
+#: ../src/backend/filters/spatialAnalysis.cpp:974
 msgid ""
-"If true, use a fixed number of bins for profile, otherwise use fixed step "
-"size"
+"Maximum allowable block aspect ratio. Blocks above this aspect are "
+"discarded. Setting too high decreases correlation strength. Too low causes "
+"loss of statistical power."
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1085
-#: ../src/backend/filters/spatialAnalysis.cpp:887
-#: ../src/backend/filters/spatialAnalysis.cpp:1021
-msgid "Num Bins"
-msgstr "Bin-Anz."
+#: ../src/backend/filters/spatialAnalysis.cpp:985
+msgid "Extrusion Direction"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1090
-msgid "Number of bins to use for profile"
+#: ../src/backend/filters/spatialAnalysis.cpp:988
+msgid "Direction in which blocks are extended during construction."
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1096
-#: ../src/backend/filters/spectrumPlot.cpp:580
-msgid "Bin width"
-msgstr "Bin-Breite"
+#: ../src/backend/filters/spatialAnalysis.cpp:997
+msgid "Plot Counts"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1102
-msgid "Size of each bin in profile"
+#: ../src/backend/filters/spatialAnalysis.cpp:1000
+msgid "Show the counts in the binomial histogram"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1111
-msgid "Convert bin counts into relative frequencies in each bin"
+#: ../src/backend/filters/spatialAnalysis.cpp:1009
+msgid ""
+"Normalise the counts in the binomial histogram to a probability density "
+"function"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1115
-msgid "Min. events"
+#: ../src/backend/filters/spatialAnalysis.cpp:1013
+msgid "Expected Freq"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1119
-msgid "Drop data that does not have this many events"
+#: ../src/backend/filters/spatialAnalysis.cpp:1016
+msgid ""
+"Show the theoretically expected probability density function for a random "
+"dataset with the same mean"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1122
-msgid "Settings"
+#: ../src/backend/filters/spatialAnalysis.cpp:1024
+msgid "Display Grid"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1144
-#: ../src/backend/filters/spectrumPlot.cpp:669
-msgid "Plot Type"
-msgstr "Plot Type"
+#: ../src/backend/filters/spatialAnalysis.cpp:1027
+msgid "Show the extruded grid in the 3D view. This may be slow"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1147
-msgid "Visual style for plot"
+#: ../src/backend/filters/spatialAnalysis.cpp:1031
+msgid "View Options"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1158
-msgid "Colour of plot"
+#: ../src/backend/filters/spatialAnalysis.cpp:1037
+msgid "Data File"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1174
-msgid "Err. Estimator"
-msgstr "Fehlerschätzer"
+#: ../src/backend/filters/spatialAnalysis.cpp:1041
+msgid "Pos file of points to subtract/replace/etc"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1177
-msgid "Method of estimating error associated with each bin"
+#: ../src/backend/filters/spatialAnalysis.cpp:1046
+msgid "Match Tol."
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1184
-msgid "Avg. Window"
+#: ../src/backend/filters/spatialAnalysis.cpp:1049
+msgid "Tolerance to allow for matching"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1187
-msgid "Number of bins to include in moving average filter"
+#: ../src/backend/filters/spatialAnalysis.cpp:1065
+msgid "Replacment condition"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1191
-msgid "Error analysis"
+#: ../src/backend/filters/spatialAnalysis.cpp:1071
+msgid "Replace value"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:64
-msgid "Box only"
+#: ../src/backend/filters/spatialAnalysis.cpp:1074
+msgid "Use value data from file when replacing ions"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:65
-msgid "Tick"
+#: ../src/backend/filters/spatialAnalysis.cpp:1079
+msgid "Replacement"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:66
-msgid "Dimension"
+#: ../src/backend/filters/spatialAnalysis.cpp:1099
+msgid "Enable/disable all ions as source"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:571
-msgid "If true, show box, otherwise hide box"
+#: ../src/backend/filters/spatialAnalysis.cpp:1125
+msgid "Ions to use as Numerator for conc. calculation"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:584
-msgid "Style"
+#: ../src/backend/filters/spatialAnalysis.cpp:1681
+msgid "Spatial analysis aborted by user"
+msgstr "Spatial analysis aborted by user"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1682
+msgid "Insufficient memory for binomial. Reduce input size?"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:587
-msgid "Box display mode"
+#: ../src/backend/filters/spatialAnalysis.cpp:1683
+msgid "Required range data not present"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:590
-msgid "Display mode"
+#: ../src/backend/filters/spatialAnalysis.cpp:1684
+msgid "Unable to generate usable binomial grid"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:599
-msgid "Fixed Tick Num"
-msgstr "Fixed Tick Num"
+#: ../src/backend/filters/spatialAnalysis.cpp:1686
+msgid "Insufficient points to continue"
+msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:603
-msgid ""
-"If true, evenly use specified number of ticks. Otherwise, use distance to "
-"determine tick count"
+#: ../src/backend/filters/spatialAnalysis.cpp:1687
+msgid "Unable to load file"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:611
-msgid "Num X"
-msgstr "Num X"
+#: ../src/backend/filters/spatialAnalysis.cpp:2305
+#: ../src/backend/filters/spatialAnalysis.cpp:2624
+#: ../src/backend/filters/spatialAnalysis.cpp:2917
+msgid "Analyse"
+msgstr "Analyse"
 
-#: ../src/backend/filters/boundingBox.cpp:614
-msgid "Tick count in X direction"
+#: ../src/backend/filters/spatialAnalysis.cpp:2384
+#: ../src/backend/filters/spatialAnalysis.cpp:2474
+#: ../src/backend/filters/spatialAnalysis.cpp:2540
+msgid "Radial Distance"
+msgstr "Radialer Abstand"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2386
+#: ../src/backend/filters/spatialAnalysis.cpp:2479
+msgid "Count/Distance"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:619
-msgid "Num Y"
-msgstr "Num Y"
+#: ../src/backend/filters/spatialAnalysis.cpp:2391
+#: ../src/backend/filters/spatialAnalysis.cpp:2484
+msgid "NN Freq."
+msgstr "NN Freq."
 
-#: ../src/backend/filters/boundingBox.cpp:622
-msgid "Tick count in Y direction"
+#: ../src/backend/filters/spatialAnalysis.cpp:2531
+msgid "Warning, "
+msgstr "Warnung, "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2532
+msgid ""
+" points were unable to find neighbour points that exceeded the search "
+"radius, and thus terminated prematurely"
 msgstr ""
+" Punkte konnten keine Nachbapunkte die den Suchradius überschritten finden "
+"und beendeten vorzeitig."
 
-#: ../src/backend/filters/boundingBox.cpp:627
-msgid "Num Z"
-msgstr "Num Z"
+#: ../src/backend/filters/spatialAnalysis.cpp:2542
+msgid " RDF"
+msgstr " RDF"
 
-#: ../src/backend/filters/boundingBox.cpp:630
-msgid "Tick count in Z direction"
-msgstr ""
+#: ../src/backend/filters/spatialAnalysis.cpp:2823
+#: ../src/backend/filters/spatialAnalysis.cpp:3123
+msgid "Number Density (\\#/Vol^3)"
+msgstr "Number Density (\\#/Vol^3)"
 
-#: ../src/backend/filters/boundingBox.cpp:636
-msgid "Spacing X"
-msgstr "X-Abstand"
+#: ../src/backend/filters/spatialAnalysis.cpp:2848
+#: ../src/backend/filters/spatialAnalysis.cpp:3145
+msgid "Warning,"
+msgstr "Warnung,"
 
-#: ../src/backend/filters/boundingBox.cpp:640
-msgid "Distance between ticks on X axis"
+#: ../src/backend/filters/spatialAnalysis.cpp:2849
+#: ../src/backend/filters/spatialAnalysis.cpp:3146
+msgid " points were un-analysable. These have been dropped"
+msgstr " points were un-analysable. These have been dropped"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2871
+#: ../src/backend/filters/spatialAnalysis.cpp:3168
+msgid "And so on..."
+msgstr "Und so weiter..."
+
+#: ../src/backend/filters/spatialAnalysis.cpp:3268
+msgid "Insufficient points to complete analysis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:644
-msgid "Spacing Y"
-msgstr "Y-Abstand"
+#: ../src/backend/filters/spatialAnalysis.cpp:3291
+msgid "Axial Distance"
+msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:648
-msgid "Distance between ticks on Y axis"
+#: ../src/backend/filters/spatialAnalysis.cpp:3293
+msgid " 1D Dist. Func."
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:652
-msgid "Spacing Z"
-msgstr "Z-Abstand"
+#: ../src/backend/filters/spatialAnalysis.cpp:3344
+msgid "Binomial"
+msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:656
-msgid "Distance between ticks on Z axis"
+#: ../src/backend/filters/spatialAnalysis.cpp:3477
+#: ../src/backend/filters/spatialAnalysis.cpp:3542
+msgid "Ions in Block"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:664
-msgid "Ticks X"
+#: ../src/backend/filters/spatialAnalysis.cpp:3479
+#: ../src/backend/filters/spatialAnalysis.cpp:3544
+#: ../src/backend/filters/spectrumPlot.cpp:79
+msgid "Probability"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:668
-msgid "Display tick marks on X axis"
+#: ../src/backend/filters/spatialAnalysis.cpp:3546
+msgid "Count (blocks)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:672
-msgid "Ticks Y"
+#: ../src/backend/filters/spatialAnalysis.cpp:3611
+msgid "Build Numerator"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:676
-msgid "Display tick marks on Y axis"
+#: ../src/backend/filters/spatialAnalysis.cpp:3625
+msgid "Build Denominator"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:680
-msgid "Ticks Z"
+#: ../src/backend/filters/spatialAnalysis.cpp:3961
+msgid "Relative Conc. (%)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:684
-msgid "Display tick marks on Z axis"
+#: ../src/backend/filters/profile.cpp:51
+msgid "Cylinder (axial)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:687
-msgid "Tick marks"
+#: ../src/backend/filters/profile.cpp:52
+msgid "Cylinder (radial)"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:694
-msgid "Box Colour"
-msgstr "Box Farbe"
+#: ../src/backend/filters/profile.cpp:595
+msgid "Distance"
+msgstr "Abstand"
 
-#: ../src/backend/filters/boundingBox.cpp:698
-msgid "Colour of the bounding box"
-msgstr ""
+#: ../src/backend/filters/profile.cpp:603
+msgid "Fraction"
+msgstr "Anteil"
 
-#: ../src/backend/filters/boundingBox.cpp:703
-msgid "Line thickness"
-msgstr "Linienbreite"
+#: ../src/backend/filters/profile.cpp:605
+msgid "Density (\\frac{\\#}{len^3})"
+msgstr "Dichte (\\frac{\\#}{len^3})"
 
-#: ../src/backend/filters/boundingBox.cpp:707
-msgid "Thickness of the lines used to draw the box"
+#: ../src/backend/filters/profile.cpp:632
+msgid "Freq. Profile"
+msgstr "Häufigkeitsprofil"
+
+#: ../src/backend/filters/profile.cpp:684
+msgid "No data remained in profile - cannot display result"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:718
-msgid "Relative size for text"
+#: ../src/backend/filters/profile.cpp:971
+msgid "Total Density"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:723
-msgid "Abs. Coords"
+#: ../src/backend/filters/profile.cpp:975
+msgid "Do not do per-species analysis, perform density computation only"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:726
-msgid "Show labels using aboslute coo-ordinates"
+#: ../src/backend/filters/profile.cpp:989
+msgid "Primitive type"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:191
-msgid "Sampling"
+#: ../src/backend/filters/profile.cpp:993
+msgid "Basic shape to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:447
-msgid "By Count"
-msgstr "Nach Anzahl"
+#: ../src/backend/filters/profile.cpp:1005
+msgid "Display the 3D composition profile interaction object"
+msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:450
-msgid "Sample up to a fixed number of ions"
+#: ../src/backend/filters/profile.cpp:1020
+msgid "Position for centre of cylinder"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:456
-msgid "Per Species"
-msgstr "Nach Spezies"
+#: ../src/backend/filters/profile.cpp:1028
+msgid "Vector between ends of cylinder"
+msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:460
-msgid "Use species specific (from ranging) sampling values"
+#: ../src/backend/filters/profile.cpp:1036
+msgid "Prevent length of cylinder changing during interaction"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:489
-msgid "Sampling value for species"
+#: ../src/backend/filters/profile.cpp:1079
+msgid "Fixed Bin Num"
+msgstr "Fix. Bin-Anz."
+
+#: ../src/backend/filters/profile.cpp:1082
+msgid ""
+"If true, use a fixed number of bins for profile, otherwise use fixed step "
+"size"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:505
-#: ../src/backend/filters/ionDownsample.cpp:529
-msgid "Sampling rates"
+#: ../src/backend/filters/profile.cpp:1094
+msgid "Number of bins to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:513
-msgid "Output Count"
-msgstr "Ausgabe Anzahl"
+#: ../src/backend/filters/profile.cpp:1100
+#: ../src/backend/filters/spectrumPlot.cpp:583
+msgid "Bin width"
+msgstr "Bin-Breite"
 
-#: ../src/backend/filters/ionDownsample.cpp:516
-msgid "Sample up to this value of points"
+#: ../src/backend/filters/profile.cpp:1106
+msgid "Size of each bin in profile"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:521
-msgid "Out Fraction"
-msgstr "Ausgabe Anteil"
+#: ../src/backend/filters/profile.cpp:1115
+msgid "Convert bin counts into relative frequencies in each bin"
+msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:525
-msgid "Sample this fraction of points"
+#: ../src/backend/filters/profile.cpp:1119
+msgid "Min. events"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:84
-#: ../src/backend/filters/clusterAnalysis.cpp:1060
-msgid "Size Distribution"
-msgstr "Größenverteilung"
+#: ../src/backend/filters/profile.cpp:1123
+msgid "Drop data that does not have this many events"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:85
-msgid "Chemistry Distribution"
-msgstr "Chemische Verteilung"
+#: ../src/backend/filters/profile.cpp:1126
+msgid "Settings"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:503
-msgid "No range data. Can't cluster."
-msgstr "Keine Rangedaten. Clusteranalyse nicht möglich."
+#: ../src/backend/filters/profile.cpp:1148
+#: ../src/backend/filters/spectrumPlot.cpp:672
+msgid "Plot Type"
+msgstr "Plot Type"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:514
-msgid ""
-"No ranges selected for cluster \"core\". Cannot continue with clustering."
+#: ../src/backend/filters/profile.cpp:1151
+msgid "Visual style for plot"
 msgstr ""
-"Kein Range für cluster \"core\" ausgewählt. Kann mit Clusteranalyse nicht "
-"weitermachen."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:523
-msgid ""
-"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
+#: ../src/backend/filters/profile.cpp:1162
+msgid "Colour of plot"
 msgstr ""
-"Kein Range für \"bulk\" ausgewählt. Kann mit Clusteranalyse nicht "
-"weitermachen."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:689
-msgid "Morphology Plot"
-msgstr ""
+#: ../src/backend/filters/profile.cpp:1178
+msgid "Err. Estimator"
+msgstr "Fehlerschätzer"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:690
-msgid "\\lambda_1:\\lambda_2 ratio"
+#: ../src/backend/filters/profile.cpp:1181
+msgid "Method of estimating error associated with each bin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:691
-msgid "\\lambda_2:\\lambda_3 ratio"
+#: ../src/backend/filters/profile.cpp:1188
+msgid "Avg. Window"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:736
-msgid "No clusters had sufficient dimensionality to compute singular values"
+#: ../src/backend/filters/profile.cpp:1191
+msgid "Number of bins to include in moving average filter"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:794
-msgid "Found :"
-msgstr "Gefunden:"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:796
-msgid " clusters"
-msgstr " Cluster"
+#: ../src/backend/filters/profile.cpp:1195
+msgid "Error analysis"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:888
-msgid "Compositions (fractional, core+bulk)"
-msgstr "Zusammensetzungen (fractional, core+bulk)"
+#: ../src/backend/filters/transform.cpp:84
+msgid "Translate"
+msgstr "Translate"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:890
-msgid "Compositions (fractional, core only)"
-msgstr "Zusammensetzungen (fractional, core only)"
+#: ../src/backend/filters/transform.cpp:85
+msgid "Scale (isotropic)"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:908
-msgid "Frequencies (core+bulk)"
-msgstr "Häufigkeiten (core+bulk)"
+#: ../src/backend/filters/transform.cpp:86
+msgid "Scale (anisotropic)"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:939
-msgid "Core Link + Erode"
-msgstr "Core Link + Erode"
+#: ../src/backend/filters/transform.cpp:87
+msgid "Rotate"
+msgstr "Rotieren"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:947
-msgid "Cluster algorithm mode"
+#: ../src/backend/filters/transform.cpp:88
+msgid "Value Shuffle"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:958
-msgid "Core Classify"
+#: ../src/backend/filters/transform.cpp:89
+msgid "Spatial Noise"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:961
-msgid ""
-"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
+#: ../src/backend/filters/transform.cpp:90
+msgid "Translate Value"
+msgstr "Translate Wert"
+
+#: ../src/backend/filters/transform.cpp:91
+msgid "Crop Value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:967
-msgid "Core Classify Dist"
-msgstr "Core Classify Dist"
+#: ../src/backend/filters/transform.cpp:95
+msgid "Specify"
+msgstr "Angeben"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:970
-msgid "Restrict only atoms by distance to be cluster sources"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:96
+msgid "Boundbox Centre"
+msgstr "Boundbox Zentrum"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:975
-msgid "Classify Knn Max"
-msgstr "Classify Knn Max"
+#: ../src/backend/filters/transform.cpp:97
+msgid "Mass Centre"
+msgstr "Massen-Zentrum"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:978
-msgid ""
-"Require that the kth NN (this number) is within the classify distance, to be "
-"a cluster source"
+#: ../src/backend/filters/transform.cpp:1080
+msgid "Shuffle"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:984
-msgid "Core Link Dist"
-msgstr "Core Link Dist"
+#: ../src/backend/filters/transform.cpp:1104
+msgid "Splice"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:987
-msgid "Distance between clusters to allow linking"
+#: ../src/backend/filters/transform.cpp:1152
+msgid "Algorithm to use to transform point data"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:992
-msgid "Bulk Link"
+#: ../src/backend/filters/transform.cpp:1169
+msgid "Origin mode"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:995
-#: ../src/backend/filters/clusterAnalysis.cpp:1012
-msgid "Enable  linking of non-cluster species - eg for composition analysis "
+#: ../src/backend/filters/transform.cpp:1172
+msgid "Select how transform origin is computed"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1002
-msgid "Bulk Link (Envelope) Dist"
-msgstr "Bulk Link (Envelope) Dist"
+#: ../src/backend/filters/transform.cpp:1177
+msgid "Show marker"
+msgstr "Zeige Markierung"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1005
-msgid ""
-"Distance from core points that form cluster that is used to grab surrounding "
-"bulk points"
+#: ../src/backend/filters/transform.cpp:1181
+msgid "Display an interactive object to set transform origin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1009
-msgid "Erosion"
+#: ../src/backend/filters/transform.cpp:1183
+msgid "Display a small marker to denote transform origin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1018
-msgid "Erode Dist"
-msgstr "Erode Dist"
+#: ../src/backend/filters/transform.cpp:1199
+msgid "Translation"
+msgstr "Translation"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1021
-msgid ""
-"Distance from unclustered material in which bulk points are eroded from "
-"cluster"
+#: ../src/backend/filters/transform.cpp:1202
+msgid "Translation vector for transform"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1028
-msgid "Clustering Params"
-msgstr "Cluster Parameter"
+#: ../src/backend/filters/transform.cpp:1214
+msgid "Offset"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1033
-msgid "Size Cropping"
-msgstr "Größeneinschrankungen"
+#: ../src/backend/filters/transform.cpp:1218
+msgid "Scalar to use to offset each point's associated value"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1036
-msgid "Remove clusters based upon size distribution"
+#: ../src/backend/filters/transform.cpp:1235
+#: ../src/backend/filters/transform.cpp:1262
+msgid "Origin of scale transform"
+msgstr ""
+
+#: ../src/backend/filters/transform.cpp:1242
+#: ../src/backend/filters/transform.cpp:1269
+msgid "Scale Fact."
+msgstr "Skalierungsfaktor"
+
+#: ../src/backend/filters/transform.cpp:1245
+#: ../src/backend/filters/transform.cpp:1272
+msgid "Enlargement factor for scaling around origin"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1043
-msgid "Min Size"
-msgstr "Min Größe"
+#: ../src/backend/filters/transform.cpp:1288
+msgid "Origin of rotation"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1046
-msgid "Remove clusters below this size"
+#: ../src/backend/filters/transform.cpp:1296
+msgid "Axis around which to revolve"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1051
-msgid "Max Size"
-msgstr "Max Größe"
+#: ../src/backend/filters/transform.cpp:1301
+msgid "Angle (deg)"
+msgstr "Winkel (deg)"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1054
-msgid "Remove clusters above this size"
+#: ../src/backend/filters/transform.cpp:1304
+msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1063
-msgid "Show number of clusters as a function of cluster size"
+#: ../src/backend/filters/transform.cpp:1321
+msgid "Noise Type"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1069
-msgid "Log Scale"
-msgstr "Log. Skala"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1072
-msgid "Use logarithmic scale for size distribution"
+#: ../src/backend/filters/transform.cpp:1324
+msgid "Method to use to degrade point data"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1079
-msgid "Morphology Dist."
+#: ../src/backend/filters/transform.cpp:1331
+msgid "Noise level"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1082
-msgid "Create a plot showing cluster aspect ratio"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1333
+msgid "Standard dev."
+msgstr "Standardabweichung"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1088
-msgid "Cluster Id"
+#: ../src/backend/filters/transform.cpp:1341
+msgid "Amplitude of noise"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1091
-msgid "Assign cluster output a unique per-cluster value (id)."
+#: ../src/backend/filters/transform.cpp:1355
+msgid "Min Value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1098
-msgid "Chemistry Dist."
-msgstr "Chemistry Dist."
+#: ../src/backend/filters/transform.cpp:1359
+msgid "Minimum value to use for crop"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1101
-msgid "Create a plot showing chemistry for each cluster size"
+#: ../src/backend/filters/transform.cpp:1363
+msgid "Max Value"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1111
-msgid "Convert cluster counts to composition"
+#: ../src/backend/filters/transform.cpp:1367
+msgid "Maximum value to use for crop"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1117
-msgid "Postprocess"
-msgstr "Postprozess"
+#: ../src/backend/filters/transform.cpp:1376
+msgid "Transform Params"
+msgstr "Transformationsparameter"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1136
-msgid "If selected, use as \"core\" ion type (can make clusters)"
+#: ../src/backend/filters/transform.cpp:1745
+msgid "White"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1141
-msgid "Core Ranges"
-msgstr "Core Ranges"
+#: ../src/backend/filters/transform.cpp:1747
+msgid "Gaussian"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1147
-msgid "Enable/Disable All"
+#: ../src/backend/filters/boundingBox.cpp:64
+msgid "Box only"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1152
-msgid "Enable/disable all ions"
+#: ../src/backend/filters/boundingBox.cpp:65
+msgid "Tick"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1165
-msgid ""
-"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
+#: ../src/backend/filters/boundingBox.cpp:66
+msgid "Dimension"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1170
-msgid "Bulk Ranges"
-msgstr "Bulk Ranges"
+#: ../src/backend/filters/boundingBox.cpp:572
+msgid "If true, show box, otherwise hide box"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1186
-msgid "Max. Sep + Erode"
-msgstr "Max. Sep + Erode"
+#: ../src/backend/filters/boundingBox.cpp:585
+msgid "Style"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1939
-msgid " --------------------------- Parameter selection notice ------------- "
-msgstr " --------------------------- Parameterauswahl Notiz ------------- "
+#: ../src/backend/filters/boundingBox.cpp:588
+msgid "Box display mode"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1940
-msgid "You have specified a bulk distance larger than half your link distance."
+#: ../src/backend/filters/boundingBox.cpp:591
+msgid "Display mode"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1941
+#: ../src/backend/filters/boundingBox.cpp:600
+msgid "Fixed Tick Num"
+msgstr "Fixed Tick Num"
+
+#: ../src/backend/filters/boundingBox.cpp:604
 msgid ""
-"You can do this; thats OK, but the output is no longer independent of the "
-"computational process;"
+"If true, evenly use specified number of ticks. Otherwise, use distance to "
+"determine tick count"
 msgstr ""
-"Sie könne das machen, das ist in Ordnung, aber die Ausgabe ist nicht länger "
-"unabhängig vom Berechnungsprozess"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1942
-msgid ""
-"This will be a problem in the case where two or more clusters can equally "
-"lay claim to a \"bulk\" ion. "
+#: ../src/backend/filters/boundingBox.cpp:612
+msgid "Num X"
+msgstr "Num X"
+
+#: ../src/backend/filters/boundingBox.cpp:615
+msgid "Tick count in X direction"
 msgstr ""
-"Dies ist ein Problem wenn zwei oder mehrere Cluster auf dasselbe \"bulk\" "
-"Ion Anspruch erheben. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1943
-msgid ""
-" If your inter-cluster distance is sufficiently large (larger than your bulk "
-"linking distance), then you can get away with this."
+#: ../src/backend/filters/boundingBox.cpp:620
+msgid "Num Y"
+msgstr "Num Y"
+
+#: ../src/backend/filters/boundingBox.cpp:623
+msgid "Tick count in Y direction"
 msgstr ""
-" If your inter-cluster distance is sufficiently large (larger than your bulk "
-"linking distance), then you can get away with this."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1944
-msgid ""
-" In theory it is possible to \"join\" the clusters, but this has not been "
-"implemented for speed reasons."
+#: ../src/backend/filters/boundingBox.cpp:628
+msgid "Num Z"
+msgstr "Num Z"
+
+#: ../src/backend/filters/boundingBox.cpp:631
+msgid "Tick count in Z direction"
 msgstr ""
-"Theoretisch ist es möglich die Cluster zu 'verbinden', dies wurde jedoch aus "
-"Gescheindigkeitsgründen nicht implementiert."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1945
-msgid ""
-"If you want this, please contact the author, or just use the source to add "
-"this in yourself."
+#: ../src/backend/filters/boundingBox.cpp:637
+msgid "Spacing X"
+msgstr "X-Abstand"
+
+#: ../src/backend/filters/boundingBox.cpp:641
+msgid "Distance between ticks on X axis"
 msgstr ""
-"Sollten Sie dies wollen, kontaktieren Sie den Autor oder verwenden Sie den "
-"Sourcecode um es selbst hinzuzufügen."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1946
-msgid "---------------------------------------------------------------------- "
-msgstr "---------------------------------------------------------------------- "
+#: ../src/backend/filters/boundingBox.cpp:645
+msgid "Spacing Y"
+msgstr "Y-Abstand"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1975
-msgid "Build Core"
+#: ../src/backend/filters/boundingBox.cpp:649
+msgid "Distance between ticks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2003
-msgid "Core"
-msgstr "Kern"
+#: ../src/backend/filters/boundingBox.cpp:653
+msgid "Spacing Z"
+msgstr "Z-Abstand"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2126
-msgid "Bulk"
+#: ../src/backend/filters/boundingBox.cpp:657
+msgid "Distance between ticks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2204
-msgid "Erode"
+#: ../src/backend/filters/boundingBox.cpp:665
+msgid "Ticks X"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2282
-msgid "Re-Collate"
+#: ../src/backend/filters/boundingBox.cpp:669
+msgid "Display tick marks on X axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2337
-msgid "Classify Core"
+#: ../src/backend/filters/boundingBox.cpp:673
+msgid "Ticks Y"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2428
-msgid "Build Bulk"
+#: ../src/backend/filters/boundingBox.cpp:677
+msgid "Display tick marks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2676
-#: ../src/backend/filters/clusterAnalysis.cpp:2879
-msgid "Cluster Size"
+#: ../src/backend/filters/boundingBox.cpp:681
+msgid "Ticks Z"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2677
-#: ../src/backend/filters/clusterAnalysis.cpp:2883
-msgid "Frequency"
+#: ../src/backend/filters/boundingBox.cpp:685
+msgid "Display tick marks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2881
-msgid "Composition"
+#: ../src/backend/filters/boundingBox.cpp:688
+msgid "Tick marks"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:123
-msgid "Local Density"
-msgstr "Lokale Dichte"
+#: ../src/backend/filters/boundingBox.cpp:695
+msgid "Box Colour"
+msgstr "Box Farbe"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:124
-msgid "Density Filtering"
+#: ../src/backend/filters/boundingBox.cpp:699
+msgid "Colour of the bounding box"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:125
-msgid "Radial Distribution"
-msgstr "Radial Distribution"
+#: ../src/backend/filters/boundingBox.cpp:704
+msgid "Line thickness"
+msgstr "Linienbreite"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:126
-msgid "Axial Distribution"
+#: ../src/backend/filters/boundingBox.cpp:708
+msgid "Thickness of the lines used to draw the box"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:127
-msgid "Binomial Distribution"
-msgstr ""
+#: ../src/backend/filters/boundingBox.cpp:716
+#: ../src/backend/filters/annotation.cpp:856
+msgid "Font Size"
+msgstr "Schriftgröße"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:128
-msgid "Point Em/Replacement"
+#: ../src/backend/filters/boundingBox.cpp:719
+msgid "Relative size for text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:129
-msgid "Local Concentration"
+#: ../src/backend/filters/boundingBox.cpp:724
+msgid "Abs. Coords"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:133
-msgid "Neighbour Count"
+#: ../src/backend/filters/boundingBox.cpp:727
+msgid "Show labels using aboslute coo-ordinates"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:643
-msgid "Load"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:73
+msgid "Arrow"
+msgstr "Pfeil"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:660
-#: ../src/backend/filters/spatialAnalysis.cpp:2330
-#: ../src/backend/filters/spatialAnalysis.cpp:2383
-#: ../src/backend/filters/spatialAnalysis.cpp:2733
-#: ../src/backend/filters/spatialAnalysis.cpp:3022
-#: ../src/backend/filters/spatialAnalysis.cpp:3540
-#: ../src/backend/filters/spatialAnalysis.cpp:4184
-msgid "Build"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:74
+msgid "Text"
+msgstr "Text"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:705
-#: ../src/backend/filters/spatialAnalysis.cpp:3558
-#: ../src/backend/filters/spatialAnalysis.cpp:4073
-#: ../src/backend/filters/spatialAnalysis.cpp:4201
-msgid "Compute"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:75
+msgid "Arrow+Text"
+msgstr "Pfeil+Text"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:803
-msgid "Spatial analysis algorithm to use"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:76
+msgid "Angle"
+msgstr "Winkel"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:827
-#: ../src/backend/filters/spatialAnalysis.cpp:878
-msgid "Stop Mode"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:77
+msgid "Ruler"
+msgstr "Lineal"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:830
-msgid "Method to use to terminate algorithm when examining each point"
+#: ../src/backend/filters/annotation.cpp:177 ../src/backend/filter.cpp:55
+msgid "Draw"
+msgstr "Zeichnen"
+
+#: ../src/backend/filters/annotation.cpp:532
+msgid "Enable"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:837
-msgid "NN Max"
-msgstr "NN Max"
+#: ../src/backend/filters/annotation.cpp:535
+msgid "Enable/disable annotation"
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:840
-msgid "Maximum number of neighbours to examine"
+#: ../src/backend/filters/annotation.cpp:556
+msgid "Type or style of annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:847
-msgid "Normalise bins"
+#: ../src/backend/filters/annotation.cpp:572
+#: ../src/backend/filters/annotation.cpp:676
+msgid "Text of annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:850
-msgid ""
-"Normalise counts by binwidth. Needed when comparing NN histograms against "
-"one another"
+#: ../src/backend/filters/annotation.cpp:580
+msgid "Position of annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:856
-msgid "Show Random"
+#: ../src/backend/filters/annotation.cpp:584
+#: ../src/backend/filters/annotation.cpp:691
+#: ../src/backend/filters/annotation.cpp:750
+#: ../src/backend/filters/annotation.cpp:839
+msgid "Up dir"
+msgstr "Up dir"
+
+#: ../src/backend/filters/annotation.cpp:588
+#: ../src/backend/filters/annotation.cpp:843
+msgid "Vector for up direction of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:859
-msgid "Show a fitted (density matched) theoretical distribution"
+#: ../src/backend/filters/annotation.cpp:592
+#: ../src/backend/filters/annotation.cpp:698
+#: ../src/backend/filters/annotation.cpp:742
+#: ../src/backend/filters/annotation.cpp:847
+msgid "Across dir"
+msgstr "Across dir"
+
+#: ../src/backend/filters/annotation.cpp:596
+#: ../src/backend/filters/annotation.cpp:851
+msgid "Reading direction for annotation"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:870
-msgid "Dist Max"
-msgstr "Abst. Max."
+#: ../src/backend/filters/annotation.cpp:601
+#: ../src/backend/filters/annotation.cpp:683
+#: ../src/backend/filters/annotation.cpp:777
+msgid "Text size"
+msgstr "Textgröße"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:873
-msgid "Maximum distance from each point for search"
+#: ../src/backend/filters/annotation.cpp:605
+#: ../src/backend/filters/annotation.cpp:687
+#: ../src/backend/filters/annotation.cpp:859
+msgid "Relative size of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:890
-#: ../src/backend/filters/spatialAnalysis.cpp:1024
-msgid "Number of bins for output 1D RDF plot"
+#: ../src/backend/filters/annotation.cpp:617
+#: ../src/backend/filters/annotation.cpp:658
+msgid "3D position for tail of arrow"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:896
-msgid "Surface Remove"
+#: ../src/backend/filters/annotation.cpp:625
+#: ../src/backend/filters/annotation.cpp:667
+msgid "3D Position to which arrow points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:899
-msgid ""
-"Exclude surface as part of source to minimise bias in RDF (at cost of "
-"increased noise)"
+#: ../src/backend/filters/annotation.cpp:628
+#: ../src/backend/filters/annotation.cpp:738
+msgid "Positioning"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:906
-msgid "Remove Dist"
+#: ../src/backend/filters/annotation.cpp:633
+#: ../src/backend/filters/annotation.cpp:705
+msgid "Tip radius"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:909
-msgid "Minimum distance to remove from surface"
+#: ../src/backend/filters/annotation.cpp:637
+msgid "Size of the arrow head"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:917
-#: ../src/backend/filters/spatialAnalysis.cpp:1029
-msgid "Plot colour "
-msgstr "Plotfarbe "
-
-#: ../src/backend/filters/spatialAnalysis.cpp:920
-#: ../src/backend/filters/spatialAnalysis.cpp:1032
-msgid "Colour of output plot"
+#: ../src/backend/filters/annotation.cpp:641
+msgid "Line size"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:924
-#: ../src/backend/filters/spatialAnalysis.cpp:1010
-#: ../src/backend/filters/spatialAnalysis.cpp:1015
-#: ../src/backend/filters/spatialAnalysis.cpp:1064
-#: ../src/backend/filters/spatialAnalysis.cpp:1103
-msgid "Alg. Params."
+#: ../src/backend/filters/annotation.cpp:645
+msgid "Thickness of line used to draw arrow stem"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:937
-#: ../src/backend/filters/spatialAnalysis.cpp:1207
-msgid "Source"
-msgstr "Quelle"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:940
-msgid "Ions to use for initiating RDF search"
+#: ../src/backend/filters/annotation.cpp:679
+msgid "Options"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:953
-#: ../src/backend/filters/spatialAnalysis.cpp:1223
-#: ../src/backend/filters/spatialAnalysis.cpp:1249
-msgid "Enable/disable ion as source"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:715
+msgid "Position A"
+msgstr "Position A"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:958
-#: ../src/backend/filters/spatialAnalysis.cpp:1228
-msgid "Source Ion"
+#: ../src/backend/filters/annotation.cpp:719
+msgid "Location of first non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:965 ../src/gl/cameras.cpp:611
-msgid "Target"
-msgstr "Ziel"
+#: ../src/backend/filters/annotation.cpp:723
+msgid "Origin "
+msgstr "Ursprung "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:968
-#: ../src/backend/filters/spatialAnalysis.cpp:1264
-msgid "Enable/disable all ions as target"
+#: ../src/backend/filters/annotation.cpp:727
+msgid "Location of central vertex"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:980
-#: ../src/backend/filters/spatialAnalysis.cpp:1276
-msgid "Enable/disable this ion as target"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:731
+msgid "Position B"
+msgstr "Position B"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:984
-msgid "Target Ion"
+#: ../src/backend/filters/annotation.cpp:735
+msgid "Location of second non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:994
-msgid "Cutoff"
+#: ../src/backend/filters/annotation.cpp:746
+msgid "Reading direction for angle text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:997
-msgid "Remove points with local density above/below this value"
+#: ../src/backend/filters/annotation.cpp:751
+msgid "Vector for up direction of angle text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1003
-msgid "Retain Upper"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:759
+msgid "Reflexive"
+msgstr "Reflexive"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1006
-msgid "Retain either points with density above (enabled) or below cutoff"
+#: ../src/backend/filters/annotation.cpp:762
+msgid "Measure interor (enabled) or exterior angle (disabled)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1052
-msgid "Vector between centre and end of cylinder"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:767
+msgid "Show Angle"
+msgstr "Zeige Winkel"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1071
-#: ../src/backend/filters/spatialAnalysis.cpp:3827
-#: ../src/backend/filters/spatialAnalysis.cpp:3886
-msgid "Block size"
+#: ../src/backend/filters/annotation.cpp:771
+msgid "Display angle text (when enabled)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1074
-msgid "Number of ions to use per block"
+#: ../src/backend/filters/annotation.cpp:781
+msgid "Size of angle text"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1081
-msgid "Max Block Aspect"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:799
+msgid "Digit format"
+msgstr "Zahlenformat"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1084
+#: ../src/backend/filters/annotation.cpp:803
 msgid ""
-"Maximum allowable block aspect ratio. Blocks above this aspect are "
-"discarded. Setting too high decreases correlation strength. Too low causes "
-"loss of statistical power."
+"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
+"gives 12.34"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1095
-msgid "Extrusion Direction"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:809
+#: ../src/backend/filters/annotation.cpp:894
+msgid "Sphere size"
+msgstr "Kugelgröße"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1098
-msgid "Direction in which blocks are extended during construction."
+#: ../src/backend/filters/annotation.cpp:813
+#: ../src/backend/filters/annotation.cpp:898
+msgid "Marker sphere size for manipulating tool"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1107
-msgid "Plot Counts"
+#: ../src/backend/filters/annotation.cpp:827
+msgid "Ruler beginning 3D location"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1110
-msgid "Show the counts in the binomial histogram"
+#: ../src/backend/filters/annotation.cpp:835
+msgid "Ruler finish 3D location"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1119
-msgid ""
-"Normalise the counts in the binomial histogram to a probability density "
-"function"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:865
+msgid "Fixed ticks"
+msgstr "Fixe Marker"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1133
-msgid "Display Grid"
+#: ../src/backend/filters/annotation.cpp:868
+msgid ""
+"Use fixed (enabled) number of text markers, or one every fixed distance "
+"(disabled)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1142
-msgid "View Options"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:875
+msgid "Num Ticks"
+msgstr "Anzahl Marker"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1148
-msgid "Data File"
+#: ../src/backend/filters/annotation.cpp:878
+msgid "Number of tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1152
-msgid "Pos file of points to subtract/replace/etc"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:885
+msgid "Tick Spacing"
+msgstr "Markerabstand"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1157
-msgid "Match Tol."
+#: ../src/backend/filters/annotation.cpp:888
+msgid "Distance between tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1160
-msgid "Tolerance to allow for matching"
+#: ../src/backend/filters/annotation.cpp:912
+msgid "Colour for ruler and ticks"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1176
-msgid "Replacment condition"
+#: ../src/backend/filters/ionDownsample.cpp:192
+msgid "Sampling"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1182
-msgid "Replace value"
-msgstr ""
+#: ../src/backend/filters/ionDownsample.cpp:448
+msgid "By Count"
+msgstr "Nach Anzahl"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1185
-msgid "Use value data from file when replacing ions"
+#: ../src/backend/filters/ionDownsample.cpp:451
+msgid "Sample up to a fixed number of ions"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1190
-msgid "Replacement"
-msgstr ""
+#: ../src/backend/filters/ionDownsample.cpp:457
+msgid "Per Species"
+msgstr "Nach Spezies"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1210
-msgid "Enable/disable all ions as source"
+#: ../src/backend/filters/ionDownsample.cpp:461
+msgid "Use species specific (from ranging) sampling values"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1236
-msgid "Ions to use as Numerator for conc. calculation"
+#: ../src/backend/filters/ionDownsample.cpp:491
+msgid "Sampling value for species"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1785
-msgid "Spatial analysis aborted by user"
-msgstr "Spatial analysis aborted by user"
+#: ../src/backend/filters/ionDownsample.cpp:498
+#: ../src/backend/filters/ionInfo.cpp:317
+msgid "Unranged"
+msgstr "Nicht Geranged"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1786
-msgid "Insufficient memory to complete analysis"
+#: ../src/backend/filters/ionDownsample.cpp:507
+#: ../src/backend/filters/ionDownsample.cpp:531
+msgid "Sampling rates"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1787
-msgid "Required range data not present"
-msgstr ""
+#: ../src/backend/filters/ionDownsample.cpp:515
+msgid "Output Count"
+msgstr "Ausgabe Anzahl"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1788
-msgid "Insufficient memory for binomial. Reduce input size?"
+#: ../src/backend/filters/ionDownsample.cpp:518
+msgid "Sample up to this value of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1789
-msgid "Insufficient points to continue"
-msgstr ""
+#: ../src/backend/filters/ionDownsample.cpp:523
+msgid "Out Fraction"
+msgstr "Ausgabe Anteil"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1790
-msgid "Unable to load file"
+#: ../src/backend/filters/ionDownsample.cpp:527
+msgid "Sample this fraction of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2437
-#: ../src/backend/filters/spatialAnalysis.cpp:2756
-#: ../src/backend/filters/spatialAnalysis.cpp:3046
-msgid "Analyse"
-msgstr "Analyse"
+#: ../src/backend/filters/ionInfo.cpp:37
+msgid "Rectilinear"
+msgstr "Geradlinig"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2516
-#: ../src/backend/filters/spatialAnalysis.cpp:2606
-#: ../src/backend/filters/spatialAnalysis.cpp:2672
-msgid "Radial Distance"
-msgstr "Radialer Abstand"
+#: ../src/backend/filters/ionInfo.cpp:38
+msgid "Convex hull"
+msgstr "Konvexe Hülle"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2518
-#: ../src/backend/filters/spatialAnalysis.cpp:2611
-msgid "Count/Distance"
+#: ../src/backend/filters/ionInfo.cpp:200
+msgid "No ions"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2523
-#: ../src/backend/filters/spatialAnalysis.cpp:2616
-msgid "NN Freq."
-msgstr "NN Freq."
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2663
-msgid "Warning, "
-msgstr "Warnung, "
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2664
+#: ../src/backend/filters/ionInfo.cpp:226
+#: ../src/backend/filters/spectrumPlot.cpp:433
 msgid ""
-" points were unable to find neighbour points that exceeded the search "
-"radius, and thus terminated prematurely"
+"Background fit failed - input data was considered ill formed (gauss-test)"
 msgstr ""
-" Punkte konnten keine Nachbapunkte die den Suchradius überschritten finden "
-"und beendeten vorzeitig."
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2674
-msgid " RDF"
-msgstr " RDF"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2952
-#: ../src/backend/filters/spatialAnalysis.cpp:3251
-msgid "Number Density (\\#/Vol^3)"
-msgstr "Number Density (\\#/Vol^3)"
+#: ../src/backend/filters/ionInfo.cpp:227
+msgid "Following data has not been corrected"
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2977
-#: ../src/backend/filters/spatialAnalysis.cpp:3271
-msgid "Warning,"
-msgstr "Warnung,"
+#: ../src/backend/filters/ionInfo.cpp:279
+msgid "--Counts--"
+msgstr "- Anzahl -"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2978
-#: ../src/backend/filters/spatialAnalysis.cpp:3272
-msgid " points were un-analysable. These have been dropped"
-msgstr " points were un-analysable. These have been dropped"
+#: ../src/backend/filters/ionInfo.cpp:289
+msgid "Total Ranged\t"
+msgstr "Gesamt ranged\t"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3000
-#: ../src/backend/filters/spatialAnalysis.cpp:3294
-msgid "And so on..."
-msgstr "Und so weiter..."
+#: ../src/backend/filters/ionInfo.cpp:294
+msgid "Total (incl. unranged)\t"
+msgstr "Total (inkl. nicht geranged)"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3376
-msgid "Extract"
+#: ../src/backend/filters/ionInfo.cpp:307
+msgid "n/a"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3449
-msgid "Reduce"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:330
+msgid "Number of points : "
+msgstr "Anzahl der Punkte: "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3604
-msgid "Insufficient points to complete analysis"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:359
+msgid "Rectilinear Bounds : "
+msgstr "Geradlinige Grenzen:"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3627
-msgid "Axial Distance"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:364
+msgid "Volume (len^3): "
+msgstr "Volumen (Läng.^3)"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3629
-msgid " 1D Dist. Func."
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:381
+msgid "Convex Volume (len^3): "
+msgstr "Konvexes Volumen (Läng.^3)"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3698
-msgid "Binomial"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:384
+msgid "Unable to compute volume"
+msgstr "Kann Volumen nicht berechnen"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3829
-#: ../src/backend/filters/spatialAnalysis.cpp:3888
-msgid "Rel. Frequency"
+#: ../src/backend/filters/ionInfo.cpp:413
+msgid "Ranged Density (pts/vol):"
+msgstr "Ranged Dichte (pts / vol):"
+
+#: ../src/backend/filters/ionInfo.cpp:418
+msgid "Total Density (pts/vol):"
+msgstr "Gesamtdichte (pts / vol):"
+
+#: ../src/backend/filters/ionInfo.cpp:448
+msgid "Compositions"
+msgstr "Zusammensetzungen"
+
+#: ../src/backend/filters/ionInfo.cpp:449
+msgid "Display compositional data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3966
-msgid "Build Numerator"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:453
+msgid "Counts"
+msgstr "Anzahl"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3980
-msgid "Build Denominator"
+#: ../src/backend/filters/ionInfo.cpp:454
+msgid "Display count data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:257
-msgid "Colour Map"
-msgstr "Farbtabelle"
-
-#: ../src/backend/filters/ionColour.cpp:265
-msgid "Reverse map"
+#: ../src/backend/filters/ionInfo.cpp:461
+msgid "Ion data"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:266
-msgid "Reverse the colour scale"
+#: ../src/backend/filters/ionInfo.cpp:469
+msgid "Normalise count data"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:279
-msgid "Opacity"
+#: ../src/backend/filters/ionInfo.cpp:533
+msgid "Volume"
+msgstr "Volumen"
+
+#: ../src/backend/filters/ionInfo.cpp:536
+msgid "Compute volume for point data"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:286
-msgid "Num Colours"
+#: ../src/backend/filters/ionInfo.cpp:552
+msgid "Select volume counting technique"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:288
-msgid "Number of unique colours to use in colour map"
+#: ../src/backend/filters/ionInfo.cpp:565
+msgid "Volume data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:61
+#: ../src/backend/filters/dataLoad.cpp:64
 msgid "Auto"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:62
+#: ../src/backend/filters/dataLoad.cpp:65
 msgid "Little"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:63
+#: ../src/backend/filters/dataLoad.cpp:66
 msgid "Big"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:66
+#: ../src/backend/filters/dataLoad.cpp:69
 msgid "POS Data"
 msgstr "Pos-Daten"
 
-#: ../src/backend/filters/dataLoad.cpp:67
+#: ../src/backend/filters/dataLoad.cpp:70
 msgid "Text Data"
 msgstr "Text-Daten"
 
-#: ../src/backend/filters/dataLoad.cpp:68
+#: ../src/backend/filters/dataLoad.cpp:71
 msgid "ATO Data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:248
+#: ../src/backend/filters/dataLoad.cpp:72
+msgid "Tapsim Data"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:73
+msgid "3Dap/Posap OPS Data"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:266
 msgid " does not exist"
 msgstr " existiert nicht"
 
-#: ../src/backend/filters/dataLoad.cpp:275
+#: ../src/backend/filters/dataLoad.cpp:293
 msgid "Reading File"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:290
-#: ../src/backend/filters/dataLoad.cpp:303
-#: ../src/backend/filters/dataLoad.cpp:347
-#: ../src/backend/filters/dataLoad.cpp:358
-#: ../src/backend/filters/dataLoad.cpp:418
+#: ../src/backend/filters/dataLoad.cpp:308
+#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/backend/filters/dataLoad.cpp:365
+#: ../src/backend/filters/dataLoad.cpp:376
+#: ../src/backend/filters/dataLoad.cpp:436
+#: ../src/backend/filters/dataLoad.cpp:458
+#: ../src/backend/filters/dataLoad.cpp:476
 msgid "Error loading file: "
 msgstr "Fehler beim Laden der Datei: "
 
-#: ../src/backend/filters/dataLoad.cpp:320
+#: ../src/backend/filters/dataLoad.cpp:338
 msgid "Sampling is active, loaded "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/backend/filters/dataLoad.cpp:339
 msgid " available."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:329
+#: ../src/backend/filters/dataLoad.cpp:347
 msgid "Loaded entire dataset, "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:329
-#: ../src/backend/filters/dataLoad.cpp:428
+#: ../src/backend/filters/dataLoad.cpp:347
+#: ../src/backend/filters/dataLoad.cpp:446
+#: ../src/backend/filters/dataLoad.cpp:468
+#: ../src/backend/filters/dataLoad.cpp:486
 msgid " points."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:373
+#: ../src/backend/filters/dataLoad.cpp:391
 msgid ""
 "Data file contained incorrect number of columns -- should be 3 or 4, was "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:427
+#: ../src/backend/filters/dataLoad.cpp:445
+#: ../src/backend/filters/dataLoad.cpp:467
+#: ../src/backend/filters/dataLoad.cpp:485
 msgid "Loaded dataset, "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:460
+#: ../src/backend/filters/dataLoad.cpp:517
 msgid ""
 "Warning:One or more bounds of the loaded data approaches the limits of "
 "numerical stability for the internal data type(magnitude too large). "
@@ -4753,120 +4662,155 @@ msgstr ""
 "der numerischen Stabilität des internen Datentyps (Größenordnung zu groß). "
 "Erwägen Sie die Daten vor dem Laden zu skalieren. "
 
-#: ../src/backend/filters/dataLoad.cpp:485
+#: ../src/backend/filters/dataLoad.cpp:541
+#: ../src/backend/filters/dataLoad.cpp:562
+#: ../src/backend/filters/rangeFile.cpp:561
+#: ../src/backend/filters/rangeFile.cpp:581
+msgid "File"
+msgstr "Datei"
+
+#: ../src/backend/filters/dataLoad.cpp:542
 msgid "File from which to load data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:488
+#: ../src/backend/filters/dataLoad.cpp:545
 msgid ""
-"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)|*.xml;*.pos;*.txt;*.csv;*."
-"ato|All Files|*"
+"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)|*.xml;*.pos;*.txt;*."
+"csv;*.ato;*.ops|All Files|*"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:498
+#: ../src/backend/filters/dataLoad.cpp:555
 msgid "File type"
 msgstr "Dateityp"
 
-#: ../src/backend/filters/dataLoad.cpp:500
+#: ../src/backend/filters/dataLoad.cpp:557
 msgid "Type of file to be loaded"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:515
+#: ../src/backend/filters/dataLoad.cpp:572
 msgid "Entries per point"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:516
+#: ../src/backend/filters/dataLoad.cpp:573
 msgid "Number of decimal values in file per 3D point (normally 4)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:535
+#: ../src/backend/filters/dataLoad.cpp:590
+msgid "Relative offset of each entry in file for point's X position"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:598
+msgid "Relative offset of each entry in file for point's Y position"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:606
+msgid "Relative offset of each entry in file for point's Z position"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:614
+msgid ""
+"Relative offset of each entry in file to use for scalar value of 3D point"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:630
 msgid "File \"Endianness\""
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:536
+#: ../src/backend/filters/dataLoad.cpp:631
 msgid "On-disk data storage format. If file won't load, just try each"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:561
-msgid "Relative offset of each entry in file for point's X position"
+#: ../src/backend/filters/dataLoad.cpp:643
+msgid "Recon. Width"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:569
-msgid "Relative offset of each entry in file for point's Y position"
+#: ../src/backend/filters/dataLoad.cpp:644
+msgid ""
+"Width of box onto which to place reconstructed detector hits (similar to tip "
+"radius)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:577
-msgid "Relative offset of each entry in file for point's Z position"
+#: ../src/backend/filters/dataLoad.cpp:653
+msgid "Ion Volume"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:654
+msgid "Effective volume of an ion (incl. free packing volume)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:585
+#: ../src/backend/filters/dataLoad.cpp:662
+msgid "Det. Efficiency"
+msgstr ""
+
+#: ../src/backend/filters/dataLoad.cpp:663
 msgid ""
-"Relative offset of each entry in file to use for scalar value of 3D point"
+"Effiency of system (ions evaporated towards detector/ions detected by "
+"detector)"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:588
+#: ../src/backend/filters/dataLoad.cpp:677
 msgid "Value Label"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:592
+#: ../src/backend/filters/dataLoad.cpp:681
 msgid "Name for the scalar value associated with each point"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:595
+#: ../src/backend/filters/dataLoad.cpp:684
 msgid "Format params."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:601
+#: ../src/backend/filters/dataLoad.cpp:690
 msgid "Enabled"
 msgstr "Aktiviert"
 
-#: ../src/backend/filters/dataLoad.cpp:605
+#: ../src/backend/filters/dataLoad.cpp:694
 msgid "Load this file?"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:616
+#: ../src/backend/filters/dataLoad.cpp:705
 msgid "Sample data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:619
+#: ../src/backend/filters/dataLoad.cpp:708
 msgid ""
 "Perform random selection on file contents, instead of loading entire file"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:626
+#: ../src/backend/filters/dataLoad.cpp:715
 msgid "Load Limit (MB)"
 msgstr "Ladelimit (MB)"
 
-#: ../src/backend/filters/dataLoad.cpp:629
+#: ../src/backend/filters/dataLoad.cpp:718
 msgid "Limit for size of data to load"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:636
+#: ../src/backend/filters/dataLoad.cpp:725
 msgid "Monitor"
 msgstr "Monitor"
 
-#: ../src/backend/filters/dataLoad.cpp:640
+#: ../src/backend/filters/dataLoad.cpp:729
 msgid ""
 "Watch file timestamp to track changes to file contents from other programs"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:644
+#: ../src/backend/filters/dataLoad.cpp:733
 msgid "Load params."
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:651
+#: ../src/backend/filters/dataLoad.cpp:740
 msgid "Default colour "
 msgstr "Bevorzugte Farbe "
 
-#: ../src/backend/filters/dataLoad.cpp:654
+#: ../src/backend/filters/dataLoad.cpp:743
 msgid "Default colour for points, if not overridden by other filters"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:659
+#: ../src/backend/filters/dataLoad.cpp:748
 msgid "Draw Size"
 msgstr "Draw Size"
 
-#: ../src/backend/filters/dataLoad.cpp:662
+#: ../src/backend/filters/dataLoad.cpp:751
 msgid "Default size for points, if not overridden by other filters"
 msgstr ""
 
@@ -4878,521 +4822,728 @@ msgstr ""
 msgid "Max in limit"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:79
-msgid "Probability"
-msgstr ""
-
-#: ../src/backend/filters/spectrumPlot.cpp:170
+#: ../src/backend/filters/spectrumPlot.cpp:171
 msgid "Extrema"
 msgstr "Extrema"
 
-#: ../src/backend/filters/spectrumPlot.cpp:219
+#: ../src/backend/filters/spectrumPlot.cpp:220
 msgid "count"
 msgstr "Anzahl"
 
-#: ../src/backend/filters/spectrumPlot.cpp:304
+#: ../src/backend/filters/spectrumPlot.cpp:305
 msgid "Mixed data"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:445
+#: ../src/backend/filters/spectrumPlot.cpp:446
 msgid "Background:"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:504
+#: ../src/backend/filters/spectrumPlot.cpp:505
 msgid "Relative "
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:507
+#: ../src/backend/filters/spectrumPlot.cpp:508
 msgid "Probability Density"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:584
+#: ../src/backend/filters/spectrumPlot.cpp:587
 msgid "Step size for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:589
+#: ../src/backend/filters/spectrumPlot.cpp:592
 msgid "Auto Min/max"
 msgstr "Auto Min/max"
 
-#: ../src/backend/filters/spectrumPlot.cpp:593
+#: ../src/backend/filters/spectrumPlot.cpp:596
 msgid "Automatically compute spectrum upper and lower bound"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:598
+#: ../src/backend/filters/spectrumPlot.cpp:601
 msgid "Min"
 msgstr "Min"
 
-#: ../src/backend/filters/spectrumPlot.cpp:601
+#: ../src/backend/filters/spectrumPlot.cpp:604
 msgid "Starting position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:606
+#: ../src/backend/filters/spectrumPlot.cpp:609
 msgid "Max"
 msgstr "Max"
 
-#: ../src/backend/filters/spectrumPlot.cpp:609
+#: ../src/backend/filters/spectrumPlot.cpp:612
 msgid "Ending position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:617
+#: ../src/backend/filters/spectrumPlot.cpp:620
 msgid "Logarithmic"
 msgstr "Logarithmisch"
 
-#: ../src/backend/filters/spectrumPlot.cpp:620
+#: ../src/backend/filters/spectrumPlot.cpp:623
 msgid "Convert the plot to logarithmic mode"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:632
+#: ../src/backend/filters/spectrumPlot.cpp:635
 msgid "Normalisation"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:635
+#: ../src/backend/filters/spectrumPlot.cpp:638
 msgid "Rescale the plot height, to make inter-spectrum comparisons easier"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:642
+#: ../src/backend/filters/spectrumPlot.cpp:645
 msgid "Lower Bound"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:646
+#: ../src/backend/filters/spectrumPlot.cpp:649
 msgid "Do not use data below this x-value for normalisation"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:650
+#: ../src/backend/filters/spectrumPlot.cpp:653
 msgid "Upper Bound"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:654
+#: ../src/backend/filters/spectrumPlot.cpp:657
 msgid "Do not use data above this x-value for normalisation"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:672
+#: ../src/backend/filters/spectrumPlot.cpp:675
 msgid "Visual style of plot"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:679
+#: ../src/backend/filters/spectrumPlot.cpp:682
 msgid "Colour of plotted spectrum"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:694
+#: ../src/backend/filters/spectrumPlot.cpp:697
 msgid "Model"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:697
-msgid "Fitting method to use"
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:700
+msgid "Fitting method to use"
+msgstr ""
+
+#: ../src/backend/filters/spectrumPlot.cpp:711
+msgid "Fit Start"
+msgstr ""
+
+#: ../src/backend/filters/spectrumPlot.cpp:712
+msgid "Start mass value for fitting background"
+msgstr ""
+
+#: ../src/backend/filters/spectrumPlot.cpp:718
+msgid "Fit End"
+msgstr ""
+
+#: ../src/backend/filters/spectrumPlot.cpp:719
+msgid "End mass value for fitting background"
+msgstr ""
+
+#: ../src/backend/filters/spectrumPlot.cpp:732
+msgid "Corr. Only"
+msgstr ""
+
+#: ../src/backend/filters/spectrumPlot.cpp:733
+msgid "Only show corrected spectrum, not fit"
+msgstr ""
+
+#: ../src/backend/filters/spectrumPlot.cpp:741
+msgid "Background Mode"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:121
+#: ../src/backend/filters/rangeFile.h:96
+msgid "Ranging"
+msgstr "Ranging"
+
+#: ../src/backend/filters/rangeFile.cpp:564
+msgid "File to use for range data"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:574
+msgid "Drop unranged"
+msgstr "Nicht gerangete ausschalten"
+
+#: ../src/backend/filters/rangeFile.cpp:576
+msgid "Remove unranged points when generating output"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:586
+msgid "Legend"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:588
+msgid "Display colour legend for enabled ions"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:592
+msgid "View"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:608
+msgid "All Ions"
+msgstr "Alle Ionen"
+
+#: ../src/backend/filters/rangeFile.cpp:609
+msgid "Enable/disable all ions at once"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:617
+msgid "Species"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:624
+msgid "IonID "
+msgstr "IonID "
+
+#: ../src/backend/filters/rangeFile.cpp:625
+msgid "Enable/disable specified ion"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:635
+msgid "Active Ion "
+msgstr "Actives Ion "
+
+#: ../src/backend/filters/rangeFile.cpp:637
+msgid "If true, ion is used in output"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:647
+msgid "Colour "
+msgstr "Farbe"
+
+#: ../src/backend/filters/rangeFile.cpp:651
+msgid "Colour used to represent ion"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:674
+msgid "All Ranges"
+msgstr "Alle Range"
+
+#: ../src/backend/filters/rangeFile.cpp:675
+msgid "Enable/disable all ranges"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:690
+msgid "Active Rng "
+msgstr "Activer Rng "
+
+#: ../src/backend/filters/rangeFile.cpp:693
+msgid ""
+"Enable/disable specified range (ion must also be enabled to activiate range)"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:697
+msgid "Ion "
+msgstr "Ion "
+
+#: ../src/backend/filters/rangeFile.cpp:700
+msgid "Name of ion associate to this range"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:709
+msgid "Start rng "
+msgstr "Start rng "
+
+#: ../src/backend/filters/rangeFile.cpp:712
+msgid "Start value for range"
+msgstr ""
+
+#: ../src/backend/filters/rangeFile.cpp:717
+msgid "End rng "
+msgstr "End rng "
+
+#: ../src/backend/filters/rangeFile.cpp:720
+msgid "Stopping value for range`"
+msgstr ""
+
+#: ../src/backend/state.cpp:165
+msgid ""
+"This file is a \"state\" file for the 3Depict program, and stores "
+"information about a particular analysis session. This file should be a valid "
+"\"XML\" file"
+msgstr ""
+"Diese Datei ist ein \"Status\" Datei für das Programm 3Depict. Sie speichert "
+"Informationen über die jeweiligen Analysesitzung. Dies sollte ein gültige "
+"\"XML\" Datei sein."
+
+#: ../src/backend/state.cpp:337
+msgid "Failed to allocate parser"
+msgstr "Kann Parser nicht zuordnen"
+
+#: ../src/backend/state.cpp:372
+msgid ""
+"Unable to retrieve root node in input state file... Is this really a non-"
+"empty XML file?"
+msgstr ""
+
+#: ../src/backend/state.cpp:379
+msgid "Base state node missing. Is this really a state XML file??"
+msgstr ""
+
+#: ../src/backend/state.cpp:408
+msgid "State was created by a newer version of this program.. "
+msgstr "Status wurde von einer neueren Version dieses Programmes erstellt.. "
+
+#: ../src/backend/state.cpp:409
+msgid "file reading will continue, but may fail."
+msgstr "Datei wird weiter eingelesen kann aber unter Umständen fehlschlagen."
+
+#: ../src/backend/state.cpp:419
+msgid ""
+"Warning, unparseable version number in state file. File reading will "
+"continue, but may fail"
+msgstr ""
+"Warnung: Nicht lesbare Versionsnummer in Statusdatei. Datei wird weiter "
+"eingelesen kann aber unter Umständen fehlschlagen."
+
+#: ../src/backend/state.cpp:428
+msgid "Unable to find the \"writer\" node"
+msgstr "Kann \"writer\" node nicht finden"
+
+#: ../src/backend/state.cpp:438
+msgid "Unable to find the \"backcolour\" node."
+msgstr "Unable to find the \"backcolour\" node."
+
+#: ../src/backend/state.cpp:445
+msgid "\"backcolour\" node missing \"r\" value."
+msgstr "\"backcolour\" node fehlt \"r\" Wert."
+
+#: ../src/backend/state.cpp:450
+msgid "Unable to interpret \"backColour\" node's \"r\" value."
+msgstr "Kann \"backColour\" node's \"r\" Wert nicht interpretieren."
+
+#: ../src/backend/state.cpp:458
+msgid "\"backcolour\" node missing \"g\" value."
+msgstr "\"backcolour\" node fehlt \"g\" Wert."
+
+#: ../src/backend/state.cpp:464
+msgid "Unable to interpret \"backColour\" node's \"g\" value."
+msgstr "Kann \"backColour\" node's \"g\" Wert nicht interpretieren."
+
+#: ../src/backend/state.cpp:472
+msgid "\"backcolour\" node missing \"b\" value."
+msgstr "\"backcolour\" node fehlt \"b\" Wert."
+
+#: ../src/backend/state.cpp:478
+msgid "Unable to interpret \"backColour\" node's \"b\" value."
+msgstr "Kann \"backColour\" node's \"b\" Wert nicht interpretieren."
+
+#: ../src/backend/state.cpp:485
+msgid "\"backcolour\"s rgb values must be in range [0,1]"
+msgstr "\"backcolour\"s rgb Wert muss im Bereich [0,1] liegen"
+
+#: ../src/backend/state.cpp:513
+msgid "Unable to find or interpret \"showaxis\" node"
+msgstr "Kann \"showaxis\" node nicht interpretieren"
+
+#: ../src/backend/state.cpp:557
+msgid "Unable to locate \"filtertree\" node."
+msgstr "Kann \"filtertree\" node nicht finden."
+
+#: ../src/backend/state.cpp:573
+msgid "Cameras section missing \"active\" node."
+msgstr "Cameras section fehlt \"active\" node."
 
-#: ../src/backend/filters/spectrumPlot.cpp:708
-msgid "Fit Start"
-msgstr ""
+#: ../src/backend/state.cpp:581
+msgid "Unable to find property \"value\"  for \"cameras->active\" node."
+msgstr "Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht finden."
 
-#: ../src/backend/filters/spectrumPlot.cpp:709
-msgid "Start mass value for fitting background"
+#: ../src/backend/state.cpp:587
+msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
 msgstr ""
+"Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht interpretieren."
 
-#: ../src/backend/filters/spectrumPlot.cpp:715
-msgid "Fit End"
+#: ../src/backend/state.cpp:607
+msgid "Failed to interpret camera state for camera : "
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:716
-msgid "End mass value for fitting background"
-msgstr ""
+#: ../src/backend/state.cpp:615
+msgid "Unable to interpret the camera type for camera : "
+msgstr "Kann den Kameratype nicht interpretieren für :"
 
-#: ../src/backend/filters/spectrumPlot.cpp:729
-msgid "Corr. Only"
-msgstr ""
+#: ../src/backend/state.cpp:671
+msgid "Unable to locate stash name for stash "
+msgstr "Kann den Stashnamen für Stash  nicht finden"
 
-#: ../src/backend/filters/spectrumPlot.cpp:730
-msgid "Only show corrected spectrum, not fit"
-msgstr ""
+#: ../src/backend/state.cpp:678
+msgid "Empty stash name for stash "
+msgstr "Leerer Stashname für Stash"
 
-#: ../src/backend/filters/spectrumPlot.cpp:738
-msgid "Background Mode"
+#: ../src/backend/state.cpp:687
+msgid "No filter tree for stash:"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:187
-msgid "Config file present, but is not valid (root node test)"
-msgstr "Konfigurationsdatei vorhanden, aber nicht gültig (root node test)"
+#: ../src/backend/state.cpp:693
+msgid "For stash "
+msgstr "Für Stash "
 
-#: ../src/backend/configFile.cpp:228
-msgid "Unable to interpret recent file entry"
-msgstr "Kann den letzten Dateieintrag nicht interpretieren"
+#: ../src/backend/state.cpp:725
+msgid "Unrecognised effect :"
+msgstr "Nichterkannter Effekt :"
 
-#: ../src/backend/configFile.cpp:268
-msgid "Unable to determine filter type in defaults listing."
-msgstr "Kann den Filtertyp im Defaultslisting nicht bestimmen."
+#: ../src/backend/state.cpp:735
+msgid "Duplicate effect found"
+msgstr "Doppelter Effekt gefunden"
 
-#: ../src/backend/configFile.cpp:605
-msgid "Online access for non win32/apple platforms is intentionally disabled, "
-msgstr ""
-"Onlinezugang für nicht Win32/apple systeme wurde absichtlich deaktiviert."
+#: ../src/backend/state.cpp:735
+msgid " cannot use."
+msgstr "kann nicht   verwenden."
 
-#: ../src/backend/configFile.cpp:606
-msgid ""
-"regardless of the settings you use here. Use your package manager to keep up-"
-"to-date"
+#: ../src/backend/state.cpp:745
+msgid "Error reading effect : "
+msgstr "Fehler beim Lesen:"
+
+#: ../src/backend/state.cpp:965
+msgid "-merge"
 msgstr ""
-"Nutzen Sie Ihren Paketmanager um up-to-date zu sein unabhängig von den "
-"Einstellungen die Sie hier verwenden"
 
-#: ../src/backend/filtertreeAnalyse.cpp:223
+#: ../src/backend/filtertreeAnalyse.cpp:225
 msgid ""
 "Parent filter has no output, but filter requires input -- there is no point "
 "in placing a child filter here."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:224
+#: ../src/backend/filtertreeAnalyse.cpp:226
 msgid "Leaf-only filter with child"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:234
+#: ../src/backend/filtertreeAnalyse.cpp:236
 msgid ""
 "Parent filters' output will be blocked by child, without use. Parent results "
 "will be dropped."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:235
-#: ../src/backend/filtertreeAnalyse.cpp:249
+#: ../src/backend/filtertreeAnalyse.cpp:237
+#: ../src/backend/filtertreeAnalyse.cpp:251
 msgid "Bad parent->child pair"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:248
+#: ../src/backend/filtertreeAnalyse.cpp:250
 msgid ""
 "First filter does not output anything useable by child filter. Child filter "
 "not useful."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:328
+#: ../src/backend/filtertreeAnalyse.cpp:330
 msgid "Spatial results possibly altered"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:329
+#: ../src/backend/filtertreeAnalyse.cpp:331
 msgid ""
 "Filters and settings selected that could alter reported results that depend "
 "upon density. Check to see if spatial sampling may be happening in the "
 "filter tree - this warning is provisional only."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:397
+#: ../src/backend/filtertreeAnalyse.cpp:399
 msgid "Filter needs parent \""
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:398
+#: ../src/backend/filtertreeAnalyse.cpp:400
 msgid ""
 "\" but does not have one. Filter may not function correctly until this "
 "parent is given."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:399
+#: ../src/backend/filtertreeAnalyse.cpp:401
 msgid "Filter missing needed parent"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:430
+#: ../src/backend/filtertreeAnalyse.cpp:432
 msgid "Bad range filter settings"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:431
+#: ../src/backend/filtertreeAnalyse.cpp:433
 msgid ""
 "Rangefile set to drop unranged data, however a child filter requires it."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:613
+#: ../src/backend/filtertreeAnalyse.cpp:529
+msgid "Filter cannot generate data, but has no input - it is at the tree base."
+msgstr ""
+
+#: ../src/backend/filtertreeAnalyse.cpp:530
+msgid "Non data-generating filter at root"
+msgstr ""
+
+#: ../src/backend/filtertreeAnalyse.cpp:632
 msgid "Composition results possibly altered"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:614
+#: ../src/backend/filtertreeAnalyse.cpp:633
 msgid ""
 "Filters and settings selected that could bias reported composition. Check to "
 "see if species biasing may occcur in the filter tree - this warning is "
 "provisional only."
 msgstr ""
 
-#: ../src/backend/plot.cpp:29
-msgid "Moving avg."
-msgstr "Gleit.Durchschn."
-
-#: ../src/backend/plot.cpp:33
-msgid "Lines"
-msgstr "Linien"
-
-#: ../src/backend/plot.cpp:34
-msgid "Bars"
-msgstr "Block"
-
-#: ../src/backend/plot.cpp:35
-msgid "Steps"
-msgstr "Stufen"
-
-#: ../src/backend/plot.cpp:36
-msgid "Stem"
-msgstr "Stem"
-
-#: ../src/backend/plot.cpp:37
-msgid "Points"
-msgstr "Punkte"
-
-#: ../src/backend/plot.cpp:39
-msgid "Density"
-msgstr ""
+#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
+#: ../src/backend/APT/APTFileIO.cpp:103 ../src/backend/APT/APTFileIO.cpp:123
+msgid "Error opening file"
+msgstr "Fehler beim Öffnen der Datei"
 
-#: ../src/backend/plot.cpp:40
-msgid "Scatter"
+#: ../src/backend/APT/APTFileIO.cpp:45
+msgid "Only found header, no data"
 msgstr ""
 
-#: ../src/backend/plot.cpp:739 ../src/backend/plot.cpp:747
-msgid "Multiple data types"
+#: ../src/backend/APT/APTFileIO.cpp:46
+msgid "Unable to reopen file after first scan"
 msgstr ""
 
-#: ../src/backend/plot.cpp:1581
-msgid "error"
-msgstr "Fehler"
+#: ../src/backend/APT/APTFileIO.cpp:47
+msgid "Error whilst reading file contents"
+msgstr "Fehler beim Lesen des Dateiinhaltes"
 
-#: ../src/backend/plot.cpp:1821
-msgid "Amplitude"
+#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
+msgid "Unexpected file format"
 msgstr ""
 
-#: ../src/backend/filtertree.cpp:1151
-msgid "WARNING: Skipping node "
-msgstr "WARNUNG: Skipping node "
-
-#: ../src/backend/filtertree.cpp:1151
-msgid " as it was not recognised"
-msgstr " wurde nicht erkannt."
-
-#: ../src/backend/filtertree.cpp:1189
-msgid "Error processing node: "
-msgstr "Fehler beim Verarbeiten von Node: "
-
-#: ../src/gl/cameras.cpp:596
-msgid "Lock"
-msgstr "Sperren"
-
-#: ../src/gl/cameras.cpp:617
-msgid "Up Dir."
-msgstr "Up Dir."
-
-#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
-msgid "Perspective"
-msgstr "Perspektivisch"
-
-#: ../src/gl/cameras.cpp:631
-msgid "Projection"
-msgstr "Projektion"
-
-#: ../src/gl/cameras.cpp:640
-msgid "Field of View (deg)"
-msgstr "Bildausschnitt"
+#: ../src/backend/APT/APTFileIO.cpp:50
+msgid "Insufficient memory to continue"
+msgstr ""
 
-#: ../src/gl/cameras.cpp:646
-msgid "View size"
-msgstr "Anzeigegröße"
+#: ../src/backend/APT/APTFileIO.cpp:54
+msgid "Memory allocation failure on POS load"
+msgstr "Speicherzuweisungsfeher beim Laden der pos-Datei"
 
-#: ../src/3Depict.cpp:397
-msgid "File : "
-msgstr "Datei : "
+#: ../src/backend/APT/APTFileIO.cpp:55
+msgid "Error opening pos file"
+msgstr "Fehler beim Öffnen der pos-Datei"
 
-#: ../src/3Depict.cpp:397
-msgid " does not exist. Skipping"
-msgstr " existiert nicht. Überspringe"
+#: ../src/backend/APT/APTFileIO.cpp:56
+msgid "Pos file empty"
+msgstr "Pos-Datei ist leer"
 
-#: ../src/common/constants.cpp:22
-msgid ""
-"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
-"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
-"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+#: ../src/backend/APT/APTFileIO.cpp:57
+msgid "Pos file size appears to have non-integer number of entries"
 msgstr ""
+"Pos-Dateigröße scheint eine nicht ganzzahlige Anzahl an Einträgen zu haben"
 
-#: ../src/common/basics.cpp:183
-msgid "in the future?"
-msgstr "in Zukunft?"
+#: ../src/backend/APT/APTFileIO.cpp:58
+msgid "Error reading from pos file (after open)"
+msgstr "Fehler beim Lesen aus pos-Datei (nach dem öffnen)"
 
-#: ../src/common/basics.cpp:234
-msgid "a decade ago"
-msgstr "vor zehn Jahren"
+#: ../src/backend/APT/APTFileIO.cpp:59
+msgid "Error - Found NaN in pos file"
+msgstr "Fehler - Fand NaN in pos-Datei"
 
-#: ../src/common/basics.cpp:235
-msgid "a year ago"
-msgstr "vor einem Jahr"
+#: ../src/backend/APT/APTFileIO.cpp:60
+msgid "Error - Found Inf in pos file"
+msgstr ""
 
-#: ../src/common/basics.cpp:236
-msgid "a month ago"
-msgstr "vor einem Monat"
+#: ../src/backend/APT/APTFileIO.cpp:61
+msgid "Pos load aborted by interrupt."
+msgstr "Pos laden durch Interrupt abgebrochen."
 
-#: ../src/common/basics.cpp:237
-msgid "a week ago"
-msgstr "vor einer Woche"
+#: ../src/backend/APT/APTFileIO.cpp:80
+msgid "No numerical data found"
+msgstr "Keine numerischen Daten gefunden"
 
-#: ../src/common/basics.cpp:238
-msgid "a day ago"
-msgstr "gestern"
+#: ../src/backend/APT/APTFileIO.cpp:81
+msgid "Error re-opening file, after first scan"
+msgstr "Fehler beim nochmaligen Öffnen der Datei nach dem ersten Scan"
 
-#: ../src/common/basics.cpp:239
-msgid "an hour ago"
-msgstr "vor einer Stunde"
+#: ../src/backend/APT/APTFileIO.cpp:82
+msgid "Unable to read file contents after open"
+msgstr "Kann den Dateiinhalt nach dem Öffnen nich lesen"
 
-#: ../src/common/basics.cpp:240
-msgid "45 minutes ago"
-msgstr "vor 45 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:83
+msgid "Error interpreting field in file"
+msgstr "Fehler beim Interpretieren eine Feldes in der Datei"
 
-#: ../src/common/basics.cpp:241
-msgid "30 minutes ago"
-msgstr "vor 30 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:84
+msgid "Incorrect number of fields in file"
+msgstr "Die Datei enthält eine falsche Anzahl von Feldern"
 
-#: ../src/common/basics.cpp:242
-msgid "20 minutes ago"
-msgstr "vor 20 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
+msgid "Unable to allocate memory to store data"
+msgstr "Kann Speicher nicht zuordnen"
 
-#: ../src/common/basics.cpp:243
-msgid "15 minutes ago"
-msgstr "vor 15 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:104
+msgid "File is empty"
+msgstr ""
 
-#: ../src/common/basics.cpp:244
-msgid "10 minutes ago"
-msgstr "vor 10 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:105
+msgid "Filesize does not match expected format"
+msgstr ""
 
-#: ../src/common/basics.cpp:245
-msgid "5 minutes ago"
-msgstr "vor 5 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:106
+msgid "File version number not <4, as expected"
+msgstr ""
 
-#: ../src/common/basics.cpp:246
-msgid "a minute ago"
-msgstr "vor einer Minute"
+#: ../src/backend/APT/APTFileIO.cpp:108
+msgid "Unable to detect endian-ness in file"
+msgstr ""
 
-#: ../src/common/basics.cpp:247
-msgid "30 seconds ago"
-msgstr "vor 30 Sekunden"
+#: ../src/backend/APT/APTFileIO.cpp:122
+msgid "Error interpreting file contents"
+msgstr ""
 
-#: ../src/common/basics.cpp:248
-msgid "10 seconds ago"
-msgstr "vor 10 Sekunden"
+#: ../src/backend/APT/APTFileIO.cpp:124
+msgid "Aborted opening file"
+msgstr ""
 
-#: ../src/common/basics.cpp:249
-msgid "a second ago"
-msgstr "vor einer Sekunde"
+#: ../src/backend/APT/APTRanges.cpp:48
+msgid "Error opening file, check name and permissions."
+msgstr "Fehler beim Öffnen der Datei, überprüfe Namen und Berechtigungen."
 
-#: ../src/common/basics.cpp:254
-msgid "a few decades ago"
-msgstr "vor einigen Dekaden"
+#: ../src/backend/APT/APTRanges.cpp:49
+msgid ""
+"Error interpreting range file header, expecting ion count and range count, "
+"respectively."
+msgstr ""
+"Fehler beim Rangedatei interpretieren, erwarte Ionenanzahl bzw. Rangeanzahl."
 
-#: ../src/common/basics.cpp:255
-msgid "a few years ago"
-msgstr "vor einigen Jahren"
+#: ../src/backend/APT/APTRanges.cpp:50
+msgid ""
+"Range file appears to be empty, check file is a proper range file and is not "
+"empty."
+msgstr ""
+"Rangedatei scheint leer zu sein. Prüfe ob die Datei wirklich ein Rangedatei "
+"und nicht leer ist."
 
-#: ../src/common/basics.cpp:256
-msgid "a few months ago"
-msgstr "vor einigen Monaten"
+#: ../src/backend/APT/APTRanges.cpp:51
+msgid "Error reading the long name for ion."
+msgstr "Fehler beim Lesen des langen Namens für Ion."
 
-#: ../src/common/basics.cpp:257
-msgid "a few weeks ago"
-msgstr "vor einigen Wochen"
+#: ../src/backend/APT/APTRanges.cpp:52
+msgid "Error reading the short name for ion."
+msgstr "Fehler beim Lesen des kurzen Namens für Ion."
 
-#: ../src/common/basics.cpp:258
-msgid "a few days ago"
-msgstr "vor einigen Tagen"
+#: ../src/backend/APT/APTRanges.cpp:53
+msgid ""
+"Error reading colour data in the file, expecting 3 decimal values, space "
+"separated."
+msgstr ""
+"Fehler beim Lesen der Farbinformationen in der Datei. Erwarte 3, durch "
+"Leerzeichen getrennte, Dezimalwerte."
 
-#: ../src/common/basics.cpp:259
-msgid "a few hours ago"
-msgstr "vor einigen Stunden"
+#: ../src/backend/APT/APTRanges.cpp:54
+msgid ""
+"Tried skipping to table separator line (line with dashes), but did not find "
+"it."
+msgstr ""
 
-#: ../src/common/basics.cpp:266
-msgid "a few minutes ago"
-msgstr "vor einigen Minuten"
+#: ../src/backend/APT/APTRanges.cpp:55
+msgid ""
+"Number of ions in the table header did not match the number specified at the "
+"start of the file"
+msgstr ""
 
-#: ../src/common/basics.cpp:269
-msgid "a few seconds ago"
-msgstr "vor einigen Sekunden"
+#: ../src/backend/APT/APTRanges.cpp:56
+msgid ""
+"Unexpected failure whilst trying to skip over range lead-in data (bit before "
+"range start value)"
+msgstr ""
 
-#: ../src/common/basics.cpp:296
-msgid "moments ago"
-msgstr "kürzlich"
+#: ../src/backend/APT/APTRanges.cpp:57
+msgid ""
+"Range table had an incorrect number of entries, should be 2 or 3 + number of "
+"ranges"
+msgstr ""
 
-#: ../src/common/colourmap.cpp:242
-msgid "Jet"
-msgstr "Jet"
+#: ../src/backend/APT/APTRanges.cpp:58
+msgid "Unable to read range start and end values"
+msgstr "Kann Anfangs und Endwert des Range nicht lesen"
 
-#: ../src/common/colourmap.cpp:243
-msgid "Hot"
-msgstr "Heiss"
+#: ../src/backend/APT/APTRanges.cpp:59
+msgid "Unable to read range table entry"
+msgstr "Kann Rangetabelleneintrag nich lesen"
 
-#: ../src/common/colourmap.cpp:244
-msgid "Cold"
-msgstr "Kalt"
+#: ../src/backend/APT/APTRanges.cpp:60
+msgid ""
+"Error reading file, unexpected format, are you sure it is a proper range "
+"file?"
+msgstr ""
+"Fehler beim Lesen der Datei: Unerwartetes Format, sind Sie sicher, dass dies "
+"eine korrekte Rangedatei ist?"
 
-#: ../src/common/colourmap.cpp:245
-msgid "Grey"
-msgstr "Grau"
+#: ../src/backend/APT/APTRanges.cpp:61
+msgid ""
+"Too many ranges appeared to have range entries with no usable data (eg, all "
+"blank)"
+msgstr "Zu viele Ranges scheinen  ungültige Einträge zu haben (z.B. alle leer)"
 
-#: ../src/common/colourmap.cpp:246
-msgid "Cyclic"
-msgstr "Cyclic"
+#: ../src/backend/APT/APTRanges.cpp:62
+msgid ""
+"Range file appears to contain malformed data, check things like start and "
+"ends of m/c are not equal or flipped."
+msgstr ""
 
-#: ../src/common/colourmap.cpp:247
-msgid "General"
-msgstr "Allgemein"
+#: ../src/backend/APT/APTRanges.cpp:63
+msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
+msgstr "Rangedatei schein inkonsistent zu sein (z.B. überlappende Ranges)"
 
-#: ../src/common/colourmap.cpp:248
-msgid "Blue"
-msgstr "Blau"
+#: ../src/backend/APT/APTRanges.cpp:64
+msgid "No ion name mapping found  for multiple ion."
+msgstr ""
 
-#: ../src/common/colourmap.cpp:249
-msgid "Pseudo-Random"
-msgstr "Pseudo-Random"
+#: ../src/backend/APT/APTRanges.cpp:65
+msgid "Polyatomic extension range matches multiple masses in first section"
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:191
-msgid "Save Data..."
-msgstr "Datei speichern..."
+#: ../src/backend/APT/APTRanges.cpp:66
+msgid "Range file is exceedingly large. Refusing to open"
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:192
-msgid "Text File (*.txt)|*.txt|All Files (*)|*"
-msgstr "Text Datei (*.txt)|*.txt|Alle Dateien (*)|*"
+#: ../src/backend/APT/APTRanges.cpp:1404
+msgid ""
+"Range headings do not match order of the ions listed in the name "
+"specifications. The name specification ordering will be used when reading "
+"the range table, as the range heading section is declared as a comment in "
+"the file-format specifications, and is not to be intepreted by this program. "
+"Check range-species associations actually match what you expect."
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:204
-msgid "Error saving file. Check output dir is writable."
+#: ../src/backend/filter.cpp:54
+msgid "2D Plot"
 msgstr ""
-"Fehler beim Schreiben der Datei. Stellen Sie sicher, dass das "
-"Zielverzeichnis nicht schreibgeschüzt ist."
 
-#: ../src/backend/filters/dataLoad.h:135
-msgid "Pos Data"
-msgstr "POS-Daten"
+#: ../src/backend/filter.cpp:56
+msgid "Range"
+msgstr "Range"
 
-#: ../src/backend/filters/ionInfo.h:103
-msgid "Ion info"
-msgstr "Ioneninfo"
+#: ../src/backend/filter.cpp:57
+msgid "Voxel"
+msgstr "Voxel"
 
-#: ../src/backend/filters/externalProgram.h:69
-msgid "Ext. Program"
-msgstr "Ext. Programm"
+#: ../src/backend/filters/transform.h:71
+msgid "Ion. Transform"
+msgstr "Ion. Transformieren"
 
-#: ../src/backend/filters/ionColour.h:63
+#: ../src/backend/filters/ionColour.h:66
 msgid "Spectral Colour"
 msgstr "Spectral Farbe"
 
-#: ../src/backend/filters/profile.h:123
-msgid "Comp. Prof."
-msgstr "Konz. Prof."
+#: ../src/backend/filters/boundingBox.h:76
+msgid "Bound box"
+msgstr "Begrenzungs-Box"
 
 #: ../src/backend/filters/ionDownsample.h:79
 msgid "Ion Sampler"
 msgstr "Ion Sampler"
 
-#: ../src/backend/filters/boundingBox.h:76
-msgid "Bound box"
-msgstr "Begrenzungs-Box"
+#: ../src/backend/filters/profile.h:123
+msgid "Comp. Prof."
+msgstr "Konz. Prof."
 
-#: ../src/backend/filters/transform.h:71
-msgid "Ion. Transform"
-msgstr "Ion. Transformieren"
+#: ../src/backend/filters/ionInfo.h:103
+msgid "Ion info"
+msgstr "Ioneninfo"
 
-#: ../src/wx/wxcomponents.h:82
-msgid "treeCtrl"
-msgstr ""
+#: ../src/backend/filters/dataLoad.h:145
+msgid "Pos Data"
+msgstr "POS-Daten"
+
+#: ../src/backend/filters/externalProgram.h:69
+msgid "Ext. Program"
+msgstr "Ext. Programm"
 
 #: ../data/startup-tips.txt:5
 msgid ""
 "You can reset the main view by tapping the space bar. Hold down modifier "
 "keys like shift,ctrl to change the axis. Double tap to switch which axis to "
-"look down"
+"look the other way (+ve or -ve direction)"
 msgstr ""
 
 #: ../data/startup-tips.txt:6
@@ -5409,7 +5560,8 @@ msgstr ""
 #: ../data/startup-tips.txt:8
 msgid ""
 "Package files can be easily shared to allow others to view your analysis, "
-"using the File->Export->Package menu item"
+"using the File->Export->Package menu item. This will automatically import "
+"all referenced files (eg pos/rng files) into a single shareable folder"
 msgstr ""
 
 #: ../data/startup-tips.txt:9
@@ -5448,12 +5600,13 @@ msgstr ""
 #: ../data/startup-tips.txt:15
 msgid ""
 "That anyone can contribute to improving this program, even without knowing "
-"about computer programming?"
+"about computer programming? Reporting bugs helps us to prioritise our work, "
+"and directs us to fix real problems for all users"
 msgstr ""
 
 #: ../data/startup-tips.txt:16
 msgid ""
-"You can load more than one file at a time, then either operate on the "
+"You can load more than one file at a time, then either operate on them "
 "separately, or together"
 msgstr ""
 
@@ -5493,8 +5646,8 @@ msgstr ""
 
 #: ../data/startup-tips.txt:23
 msgid ""
-"By creating a camera, you can switch between orthographic and perspective "
-"views"
+"By creating a camera, you can switch between orthographic (parallel) and "
+"perspective views"
 msgstr ""
 
 #: ../data/startup-tips.txt:24
@@ -5503,191 +5656,29 @@ msgid ""
 "translating (shifting) one of the datasets to one side"
 msgstr ""
 
-#~ msgid "ORNL format RNG (*.rng)|*.rng|All Files (*)|*"
-#~ msgstr "ORNL Format RNG (*.rng)|*.rng|Alle Dateien (*)|*"
-
-#~ msgid "POS Data (*.pos)|*.pos|All Files (*)|*"
-#~ msgstr "POS-Daten (*.pos)|*.pos|All Files (*)|*"
-
-#~ msgid "Mass-to-Charge (amu/e)"
-#~ msgstr "Masse-zu-Ladung (amu/e)"
-
-#~ msgid "Last Outputs"
-#~ msgstr "Letzte Ausgabe"
-
-#~ msgid "Type"
-#~ msgstr "Type"
-
-#~ msgid "Num"
-#~ msgstr "Num"
-
-#~ msgid "Aborted."
-#~ msgstr "Abgebrochen"
-
-#~ msgid "Gaussian (2𝜎)"
-#~ msgstr "Gauss (2𝜎)"
-
-#~ msgid "Zero"
-#~ msgstr "Null"
-
-#~ msgid "Bounce"
-#~ msgstr "Bounce"
-
-#~ msgid "Kernel Bins"
-#~ msgstr "Kernel Bins"
-
-#~ msgid "Exterior values"
-#~ msgstr "Exterior values"
-
-#~ msgid "Inconsistent number of columns found"
-#~ msgstr "Inkonsistente Anzahl an Spalten gefunden"
-
-#~ msgid "Tile "
-#~ msgstr "Tile "
-
-#~ msgid "Filter Defaults"
-#~ msgstr "Filtervoreinstellungen"
-
-#~ msgid "Notice"
-#~ msgstr "Notiz"
-
-#~ msgid "For security reasons, defaults are not modifiable for this filter"
-#~ msgstr ""
-#~ "Aus Sicherheitsgründen können die Voreinstellungen für diesen Filter "
-#~ "nicht geändert werden."
-
-#~ msgid "Pref"
-#~ msgstr "Pref"
-
-#~ msgid "New stash name...."
-#~ msgstr "Neuer Stashname..."
-
-#~ msgid ""
-#~ "Range Files (*rng; *env; *rrng)|*rng;*env;*rrng|RNG File (*.rng)|*.rng|"
-#~ "Environment File (*.env)|*.env|RRNG Files (*.rrng)|*.rrng|All Files (*)|*"
-#~ msgstr ""
-#~ "Rangedatei (*rng; *env; *rrng)|*rng;*env;*rrng|RNG File (*.rng)|*.rng|"
-#~ "Environment Datei (*.env)|*.env|RRNG Files (*.rrng)|*.rrng|Alle Dateien "
-#~ "(*)|*"
-
-#~ msgid "Next Fullscreen mode: none"
-#~ msgstr "Nächster Vollbildmodus: keiner"
-
-#~ msgid "Next Fullscreen mode: complete"
-#~ msgstr "Nächster Vollbildmodus: vollständig"
-
-#~ msgid "Next Fullscreen mode: with toolbars"
-#~ msgstr "Nächster Vollbildmodus: mit Werkzeugleisten"
-
-#~ msgid "Next Mode: No fullscreen"
-#~ msgstr "Nächster Modus: Kein Vollbild"
-
-#~ msgid "Next Mode: fullscreen w/o toolbar"
-#~ msgstr "Nächster Modus: Vollbild ohne Werkzeugleiste"
-
-#~ msgid "Next Mode: fullscreen with toolbar"
-#~ msgstr "Nächster Modus: Vollbild mit Werkzeugleiste"
-
-#~ msgid "displays this message"
-#~ msgstr "zeigt diese Nachricht"
-
-#~ msgid "inputfile"
-#~ msgstr "Eingabedatei"
-
-#~ msgid "Error processing command line"
-#~ msgstr "Fehler beim Ausführen der Kommandozeile"
-
-#~ msgid "Unable to set working directory"
-#~ msgstr "Kann Arbeitsverzeichnis nicht festlegen"
-
-#~ msgid "Error saving posfile result for external program"
-#~ msgstr "Fehler beim Speichern von Posdateiergebnis für externes Programm"
-
-#~ msgid "Error saving plot result for externalprogram"
-#~ msgstr "Fehler beim Speichern von Posdateiergebnis für externes Programm"
-
-#~ msgid "Error creating temporary directory"
-#~ msgstr "Fehler beim Anlegen des temporären Verzeichnisses"
-
-#~ msgid "Detected unusable number of columns in plot"
-#~ msgstr "Detected unusable number of columns in plot"
-
-#~ msgid "Unable to parse plot result from external program"
-#~ msgstr "Unable to parse plot result from external program"
-
-#~ msgid "Unable to load ions from external program"
-#~ msgstr "Kann Ionen von externem Programm nicht laden"
-
-#~ msgid "Unable to perform commandline substitution"
-#~ msgstr "Unable to perform commandline substitution"
-
-#~ msgid "Error executing external program"
-#~ msgstr "Fehler beim Ausführen von externem Programm"
-
-#~ msgid "Clustering aborted"
-#~ msgstr "Clustering abgebrochen"
-
-#~ msgid "No core ions for cluster"
-#~ msgstr "Keine Kernionen für Cluster"
-
-#~ msgid "No bulk ions for cluster"
-#~ msgstr "Keine Bulkionen für Cluster"
-
-#~ msgid "Voxelisation aborted"
-#~ msgstr "Voxelisation abgebrochen"
-
-#~ msgid "Out of memory"
-#~ msgstr "Zu wenig Speicher"
-
-#~ msgid "Unable to perform filter convolution"
-#~ msgstr "Kann Filter convolution nicht durchführen"
-
-#~ msgid "Voxelisation bounds are invalid"
-#~ msgstr "Voxelisation Grenzen sin ungültig"
-
-#~ msgid "Too many bins in comp. profile."
-#~ msgstr "Zu viele Bins im Konzentrationsprofil."
-
-#~ msgid "Not enough memory for comp. profile."
-#~ msgstr "Nicht genug Speicher für Konz.-Profil."
-
-#~ msgid "Aborted composition prof."
-#~ msgstr "Konzentrationspr. abgebr."
-
-#~ msgid "Insufficient data to complete analysis."
-#~ msgstr "Ungenügend Daten zum Fertigstellen der Analyse."
-
-#~ msgid "Unable to allocate memory"
-#~ msgstr "Kann Speicher nicht zuweisen"
-
-#~ msgid "Downsample Aborted"
-#~ msgstr "Datenreduktion abgebrochen"
-
-#~ msgid "Insuffient memory for downsample"
-#~ msgstr "Nicht genug Speicher zur Datenreduktion"
-
-#~ msgid "Insufficient memory for operation"
-#~ msgstr "Nicht genügend Speicher für Operation"
-
-#~ msgid "Bug? Problem with qhull library, cannot run convex hull."
-#~ msgstr ""
-#~ "Bug? Problem mit qhull Bibliothek. Kann convex hull nicht ausführen."
-
-#~ msgid "Insufficient memory for spectrum filter."
-#~ msgstr "Nicht genügend Speicher für Spektrumfilter"
-
-#~ msgid "Bad bincount value in spectrum filter."
-#~ msgstr "Falsche Binanzahl im Spektrumfilter."
+#: ../data/startup-tips.txt:25
+msgid ""
+"From version 0.0.20, vector values in filter properties (e.g. \"(1,0,0)\") "
+"can be specified using ISO 31-11 spherical coordinates using the following "
+"notation <r,theta,phi>, with angles in degrees"
+msgstr ""
 
-#~ msgid "Ranging aborted by user"
-#~ msgstr "Ranging durch User abgebrochen"
+#: ../data/startup-tips.txt:26
+msgid ""
+"You can change the behavior of filter dragging by holding Ctrl (mac: cmd) or "
+"Shift whilst dragging? This switches between move, copy and \"splice"
+msgstr ""
 
-#~ msgid "Insufficient memory for range"
-#~ msgstr "Nicht genug Speicher für Range"
+#: ../data/startup-tips.txt:27
+msgid ""
+"We like to know where we are being helpful? Please consider writing the "
+"program and version number in any work you might publish - whether in print "
+"or online. Alternatively, link to our website, or write to us to let us know "
+"we helped!"
+msgstr ""
 
-#~ msgid ""
-#~ " Unable to merge stashes correctly. This is improbable, so please report "
-#~ "this."
-#~ msgstr ""
-#~ " Kann stashes nicht korrekt zusammenführen. Dies ist nicht möglich bitte "
-#~ "melden Sie das."
+#: ../data/startup-tips.txt:28
+msgid ""
+"You can merge files by placing two \"Pos Data\" filters in series,  then  "
+"saving the result?"
+msgstr ""
diff --git a/translations/3Depict_es_ES.mo b/translations/3Depict_es_ES.mo
new file mode 100644
index 0000000..44879bd
Binary files /dev/null and b/translations/3Depict_es_ES.mo differ
diff --git a/translations/3Depict_de_DE.po b/translations/3Depict_es_ES.po
similarity index 56%
copy from translations/3Depict_de_DE.po
copy to translations/3Depict_es_ES.po
index ecaad27..a3dd696 100644
--- a/translations/3Depict_de_DE.po
+++ b/translations/3Depict_es_ES.po
@@ -1,122 +1,338 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
+# Translation file for locale es_ES
+# Copyright (C) 2017
+# This file is distributed under the same license as the 3Depict package.
 #
 # Translators:
-# epix1234 <erich_s at gmx.de>, 2011.
-#   <erich_s at gmx.de>, 2011, 2012.
-#   <mycae at yahoo.com>, 2011.
 msgid ""
 msgstr ""
 "Project-Id-Version: 3Depict\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-31 11:15+1000\n"
-"PO-Revision-Date: 2012-07-09 08:21+0000\n"
-"Last-Translator: epix1234 <erich_s at gmx.de>\n"
-"Language-Team: German (Germany) (http://www.transifex.com/projects/p/3depict/"
-"language/de_DE/)\n"
-"Language: de_DE\n"
+"POT-Creation-Date: 2017-02-04 23:42+0000\n"
+"PO-Revision-Date: 2016-01-03 21:27+0000\n"
+"Last-Translator: \n"
+"Language-Team: Spanish (Spain) (http://www.transifex.com/mycae/3depict/"
+"language/es_ES/)\n"
+"Language: es_ES\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../src/gl/cameras.cpp:596
+msgid "Lock"
+msgstr "Bloquear"
+
+#: ../src/gl/cameras.cpp:603 ../src/backend/filters/ionClip.cpp:529
+#: ../src/backend/filters/ionClip.cpp:551
+#: ../src/backend/filters/ionClip.cpp:573
+#: ../src/backend/filters/ionClip.cpp:610
+#: ../src/backend/filters/profile.cpp:1017
+#: ../src/backend/filters/profile.cpp:1055
+#: ../src/backend/filters/transform.cpp:1232
+#: ../src/backend/filters/transform.cpp:1259
+#: ../src/backend/filters/transform.cpp:1285
+#: ../src/backend/filters/annotation.cpp:576
+msgid "Origin"
+msgstr "Origen"
+
+#: ../src/gl/cameras.cpp:611 ../src/backend/filters/spatialAnalysis.cpp:872
+msgid "Target"
+msgstr "Destino"
+
+#: ../src/gl/cameras.cpp:617
+msgid "Up Dir."
+msgstr "Arriba de Dir."
+
+#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
+msgid "Perspective"
+msgstr "Perspectiva"
+
+#: ../src/gl/cameras.cpp:627 ../src/gl/cameras.cpp:730
+#: ../src/gui/mainFrame.cpp:5416
+msgid "Orthogonal"
+msgstr "Ortogonal"
+
+#: ../src/gl/cameras.cpp:631
+msgid "Projection"
+msgstr "Projection"
+
+#: ../src/gl/cameras.cpp:640
+msgid "Field of View (deg)"
+msgstr "Campo de Vista (deg)"
+
+#: ../src/gl/cameras.cpp:646
+msgid "View size"
+msgstr "Medida de vista"
+
+#: ../src/wx/wxcomponents.cpp:191
+msgid "Save Data..."
+msgstr "Salva Dato..."
+
+#: ../src/wx/wxcomponents.cpp:192
+msgid "Text File (*.txt)|*.txt|All Files (*)|*"
+msgstr "Archivo de texto (*.txt)|*.txt|Todos los  Archivos (*)|*"
+
+#: ../src/wx/wxcomponents.cpp:204
+msgid "Error saving file. Check output dir is writable."
+msgstr "Archivo de ahorro del error. Producción de control dir es writable."
+
+#: ../src/wx/wxcomponents.cpp:204 ../src/gui/dialogs/ExportRngDialog.cpp:187
+#: ../src/gui/mainFrame.cpp:1478 ../src/gui/mainFrame.cpp:1603
+#: ../src/gui/mainFrame.cpp:1652 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2284 ../src/gui/mainFrame.cpp:2357
+#: ../src/gui/mainFrame.cpp:2460 ../src/gui/mainFrame.cpp:2573
+msgid "Save error"
+msgstr "Error al guardar"
+
+#: ../src/common/basics.cpp:183
+msgid "in the future?"
+msgstr "En el futuro?"
+
+#: ../src/common/basics.cpp:234
+msgid "a decade ago"
+msgstr "Hace una década"
+
+#: ../src/common/basics.cpp:235
+msgid "a year ago"
+msgstr "Hace un año"
+
+#: ../src/common/basics.cpp:236
+msgid "a month ago"
+msgstr "Hace un mes"
+
+#: ../src/common/basics.cpp:237
+msgid "a week ago"
+msgstr "Hace una semana"
+
+#: ../src/common/basics.cpp:238
+msgid "a day ago"
+msgstr "Hace un día"
+
+#: ../src/common/basics.cpp:239
+msgid "an hour ago"
+msgstr "hace 1 hora"
+
+#: ../src/common/basics.cpp:240
+msgid "45 minutes ago"
+msgstr "Hace 45 minutos"
+
+#: ../src/common/basics.cpp:241
+msgid "30 minutes ago"
+msgstr "Hace 30 minutos"
+
+#: ../src/common/basics.cpp:242
+msgid "20 minutes ago"
+msgstr "Hace 20 minutos"
+
+#: ../src/common/basics.cpp:243
+msgid "15 minutes ago"
+msgstr "Hace 15 minutos"
+
+#: ../src/common/basics.cpp:244
+msgid "10 minutes ago"
+msgstr "Hace 10 minutos"
+
+#: ../src/common/basics.cpp:245
+msgid "5 minutes ago"
+msgstr "Hace 5 minutos"
+
+#: ../src/common/basics.cpp:246
+msgid "a minute ago"
+msgstr "hace un minuto"
+
+#: ../src/common/basics.cpp:247
+msgid "30 seconds ago"
+msgstr "Hace 30 segundos"
+
+#: ../src/common/basics.cpp:248
+msgid "10 seconds ago"
+msgstr "Hace 10 segundos"
+
+#: ../src/common/basics.cpp:249
+msgid "a second ago"
+msgstr "Un segundo hace"
+
+#: ../src/common/basics.cpp:254
+msgid "a few decades ago"
+msgstr "Hace unas cuantas décadas"
+
+#: ../src/common/basics.cpp:255
+msgid "a few years ago"
+msgstr "Hace unos cuantos años"
+
+#: ../src/common/basics.cpp:256
+msgid "a few months ago"
+msgstr "Hace unos cuantos meses"
+
+#: ../src/common/basics.cpp:257
+msgid "a few weeks ago"
+msgstr "Hace unas cuantas semanas"
+
+#: ../src/common/basics.cpp:258
+msgid "a few days ago"
+msgstr "Hace unos cuantos días"
+
+#: ../src/common/basics.cpp:259
+msgid "a few hours ago"
+msgstr "Hace unas cuantas horas"
+
+#: ../src/common/basics.cpp:262
+msgid "tens of minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:266
+msgid "a few minutes ago"
+msgstr "Hace unos cuantos minutos"
+
+#: ../src/common/basics.cpp:269
+msgid "a few seconds ago"
+msgstr "hace unos segundos"
+
+#: ../src/common/basics.cpp:296
+msgid "moments ago"
+msgstr "Momentos hace"
+
+#: ../src/common/colourmap.cpp:307
+msgid "Jet"
+msgstr "Jet"
+
+#: ../src/common/colourmap.cpp:308
+msgid "Hot"
+msgstr "Caliente"
+
+#: ../src/common/colourmap.cpp:309
+msgid "Cold"
+msgstr "Frío"
+
+#: ../src/common/colourmap.cpp:310
+msgid "Grey"
+msgstr "Gris"
+
+#: ../src/common/colourmap.cpp:311
+msgid "Cyclic"
+msgstr "Cíclico"
+
+#: ../src/common/colourmap.cpp:312
+msgid "General"
+msgstr "General"
+
+#: ../src/common/colourmap.cpp:313
+msgid "Blue"
+msgstr "Azul"
+
+#: ../src/common/colourmap.cpp:314
+msgid "Pseudo-Random"
+msgstr "Pseudo-Aleatorio"
+
+#: ../src/common/colourmap.cpp:315
+msgid "Inferno"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:316
+msgid "Viridis"
+msgstr ""
+
+#: ../src/common/constants.cpp:22
+msgid ""
+"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
+"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
+"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+msgstr ""
 
 #: ../src/gui/glPane.cpp:642
 msgid "Use shift/ctrl-space or double tap to alter reset axis"
-msgstr ""
-"Verwenden Sie Shift / Strng-Leertaste oder doppeltippen, um Achsen "
-"zurückzusetzen oder zu verändern"
+msgstr "Cambio de uso/ctrl-grifo espacial o doble para alterar reset eje"
 
 #: ../src/gui/glPane.cpp:938
 msgid "Image progress"
-msgstr "Bild Fortschritt"
+msgstr "Progreso de imagen"
 
 #: ../src/gui/glPane.cpp:939
 msgid "Rendering tiles..."
-msgstr "Rendering tiles..."
+msgstr "Rendering Enladrilla..."
 
 #: ../src/gui/glPane.cpp:1132
 msgid "Animation progress"
-msgstr "Animation-Fortschritt"
+msgstr "Progreso de animación"
 
 #: ../src/gui/glPane.cpp:1133
 msgid "Rendering sequence..."
-msgstr "Renderreihenfolge..."
+msgstr "Rendering Secuencia..."
 
 #: ../src/gui/glPane.cpp:1171
 msgid "Saving Image "
-msgstr "Speichere Bild "
+msgstr "Imagen de ahorro "
 
-#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4401
-#: ../src/gui/mainFrame.cpp:4405 ../src/gui/mainFrame.cpp:4418
-#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4504
+#: ../src/gui/mainFrame.cpp:4508 ../src/gui/mainFrame.cpp:4521
+#: ../src/backend/filters/dataLoad.cpp:339
 msgid " of "
-msgstr " von "
+msgstr " de "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:40
 msgid "Range Sources"
-msgstr "Range Sources"
+msgstr "Fuentes de gama"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:42
 msgid "Details"
-msgstr "Details"
+msgstr "Detalles"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:53
 msgid "Source Filter"
-msgstr "Source Filter"
+msgstr "Filtro de fuentes"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:54
-#: ../src/backend/filters/rangeFile.cpp:656
+#: ../src/backend/filters/rangeFile.cpp:657
 msgid "Ions"
-msgstr "Ionen"
+msgstr "Iones"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:55
 #: ../src/gui/dialogs/rangeEditDialog.cpp:1587
-#: ../src/backend/filters/voxelise.cpp:834
-#: ../src/backend/filters/rangeFile.cpp:723
+#: ../src/backend/filters/voxelise.cpp:1049
+#: ../src/backend/filters/rangeFile.cpp:724
 msgid "Ranges"
-msgstr "Ranges"
+msgstr "Rangos"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:88
 msgid "Param"
-msgstr "Param."
+msgstr "Param"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:89
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:105
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:352
-#: ../src/backend/filters/dataLoad.cpp:581
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
+#: ../src/backend/filters/dataLoad.cpp:610
 msgid "Value"
-msgstr "Wert"
+msgstr "Valor"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:90
 msgid "Value2"
-msgstr "Wert2"
+msgstr "Valor2"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:97
 msgid "Ion Name"
-msgstr "Ionenname"
+msgstr "Nombre de ión"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:98
 msgid "Num Ranges"
-msgstr "Num Ranges"
+msgstr "Num Gamas"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:116
-#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:53
+#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:52
 msgid "Ion"
-msgstr "Ion"
+msgstr "Ión"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:117
 msgid "Range Start"
-msgstr "Range Anfang"
+msgstr "Inicio de gama"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:118
 msgid "Range end"
-msgstr "Range Ende"
+msgstr "Fin de Rango"
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2376
+#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2395
 msgid "Save pos..."
-msgstr "pos speichern..."
+msgstr "Salva pos..."
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:152
 msgid ""
@@ -124,273 +340,139 @@ msgid ""
 "(*.env)|*.env|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1638 ../src/gui/mainFrame.cpp:1713
-#: ../src/gui/mainFrame.cpp:2266 ../src/gui/mainFrame.cpp:2443
-#: ../src/gui/mainFrame.cpp:2556
+#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1478
+#: ../src/gui/mainFrame.cpp:1653 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2285 ../src/gui/mainFrame.cpp:2461
+#: ../src/gui/mainFrame.cpp:2574
 msgid "Unable to save. Check output destination can be written to."
 msgstr ""
-"Speichern nicht möglich. Bitte überprüfen Sie ob der Ausgabepfad "
-"schreibgeschützt ist."
-
-#: ../src/gui/dialogs/ExportRngDialog.cpp:187 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1588 ../src/gui/mainFrame.cpp:1637
-#: ../src/gui/mainFrame.cpp:1713 ../src/gui/mainFrame.cpp:2265
-#: ../src/gui/mainFrame.cpp:2338 ../src/gui/mainFrame.cpp:2442
-#: ../src/gui/mainFrame.cpp:2555 ../src/wx/wxcomponents.cpp:204
-msgid "Save error"
-msgstr "Fehler speichern"
+"Incapaz de salvar. Destino de producción del control puede ser escrito a."
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:253
 msgid "Export Range"
-msgstr "Range exportieren"
+msgstr "Exportar rango"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:258
 msgid "List of rangefiles in filter tree"
-msgstr "Liste der Rangedateien im Filterbaum"
+msgstr "Lista de rangefiles en árbol de filtro"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:260
 msgid "Detailed view of selected range"
-msgstr "Detailierte Ansicht des ausgewählten Range"
+msgstr "Vista detallada de gama seleccionada"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:92
-msgid "Cameca/Ametek RRNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:221
+msgid "Show Overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:93
-msgid "Oak-Ridge RNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:246
+msgid "e.g. H2O"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:94
-msgid "Cameca/Ametek ENV"
-msgstr ""
+#: ../src/gui/dialogs/rangeEditDialog.cpp:561
+#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:6071
+#: ../src/backend/filter.cpp:53
+msgid "Plot"
+msgstr "Dibujar"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:156
-msgid "Key frames"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:562
+msgid "Short Name"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:157
-msgid "Output Data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:563
+msgid "Long Name"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:158
-msgid "Filters and properties"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:564
+#: ../src/backend/filters/voxelise.cpp:1188
+#: ../src/backend/filters/profile.cpp:1159
+#: ../src/backend/filters/annotation.cpp:909
+#: ../src/backend/filters/spectrumPlot.cpp:679
+msgid "Colour"
+msgstr "Colour"
+
+#: ../src/gui/dialogs/rangeEditDialog.cpp:697
+#: ../src/backend/filters/annotation.cpp:613
+#: ../src/backend/filters/annotation.cpp:654
+#: ../src/backend/filters/annotation.cpp:823
+msgid "Start"
+msgstr "Inicio"
+
+#: ../src/gui/dialogs/rangeEditDialog.cpp:698
+#: ../src/backend/filters/annotation.cpp:621
+#: ../src/backend/filters/annotation.cpp:663
+#: ../src/backend/filters/annotation.cpp:831
+msgid "End"
+msgstr "Final"
+
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
+msgid "Range or ion?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:164
-msgid "Dir : "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
+msgid "Select type to add"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:167
-msgid "Output only when refresh required"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
+msgid "Range Editor"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:169
-msgid "Data Types:"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
+msgid "Enable or disable all overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:170
-msgid "3D Images"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
+msgid "Entered overlays, use delete to remove"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:171
-msgid "File Prefix: "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
+msgid "Available plots for ranging"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:173
-msgid "Size : "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
+msgid "Enter species to display as overlay, e.g. SiO2"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:175
-msgid "..."
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
+msgid "Editable ranges"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:176
-msgid "Point data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
+msgid "Editable ions"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:177
 #: ../src/gui/dialogs/rangeEditDialog.cpp:1586
+#: ../src/gui/dialogs/animateFilterDialog.cpp:177
 msgid "Plots"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:178
-msgid "Voxel data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
+msgid "Overlay"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:179
-msgid "Range files"
+#: ../src/gui/dialogs/autosaveDialog.cpp:39
+msgid "Remove &All"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:180
-msgid "Format"
+#: ../src/gui/dialogs/autosaveDialog.cpp:123
+msgid "Restore state?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:197
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
-msgid "Frame"
+#: ../src/gui/dialogs/autosaveDialog.cpp:133
+msgid "Multiple autosave states were found; would you like to restore one?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-msgid "transition frame"
+#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:481
+#: ../src/backend/filter.cpp:484
+msgid "Error"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-#: ../src/gui/mainFrame.cpp:1690
-msgid "Frame count"
-msgstr "Bildanzahl"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:774
-msgid "Key frame : Colour"
+#: ../src/gui/dialogs/filterErrorDialog.cpp:39
+msgid "Warning"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:827
-msgid "File existed, but was unable to read or interpret file contents."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:828
-msgid "String load failed"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:849
-msgid "Keyframe : decimal"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:858
-msgid "Keyframe : integer"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:867
-msgid "Keyframe : 3D Point"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:995
-msgid "Select or create new folder"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
-msgid "Export Animation"
-msgstr "Animation exportieren"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
-msgid "Select filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1177
-msgid "Select property"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
-msgid "Filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
-msgid "Property"
-msgstr "Eigenschaft"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
-#: ../src/backend/filters/annotation.cpp:545
-#: ../src/backend/filters/annotation.cpp:551
-#: ../src/backend/filters/transform.cpp:1150
-#: ../src/backend/filters/ionDownsample.cpp:465
-#: ../src/backend/filters/spatialAnalysis.cpp:1173
-msgid "Mode"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
-msgid "Start Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
-msgid "End Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
-msgid "Keyframe table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
-msgid "Remove the selected keyframe from the table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
-msgid "Enter where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1187
-msgid "Browse to directory where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
-msgid ""
-"Title for files, result will be saved as #-name.png, where # is image number."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
-msgid "Target resolution (image size)"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
-msgid "Select frame for property display"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
-msgid "Enter frame number to change frame (eg 1/20)"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
-msgid "Save point data (POS files) in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
-msgid "Save plots (as text files) in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
-msgid "Save voxel data (raw files) in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1196
-msgid "Save range files  in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
-msgid "Animation parameters for current frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
-msgid "Abort animation"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1203
-msgid "Run Animation"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
-msgid "Filter view"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1275
-msgid "Frame view"
-msgstr ""
-
-#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:476
-#: ../src/backend/filter.cpp:479
-msgid "Error"
-msgstr ""
-
-#: ../src/gui/dialogs/filterErrorDialog.cpp:39
-msgid "Warning"
-msgstr ""
-
-#: ../src/gui/dialogs/filterErrorDialog.cpp:42
-#: ../src/gui/dialogs/filterErrorDialog.cpp:52
-msgid "Filter Errors"
+#: ../src/gui/dialogs/filterErrorDialog.cpp:42
+#: ../src/gui/dialogs/filterErrorDialog.cpp:52
+msgid "Filter Errors"
 msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:49
@@ -407,15 +489,15 @@ msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:60
 msgid "Stash Name"
-msgstr "Stash Name"
+msgstr "Stash Nombre"
 
 #: ../src/gui/dialogs/StashDialog.cpp:61
 msgid "Filter Count"
-msgstr "Filter Count"
+msgstr "El Filtro Cuenta"
 
 #: ../src/gui/dialogs/StashDialog.cpp:94
 msgid "Stashed Trees"
-msgstr "Stashed Trees"
+msgstr "Stashed árboles"
 
 #: ../src/gui/dialogs/StashDialog.cpp:97
 msgid "Erase stashed item"
@@ -423,43 +505,14 @@ msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:98
 msgid "Filter view for current stash"
-msgstr "Filteransicht für den aktuellen Stash"
+msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:99
 msgid "Settings for selected filter in current stash"
-msgstr "Einstellungen für den ausgewählten Stash"
+msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:100
 msgid "Available stashes"
-msgstr "Verfügbare Stash"
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:45
-msgid "Width :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:47
-msgid "Height :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:50
-#: ../src/gui/dialogs/prefDialog.cpp:85
-msgid "Reset"
-msgstr "Zurücksetzen"
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:336
-msgid "Resolution Selection"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:39
-msgid "Remove &All"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:123
-msgid "Restore state?"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:133
-msgid "Multiple autosave states were found; would you like to restore one?"
 msgstr ""
 
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:45
@@ -474,6 +527,12 @@ msgstr ""
 msgid "From Table"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
+#: ../src/gui/dialogs/animateFilterDialog.cpp:197
+msgid "Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:240
 msgid "Select text file..."
 msgstr ""
@@ -538,6 +597,16 @@ msgstr ""
 msgid "Ramp"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
+msgid "Start Frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
+msgid "End Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:73
 msgid "Initial Value"
 msgstr ""
@@ -566,176 +635,266 @@ msgstr ""
 msgid "Colour at end of transition"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:73
-msgid "Panel Display"
-msgstr "Panel Display"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:92
+msgid "Cameca/Ametek RRNG"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:75
-msgid "Online Updates"
-msgstr "Online Updates"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:93
+msgid "Oak-Ridge RNG"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
-msgid "Startup"
-msgstr "Startup"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:94
+msgid "Cameca/Ametek ENV"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:78
-msgid "Camera Speed"
-msgstr "Kamerageschwindigkeit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:156
+msgid "Key frames"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:79
-msgid "Available Filters"
-msgstr "Verfügbare Filter"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:157
+msgid "Output Data"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:84
-msgid "Reset All"
-msgstr "Alle zurücksetzen"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:158
+msgid "Filters and properties"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:87
-msgid "Show all panels"
-msgstr "Zeige alle Fenster"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:164
+msgid "Dir : "
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:88
-msgid "Remember last"
-msgstr "Zuletzt verwendet"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:167
+msgid "Output only when refresh required"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:89
-msgid "Show Selected"
-msgstr "Zeige Auswahl"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:169
+msgid "Data Types:"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:92
-msgid "Control Pane"
-msgstr "Kontrollfenster"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:170
+msgid "3D Images"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:93
-msgid "Raw Data Panel"
-msgstr "Rohdatenfenster"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:171
+msgid "File Prefix: "
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:691
-msgid "Plot List"
-msgstr "Plotliste"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:173
+msgid "Size : "
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:96
-msgid "Periodically notify about available updates"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:175
+msgid "..."
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:98
-msgid "Prefer orthographic at startup"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:176
+msgid "Point data"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:99
-msgid "Move Rate"
-msgstr "Bewegungsgeschwindigkeit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:178
+msgid "Voxel data"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:100 ../src/gui/dialogs/prefDialog.cpp:104
-msgid "(slow)"
-msgstr "(langsam)"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:179
+msgid "Range files"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:102 ../src/gui/dialogs/prefDialog.cpp:106
-msgid "(fast)"
-msgstr "(schnell)"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:180
+msgid "Format"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:103
-msgid "Zoom Rate"
-msgstr "Zoomgeschwindigkeit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701
+msgid "transition frame"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:416
-msgid "Show all panels when starting program"
-msgstr "Zeige alle Fenster beim Programmstart"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701 ../src/gui/mainFrame.cpp:1705
+msgid "Frame count"
+msgstr "El Marco cuenta"
 
-#: ../src/gui/dialogs/prefDialog.cpp:419
-msgid "Show panels visible at last shutdown when starting program"
-msgstr "Beim Programmstart zuletzt eingeschaltete Fenster anzeigen."
+#: ../src/gui/dialogs/animateFilterDialog.cpp:773
+msgid "Key frame : Colour"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:426
-msgid "Show selected panels when starting program"
-msgstr "Zeige ausgewählte Fenster beim Programmstart"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:826
+msgid "File existed, but was unable to read or interpret file contents."
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:475
-msgid "Preferences"
-msgstr "Voreinstellungen"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:827
+msgid "String load failed"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:477
-msgid "Set the method of panel layout when starting the program"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:848
+msgid "Keyframe : decimal"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:480
-msgid ""
-"Lets the program check the internet to see if updates to the program version "
-"are available, then notifies you about updates now and again."
+#: ../src/gui/dialogs/animateFilterDialog.cpp:857
+msgid "Keyframe : integer"
 msgstr ""
-"Lässt das Programm via Internet überprüfen ob Updates für diese "
-"Programmversion verfügbar sind. Danach informiert es über die neuen Updates."
 
-#: ../src/gui/dialogs/prefDialog.cpp:482
+#: ../src/gui/dialogs/animateFilterDialog.cpp:866
+msgid "Keyframe : 3D Point"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:994
+msgid "Select or create new folder"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1174
+msgid "Export Animation"
+msgstr "Animación de exportación"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
+msgid "Select filter"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
+msgid "Select property"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1178
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1197
+msgid "Filter"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
+msgid "Property"
+msgstr "Propiedad"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
+#: ../src/backend/filters/spatialAnalysis.cpp:1062
+#: ../src/backend/filters/transform.cpp:1149
+#: ../src/backend/filters/annotation.cpp:553
+#: ../src/backend/filters/annotation.cpp:559
+#: ../src/backend/filters/ionDownsample.cpp:466
+msgid "Mode"
+msgstr "Modo"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
+msgid "Keyframe table"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
+msgid "Remove the selected keyframe from the table"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
+msgid "Enter where the animation frames will be exported to"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
+msgid "Browse to directory where the animation frames will be exported to"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1188
 msgid ""
-"By default, use an orthographic camera at startup. State files will override "
-"this preference."
+"Title for files, result will be saved as #-name.png, where # is image number."
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:483
-msgid "Camera translation, orbit and swivel rates. "
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
+msgid "Target resolution (image size)"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:484
-msgid "Camera zooming rate."
-msgstr "Zoomgeschwindigkeit der Kamera"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
+msgid "Select frame for property display"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:486
-msgid "Reset the filter initial values back to program defaults"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
+msgid "Enter frame number to change frame (eg 1/20)"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:487
-msgid "Reset all filter initial values back to program defaults"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
+msgid "Save point data (POS files) in output folder?"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:559
-msgid "Filt. Default"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
+msgid "Save plots (as text files) in output folder?"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:561
-msgid "Camera"
-msgstr "Kamera"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
+msgid "Save voxel data (raw files) in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
+msgid "Save range files  in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
+msgid "Animation parameters for current frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
+msgid "Abort animation"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
+msgid "Run Animation"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1273
+msgid "Filter view"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
+msgid "Frame view"
+msgstr ""
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:45
+msgid "Width :"
+msgstr ""
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:47
+msgid "Height :"
+msgstr ""
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:50
+#: ../src/gui/dialogs/prefDialog.cpp:85
+msgid "Reset"
+msgstr "Restablecer"
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:336
+msgid "Resolution Selection"
+msgstr ""
 
 #: ../src/gui/dialogs/ExportPos.cpp:63
 msgid "Export:"
-msgstr "Exportieren:"
+msgstr "Exportar:"
 
 #: ../src/gui/dialogs/ExportPos.cpp:64
-#: ../src/backend/filters/boundingBox.cpp:567
+#: ../src/backend/filters/boundingBox.cpp:568
 msgid "Visible"
-msgstr "Sichtbar"
+msgstr "Visibilidad"
 
 #: ../src/gui/dialogs/ExportPos.cpp:65
 msgid "Selected Data"
-msgstr "Daten auswählen"
+msgstr "Dato seleccionado"
 
 #: ../src/gui/dialogs/ExportPos.cpp:67
 msgid "Available Data"
-msgstr "Verfügbare Daten"
+msgstr "Dato disponible"
 
 #: ../src/gui/dialogs/ExportPos.cpp:73
 msgid "Selection"
-msgstr "Auswahl"
+msgstr "Selección"
 
 #: ../src/gui/dialogs/ExportPos.cpp:98 ../src/gui/dialogs/ExportPos.cpp:101
 msgid "Index"
-msgstr "Index"
+msgstr "Índice"
 
 #: ../src/gui/dialogs/ExportPos.cpp:99 ../src/gui/dialogs/ExportPos.cpp:102
-#: ../src/backend/filters/profile.cpp:604
-#: ../src/backend/filters/spatialAnalysis.cpp:2520
-#: ../src/backend/filters/spatialAnalysis.cpp:2613
-#: ../src/backend/filters/spatialAnalysis.cpp:2673
-#: ../src/backend/filters/spatialAnalysis.cpp:3628
-#: ../src/backend/filters/spatialAnalysis.cpp:3831
-#: ../src/backend/filters/spatialAnalysis.cpp:3890
+#: ../src/backend/filters/spatialAnalysis.cpp:2388
+#: ../src/backend/filters/spatialAnalysis.cpp:2481
+#: ../src/backend/filters/spatialAnalysis.cpp:2541
+#: ../src/backend/filters/spatialAnalysis.cpp:3292
+#: ../src/backend/filters/spatialAnalysis.cpp:3481
+#: ../src/backend/filters/profile.cpp:608
 #: ../src/backend/filters/spectrumPlot.cpp:65
 msgid "Count"
-msgstr "Anzahl"
+msgstr "Contador"
 
 #: ../src/gui/dialogs/ExportPos.cpp:451
 msgid "Export Pos Data"
-msgstr "POS Daten exportieren"
+msgstr "Exportación Pos Dato"
 
 #: ../src/gui/dialogs/ExportPos.cpp:454
 msgid "Tree of filters, select leaves to show ion data."
@@ -753,2974 +912,3118 @@ msgstr ""
 msgid "Add selected data from currently selected filter"
 msgstr ""
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:221
-msgid "Show Overlays"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:73
+msgid "Panel Display"
+msgstr "Panel de visualización"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:246
-msgid "e.g. H2O"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:75
+msgid "Online Updates"
+msgstr "Online Actualiza"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:561
-#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:5966
-#: ../src/backend/filter.cpp:54
-msgid "Plot"
-msgstr "Plot"
+#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
+msgid "Startup"
+msgstr "Arranque"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:562
-msgid "Short Name"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:78
+msgid "Camera Speed"
+msgstr "Velocidad de cámara"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:563
-msgid "Long Name"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:79
+msgid "Available Filters"
+msgstr "Filtros disponibles"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:564
-#: ../src/backend/filters/annotation.cpp:901
-#: ../src/backend/filters/voxelise.cpp:976
-#: ../src/backend/filters/profile.cpp:1155
-#: ../src/backend/filters/spectrumPlot.cpp:676
-msgid "Colour"
-msgstr "Farbe"
+#: ../src/gui/dialogs/prefDialog.cpp:84
+msgid "Reset All"
+msgstr "Restablecer todo"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:697
-#: ../src/backend/filters/annotation.cpp:605
-#: ../src/backend/filters/annotation.cpp:646
-#: ../src/backend/filters/annotation.cpp:815
-msgid "Start"
-msgstr "Anfang"
+#: ../src/gui/dialogs/prefDialog.cpp:87
+msgid "Show all panels"
+msgstr "Muestra todos los tableros"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:698
-#: ../src/backend/filters/annotation.cpp:613
-#: ../src/backend/filters/annotation.cpp:655
-#: ../src/backend/filters/annotation.cpp:823
-msgid "End"
-msgstr "Ende"
+#: ../src/gui/dialogs/prefDialog.cpp:88
+msgid "Remember last"
+msgstr "Recuerda último"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
-msgid "Range or ion?"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:89
+msgid "Show Selected"
+msgstr "El Espectáculo Seleccionó"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
-msgid "Select type to add"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:92
+msgid "Control Pane"
+msgstr "Control Pane"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
-msgid "Range Editor"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:93
+msgid "Raw Data Panel"
+msgstr "Tablero de Dato crudo"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
-msgid "Enable or disable all overlays"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:693
+msgid "Plot List"
+msgstr "Lista de parcela"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
-msgid "Entered overlays, use delete to remove"
+#: ../src/gui/dialogs/prefDialog.cpp:96
+msgid "Periodically notify about available updates"
 msgstr ""
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
-msgid "Available plots for ranging"
+#: ../src/gui/dialogs/prefDialog.cpp:98
+msgid "Prefer orthographic at startup"
 msgstr ""
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
-msgid "Enter species to display as overlay, e.g. SiO2"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:99
+msgid "Move Rate"
+msgstr "índice de movimiento"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
-msgid "Editable ranges"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:100 ../src/gui/dialogs/prefDialog.cpp:104
+msgid "(slow)"
+msgstr "(Lento)"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
-msgid "Editable ions"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:102 ../src/gui/dialogs/prefDialog.cpp:106
+msgid "(fast)"
+msgstr "(Ayuno)"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
-msgid "Overlay"
+#: ../src/gui/dialogs/prefDialog.cpp:103
+msgid "Zoom Rate"
+msgstr "Zoom índice"
+
+#: ../src/gui/dialogs/prefDialog.cpp:416
+msgid "Show all panels when starting program"
+msgstr "Muestra todos los  tableros cuándo empezando programa"
+
+#: ../src/gui/dialogs/prefDialog.cpp:419
+msgid "Show panels visible at last shutdown when starting program"
 msgstr ""
+"Tableros de espectáculo visibles por fin shutdown cuándo empezando programa"
 
-#: ../src/gui/mainFrame.cpp:119
-msgid "New camera name..."
-msgstr "Neuer Kameraname..."
+#: ../src/gui/dialogs/prefDialog.cpp:426
+msgid "Show selected panels when starting program"
+msgstr "Espectáculo tableros seleccionados cuándo empezando programa"
 
-#: ../src/gui/mainFrame.cpp:120
-msgid "New stash name..."
+#: ../src/gui/dialogs/prefDialog.cpp:475
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: ../src/gui/dialogs/prefDialog.cpp:477
+msgid "Set the method of panel layout when starting the program"
+msgstr "Pone el método de tablero layout cuándo empezando el programa"
+
+#: ../src/gui/dialogs/prefDialog.cpp:480
+msgid ""
+"Lets the program check the internet to see if updates to the program version "
+"are available, then notifies you about updates now and again."
 msgstr ""
+"Deja el programa comprueba el internet para ver si actualiza a la versión de "
+"programa es disponible, entonces te notifica aproximadamente actualiza ahora "
+"y otra vez."
 
-#: ../src/gui/mainFrame.cpp:125
-msgid "New Filter..."
+#: ../src/gui/dialogs/prefDialog.cpp:482
+msgid ""
+"By default, use an orthographic camera at startup. State files will override "
+"this preference."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:560
-#: ../src/backend/filters/annotation.cpp:664
-#: ../src/backend/filters/annotation.h:96
-msgid "Annotation"
-msgstr "Kommentar"
+#: ../src/gui/dialogs/prefDialog.cpp:483
+msgid "Camera translation, orbit and swivel rates. "
+msgstr "Traducción de cámara, órbita y swivel índices. "
 
-#: ../src/gui/mainFrame.cpp:143
-msgid "Bounding Box"
-msgstr "Begrenzungs-Box"
+#: ../src/gui/dialogs/prefDialog.cpp:484
+msgid "Camera zooming rate."
+msgstr "Cámara zooming índice."
+
+#: ../src/gui/dialogs/prefDialog.cpp:486
+msgid "Reset the filter initial values back to program defaults"
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:487
+msgid "Reset all filter initial values back to program defaults"
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:559
+msgid "Filt. Default"
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:561
+msgid "Camera"
+msgstr "Cámara"
+
+#: ../src/gui/mainFrame.cpp:119
+msgid "New camera name..."
+msgstr "Nombre de cámara nuevo..."
+
+#: ../src/gui/mainFrame.cpp:120
+msgid "New stash name..."
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:125
+msgid "New Filter..."
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:568
+#: ../src/backend/filters/annotation.cpp:672
+#: ../src/backend/filters/annotation.h:96
+msgid "Annotation"
+msgstr "Anotacion"
+
+#: ../src/gui/mainFrame.cpp:143
+msgid "Bounding Box"
+msgstr "Cuadro limitador"
 
 #: ../src/gui/mainFrame.cpp:144 ../src/backend/filters/ionClip.cpp:629
 #: ../src/backend/filters/ionClip.h:66
 msgid "Clipping"
-msgstr "Zuschneiden"
+msgstr "Recorte"
 
 #: ../src/gui/mainFrame.cpp:145 ../src/backend/filters/clusterAnalysis.h:151
 msgid "Cluster Analysis"
-msgstr "Clusteranalyse"
+msgstr "Análisis de grupo"
 
 #: ../src/gui/mainFrame.cpp:146
 msgid "Compos. Profiles"
-msgstr "Konz.Profil"
+msgstr "Compos. Perfiles"
 
 #: ../src/gui/mainFrame.cpp:147
 msgid "Downsampling"
-msgstr "Datenreduktion"
+msgstr "Downsampling"
 
 #: ../src/gui/mainFrame.cpp:148
 msgid "Extern. Prog."
-msgstr "Ext. Progr."
+msgstr "Extern. Prog."
 
 #: ../src/gui/mainFrame.cpp:149
 msgid "Ion Colour"
-msgstr "Ionenfarbe"
+msgstr "Color de ión"
 
 #: ../src/gui/mainFrame.cpp:150
 msgid "Ion Info"
-msgstr "Ion Info"
+msgstr "Ión Info"
 
 #: ../src/gui/mainFrame.cpp:151
 msgid "Ion Transform"
-msgstr "Ionentransform."
+msgstr "El Ión Transforma"
 
 #: ../src/gui/mainFrame.cpp:152 ../src/backend/filters/spectrumPlot.h:76
 msgid "Spectrum"
-msgstr "Spektrum"
+msgstr "Espectro"
 
 #: ../src/gui/mainFrame.cpp:153
 msgid "Range File"
-msgstr "Rangedatei"
+msgstr "Archivo de gama"
 
-#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:202
+#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:192
 msgid "Spat. Analysis"
-msgstr "Räumliche Analyse"
+msgstr "Spat. Análisis"
 
-#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:122
+#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:126
 msgid "Voxelisation"
 msgstr "Voxelisation"
 
-#: ../src/gui/mainFrame.cpp:451
+#: ../src/gui/mainFrame.cpp:453
 msgid "OpenGL Failed"
-msgstr "OpenGL fehlgeschlagen"
+msgstr "OpenGL Falló"
 
-#: ../src/gui/mainFrame.cpp:452 ../src/gui/mainFrame.cpp:454
+#: ../src/gui/mainFrame.cpp:454 ../src/gui/mainFrame.cpp:456
 msgid ""
 "Unable to initialise the openGL (3D) panel. Program cannot start. Please "
 "check your video drivers."
 msgstr ""
-"Kann das OpenGL (3D)-Panel nicht initialisieren. Das Programm kann nicht "
-"gestartet werden. Bitte überprüfen Sie Ihren Video-Treiber."
+"Incapaz a initialise el openGL (3D) tablero. El Programa no puede empezar. "
+"Complacer comprobar vuestros conductores de vídeo."
 
-#: ../src/gui/mainFrame.cpp:475
+#: ../src/gui/mainFrame.cpp:477
 msgid "&Open...\tCtrl+O"
-msgstr "&Öffnen...\tCtrl+O"
+msgstr "&Abierto...\tCtrl+O"
 
-#: ../src/gui/mainFrame.cpp:475
+#: ../src/gui/mainFrame.cpp:477
 msgid "Open state file"
-msgstr "Statusdatei öffnen"
+msgstr "Archivo estatal abierto"
 
-#: ../src/gui/mainFrame.cpp:476
+#: ../src/gui/mainFrame.cpp:478
 msgid "&Merge...\tCtrl+Shift+O"
-msgstr "&Zusammenführen...\tCtrl+Shift+O"
+msgstr "&Fusiona...\tCtrl+Cambio+O"
 
-#: ../src/gui/mainFrame.cpp:476
+#: ../src/gui/mainFrame.cpp:478
 msgid "Merge other file"
-msgstr "Merge other file"
+msgstr "Fusionar otro archivo"
 
-#: ../src/gui/mainFrame.cpp:480
+#: ../src/gui/mainFrame.cpp:482
 msgid "&Recent"
-msgstr "&Letzte"
+msgstr "&Reciente"
 
-#: ../src/gui/mainFrame.cpp:481
+#: ../src/gui/mainFrame.cpp:483
 msgid "&Save\tCtrl+S"
-msgstr "&Speichern\tCtrl+S"
+msgstr "&Salva\tCtrl+S"
 
-#: ../src/gui/mainFrame.cpp:481
+#: ../src/gui/mainFrame.cpp:483
 msgid "Save state to file"
-msgstr "Status in Datei speichern"
+msgstr "Salva estatal de archivar"
 
-#: ../src/gui/mainFrame.cpp:483
+#: ../src/gui/mainFrame.cpp:485
 msgid "Save &As...\tCtrl+Shift+S"
-msgstr "Speichern &als...\tCtrl+Shift+S"
+msgstr "Salva &Tan...\tCtrl+Cambio+S"
 
-#: ../src/gui/mainFrame.cpp:483
+#: ../src/gui/mainFrame.cpp:485
 msgid "Save current state to new file"
-msgstr "Aktuellen Status als neue Datei speichern"
+msgstr "Salva estado actual a archivo nuevo"
 
-#: ../src/gui/mainFrame.cpp:486
+#: ../src/gui/mainFrame.cpp:488
 msgid "&Plot...\tCtrl+P"
-msgstr "&Plot...\tCtrl+P"
+msgstr "&Parcela...\tCtrl+P"
 
-#: ../src/gui/mainFrame.cpp:486
+#: ../src/gui/mainFrame.cpp:488
 msgid "Export Current Plot"
-msgstr "Aktuellen Plot exportieren"
+msgstr "Exportación Parcela Actual"
 
-#: ../src/gui/mainFrame.cpp:487
+#: ../src/gui/mainFrame.cpp:489
 msgid "&Image...\tCtrl+I"
-msgstr "&Bild...\tCtrl+I"
+msgstr "&Imagen...\tCtrl+Yo"
 
-#: ../src/gui/mainFrame.cpp:487
+#: ../src/gui/mainFrame.cpp:489
 msgid "Export Current 3D View"
-msgstr "Aktuelle 3D Ansicht exportieren"
+msgstr "Corriente de exportación 3D Vista"
 
-#: ../src/gui/mainFrame.cpp:488
+#: ../src/gui/mainFrame.cpp:490
 msgid "Ion&s...\tCtrl+N"
-msgstr "Ion&en...\tCtrl+N"
+msgstr "Ión&s...\tCtrl+N"
 
-#: ../src/gui/mainFrame.cpp:488
+#: ../src/gui/mainFrame.cpp:490
 msgid "Export Ion Data"
-msgstr "Ionendaten exportieren"
+msgstr "Dato de Ión de la exportación"
 
-#: ../src/gui/mainFrame.cpp:489
+#: ../src/gui/mainFrame.cpp:491
 msgid "Ran&ges...\tCtrl+G"
-msgstr "Ran&ges...\tCtrl+G"
+msgstr "Corrió&ges...\tCtrl+G"
 
-#: ../src/gui/mainFrame.cpp:489
+#: ../src/gui/mainFrame.cpp:491
 msgid "Export Range Data"
-msgstr "Rangedaten exportieren"
+msgstr "Dato de Gama de la exportación"
 
-#: ../src/gui/mainFrame.cpp:490
+#: ../src/gui/mainFrame.cpp:492
 msgid "&Animate Filters...\tCtrl+T"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:490
+#: ../src/gui/mainFrame.cpp:492
 msgid "Export Animated Filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
+#: ../src/gui/mainFrame.cpp:493
 msgid "Ani&mate Camera...\tCtrl+M"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
+#: ../src/gui/mainFrame.cpp:493
 msgid "Export Animated Camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:492
+#: ../src/gui/mainFrame.cpp:494
 msgid "Pac&kage...\tCtrl+K"
-msgstr "Pa&ket...\tCtrl+K"
+msgstr "Pac&kage...\tCtrl+K"
 
-#: ../src/gui/mainFrame.cpp:492
+#: ../src/gui/mainFrame.cpp:494
 msgid "Export analysis package"
-msgstr "Analysepaket exportieren"
+msgstr "Paquete de análisis de la exportación"
 
-#: ../src/gui/mainFrame.cpp:494
+#: ../src/gui/mainFrame.cpp:496
 msgid "&Export"
-msgstr "&Exportieren"
+msgstr "&Exportar"
 
-#: ../src/gui/mainFrame.cpp:497
+#: ../src/gui/mainFrame.cpp:499
 msgid "&Quit\tCtrl+Q"
-msgstr "&Beenden\tCtrl+Q"
+msgstr "&Quit\tCtrl+Q"
 
-#: ../src/gui/mainFrame.cpp:497 ../src/gui/mainFrame.cpp:499
+#: ../src/gui/mainFrame.cpp:499 ../src/gui/mainFrame.cpp:501
 msgid "Exit Program"
-msgstr "Programm beenden"
+msgstr "Programa de salida"
 
-#: ../src/gui/mainFrame.cpp:499
+#: ../src/gui/mainFrame.cpp:501
 msgid "E&xit"
-msgstr "E&xit"
+msgstr "Sa&lir"
 
-#: ../src/gui/mainFrame.cpp:501
+#: ../src/gui/mainFrame.cpp:503
 msgid "&File"
-msgstr "&Datei"
+msgstr "&Archivo"
 
-#: ../src/gui/mainFrame.cpp:505
+#: ../src/gui/mainFrame.cpp:507
 msgid "&Background Colour...\tCtrl+B"
-msgstr "&Hintergrundfarbe...\tCtrl+B"
+msgstr "&Color de fondo...\tCtrl+B"
 
-#: ../src/gui/mainFrame.cpp:505
+#: ../src/gui/mainFrame.cpp:507
 msgid "Change background colour"
-msgstr "Hintergrundfarbe ändern"
+msgstr "Color de fondo del cambio"
 
-#: ../src/gui/mainFrame.cpp:509
+#: ../src/gui/mainFrame.cpp:511
 msgid "&Control Pane\tF2"
-msgstr "&Kontrollfenster\tF2"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:509 ../src/gui/mainFrame.cpp:512
+#: ../src/gui/mainFrame.cpp:511 ../src/gui/mainFrame.cpp:514
 msgid "Toggle left control pane"
-msgstr "Linkes Kontrollfenster ein/aus schalten"
+msgstr "Toggle Dejó control pane"
 
-#: ../src/gui/mainFrame.cpp:512
+#: ../src/gui/mainFrame.cpp:514
 msgid "&Control Pane\tAlt+C"
-msgstr "&Kontrollfenster\tAlt+C"
+msgstr "&Control Pane\tAlt+C"
 
-#: ../src/gui/mainFrame.cpp:518
+#: ../src/gui/mainFrame.cpp:520
 msgid "&Raw Data Pane\tF3"
-msgstr "&Rohdatenfenster\tF3"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:518 ../src/gui/mainFrame.cpp:521
+#: ../src/gui/mainFrame.cpp:520 ../src/gui/mainFrame.cpp:523
 msgid "Toggle raw data  pane (bottom)"
-msgstr "Rohdatenfenster (unten)"
+msgstr "Toggle Dato crudo  pane (fondo)"
 
-#: ../src/gui/mainFrame.cpp:521
+#: ../src/gui/mainFrame.cpp:523
 msgid "&Raw Data Pane\tAlt+R"
-msgstr "&Rohdatenfenster\tAlt+R"
+msgstr "&Dato crudo Pane\tAlt+R"
 
-#: ../src/gui/mainFrame.cpp:525
+#: ../src/gui/mainFrame.cpp:527
 msgid "&Plot List\tF4"
-msgstr "&Plot Liste\tF4"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:525 ../src/gui/mainFrame.cpp:527
+#: ../src/gui/mainFrame.cpp:527 ../src/gui/mainFrame.cpp:529
 msgid "Toggle plot list"
-msgstr "Plotliste ein/aus schalten"
+msgstr "Toggle Lista de parcela"
 
-#: ../src/gui/mainFrame.cpp:527
+#: ../src/gui/mainFrame.cpp:529
 msgid "&Plot List\tAlt+P"
-msgstr "&Plot Liste\tAlt+P"
+msgstr "&Lista de parcela\tAlt+P"
 
-#: ../src/gui/mainFrame.cpp:533
+#: ../src/gui/mainFrame.cpp:535
 msgid "&Legend\tCtrl+L"
-msgstr "&Legende\tCtrl+L"
+msgstr "&Leyenda\tCtrl+L"
 
-#: ../src/gui/mainFrame.cpp:533
+#: ../src/gui/mainFrame.cpp:535
 msgid "Toggle Legend display"
-msgstr "Legende anzeigen ein/aus"
+msgstr "Toggle Exhibición de leyenda"
 
-#: ../src/gui/mainFrame.cpp:535
+#: ../src/gui/mainFrame.cpp:537
 msgid "P&lot..."
-msgstr "P&lot..."
+msgstr "P&Parcela..."
 
-#: ../src/gui/mainFrame.cpp:536
+#: ../src/gui/mainFrame.cpp:538
 msgid "&Axis\tCtrl+Shift+I"
-msgstr "&Achsen\tCtrl+Shift+I"
+msgstr "&Eje\tCtrl+Cambio+yo"
 
-#: ../src/gui/mainFrame.cpp:536
+#: ../src/gui/mainFrame.cpp:538
 msgid "Toggle World Axis display"
-msgstr "Hauptachsen ein/aus schalten"
+msgstr "Toggle Exhibición de Eje mundial"
 
-#: ../src/gui/mainFrame.cpp:541
+#: ../src/gui/mainFrame.cpp:543
 msgid "&Fullscreen mode\tF11"
-msgstr "&Vollbildmodus\tF11"
+msgstr "&Fullscreen F\tde modo11"
 
-#: ../src/gui/mainFrame.cpp:541 ../src/gui/mainFrame.cpp:543
+#: ../src/gui/mainFrame.cpp:543 ../src/gui/mainFrame.cpp:545
 msgid "Next fullscreen mode: with toolbars"
-msgstr "Nächster Vollbildmodus: ohne Werkzeugleisten"
+msgstr "Próximo fullscreen modo: con toolbars"
 
-#: ../src/gui/mainFrame.cpp:543
+#: ../src/gui/mainFrame.cpp:545
 msgid "&Fullscreen mode\tCtrl+Shift+F"
-msgstr "&Vollbildmodus\tCtrl+Shift+F"
+msgstr "&Fullscreen Modo\tCtrl+F+de Cambio"
 
-#: ../src/gui/mainFrame.cpp:548
+#: ../src/gui/mainFrame.cpp:550
 msgid "&Undo\tCtrl+Z"
-msgstr "&Zurück\tCtrl+Z"
+msgstr "&Deshace\tCtrl+Z"
 
-#: ../src/gui/mainFrame.cpp:550
+#: ../src/gui/mainFrame.cpp:552
 msgid "&Redo\tCtrl+Y"
-msgstr "&Wiederholen\tCtrl+Y"
+msgstr "&Redo\tCtrl+Y"
 
-#: ../src/gui/mainFrame.cpp:553
+#: ../src/gui/mainFrame.cpp:555
 msgid "&Range"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:556
+#: ../src/gui/mainFrame.cpp:558
 msgid "&Preferences"
-msgstr "&Voreinstellungen"
+msgstr "&Preferencias"
 
-#: ../src/gui/mainFrame.cpp:558
+#: ../src/gui/mainFrame.cpp:560
 msgid "&Edit"
-msgstr "&Bearbeiten"
+msgstr "&Editar"
 
-#: ../src/gui/mainFrame.cpp:561
+#: ../src/gui/mainFrame.cpp:563
 msgid "&View"
-msgstr "&Ansicht"
+msgstr "&Ver"
 
-#: ../src/gui/mainFrame.cpp:563
+#: ../src/gui/mainFrame.cpp:565
 msgid "&Help...\tCtrl+H"
-msgstr "&Hilfe...\tCtrl+H"
+msgstr "&Ayuda...\tCtrl+H"
 
-#: ../src/gui/mainFrame.cpp:563
+#: ../src/gui/mainFrame.cpp:565
 msgid "Show help files and documentation"
-msgstr "Hilfedateien und Dokumentation anzeigen"
+msgstr "Archivos de ayuda del espectáculo y documentación"
 
-#: ../src/gui/mainFrame.cpp:564
+#: ../src/gui/mainFrame.cpp:566
 msgid "&Contact..."
-msgstr "&Kontakt..."
+msgstr "&Contacto..."
 
-#: ../src/gui/mainFrame.cpp:564
+#: ../src/gui/mainFrame.cpp:566
 msgid "Open contact page"
-msgstr "Kontaktseite öffnen"
+msgstr "Página de contacto abierto"
 
-#: ../src/gui/mainFrame.cpp:566
+#: ../src/gui/mainFrame.cpp:568
 msgid "&About..."
-msgstr "Über 3Depict..."
+msgstr "&Acerca de..."
 
-#: ../src/gui/mainFrame.cpp:566
+#: ../src/gui/mainFrame.cpp:568
 msgid "Information about this program"
-msgstr "Informationen zu diesem Programm"
+msgstr "Información sobre este programa"
 
-#: ../src/gui/mainFrame.cpp:567
+#: ../src/gui/mainFrame.cpp:569
 msgid "&Help"
-msgstr "&Hilfe"
+msgstr "A&yuda"
 
-#: ../src/gui/mainFrame.cpp:569
+#: ../src/gui/mainFrame.cpp:571
 msgid "Stashed Filters"
-msgstr "Zwischengelagerte Filter"
+msgstr "Stashed Filtros"
 
-#: ../src/gui/mainFrame.cpp:574
+#: ../src/gui/mainFrame.cpp:576
 msgid "New Filters"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:604
+#: ../src/gui/mainFrame.cpp:606
 msgid "Auto Refresh"
-msgstr ""
-"Autom.\n"
-"aktualisieren"
+msgstr "Coche Refresh"
 
-#: ../src/gui/mainFrame.cpp:610
+#: ../src/gui/mainFrame.cpp:612
 msgid "Filter settings"
-msgstr "Filtereinstellungen"
+msgstr "Configuración de filtros"
 
-#: ../src/gui/mainFrame.cpp:613
+#: ../src/gui/mainFrame.cpp:615
 msgid "Camera Name"
-msgstr "Kameraname"
+msgstr "Nombre de cámara"
 
-#: ../src/gui/mainFrame.cpp:625
+#: ../src/gui/mainFrame.cpp:627
 msgid "Resize to Fit"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:627
+#: ../src/gui/mainFrame.cpp:629
 msgid "3D Post-processing"
-msgstr "3D Nachbearbeitung"
+msgstr "3D Correo-procesando"
 
-#: ../src/gui/mainFrame.cpp:629
+#: ../src/gui/mainFrame.cpp:631
 msgid "Enable Cropping"
-msgstr "Zuschneiden aktivieren"
+msgstr "Habilita Cropping"
 
-#: ../src/gui/mainFrame.cpp:631 ../src/gui/mainFrame.cpp:642
+#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
 msgid "x-y"
 msgstr "x-y"
 
-#: ../src/gui/mainFrame.cpp:632 ../src/gui/mainFrame.cpp:643
+#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
 msgid "x-z"
 msgstr "x-z"
 
-#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
+#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
 msgid "y-x"
 msgstr "y-x"
 
-#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
+#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
 msgid "y-z"
 msgstr "y-z"
 
-#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
+#: ../src/gui/mainFrame.cpp:637 ../src/gui/mainFrame.cpp:648
 msgid "z-x"
 msgstr "z-x"
 
-#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
+#: ../src/gui/mainFrame.cpp:638 ../src/gui/mainFrame.cpp:649
 msgid "z-y"
 msgstr "z-y"
 
-#: ../src/gui/mainFrame.cpp:651
+#: ../src/gui/mainFrame.cpp:653
 msgid "Use camera coordinates"
-msgstr "Verwende Kamerakoordinaten"
+msgstr "Coordenadas de cámara del uso"
 
-#: ../src/gui/mainFrame.cpp:652
+#: ../src/gui/mainFrame.cpp:654
 msgid "dX"
 msgstr "dX"
 
-#: ../src/gui/mainFrame.cpp:654
+#: ../src/gui/mainFrame.cpp:656
 msgid "dY"
 msgstr "dY"
 
-#: ../src/gui/mainFrame.cpp:656
+#: ../src/gui/mainFrame.cpp:658
 msgid "dZ"
 msgstr "dZ"
 
-#: ../src/gui/mainFrame.cpp:658
+#: ../src/gui/mainFrame.cpp:660
 msgid "Enable Anaglyphic Stereo"
-msgstr "Anaglyphic Stereo aktivieren"
+msgstr "Habilita Anaglyphic Stereo"
 
-#: ../src/gui/mainFrame.cpp:659
+#: ../src/gui/mainFrame.cpp:661
 msgid "Flip Channels"
-msgstr "Kanäle tauschen"
+msgstr "Flip Canales"
 
-#: ../src/gui/mainFrame.cpp:660
+#: ../src/gui/mainFrame.cpp:662
 msgid "Anaglyph Mode"
-msgstr "Anaglyphmodus"
+msgstr "Anaglyph Modo"
 
-#: ../src/gui/mainFrame.cpp:662
+#: ../src/gui/mainFrame.cpp:664
 msgid "Red-Blue"
-msgstr "Rot-Blau"
+msgstr "Rojo-Azul"
 
-#: ../src/gui/mainFrame.cpp:663
+#: ../src/gui/mainFrame.cpp:665
 msgid "Red-Green"
-msgstr "Rot-Grün"
+msgstr "Rojo-Verde"
 
-#: ../src/gui/mainFrame.cpp:664
+#: ../src/gui/mainFrame.cpp:666
 msgid "Red-Cyan"
-msgstr "Rot-Zyan"
+msgstr "Rojo-Cyan"
 
-#: ../src/gui/mainFrame.cpp:665
+#: ../src/gui/mainFrame.cpp:667
 msgid "Green-Magenta"
-msgstr "Grün-Magenta"
+msgstr "Verde-Magenta"
 
-#: ../src/gui/mainFrame.cpp:669
+#: ../src/gui/mainFrame.cpp:671
 msgid "Baseline Separation"
-msgstr "Basislinienabstand"
-
-#: ../src/gui/mainFrame.cpp:671 ../src/backend/filters/annotation.cpp:906
-#: ../src/backend/filters/voxelise.cpp:938
-#: ../src/backend/filters/voxelise.cpp:1106
-#: ../src/backend/filters/profile.cpp:1164
-#: ../src/backend/filters/boundingBox.cpp:731
-#: ../src/backend/filters/dataLoad.cpp:666
-#: ../src/backend/filters/spectrumPlot.cpp:683
+msgstr "Baseline Separación"
+
+#: ../src/gui/mainFrame.cpp:673 ../src/backend/filters/voxelise.cpp:1150
+#: ../src/backend/filters/voxelise.cpp:1409
+#: ../src/backend/filters/profile.cpp:1168
+#: ../src/backend/filters/boundingBox.cpp:732
+#: ../src/backend/filters/annotation.cpp:914
+#: ../src/backend/filters/dataLoad.cpp:755
+#: ../src/backend/filters/spectrumPlot.cpp:686
 msgid "Appearance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:672
+#: ../src/gui/mainFrame.cpp:674
 msgid "Smooth && translucent objects"
-msgstr "Glatte && durchsichtige Objekte"
+msgstr "Liso && translucent objetos"
 
-#: ../src/gui/mainFrame.cpp:674
+#: ../src/gui/mainFrame.cpp:676
 msgid "3D lighting"
-msgstr "3D Beleuchtung"
+msgstr "3D encendiendo"
 
-#: ../src/gui/mainFrame.cpp:677
+#: ../src/gui/mainFrame.cpp:679
 msgid "Performance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:678
+#: ../src/gui/mainFrame.cpp:680
 msgid "Fast and weak randomisation."
-msgstr "Schnelle aber schwache Randomisierung"
+msgstr "Rápido y débil randomisation."
 
-#: ../src/gui/mainFrame.cpp:680
+#: ../src/gui/mainFrame.cpp:682
 msgid "Limit Output Pts"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:685
+#: ../src/gui/mainFrame.cpp:687
 msgid "Filter caching"
-msgstr "Filter zwischenspeichern"
+msgstr "Filtro caching"
 
-#: ../src/gui/mainFrame.cpp:687
+#: ../src/gui/mainFrame.cpp:689
 msgid "Max. Ram usage (%)"
-msgstr "Max. RAM-Nutzung (%)"
+msgstr "Max. Ram Uso (%)"
 
-#: ../src/gui/mainFrame.cpp:759
+#: ../src/gui/mainFrame.cpp:761
 msgid "Warning: Your configuration file appears to be invalid:\n"
-msgstr "Warnung: Ihre Konfigurationsdatei scheint ungültig zu sein.\n"
+msgstr "Aviso: Vuestro archivo de configuración aparece para ser nulo:\n"
 
-#: ../src/gui/mainFrame.cpp:760
+#: ../src/gui/mainFrame.cpp:762
 msgid "\tConfig Load: "
-msgstr "\tConfig Load: "
+msgstr "\tConfig Carga: "
 
-#: ../src/gui/mainFrame.cpp:1054
+#: ../src/gui/mainFrame.cpp:1060
 msgid "Current state has not been saved, would you like to save it now?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1055
+#: ../src/gui/mainFrame.cpp:1061
 msgid "State changed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1073
-msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)"
-msgstr "Lesbare Dateien (*.xml, *.pos, *.txt,*.csv,*.ato)"
+#: ../src/gui/mainFrame.cpp:1079
+msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1075
+#: ../src/gui/mainFrame.cpp:1081
 msgid "XML State File (*.xml)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1076
+#: ../src/gui/mainFrame.cpp:1082
 msgid "POS File (*.pos)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1077
+#: ../src/gui/mainFrame.cpp:1083
 msgid "LAWATAP ATO File (*.ato)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1078
+#: ../src/gui/mainFrame.cpp:1084
 msgid "Text File (*.txt, *.csv)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1079
+#: ../src/gui/mainFrame.cpp:1085
+msgid "3Dap Files (*.ops)"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:1086
 msgid "All Files (*)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1092 ../src/gui/mainFrame.cpp:1141
+#: ../src/gui/mainFrame.cpp:1099 ../src/gui/mainFrame.cpp:1148
 msgid "Select Data or State File..."
-msgstr "Daten oder Statusdatei auswählen..."
+msgstr "Selecciona Dato o Archivo Estatal..."
 
-#: ../src/gui/mainFrame.cpp:1142
+#: ../src/gui/mainFrame.cpp:1149
 msgid ""
 "3Depict file (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS File (*.pos)|*.pos|"
 "XML State File (*.xml)|*.xml|All Files (*)|*"
 msgstr ""
-"3Depictdateien (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS Datei (*.pos)|*."
-"pos|XML Status Datei (*.xml)|*.xml|All Files (*)|*"
+"3Describe archivo (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|Archivo de POS (*."
+"pos)|*.pos|XML Archivo Estatal (*.xml)|*.xml|Todos los  Archivos (*)|*"
 
-#: ../src/gui/mainFrame.cpp:1153
+#: ../src/gui/mainFrame.cpp:1160
 msgid "Merged file."
-msgstr "Datei zusammengeführt."
+msgstr "Archivo fusionado."
 
-#: ../src/gui/mainFrame.cpp:1256
+#: ../src/gui/mainFrame.cpp:1263
 msgid "Tip: You can use ⌘ (command) to merge"
-msgstr "Tip: Sie können ⌘ (command) zum Zusammenführen verwenden"
+msgstr "Consejo: puedes utilizar ⌘ (orden) para fusionar"
 
-#: ../src/gui/mainFrame.cpp:1258
+#: ../src/gui/mainFrame.cpp:1265
 msgid "Tip: You can use ctrl to merge"
-msgstr "Tip: Sie können strg zum Zusammen führen verwenden"
+msgstr "Consejo: puedes utilizar ctrl para fusionar"
 
-#: ../src/gui/mainFrame.cpp:1292
+#: ../src/gui/mainFrame.cpp:1299
 msgid "Load error"
-msgstr "Fehler beim Laden"
+msgstr "Error en la carga"
 
-#: ../src/gui/mainFrame.cpp:1293
+#: ../src/gui/mainFrame.cpp:1300
 msgid ""
 "Error loading state file.\n"
 "See console for more info."
 msgstr ""
-"Fehler beim Laden der Statusdatei.\n"
-"Konsole für mehr Informationen."
+"El Error que carga archivo estatal.\n"
+"Ve consola para más info."
 
-#: ../src/gui/mainFrame.cpp:1301
+#: ../src/gui/mainFrame.cpp:1308
 msgid ""
 "This state file contains filters that can be unsafe to run\n"
 "Do you wish to remove these before continuing?."
 msgstr ""
-"Diese Statusdatei enthält Filter deren Anwendung möglicherweise unsicher "
-"ist. Wollen Sie diese entfernen."
+"Este archivo estatal contiene filtros que pueden ser unsafe a carrera\n"
+" deseas sacar estos antes de continuar?."
 
-#: ../src/gui/mainFrame.cpp:1302
+#: ../src/gui/mainFrame.cpp:1309
 msgid "Security warning"
-msgstr "Sicherheitswarnung"
+msgstr "Aviso de seguridad"
 
-#: ../src/gui/mainFrame.cpp:1484 ../src/gui/mainFrame.cpp:1580
-#: ../src/gui/mainFrame.cpp:2010
+#: ../src/gui/mainFrame.cpp:1499 ../src/gui/mainFrame.cpp:1595
+#: ../src/gui/mainFrame.cpp:2029
 msgid "Unable to save"
-msgstr "Speichern nicht möglich"
+msgstr "Incapaz de salvar"
 
-#: ../src/gui/mainFrame.cpp:1485
+#: ../src/gui/mainFrame.cpp:1500
 msgid "No plot available. Please create a plot before exporting."
-msgstr "Kein Plot vefügbar. Plot muss vor dem Exportieren erzeugt werden."
+msgstr ""
+"Ninguna parcela disponible. Complacer crear una parcela antes de exportar."
 
-#: ../src/gui/mainFrame.cpp:1489
+#: ../src/gui/mainFrame.cpp:1504
 msgid "Save plot..."
-msgstr "Plot speichern..."
+msgstr "Salva parcela..."
 
-#: ../src/gui/mainFrame.cpp:1490
+#: ../src/gui/mainFrame.cpp:1505
 msgid ""
 "By Extension (svg,png)|*.svg;*.png|Scalable Vector Graphics File (*.svg)|*."
 "svg|PNG File (*.png)|*.png|All Files (*)|*"
 msgstr ""
-"Dateierweiterung (svg,png)|*.svg;*.png|Skalierbare Vektorgrafik (*.svg)|*."
-"svg|PNG Datei (*.png)|*.png|Alle Dateien (*)|*"
+"Por Extensión (svg,png)|*.svg;*.png|Scalable Vector Archivo de gráficos (*."
+"svg)|*.svg|PNG Archivo (*.png)|*.png|Todos los  Archivos (*)|*"
 
-#: ../src/gui/mainFrame.cpp:1544
+#: ../src/gui/mainFrame.cpp:1559
 msgid "Select type for save"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1545
+#: ../src/gui/mainFrame.cpp:1560
 msgid "Choose file type"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1565 ../src/gui/mainFrame.cpp:1622
-#: ../src/gui/mainFrame.cpp:1658
+#: ../src/gui/mainFrame.cpp:1580 ../src/gui/mainFrame.cpp:1637
+#: ../src/gui/mainFrame.cpp:1673
 msgid "Choose resolution"
-msgstr "Auflösung auswählen"
+msgstr "Escoge resolución"
 
-#: ../src/gui/mainFrame.cpp:1581
+#: ../src/gui/mainFrame.cpp:1596
 msgid "Unknown file extension. Please use \"svg\" or \"png\""
-msgstr "Unbekannte Dateierweiterung. Bitte verwenden Sie \"svg\" oder \"png\""
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1592
+#: ../src/gui/mainFrame.cpp:1607
 msgid "Saved plot: "
-msgstr "Gespeicherter Plot:"
+msgstr "Parcela salvada: "
 
-#: ../src/gui/mainFrame.cpp:1599 ../src/gui/mainFrame.cpp:1651
+#: ../src/gui/mainFrame.cpp:1614 ../src/gui/mainFrame.cpp:1666
 msgid "Save Image..."
-msgstr "Speichere Bild..."
+msgstr "Guardar imagen..."
 
-#: ../src/gui/mainFrame.cpp:1600 ../src/gui/mainFrame.cpp:1652
+#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:1667
 msgid "PNG File (*.png)|*.png|All Files (*)|*"
-msgstr "PNG Datei (*.png)|*.png|Alle Dateien (*)|*"
+msgstr "PNG Archivo (*.png)|*.png|Todos los  Archivos (*)|*"
 
-#: ../src/gui/mainFrame.cpp:1614
+#: ../src/gui/mainFrame.cpp:1629
 msgid "File already exists. Overwrite?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:2407
-#: ../src/gui/mainFrame.cpp:2513 ../src/gui/mainFrame.cpp:2536
+#: ../src/gui/mainFrame.cpp:1630 ../src/gui/mainFrame.cpp:2425
+#: ../src/gui/mainFrame.cpp:2531 ../src/gui/mainFrame.cpp:2554
 msgid "Overwrite?"
-msgstr "Überschreiben?"
+msgstr "¿Sobreescribir?"
 
-#: ../src/gui/mainFrame.cpp:1642 ../src/gui/mainFrame.cpp:1718
+#: ../src/gui/mainFrame.cpp:1657 ../src/gui/mainFrame.cpp:1733
 msgid "Saved 3D View :"
-msgstr "Gespeicherte 3D Ansicht"
+msgstr "Salvado 3D Vista :"
 
-#: ../src/gui/mainFrame.cpp:1672
+#: ../src/gui/mainFrame.cpp:1687
 msgid "Program limitation"
-msgstr "Programmeinschränkung"
+msgstr "Limitación de programa"
 
-#: ../src/gui/mainFrame.cpp:1673
+#: ../src/gui/mainFrame.cpp:1688
 msgid ""
 "Limitation on the screenshot dimension; please ensure that both width and "
 "height exceed the initial values,\n"
 " or that they are smaller than the initial values.\n"
 " If this bothers, please submit a bug."
 msgstr ""
-"Beschränkung der Screenshot Dimensionen; stellen Sie bitte sicher, dass "
-"Breite und Höhe die ursprünglichen Werte überschreiten, oder dass diese "
-"kleiner als die ursprünglichen Werte sind. Sollte Sie dies stören, melden "
-"Sie bitte einen Bug."
+"Limitación en el screenshot dimensión; complacer asegurar que ambos ancho y "
+"la alzada superan los valores iniciales,\n"
+" o que son más pequeños que los valores iniciales.\n"
+" Si esto molesta, complacer entregar un bug."
 
-#: ../src/gui/mainFrame.cpp:1690
+#: ../src/gui/mainFrame.cpp:1705
 msgid "Number of frames"
-msgstr "Bilderanzahl"
+msgstr "Número de fotogramas"
 
-#: ../src/gui/mainFrame.cpp:1744
+#: ../src/gui/mainFrame.cpp:1759
 msgid "Abo&rt"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1746
+#: ../src/gui/mainFrame.cpp:1761
 msgid "&Refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1855
+#: ../src/gui/mainFrame.cpp:1870
 msgid "Cannot animate with no filters."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1933
+#: ../src/gui/mainFrame.cpp:1952
 msgid "Animating"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1934
+#: ../src/gui/mainFrame.cpp:1953
 msgid "Performing refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1960
+#: ../src/gui/mainFrame.cpp:1979
 msgid "Filter property change failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1982
+#: ../src/gui/mainFrame.cpp:2001
 msgid "Refresh failed on frame :"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2011
+#: ../src/gui/mainFrame.cpp:2030
 msgid "Image save failed for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2036
+#: ../src/gui/mainFrame.cpp:2055
 msgid "Ion save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2037
+#: ../src/gui/mainFrame.cpp:2056
 msgid "Unable to save ions for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2068
+#: ../src/gui/mainFrame.cpp:2087
 msgid "Plot save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2069
+#: ../src/gui/mainFrame.cpp:2088
 msgid "Unable to save plot or frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2110
+#: ../src/gui/mainFrame.cpp:2129
 msgid "Range save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2111
+#: ../src/gui/mainFrame.cpp:2130
 msgid "Unable to save range for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2140
+#: ../src/gui/mainFrame.cpp:2159
 msgid "Voxel save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2141
+#: ../src/gui/mainFrame.cpp:2160
 msgid "Unable to save voxels for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2170
+#: ../src/gui/mainFrame.cpp:2189
 msgid "Animate failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2194 ../src/gui/mainFrame.cpp:2360
-#: ../src/gui/mainFrame.cpp:2468
+#: ../src/gui/mainFrame.cpp:2213 ../src/gui/mainFrame.cpp:2379
+#: ../src/gui/mainFrame.cpp:2486
 msgid "No filters means no data to export"
-msgstr "Keine Filter bedeutet keine Daten zum Exportieren"
+msgstr "Ningún filtro significa ningún dato para exportar"
 
-#: ../src/gui/mainFrame.cpp:2208
+#: ../src/gui/mainFrame.cpp:2227
 msgid "Package name"
-msgstr "Paketname"
+msgstr "Nombre del Paquete"
 
-#: ../src/gui/mainFrame.cpp:2209
+#: ../src/gui/mainFrame.cpp:2228
 msgid "Package directory name"
-msgstr "Paketverzeichnis"
+msgstr "Nombre de directorio del paquete"
 
-#: ../src/gui/mainFrame.cpp:2211
+#: ../src/gui/mainFrame.cpp:2230
 msgid "AnalysisPackage"
-msgstr "Analysepaket"
+msgstr "AnalysisPackage"
 
-#: ../src/gui/mainFrame.cpp:2224
+#: ../src/gui/mainFrame.cpp:2243
 msgid "Package folder already exists, won't overwrite."
-msgstr "Paketverzeichnis existiert bereits. Werde es nicht überschreiben."
+msgstr "Carpeta de paquete ya existe,  no overwrite."
 
-#: ../src/gui/mainFrame.cpp:2225
+#: ../src/gui/mainFrame.cpp:2244
 msgid "Not available"
-msgstr "Nicht verfügbar"
+msgstr "No disponible"
 
-#: ../src/gui/mainFrame.cpp:2250
+#: ../src/gui/mainFrame.cpp:2269
 msgid ""
 "Package folder creation failed\n"
 "check writing to this location is possible."
 msgstr ""
-"Anlegen des Paketverzeichnisses fehlgeschlagen\n"
-"Überprüfen Sie ob der angegenbene Ort schreibgeschützt ist."
+"Creación de carpeta del paquete el control\n"
+"fallado que escribe a esta ubicación es posible."
 
-#: ../src/gui/mainFrame.cpp:2251
+#: ../src/gui/mainFrame.cpp:2270
 msgid "Folder creation failed"
-msgstr "Anlegen des Ordners ist fehlgeschlagen"
+msgstr "Creación de carpeta falló"
 
-#: ../src/gui/mainFrame.cpp:2271
+#: ../src/gui/mainFrame.cpp:2290
 msgid "Copying"
-msgstr "kopiere"
+msgstr "Copiando"
 
-#: ../src/gui/mainFrame.cpp:2272
+#: ../src/gui/mainFrame.cpp:2291
 msgid "Copying referenced files"
-msgstr "Copying referenced files"
+msgstr "Copiando referenced archivos"
 
-#: ../src/gui/mainFrame.cpp:2338
+#: ../src/gui/mainFrame.cpp:2357
 msgid "Error copying file"
-msgstr "Fehler beim Kopieren der Datei"
+msgstr "El Error que copia archivo"
 
-#: ../src/gui/mainFrame.cpp:2347
+#: ../src/gui/mainFrame.cpp:2366
 msgid "Saved package: "
-msgstr "Gespeicherte Pakete: "
+msgstr "Paquete salvado: "
 
-#: ../src/gui/mainFrame.cpp:2371
+#: ../src/gui/mainFrame.cpp:2390
 msgid "Export"
-msgstr "Exportieren"
+msgstr "Exportar"
 
-#: ../src/gui/mainFrame.cpp:2377
+#: ../src/gui/mainFrame.cpp:2396
 msgid ""
 "POS Data (*.pos)|*.pos|Text File (*.txt)|*.txt|VTK Legacy (*.vtk)|*.vtk|All "
 "Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2406 ../src/gui/mainFrame.cpp:2512
+#: ../src/gui/mainFrame.cpp:2424 ../src/gui/mainFrame.cpp:2530
 msgid "File already exists, overwrite?"
-msgstr "Datei existiert bereits. Überschreiben?"
+msgstr "El Archivo ya existe, overwrite?"
 
-#: ../src/gui/mainFrame.cpp:2447
+#: ../src/gui/mainFrame.cpp:2465
 msgid "Saved ions: "
-msgstr "Gespeicherte Ionen:"
+msgstr "Iones salvados: "
 
-#: ../src/gui/mainFrame.cpp:2472
+#: ../src/gui/mainFrame.cpp:2490
 msgid "Export Ranges"
-msgstr "Range exportieren"
+msgstr "Gamas de exportación"
 
-#: ../src/gui/mainFrame.cpp:2494
+#: ../src/gui/mainFrame.cpp:2512
 msgid "Save state..."
-msgstr "Speichere Status..."
+msgstr "Salva estatal..."
 
-#: ../src/gui/mainFrame.cpp:2495
+#: ../src/gui/mainFrame.cpp:2513
 msgid "XML state file (*.xml)|*.xml|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2535
+#: ../src/gui/mainFrame.cpp:2553
 msgid "Files have been referred to using relative paths. Keep relative paths?"
 msgstr ""
-"Auf Dateien wurde mit relativen Pfaden verwiesen. Relative Pfade beibehalten?"
+"Los Archivos han sido referred a utilizar caminos relativos. Mantiene "
+"caminos relativos?"
 
-#: ../src/gui/mainFrame.cpp:2568
+#: ../src/gui/mainFrame.cpp:2586
 msgid "Saved state: "
-msgstr "Gespeicherter Status: "
+msgstr "Estado salvado: "
 
-#: ../src/gui/mainFrame.cpp:2644
+#: ../src/gui/mainFrame.cpp:2662
 msgid "Range editor"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2901
+#: ../src/gui/mainFrame.cpp:2929
 msgid "Manual not found locally. Launching web browser"
-msgstr "Anleitung konnte lokal nicht gefunden werden. Starte Webbrowser"
+msgstr "Manual no fundar localmente. Navegador de web del lanzamiento"
 
-#: ../src/gui/mainFrame.cpp:2910
+#: ../src/gui/mainFrame.cpp:2938
 msgid "Opening contact page in external web browser"
-msgstr "Öffne Kontaktseite in externem Browser"
+msgstr "Página de contacto de la apertura en navegador de web externa"
 
-#: ../src/gui/mainFrame.cpp:2918
+#: ../src/gui/mainFrame.cpp:2946
 msgid "No filter stashes to edit."
-msgstr "Keine Filterstashes zum Bearbeiten."
+msgstr "Ningún filtro stashes para editar."
 
-#: ../src/gui/mainFrame.cpp:2922
+#: ../src/gui/mainFrame.cpp:2950
 msgid "Filter Stashes"
-msgstr "Filter Stashes"
+msgstr "Filtro Stashes"
 
-#: ../src/gui/mainFrame.cpp:2939
+#: ../src/gui/mainFrame.cpp:2967
 msgid "Quick and dirty analysis for point data."
-msgstr "\"Quick and dirty\" Analyse von Punktdaten."
+msgstr "Rápidamente y análisis sucio para dato de punto."
 
-#: ../src/gui/mainFrame.cpp:2949
+#: ../src/gui/mainFrame.cpp:2977
 msgid "Compiled with wx Version: "
-msgstr "Kompiliert mit wx Version: "
+msgstr "Compiled Con wx Versión: "
 
-#: ../src/gui/mainFrame.cpp:2970
+#: ../src/gui/mainFrame.cpp:2998
 msgid "Press enter to store new stash"
-msgstr "Eingabe drücken um neuen Filterstash zu speichern"
+msgstr "La Prensa introduce para almacenar nuevo stash"
 
-#: ../src/gui/mainFrame.cpp:2976
+#: ../src/gui/mainFrame.cpp:3004
 msgid "Press enter to restore stash"
-msgstr "Eingabe drücken um Stash wiederherzustellen"
+msgstr "La Prensa introduce para restaurar stash"
 
-#: ../src/gui/mainFrame.cpp:3009
+#: ../src/gui/mainFrame.cpp:3037
 msgid "Unable to create stash, selection invalid"
-msgstr "Stash kann nicht erstellt werden, Auswahl ungültig"
+msgstr "Incapaz de crear stash, inválido de selección"
 
-#: ../src/gui/mainFrame.cpp:3016
+#: ../src/gui/mainFrame.cpp:3044
 msgid "Created new filter tree stash"
-msgstr "Neuer Filterstash wurde erzeugt"
+msgstr "Filtro nuevo creado árbol stash"
 
-#: ../src/gui/mainFrame.cpp:3123
+#: ../src/gui/mainFrame.cpp:3156
 msgid "Filter type not a data source - can't be at tree base"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3263
-msgid "Moving - Hold ⌘ (command) to copy"
-msgstr "Verschieben - Halte ⌘ (command) um zu kopieren"
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete\tDel"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete the selected filter"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:3351
+msgid "Moving - Hold ⌘ (command) to copy, shift to splice"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3265
-msgid "Moving - Hold control to copy"
-msgstr "Verschieben - Halte Strg zum kopieren"
+#: ../src/gui/mainFrame.cpp:3353
+msgid "Moving - Hold control to copy, shift to splice"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3604
+#: ../src/gui/mainFrame.cpp:3696
 msgid "Press enter to store new camera"
-msgstr "Eingabe drücken um neue Kamera zu speichern"
+msgstr "La Prensa introduce para almacenar cámara nuevo"
 
-#: ../src/gui/mainFrame.cpp:3606
+#: ../src/gui/mainFrame.cpp:3698
 msgid "Press enter to restore camera"
-msgstr "Eingabe drücken um Kamera wiederherzustellen"
+msgstr "La Prensa introduce para restaurar cámara"
 
-#: ../src/gui/mainFrame.cpp:3631 ../src/gui/mainFrame.cpp:3672
+#: ../src/gui/mainFrame.cpp:3723 ../src/gui/mainFrame.cpp:3764
 msgid "Restored camera: "
-msgstr "Wiederhergestellte Kamera: "
+msgstr "Cámara restaurado: "
 
-#: ../src/gui/mainFrame.cpp:3649
+#: ../src/gui/mainFrame.cpp:3741
 msgid "Stored camera: "
-msgstr "Gespeicherte Kamera: "
+msgstr "Cámara almacenado: "
 
-#: ../src/gui/mainFrame.cpp:3735
+#: ../src/gui/mainFrame.cpp:3827
 msgid "Select an item from the filter tree before choosing a new filter"
 msgstr ""
-"Aktivieren Sie zuerst ein Punkt aus dem Filterverlauf bevor Sie einen neuen "
-"Filter auswählen"
+"Seleccionar un elemento del árbol de filtro antes de escoger un filtro nuevo"
 
-#: ../src/gui/mainFrame.cpp:3737
+#: ../src/gui/mainFrame.cpp:3829
 msgid "Load data source (file->open) before choosing a new filter"
-msgstr "Lade Datenquelle (Datei->öffnen) vor dem Auswählen eines neuen Filters"
+msgstr ""
+"Fuente de dato de la carga (archivo->abierto) antes de escoger un filtro "
+"nuevo"
 
-#: ../src/gui/mainFrame.cpp:3763
+#: ../src/gui/mainFrame.cpp:3855
 msgid "Select RNG File..."
-msgstr "RNG Datei auswählen..."
+msgstr "Selecciona RNG Archivo..."
 
-#: ../src/gui/mainFrame.cpp:3784
+#: ../src/gui/mainFrame.cpp:3876
 msgid "Failed reading range file."
-msgstr "Fehler beim Lesen der Rangedatei."
+msgstr "Fallado leyendo archivo de gama."
 
-#: ../src/gui/mainFrame.cpp:3788
+#: ../src/gui/mainFrame.cpp:3880
 msgid "Error loading file"
-msgstr "Fehler beim Laden der Datei"
+msgstr "Error al cargar un archivo"
 
-#: ../src/gui/mainFrame.cpp:3849 ../src/gui/mainFrame.cpp:3944
-#: ../src/gui/mainFrame.cpp:5449 ../src/gui/mainFrame.cpp:5968
+#: ../src/gui/mainFrame.cpp:3941 ../src/gui/mainFrame.cpp:4042
+#: ../src/gui/mainFrame.cpp:5554 ../src/gui/mainFrame.cpp:6073
 msgid "Cons."
-msgstr "Kons."
+msgstr "Cons."
 
-#: ../src/gui/mainFrame.cpp:3907
+#: ../src/gui/mainFrame.cpp:4005
 msgid "Refresh Aborted."
-msgstr "Aktualisieren abgebrochen"
+msgstr "Refresh Abortó."
 
-#: ../src/gui/mainFrame.cpp:3948
+#: ../src/gui/mainFrame.cpp:4046
 msgid "*Cons."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3950
+#: ../src/gui/mainFrame.cpp:4048
 msgid "§Cons."
-msgstr "§Kons."
+msgstr "§Cons."
 
-#: ../src/gui/mainFrame.cpp:4007
+#: ../src/gui/mainFrame.cpp:4110
 msgid "Complete"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4105
+#: ../src/gui/mainFrame.cpp:4208
 msgid "msgs"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4146
+#: ../src/gui/mainFrame.cpp:4249
 msgid "Autosave complete."
-msgstr "Autosave beendet."
+msgstr "Autoguardado completado."
 
-#: ../src/gui/mainFrame.cpp:4350
+#: ../src/gui/mainFrame.cpp:4453
 msgid "Aborting...."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4416
+#: ../src/gui/mainFrame.cpp:4519
 msgid "Updated."
-msgstr "Updated."
+msgstr "Actualizada."
 
-#: ../src/gui/mainFrame.cpp:4425
+#: ../src/gui/mainFrame.cpp:4528
 msgid "Calculating..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4428
-msgid "\\% Done (Esc aborts)"
-msgstr "\\% fertig (Esc abbrechen)"
+#: ../src/gui/mainFrame.cpp:4531
+msgid "% Done (Esc aborts)"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4430
-msgid "\\% Done"
-msgstr "\\% fertig"
+#: ../src/gui/mainFrame.cpp:4533
+msgid "% Done"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4704
+#: ../src/gui/mainFrame.cpp:4808
 msgid "Tip: You can shift-click to force full refresh, if required"
-msgstr "Tipp: Verwende shift-click um komplettes Aktualisieren zu erzwingen"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4766
+#: ../src/gui/mainFrame.cpp:4870
 msgid "No data to save"
-msgstr "Keine Daten zum Sichern"
+msgstr "Ningún dato para salvar"
 
-#: ../src/gui/mainFrame.cpp:4950
+#: ../src/gui/mainFrame.cpp:5052
 msgid "Aborting..."
-msgstr "Abbrechen..."
+msgstr "Abortando..."
 
-#: ../src/gui/mainFrame.cpp:4956
+#: ../src/gui/mainFrame.cpp:5058
 msgid ""
 "Waiting for refresh to abort. Exiting could lead to the program "
 "backgrounding. Exit anyway? "
 msgstr ""
-"Waiting for refresh to abort. Exiting could lead to the program "
-"backgrounding. Exit anyway? "
+"Esperando para refresh para abortar. Saliendo podría dirigir al programa "
+"backgrounding. Salida en todo caso? "
 
-#: ../src/gui/mainFrame.cpp:4957 ../src/gui/mainFrame.cpp:4977
+#: ../src/gui/mainFrame.cpp:5059 ../src/gui/mainFrame.cpp:5079
 msgid "Confirmation request"
-msgstr "Bestätigungsabfrage"
+msgstr "Confirmation Petición"
 
-#: ../src/gui/mainFrame.cpp:4976
+#: ../src/gui/mainFrame.cpp:5078
 msgid "Are you sure you wish to exit 3Depict?"
-msgstr "Sind Sie sicher, dass Sie 3Depict beenden wollen?"
-
-#: ../src/gui/mainFrame.cpp:5314 ../src/gl/cameras.cpp:627
-#: ../src/gl/cameras.cpp:730
-msgid "Orthogonal"
-msgstr "Orthogonal"
+msgstr "Te es seguro deseas salir 3Describe?"
 
-#: ../src/gui/mainFrame.cpp:5477
+#: ../src/gui/mainFrame.cpp:5582
 msgid "Update Notice: New version "
-msgstr "Updatenotiz: Neue Version "
+msgstr "Actualiza Aviso: versión Nueva "
 
-#: ../src/gui/mainFrame.cpp:5477
+#: ../src/gui/mainFrame.cpp:5582
 msgid " found online."
-msgstr " online gefunden."
+msgstr " Encontrado online."
 
-#: ../src/gui/mainFrame.cpp:5481
+#: ../src/gui/mainFrame.cpp:5586
 msgid "Online Check: "
-msgstr "Überprüfe online:"
+msgstr "Online Control: "
 
-#: ../src/gui/mainFrame.cpp:5481
+#: ../src/gui/mainFrame.cpp:5586
 msgid " is up-to-date."
-msgstr "ist up-to-date."
+msgstr " Es actual."
 
-#: ../src/gui/mainFrame.cpp:5571
+#: ../src/gui/mainFrame.cpp:5676
 msgid "An auto-save state was found, would you like to restore it?."
-msgstr "Ein auto-save Status wurde gefunden. Wollen Sie ihn wiederherstellen?"
+msgstr "Un coche-salvar el estado fue encontrado,  te gusta para restaurarlo?."
 
-#: ../src/gui/mainFrame.cpp:5572
+#: ../src/gui/mainFrame.cpp:5677
 msgid "Autosave"
-msgstr "Automatisch speichern"
+msgstr "Autoguardar"
 
-#: ../src/gui/mainFrame.cpp:5579
+#: ../src/gui/mainFrame.cpp:5684
 msgid "Unable to load autosave file.."
-msgstr "Kann Autosavedatei nicht laden.."
+msgstr "Incapaz de cargar autosave archivo.."
 
-#: ../src/gui/mainFrame.cpp:5770
+#: ../src/gui/mainFrame.cpp:5875
 msgid "List of available filters"
-msgstr "Liste der verfügbaren Filter"
+msgstr "Lista de filtros disponibles"
 
-#: ../src/gui/mainFrame.cpp:5772
-msgid "Tree - drag to move items, hold ⌘ for copy. Tap delete to remove items"
+#: ../src/gui/mainFrame.cpp:5877
+msgid ""
+"Tree - drag to move items, hold ⌘ for copy, shift for splice. Tap delete to "
+"remove items, multi-click to rename"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5774
+#: ../src/gui/mainFrame.cpp:5879
 msgid ""
-"Tree - drag to move items, hold Ctrl for copy. Tap delete to remove items."
+"Tree - drag to move items, hold Ctrl for copy, shift for splice. Tap delete "
+"to remove items, multi-click to rename."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5776
+#: ../src/gui/mainFrame.cpp:5881
 msgid ""
 "Enable/Disable automatic updates of data when filter change takes effect"
 msgstr ""
-"Ein/Ausschalten vom automatischen Aktualisieren der Daten wenn Änderungen am "
-"Filter wirksam werden"
+"Habilitar/Imposibilitar automático actualiza de dato cuándo cambio de filtro "
+"toma efecto"
 
-#: ../src/gui/mainFrame.cpp:5779
+#: ../src/gui/mainFrame.cpp:5884
 msgid ""
 "Enable/Disable \"Alpha blending\" (transparency) in rendering system. "
 "Blending is used to smooth objects (avoids artefacts known as \"jaggies\") "
 "and to make transparent surfaces. Disabling will provide faster rendering "
 "but look more blocky"
 msgstr ""
-"Ein/Ausschalten des \"Alpha blending\" (Transparenz) im Rendersystem. Dieses "
-"wird verwendet um ebene Objekte (vermeidet Artefakte bekannt als jaggies) "
-"und transparente Oberflächen zu generieren. Ausschalten erlaubt schnelleres "
-"Renden führt jedoch zu blockigerer Darstellung."
 
-#: ../src/gui/mainFrame.cpp:5780
+#: ../src/gui/mainFrame.cpp:5885
 msgid ""
 "Enable/Disable lighting calculations in rendering, for objects that request "
 "this. Lighting provides important depth cues for objects comprised of 3D "
 "surfaces. Disabling may allow faster rendering in complex scenes"
 msgstr ""
-"Ein/Ausschalten der Beleuchtungseffekte beim Rendern von Objekten die dies "
-"anfordern. Beleuchtung bietet wichtige 'depth cues' für mit 3D Oberflächen "
-"umrandete Objekte. Deaktivieren erlaubt u.U. schnelleres Rendern bei "
-"komplizierten Szenen."
+"Habilita/Imposibilita encender cálculos en rendering, para objetos que piden "
+"esto. Encendiendo proporciona profundidad importante cues para los objetos "
+"comprendidos de 3D superficies. Imposibilitando puede dejar más rápido "
+"rendering en escenas complejas"
 
-#: ../src/gui/mainFrame.cpp:5781
+#: ../src/gui/mainFrame.cpp:5886
 msgid ""
 "Enable/Disable weak randomisation (Galois linear feedback shift register). "
 "Strong randomisation uses a much slower random selection method, but "
 "provides better protection against inadvertent correlations, and is "
 "recommended for final analyses"
 msgstr ""
-"Ein/Ausschalten der schwachen Randomisierung (Galois linear feedback shift "
-"register). Starke Randomisierung verwendet einen viel langsamere "
-"Auswahlmethode bietet dafür aber einen besseren Schutz gegen unbeabsichtigte "
-"Korrelationen und wird für die endgültige Analyse empfohlen."
+"Habilitar/Imposibilitar débil randomisation (Galois lineal feedback registro "
+"de cambio). Fuerte randomisation utiliza una mucha selección aleatoria más "
+"lenta método, pero proporciona protección mejor contra inadvertent "
+"correlaciones, y es recomendado para análisis finales"
 
-#: ../src/gui/mainFrame.cpp:5783
+#: ../src/gui/mainFrame.cpp:5888
 msgid ""
 "Limit the number of points that can be displayed in the 3D  scene. Does not "
 "affect filter tree calculations. Disabling this can severely reduce "
 "performance, due to large numbers of points being visible at once."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5784
+#: ../src/gui/mainFrame.cpp:5889
 msgid ""
 "Enable/Disable caching of intermediate results during filter updates. "
 "Disabling caching will use less system RAM, though changes to any filter "
 "property will cause the entire filter tree to be recomputed, greatly slowing "
 "computations"
 msgstr ""
-"Ein/Ausschalten des Zwischenspeicherns von Ergebnissen während "
-"Filteraktualisierungen. Dies verbraucht weniger RAM, führt jedoch dazu, dass "
-"bei Änderungen der Filterparameter der ganze Filterbaum neu berechnet wird. "
-"Dies erhöht den Rechenaufwand deutlich."
 
-#: ../src/gui/mainFrame.cpp:5786
+#: ../src/gui/mainFrame.cpp:5891
 msgid "Camera data information"
-msgstr "Kamerainformation"
+msgstr "Información de dato del cámara"
 
-#: ../src/gui/mainFrame.cpp:5790
+#: ../src/gui/mainFrame.cpp:5895
 msgid "Enable/disable visual effects on final 3D output"
-msgstr "Ein/Ausschalten von visuellen Effekten in der finalen 3D Ausgabe."
+msgstr "Habilitar/imposibilitar efectos visuales en final 3D producción"
 
-#: ../src/gui/mainFrame.cpp:5792
+#: ../src/gui/mainFrame.cpp:5897
 msgid "Enable cropping post-process effect"
-msgstr "Cropping post-Prozess Effect einschalten"
+msgstr "Habilita cropping correo-efecto de proceso"
 
-#: ../src/gui/mainFrame.cpp:5795
+#: ../src/gui/mainFrame.cpp:5900
 msgid ""
 "Colour based 3D effect enable/disable - requires appropriate colour filter "
 "3D glasses."
 msgstr ""
-"Farbbasierte 3D-Effekte ein/ausschalten - erfordert geeignete 3D-Brillen"
+"El Color basó 3D el efecto habilita/imposibilita - requiere appropriate "
+"filtro de color 3D vasos."
 
-#: ../src/gui/mainFrame.cpp:5796
+#: ../src/gui/mainFrame.cpp:5901
 msgid "Glasses colour mode"
-msgstr "Brillenfarbmodus"
+msgstr "Modo de color de los vasos"
 
-#: ../src/gui/mainFrame.cpp:5798
+#: ../src/gui/mainFrame.cpp:5903
 msgid ""
 "Level of separation between left and right images, which sets 3D depth to "
 "visual distortion tradeoff"
 msgstr ""
-"Level of separation between left and right images, which sets 3D depth to "
-"visual distortion tradeoff"
+"Nivel de separación entre imágenes izquierdas y correctas, el cual pone 3D "
+"profundidad a distorsión visual tradeoff"
 
-#: ../src/gui/mainFrame.cpp:5802
+#: ../src/gui/mainFrame.cpp:5907
 msgid "X"
 msgstr "X"
 
-#: ../src/gui/mainFrame.cpp:5803
+#: ../src/gui/mainFrame.cpp:5908
 msgid "Y"
 msgstr "Y"
 
-#: ../src/gui/mainFrame.cpp:5804
+#: ../src/gui/mainFrame.cpp:5909
 msgid "Save raw data to file"
-msgstr "Speichere Rohdaten in Datei"
+msgstr "Salva dato crudo para archivar"
 
-#: ../src/gui/mainFrame.cpp:5805
+#: ../src/gui/mainFrame.cpp:5910
 msgid "Copy raw data to clipboard"
-msgstr "Kopiere Rohdaten in die Zwischenablage"
+msgstr "Copia dato crudo a clipboard"
 
-#: ../src/gui/mainFrame.cpp:5806
+#: ../src/gui/mainFrame.cpp:5911
 msgid "Manage \"stashed\" data."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5807
+#: ../src/gui/mainFrame.cpp:5912
 msgid "Program text output"
-msgstr "Programm Textausgabe"
+msgstr "Producción de texto del programa"
 
-#: ../src/gui/mainFrame.cpp:5808
+#: ../src/gui/mainFrame.cpp:5913
 msgid "Select active camera, or type to create new named camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5809
+#: ../src/gui/mainFrame.cpp:5914
 msgid "Remove the selected camera"
-msgstr "Ausgewählte Kamera entfernen"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5810
+#: ../src/gui/mainFrame.cpp:5915
 msgid "Perform cropping from coordinate frame of camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5811
+#: ../src/gui/mainFrame.cpp:5916
 msgid ""
 "Set the maximum amount of RAM to use in order to speed repeat computations"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5812
+#: ../src/gui/mainFrame.cpp:5917
 msgid "Collapse the filter tree"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5813
+#: ../src/gui/mainFrame.cpp:5918
 msgid "Expand the filter tree"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5814
+#: ../src/gui/mainFrame.cpp:5919
 msgid "Process the filter tree, hold shift to purge cached filter data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5928
+#: ../src/gui/mainFrame.cpp:6033
 msgid "Crop"
-msgstr "Zuschneiden"
+msgstr "Recortar"
 
-#: ../src/gui/mainFrame.cpp:5929
+#: ../src/gui/mainFrame.cpp:6034
 msgid "Stereo"
-msgstr "Stereo"
+msgstr "Estereo"
 
-#: ../src/gui/mainFrame.cpp:5946
-#: ../src/backend/filters/externalProgram.cpp:596
-#: ../src/backend/filters/ionColour.cpp:308
-#: ../src/backend/filters/spectrumPlot.cpp:612
+#: ../src/gui/mainFrame.cpp:6051 ../src/backend/filters/externalProgram.cpp:596
+#: ../src/backend/filters/ionColour.cpp:352
+#: ../src/backend/filters/spectrumPlot.cpp:615
 msgid "Data"
-msgstr "Daten"
+msgstr "Data"
 
-#: ../src/gui/mainFrame.cpp:5947
+#: ../src/gui/mainFrame.cpp:6052
 msgid "Cam"
 msgstr "Cam"
 
-#: ../src/gui/mainFrame.cpp:5948
+#: ../src/gui/mainFrame.cpp:6053
 msgid "Post"
-msgstr "Post"
+msgstr "Postear"
 
-#: ../src/gui/mainFrame.cpp:5949
+#: ../src/gui/mainFrame.cpp:6054
 msgid "Tools"
-msgstr "Werkz."
+msgstr "Herramientas"
 
-#: ../src/gui/mainFrame.cpp:5967
+#: ../src/gui/mainFrame.cpp:6072
 msgid "Raw"
-msgstr "Roh"
+msgstr "Datos en crudo"
 
-#: ../src/gui/mainFrame.cpp:6010
+#: ../src/gui/mainFrame.cpp:6115
 msgid "Align Camera"
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:259
+#: ../src/gui/mathglPane.cpp:264
 msgid "No plots selected."
-msgstr "Kein Plot ausgewählt."
+msgstr "Ninguna parcela seleccionó."
 
-#: ../src/gui/mathglPane.cpp:1201
+#: ../src/gui/mathglPane.cpp:1228
 msgid ""
 "Unable to allocate requested memory.\n"
 " Try a lower resolution, or save as vector (SVG)."
 msgstr ""
-"Kann den notwendigen Speicher nicht zuordnen. Versuche eine geringer "
-"Auflösung oder speichere als Vektografik (svg)."
+"Incapaz a allocate memoria pedida.\n"
+" Probar una resolución más baja, o salvar como vector (SVG)."
 
-#: ../src/gui/mathglPane.cpp:1203
+#: ../src/gui/mathglPane.cpp:1230
 msgid "Plotting functions returned an error:\n"
-msgstr "Plot-Funktion meldete einen Fehler:\n"
+msgstr "Plotting Funciona regresado un error:\n"
 
-#: ../src/gui/mathglPane.cpp:1205
+#: ../src/gui/mathglPane.cpp:1232
 msgid "File readback check failed"
-msgstr "File readback check failed"
+msgstr "Archivo readback el control falló"
 
-#: ../src/gui/mathglPane.cpp:1207
+#: ../src/gui/mathglPane.cpp:1234
 msgid "Filesize during readback appears to be zero."
-msgstr "Filesize during readback appears to be zero."
+msgstr "Filesize Durante readback aparece para ser zero."
 
-#: ../src/backend/filter.cpp:55
-msgid "2D Plot"
-msgstr ""
+#: ../src/3Depict.cpp:399
+msgid "File : "
+msgstr "Archivo :"
 
-#: ../src/backend/filter.cpp:56
-msgid "Draw"
-msgstr "Zeichnen"
+#: ../src/3Depict.cpp:399
+msgid " does not exist. Skipping"
+msgstr " No existe. Skipping"
 
-#: ../src/backend/filter.cpp:57
-msgid "Range"
-msgstr "Range"
+#: ../src/backend/configFile.cpp:187
+msgid "Config file present, but is not valid (root node test)"
+msgstr ""
+"Config Presente de archivo, pero no es válido (prueba de nodo de la raíz)"
 
-#: ../src/backend/filter.cpp:58
-msgid "Voxel"
-msgstr "Voxel"
+#: ../src/backend/configFile.cpp:228
+msgid "Unable to interpret recent file entry"
+msgstr "Incapaz de interpretar entrada de archivo reciente"
 
-#: ../src/backend/filter.cpp:192 ../src/backend/filters/ionColour.cpp:411
-msgid "Aborted"
-msgstr "Abgebrochen"
+#: ../src/backend/configFile.cpp:268
+msgid "Unable to determine filter type in defaults listing."
+msgstr "Incapaz de determinar tipo de filtro en defaults listado."
 
-#: ../src/backend/state.cpp:151
-msgid ""
-"This file is a \"state\" file for the 3Depict program, and stores "
-"information about a particular analysis session. This file should be a valid "
-"\"XML\" file"
+#: ../src/backend/configFile.cpp:605
+msgid "Online access for non win32/apple platforms is intentionally disabled, "
 msgstr ""
-"Diese Datei ist ein \"Status\" Datei für das Programm 3Depict. Sie speichert "
-"Informationen über die jeweiligen Analysesitzung. Dies sollte ein gültige "
-"\"XML\" Datei sein."
-
-#: ../src/backend/state.cpp:319
-msgid "Failed to allocate parser"
-msgstr "Kann Parser nicht zuordnen"
+"Online Acceso para no ganar32/plataformas de manzana es intencionadamente "
+"imposibilitado, "
 
-#: ../src/backend/state.cpp:354
+#: ../src/backend/configFile.cpp:606
 msgid ""
-"Unable to retrieve root node in input state file... Is this really a non-"
-"empty XML file?"
-msgstr ""
-
-#: ../src/backend/state.cpp:361
-msgid "Base state node missing. Is this really a state XML file??"
+"regardless of the settings you use here. Use your package manager to keep up-"
+"to-date"
 msgstr ""
+"A toda costa del settings te utiliza aquí. Uso vuestro director de paquete "
+"para mantener actual"
 
-#: ../src/backend/state.cpp:390
-msgid "State was created by a newer version of this program.. "
-msgstr "Status wurde von einer neueren Version dieses Programmes erstellt.. "
+#: ../src/backend/plot.cpp:28 ../src/backend/filters/algorithms/mass.cpp:25
+#: ../src/backend/filters/voxelise.cpp:130
+#: ../src/backend/filters/voxelise.cpp:136
+#: ../src/backend/filters/spectrumPlot.cpp:76
+msgid "None"
+msgstr "Ninguno"
 
-#: ../src/backend/state.cpp:391
-msgid "file reading will continue, but may fail."
-msgstr "Datei wird weiter eingelesen kann aber unter Umständen fehlschlagen."
+#: ../src/backend/plot.cpp:29
+msgid "Moving avg."
+msgstr "Moviendo avg."
 
-#: ../src/backend/state.cpp:396
-msgid ""
-"Warning, unparseable version number in state file. File reading will "
-"continue, but may fail"
-msgstr ""
-"Warnung: Nicht lesbare Versionsnummer in Statusdatei. Datei wird weiter "
-"eingelesen kann aber unter Umständen fehlschlagen."
+#: ../src/backend/plot.cpp:33
+msgid "Lines"
+msgstr "Líneas"
 
-#: ../src/backend/state.cpp:403
-msgid "Unable to find the \"writer\" node"
-msgstr "Kann \"writer\" node nicht finden"
+#: ../src/backend/plot.cpp:34
+msgid "Bars"
+msgstr "Compases"
 
-#: ../src/backend/state.cpp:413
-msgid "Unable to find the \"backcolour\" node."
-msgstr "Unable to find the \"backcolour\" node."
+#: ../src/backend/plot.cpp:35
+msgid "Steps"
+msgstr "Pasos"
 
-#: ../src/backend/state.cpp:420
-msgid "\"backcolour\" node missing \"r\" value."
-msgstr "\"backcolour\" node fehlt \"r\" Wert."
+#: ../src/backend/plot.cpp:36
+msgid "Stem"
+msgstr "Raíz"
 
-#: ../src/backend/state.cpp:425
-msgid "Unable to interpret \"backColour\" node's \"r\" value."
-msgstr "Kann \"backColour\" node's \"r\" Wert nicht interpretieren."
+#: ../src/backend/plot.cpp:37
+msgid "Points"
+msgstr "Puntos"
 
-#: ../src/backend/state.cpp:433
-msgid "\"backcolour\" node missing \"g\" value."
-msgstr "\"backcolour\" node fehlt \"g\" Wert."
+#: ../src/backend/plot.cpp:39
+msgid "Density"
+msgstr ""
 
-#: ../src/backend/state.cpp:439
-msgid "Unable to interpret \"backColour\" node's \"g\" value."
-msgstr "Kann \"backColour\" node's \"g\" Wert nicht interpretieren."
+#: ../src/backend/plot.cpp:40
+msgid "Scatter"
+msgstr ""
 
-#: ../src/backend/state.cpp:447
-msgid "\"backcolour\" node missing \"b\" value."
-msgstr "\"backcolour\" node fehlt \"b\" Wert."
+#: ../src/backend/plot.cpp:746 ../src/backend/plot.cpp:754
+msgid "Multiple data types"
+msgstr ""
 
-#: ../src/backend/state.cpp:453
-msgid "Unable to interpret \"backColour\" node's \"b\" value."
-msgstr "Kann \"backColour\" node's \"b\" Wert nicht interpretieren."
+#: ../src/backend/plot.cpp:1577
+msgid "error"
+msgstr "error"
 
-#: ../src/backend/state.cpp:460
-msgid "\"backcolour\"s rgb values must be in range [0,1]"
-msgstr "\"backcolour\"s rgb Wert muss im Bereich [0,1] liegen"
+#: ../src/backend/plot.cpp:1818
+msgid "Amplitude"
+msgstr ""
 
-#: ../src/backend/state.cpp:488
-msgid "Unable to find or interpret \"showaxis\" node"
-msgstr "Kann \"showaxis\" node nicht interpretieren"
+#: ../src/backend/filtertree.cpp:1150
+msgid "WARNING: Skipping node "
+msgstr "AVISO: Skipping nodo "
 
-#: ../src/backend/state.cpp:532
-msgid "Unable to locate \"filtertree\" node."
-msgstr "Kann \"filtertree\" node nicht finden."
+#: ../src/backend/filtertree.cpp:1150
+msgid " as it was not recognised"
+msgstr " Cuando no fue recognised"
 
-#: ../src/backend/state.cpp:548
-msgid "Cameras section missing \"active\" node."
-msgstr "Cameras section fehlt \"active\" node."
+#: ../src/backend/filtertree.cpp:1188
+msgid "Error processing node: "
+msgstr "El Error que procesa nodo: "
 
-#: ../src/backend/state.cpp:556
-msgid "Unable to find property \"value\"  for \"cameras->active\" node."
-msgstr "Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht finden."
+#: ../src/backend/filters/externalProgram.cpp:259
+msgid "Collate Input"
+msgstr ""
 
-#: ../src/backend/state.cpp:562
-msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
+#: ../src/backend/filters/externalProgram.cpp:348
+msgid "Execute"
 msgstr ""
-"Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht interpretieren."
 
-#: ../src/backend/state.cpp:582
-msgid "Failed to interpret camera state for camera : "
+#: ../src/backend/filters/externalProgram.cpp:389
+msgid "Collate output"
 msgstr ""
 
-#: ../src/backend/state.cpp:590
-msgid "Unable to interpret the camera type for camera : "
-msgstr "Kann den Kameratype nicht interpretieren für :"
+#: ../src/backend/filters/externalProgram.cpp:564
+#: ../src/backend/filters/externalProgram.cpp:578
+msgid "Command"
+msgstr "Comando"
 
-#: ../src/backend/state.cpp:648
-msgid "Unable to locate stash name for stash "
-msgstr "Kann den Stashnamen für Stash  nicht finden"
+#: ../src/backend/filters/externalProgram.cpp:567
+msgid ""
+"Full command to send to operating system. See manual for escape sequence "
+"meanings"
+msgstr ""
 
-#: ../src/backend/state.cpp:655
-msgid "Empty stash name for stash "
-msgstr "Leerer Stashname für Stash"
+#: ../src/backend/filters/externalProgram.cpp:571
+msgid "Work Dir"
+msgstr "Trabajo Dir"
 
-#: ../src/backend/state.cpp:664
-msgid "No filter tree for stash:"
+#: ../src/backend/filters/externalProgram.cpp:574
+msgid "Directory to run the command in"
 msgstr ""
 
-#: ../src/backend/state.cpp:670
-msgid "For stash "
-msgstr "Für Stash "
-
-#: ../src/backend/state.cpp:702
-msgid "Unrecognised effect :"
-msgstr "Nichterkannter Effekt :"
-
-#: ../src/backend/state.cpp:712
-msgid "Duplicate effect found"
-msgstr "Doppelter Effekt gefunden"
-
-#: ../src/backend/state.cpp:712
-msgid " cannot use."
-msgstr "kann nicht   verwenden."
-
-#: ../src/backend/state.cpp:722
-msgid "Error reading effect : "
-msgstr "Fehler beim Lesen:"
+#: ../src/backend/filters/externalProgram.cpp:581
+msgid "Cleanup input"
+msgstr "Cleanup Entrada"
 
-#: ../src/backend/state.cpp:927
-msgid "-merge"
+#: ../src/backend/filters/externalProgram.cpp:584
+msgid "Erase input files when command completed"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
-#: ../src/backend/APT/APTFileIO.cpp:103
-msgid "Error opening file"
-msgstr "Fehler beim Öffnen der Datei"
+#: ../src/backend/filters/externalProgram.cpp:589
+msgid "Cache"
+msgstr "Cache"
 
-#: ../src/backend/APT/APTFileIO.cpp:45
-msgid "Only found header, no data"
+#: ../src/backend/filters/externalProgram.cpp:592
+msgid ""
+"Assume program does not alter its output, unless inputs from 3Depict are "
+"altered"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:46
-msgid "Unable to reopen file after first scan"
+#: ../src/backend/filters/algorithms/mass.cpp:26
+msgid "Flat TOF"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:47
-msgid "Error whilst reading file contents"
-msgstr "Fehler beim Lesen des Dateiinhaltes"
-
-#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
-msgid "Unexpected file format"
+#: ../src/backend/filters/algorithms/mass.cpp:33
+msgid "INsufficient bins to perform fit"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:50
-msgid "Insufficient memory to continue"
+#: ../src/backend/filters/algorithms/mass.cpp:34
+msgid "Insufficient counts to perform fit"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:54
-msgid "Memory allocation failure on POS load"
-msgstr "Speicherzuweisungsfeher beim Laden der pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:55
-msgid "Error opening pos file"
-msgstr "Fehler beim Öffnen der pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:56
-msgid "Pos file empty"
-msgstr "Pos-Datei ist leer"
-
-#: ../src/backend/APT/APTFileIO.cpp:57
-msgid "Pos file size appears to have non-integer number of entries"
+#: ../src/backend/filters/algorithms/mass.cpp:35
+msgid "Insufficient data to perform fit"
 msgstr ""
-"Pos-Dateigröße scheint eine nicht ganzzahlige Anzahl an Einträgen zu haben"
 
-#: ../src/backend/APT/APTFileIO.cpp:58
-msgid "Error reading from pos file (after open)"
-msgstr "Fehler beim Lesen aus pos-Datei (nach dem öffnen)"
+#: ../src/backend/filters/algorithms/mass.cpp:36
+msgid "Data did not appear to be random noise - cannot fit noise level"
+msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:59
-msgid "Error - Found NaN in pos file"
-msgstr "Fehler - Fand NaN in pos-Datei"
+#: ../src/backend/filters/ionClip.cpp:65 ../src/backend/filters/profile.cpp:53
+msgid "Sphere"
+msgstr "Esfera"
 
-#: ../src/backend/APT/APTFileIO.cpp:60
-msgid "Error - Found Inf in pos file"
-msgstr ""
+#: ../src/backend/filters/ionClip.cpp:66
+msgid "Plane"
+msgstr "Plano"
 
-#: ../src/backend/APT/APTFileIO.cpp:61
-msgid "Pos load aborted by interrupt."
-msgstr "Pos laden durch Interrupt abgebrochen."
+#: ../src/backend/filters/ionClip.cpp:67
+msgid "Cylinder"
+msgstr "Cilindro"
 
-#: ../src/backend/APT/APTFileIO.cpp:80
-msgid "No numerical data found"
-msgstr "Keine numerischen Daten gefunden"
+#: ../src/backend/filters/ionClip.cpp:68
+msgid "Aligned box"
+msgstr "Aligned Caja"
 
-#: ../src/backend/APT/APTFileIO.cpp:81
-msgid "Error re-opening file, after first scan"
-msgstr "Fehler beim nochmaligen Öffnen der Datei nach dem ersten Scan"
+#: ../src/backend/filters/ionClip.cpp:498
+#: ../src/backend/filters/profile.cpp:995
+msgid "Primitive"
+msgstr "Primitiva"
 
-#: ../src/backend/APT/APTFileIO.cpp:82
-msgid "Unable to read file contents after open"
-msgstr "Kann den Dateiinhalt nach dem Öffnen nich lesen"
+#: ../src/backend/filters/ionClip.cpp:501
+msgid "Shape of clipping object"
+msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:83
-msgid "Error interpreting field in file"
-msgstr "Fehler beim Interpretieren eine Feldes in der Datei"
+#: ../src/backend/filters/ionClip.cpp:507
+#: ../src/backend/filters/profile.cpp:1001
+msgid "Show Primitive"
+msgstr "El Espectáculo Primitivo"
 
-#: ../src/backend/APT/APTFileIO.cpp:84
-msgid "Incorrect number of fields in file"
-msgstr "Die Datei enthält eine falsche Anzahl von Feldern"
+#: ../src/backend/filters/ionClip.cpp:510
+msgid "Display the 3D interaction object"
+msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
-msgid "Unable to allocate memory to store data"
-msgstr "Kann Speicher nicht zuordnen"
+#: ../src/backend/filters/ionClip.cpp:515
+msgid "Invert Clip"
+msgstr "Invert Clip"
 
-#: ../src/backend/APT/APTFileIO.cpp:104
-msgid "File is empty"
+#: ../src/backend/filters/ionClip.cpp:518
+msgid ""
+"Switch between retaining points inside (false) and outside (true) of "
+"primitive"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:105
-msgid "Filesize does not match expected format"
+#: ../src/backend/filters/ionClip.cpp:532
+#: ../src/backend/filters/profile.cpp:1058
+msgid "Position for centre of sphere"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:106
-msgid "File version number not <4, as expected"
+#: ../src/backend/filters/ionClip.cpp:537
+#: ../src/backend/filters/ionClip.cpp:597
+#: ../src/backend/filters/spatialAnalysis.cpp:134
+#: ../src/backend/filters/profile.cpp:1041
+#: ../src/backend/filters/profile.cpp:1063
+msgid "Radius"
+msgstr "Radio"
+
+#: ../src/backend/filters/ionClip.cpp:540
+#: ../src/backend/filters/profile.cpp:1066
+msgid "Radius of sphere"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:108
-msgid "Unable to detect endian-ness in file"
+#: ../src/backend/filters/ionClip.cpp:554
+msgid "Position that plane passes through"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:48
-msgid "Error opening file, check name and permissions."
-msgstr "Fehler beim Öffnen der Datei, überprüfe Namen und Berechtigungen."
+#: ../src/backend/filters/ionClip.cpp:559
+msgid "Plane Normal"
+msgstr "El Avión Normal"
 
-#: ../src/backend/APT/APTRanges.cpp:49
-msgid ""
-"Error interpreting range file header, expecting ion count and range count, "
-"respectively."
+#: ../src/backend/filters/ionClip.cpp:562
+msgid "Perpendicular direction for plane"
 msgstr ""
-"Fehler beim Rangedatei interpretieren, erwarte Ionenanzahl bzw. Rangeanzahl."
 
-#: ../src/backend/APT/APTRanges.cpp:50
-msgid ""
-"Range file appears to be empty, check file is a proper range file and is not "
-"empty."
+#: ../src/backend/filters/ionClip.cpp:576
+msgid "Centre of cylinder"
 msgstr ""
-"Rangedatei scheint leer zu sein. Prüfe ob die Datei wirklich ein Rangedatei "
-"und nicht leer ist."
 
-#: ../src/backend/APT/APTRanges.cpp:51
-msgid "Error reading the long name for ion."
-msgstr "Fehler beim Lesen des langen Namens für Ion."
-
-#: ../src/backend/APT/APTRanges.cpp:52
-msgid "Error reading the short name for ion."
-msgstr "Fehler beim Lesen des kurzen Namens für Ion."
+#: ../src/backend/filters/ionClip.cpp:581
+#: ../src/backend/filters/spatialAnalysis.cpp:947
+#: ../src/backend/filters/profile.cpp:1025
+#: ../src/backend/filters/transform.cpp:1293
+msgid "Axis"
+msgstr "Eje"
 
-#: ../src/backend/APT/APTRanges.cpp:53
-msgid ""
-"Error reading colour data in the file, expecting 3 decimal values, space "
-"separated."
+#: ../src/backend/filters/ionClip.cpp:584
+msgid "Positive vector for cylinder"
 msgstr ""
-"Fehler beim Lesen der Farbinformationen in der Datei. Erwarte 3, durch "
-"Leerzeichen getrennte, Dezimalwerte."
 
-#: ../src/backend/APT/APTRanges.cpp:54
-msgid ""
-"Tried skipping to table separator line (line with dashes), but did not find "
-"it."
+#: ../src/backend/filters/ionClip.cpp:589
+#: ../src/backend/filters/profile.cpp:1033
+msgid "Lock Axis Mag."
+msgstr "Eje de cerradura Mag."
+
+#: ../src/backend/filters/ionClip.cpp:592
+msgid "Prevent changing length of cylinder during 3D interaction"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:55
-msgid ""
-"Number of ions in the table header did not match the number specified at the "
-"start of the file"
+#: ../src/backend/filters/ionClip.cpp:600
+#: ../src/backend/filters/profile.cpp:1044
+msgid "Radius of cylinder"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:56
-msgid ""
-"Unexpected failure whilst trying to skip over range lead-in data (bit before "
-"range start value)"
+#: ../src/backend/filters/ionClip.cpp:613
+msgid "Centre of axis aligned box"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:57
-msgid ""
-"Range table had an incorrect number of entries, should be 2 or 3 + number of "
-"ranges"
+#: ../src/backend/filters/ionClip.cpp:618
+msgid "Corner offset"
+msgstr "Esquina offset"
+
+#: ../src/backend/filters/ionClip.cpp:621
+msgid "Vector to corner of box"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:58
-msgid "Unable to read range start and end values"
-msgstr "Kann Anfangs und Endwert des Range nicht lesen"
+#: ../src/backend/filters/clusterAnalysis.cpp:84
+#: ../src/backend/filters/clusterAnalysis.cpp:1060
+msgid "Size Distribution"
+msgstr "Distribución de medida"
 
-#: ../src/backend/APT/APTRanges.cpp:59
-msgid "Unable to read range table entry"
-msgstr "Kann Rangetabelleneintrag nich lesen"
+#: ../src/backend/filters/clusterAnalysis.cpp:85
+msgid "Chemistry Distribution"
+msgstr "Chemistry Distribución"
 
-#: ../src/backend/APT/APTRanges.cpp:60
-msgid ""
-"Error reading file, unexpected format, are you sure it is a proper range "
-"file?"
-msgstr ""
-"Fehler beim Lesen der Datei: Unerwartetes Format, sind Sie sicher, dass dies "
-"eine korrekte Rangedatei ist?"
+#: ../src/backend/filters/clusterAnalysis.cpp:503
+msgid "No range data. Can't cluster."
+msgstr "Ningún dato de gama. Puede no grupo."
 
-#: ../src/backend/APT/APTRanges.cpp:61
+#: ../src/backend/filters/clusterAnalysis.cpp:514
 msgid ""
-"Too many ranges appeared to have range entries with no usable data (eg, all "
-"blank)"
-msgstr "Zu viele Ranges scheinen  ungültige Einträge zu haben (z.B. alle leer)"
+"No ranges selected for cluster \"core\". Cannot continue with clustering."
+msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:62
+#: ../src/backend/filters/clusterAnalysis.cpp:523
 msgid ""
-"Range file appears to contain malformed data, check things like start and "
-"ends of m/c are not equal or flipped."
+"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:63
-msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
-msgstr "Rangedatei schein inkonsistent zu sein (z.B. überlappende Ranges)"
-
-#: ../src/backend/APT/APTRanges.cpp:64
-msgid "No ion name mapping found  for multiple ion."
+#: ../src/backend/filters/clusterAnalysis.cpp:689
+msgid "Morphology Plot"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:65
-msgid "Polyatomic extension range matches multiple masses in first section"
+#: ../src/backend/filters/clusterAnalysis.cpp:690
+msgid "\\lambda_1:\\lambda_2 ratio"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:66
-msgid "Range file is exceedingly large. Refusing to open"
+#: ../src/backend/filters/clusterAnalysis.cpp:691
+msgid "\\lambda_2:\\lambda_3 ratio"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:1404
-msgid ""
-"Range headings do not match order of the ions listed in the name "
-"specifications. The name specification ordering will be used when reading "
-"the range table, as the range heading section is declared as a comment in "
-"the file-format specifications, and is not to be intepreted by this program. "
-"Check range-species associations actually match what you expect."
+#: ../src/backend/filters/clusterAnalysis.cpp:736
+msgid "No clusters had sufficient dimensionality to compute singular values"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:73
-msgid "Arrow"
-msgstr "Pfeil"
+#: ../src/backend/filters/clusterAnalysis.cpp:794
+msgid "Found :"
+msgstr "Encontrado :"
 
-#: ../src/backend/filters/annotation.cpp:74
-msgid "Text"
-msgstr "Text"
+#: ../src/backend/filters/clusterAnalysis.cpp:796
+msgid " clusters"
+msgstr " Grupos"
 
-#: ../src/backend/filters/annotation.cpp:75
-msgid "Arrow+Text"
-msgstr "Pfeil+Text"
+#: ../src/backend/filters/clusterAnalysis.cpp:888
+msgid "Compositions (fractional, core+bulk)"
+msgstr "Composiciones (fractional, núcleo+bulk)"
 
-#: ../src/backend/filters/annotation.cpp:76
-msgid "Angle"
-msgstr "Winkel"
+#: ../src/backend/filters/clusterAnalysis.cpp:890
+msgid "Compositions (fractional, core only)"
+msgstr "Composiciones (fractional, núcleo sólo)"
 
-#: ../src/backend/filters/annotation.cpp:77
-msgid "Ruler"
-msgstr "Lineal"
+#: ../src/backend/filters/clusterAnalysis.cpp:908
+msgid "Frequencies (core+bulk)"
+msgstr "Frecuencias (núcleo+bulk)"
 
-#: ../src/backend/filters/annotation.cpp:524
-msgid "Enable"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:939
+msgid "Core Link + Erode"
+msgstr "Vínculo de núcleo + Erosiona"
 
-#: ../src/backend/filters/annotation.cpp:527
-msgid "Enable/disable annotation"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:943
+#: ../src/backend/filters/clusterAnalysis.cpp:951
+#: ../src/backend/filters/spatialAnalysis.cpp:707
+#: ../src/backend/filters/spatialAnalysis.cpp:715
+#: ../src/backend/filters/transform.cpp:1156
+#: ../src/backend/filters/ionInfo.cpp:549
+msgid "Algorithm"
+msgstr "Algoritmo"
 
-#: ../src/backend/filters/annotation.cpp:548
-msgid "Type or style of annotation"
+#: ../src/backend/filters/clusterAnalysis.cpp:947
+msgid "Cluster algorithm mode"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:564
-#: ../src/backend/filters/annotation.cpp:668
-msgid "Text of annotation"
+#: ../src/backend/filters/clusterAnalysis.cpp:958
+msgid "Core Classify"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:568
-#: ../src/backend/filters/ionClip.cpp:529
-#: ../src/backend/filters/ionClip.cpp:551
-#: ../src/backend/filters/ionClip.cpp:573
-#: ../src/backend/filters/ionClip.cpp:610
-#: ../src/backend/filters/transform.cpp:1233
-#: ../src/backend/filters/transform.cpp:1260
-#: ../src/backend/filters/transform.cpp:1286
-#: ../src/backend/filters/profile.cpp:1013
-#: ../src/backend/filters/profile.cpp:1051
-#: ../src/backend/filters/spatialAnalysis.cpp:1041 ../src/gl/cameras.cpp:603
-msgid "Origin"
-msgstr "Ursprung"
-
-#: ../src/backend/filters/annotation.cpp:572
-msgid "Position of annotation"
+#: ../src/backend/filters/clusterAnalysis.cpp:961
+msgid ""
+"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:576
-#: ../src/backend/filters/annotation.cpp:683
-#: ../src/backend/filters/annotation.cpp:742
-#: ../src/backend/filters/annotation.cpp:831
-msgid "Up dir"
-msgstr "Up dir"
+#: ../src/backend/filters/clusterAnalysis.cpp:967
+msgid "Core Classify Dist"
+msgstr "El Núcleo Clasifica Dist"
 
-#: ../src/backend/filters/annotation.cpp:580
-#: ../src/backend/filters/annotation.cpp:835
-msgid "Vector for up direction of annotation text"
+#: ../src/backend/filters/clusterAnalysis.cpp:970
+msgid "Restrict only atoms by distance to be cluster sources"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:584
-#: ../src/backend/filters/annotation.cpp:690
-#: ../src/backend/filters/annotation.cpp:734
-#: ../src/backend/filters/annotation.cpp:839
-msgid "Across dir"
-msgstr "Across dir"
+#: ../src/backend/filters/clusterAnalysis.cpp:975
+msgid "Classify Knn Max"
+msgstr "Clasifica Knn Max"
 
-#: ../src/backend/filters/annotation.cpp:588
-#: ../src/backend/filters/annotation.cpp:843
-msgid "Reading direction for annotation"
+#: ../src/backend/filters/clusterAnalysis.cpp:978
+msgid ""
+"Require that the kth NN (this number) is within the classify distance, to be "
+"a cluster source"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:593
-#: ../src/backend/filters/annotation.cpp:675
-#: ../src/backend/filters/annotation.cpp:769
-msgid "Text size"
-msgstr "Textgröße"
+#: ../src/backend/filters/clusterAnalysis.cpp:984
+msgid "Core Link Dist"
+msgstr "Vínculo de núcleo Dist"
 
-#: ../src/backend/filters/annotation.cpp:597
-#: ../src/backend/filters/annotation.cpp:679
-#: ../src/backend/filters/annotation.cpp:851
-msgid "Relative size of annotation text"
+#: ../src/backend/filters/clusterAnalysis.cpp:987
+msgid "Distance between clusters to allow linking"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:609
-#: ../src/backend/filters/annotation.cpp:650
-msgid "3D position for tail of arrow"
+#: ../src/backend/filters/clusterAnalysis.cpp:992
+msgid "Bulk Link"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:617
-#: ../src/backend/filters/annotation.cpp:659
-msgid "3D Position to which arrow points"
+#: ../src/backend/filters/clusterAnalysis.cpp:995
+#: ../src/backend/filters/clusterAnalysis.cpp:1012
+msgid "Enable  linking of non-cluster species - eg for composition analysis "
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:620
-#: ../src/backend/filters/annotation.cpp:730
-msgid "Positioning"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1002
+msgid "Bulk Link (Envelope) Dist"
+msgstr "Bulk Vínculo (Envelope) Dist"
 
-#: ../src/backend/filters/annotation.cpp:625
-#: ../src/backend/filters/annotation.cpp:697
-msgid "Tip radius"
+#: ../src/backend/filters/clusterAnalysis.cpp:1005
+msgid ""
+"Distance from core points that form cluster that is used to grab surrounding "
+"bulk points"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:629
-msgid "Size of the arrow head"
+#: ../src/backend/filters/clusterAnalysis.cpp:1009
+msgid "Erosion"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:633
-msgid "Line size"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1018
+msgid "Erode Dist"
+msgstr "Erosiona Dist"
 
-#: ../src/backend/filters/annotation.cpp:637
-msgid "Thickness of line used to draw arrow stem"
+#: ../src/backend/filters/clusterAnalysis.cpp:1021
+msgid ""
+"Distance from unclustered material in which bulk points are eroded from "
+"cluster"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:671
-msgid "Options"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1028
+msgid "Clustering Params"
+msgstr "Clustering Params"
 
-#: ../src/backend/filters/annotation.cpp:707
-msgid "Position A"
-msgstr "Position A"
+#: ../src/backend/filters/clusterAnalysis.cpp:1033
+msgid "Size Cropping"
+msgstr "Medida Cropping"
 
-#: ../src/backend/filters/annotation.cpp:711
-msgid "Location of first non-central vertex"
+#: ../src/backend/filters/clusterAnalysis.cpp:1036
+msgid "Remove clusters based upon size distribution"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:715
-msgid "Origin "
-msgstr "Ursprung "
+#: ../src/backend/filters/clusterAnalysis.cpp:1043
+msgid "Min Size"
+msgstr "Tamaño Min"
 
-#: ../src/backend/filters/annotation.cpp:719
-msgid "Location of central vertex"
+#: ../src/backend/filters/clusterAnalysis.cpp:1046
+msgid "Remove clusters below this size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:723
-msgid "Position B"
-msgstr "Position B"
-
-#: ../src/backend/filters/annotation.cpp:727
-msgid "Location of second non-central vertex"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1051
+msgid "Max Size"
+msgstr "Tamaño Max"
 
-#: ../src/backend/filters/annotation.cpp:738
-msgid "Reading direction for angle text"
+#: ../src/backend/filters/clusterAnalysis.cpp:1054
+msgid "Remove clusters above this size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:743
-msgid "Vector for up direction of angle text"
+#: ../src/backend/filters/clusterAnalysis.cpp:1063
+msgid "Show number of clusters as a function of cluster size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:751
-msgid "Reflexive"
-msgstr "Reflexive"
+#: ../src/backend/filters/clusterAnalysis.cpp:1069
+msgid "Log Scale"
+msgstr "Log Escala"
 
-#: ../src/backend/filters/annotation.cpp:754
-msgid "Measure interor (enabled) or exterior angle (disabled)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1072
+msgid "Use logarithmic scale for size distribution"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:759
-msgid "Show Angle"
-msgstr "Zeige Winkel"
-
-#: ../src/backend/filters/annotation.cpp:763
-msgid "Display angle text (when enabled)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1079
+msgid "Morphology Dist."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:773
-msgid "Size of angle text"
+#: ../src/backend/filters/clusterAnalysis.cpp:1082
+msgid "Create a plot showing cluster aspect ratio"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:791
-msgid "Digit format"
-msgstr "Zahlenformat"
-
-#: ../src/backend/filters/annotation.cpp:795
-msgid ""
-"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
-"gives 12.34"
+#: ../src/backend/filters/clusterAnalysis.cpp:1088
+msgid "Cluster Id"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:801
-#: ../src/backend/filters/annotation.cpp:886
-msgid "Sphere size"
-msgstr "Kugelgröße"
-
-#: ../src/backend/filters/annotation.cpp:805
-#: ../src/backend/filters/annotation.cpp:890
-msgid "Marker sphere size for manipulating tool"
+#: ../src/backend/filters/clusterAnalysis.cpp:1091
+msgid "Assign cluster output a unique per-cluster value (id)."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:819
-msgid "Ruler beginning 3D location"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1098
+msgid "Chemistry Dist."
+msgstr "Chemistry Dist."
 
-#: ../src/backend/filters/annotation.cpp:827
-msgid "Ruler finish 3D location"
+#: ../src/backend/filters/clusterAnalysis.cpp:1101
+msgid "Create a plot showing chemistry for each cluster size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:848
-#: ../src/backend/filters/boundingBox.cpp:715
-msgid "Font Size"
-msgstr "Schriftgröße"
-
-#: ../src/backend/filters/annotation.cpp:857
-msgid "Fixed ticks"
-msgstr "Fixe Marker"
+#: ../src/backend/filters/clusterAnalysis.cpp:1108
+#: ../src/backend/filters/spatialAnalysis.cpp:1006
+#: ../src/backend/filters/profile.cpp:1111
+#: ../src/backend/filters/ionInfo.cpp:465
+msgid "Normalise"
+msgstr "Normaliza"
 
-#: ../src/backend/filters/annotation.cpp:860
-msgid ""
-"Use fixed (enabled) number of text markers, or one every fixed distance "
-"(disabled)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1111
+msgid "Convert cluster counts to composition"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:867
-msgid "Num Ticks"
-msgstr "Anzahl Marker"
+#: ../src/backend/filters/clusterAnalysis.cpp:1117
+msgid "Postprocess"
+msgstr "Postprocess"
 
-#: ../src/backend/filters/annotation.cpp:870
-msgid "Number of tick marks along ruler"
+#: ../src/backend/filters/clusterAnalysis.cpp:1136
+msgid "If selected, use as \"core\" ion type (can make clusters)"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:877
-msgid "Tick Spacing"
-msgstr "Markerabstand"
+#: ../src/backend/filters/clusterAnalysis.cpp:1141
+msgid "Core Ranges"
+msgstr "Gamas de núcleo"
 
-#: ../src/backend/filters/annotation.cpp:880
-msgid "Distance between tick marks along ruler"
+#: ../src/backend/filters/clusterAnalysis.cpp:1147
+msgid "Enable/Disable All"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:904
-msgid "Colour for ruler and ticks"
+#: ../src/backend/filters/clusterAnalysis.cpp:1151
+msgid "Enable/disable all ions"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:65 ../src/backend/filters/profile.cpp:53
-msgid "Sphere"
-msgstr "Kugel"
-
-#: ../src/backend/filters/ionClip.cpp:66
-msgid "Plane"
-msgstr "Ebene"
-
-#: ../src/backend/filters/ionClip.cpp:67
-msgid "Cylinder"
-msgstr "Zylinder"
+#: ../src/backend/filters/clusterAnalysis.cpp:1164
+msgid ""
+"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
+msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:68
-msgid "Aligned box"
-msgstr "Ausgerichtete Box"
+#: ../src/backend/filters/clusterAnalysis.cpp:1169
+msgid "Bulk Ranges"
+msgstr "Bulk Gamas"
 
-#: ../src/backend/filters/ionClip.cpp:498
-#: ../src/backend/filters/profile.cpp:991
-msgid "Primitive"
-msgstr "Primitiv"
+#: ../src/backend/filters/clusterAnalysis.cpp:1185
+msgid "Max. Sep + Erode"
+msgstr "Max. Sep + Erosiona"
 
-#: ../src/backend/filters/ionClip.cpp:501
-msgid "Shape of clipping object"
+#: ../src/backend/filters/clusterAnalysis.cpp:1938
+msgid " --------------------------- Parameter selection notice ------------- "
 msgstr ""
+" --------------------------- Aviso de selección del parámetro ------------- "
 
-#: ../src/backend/filters/ionClip.cpp:507
-#: ../src/backend/filters/profile.cpp:997
-msgid "Show Primitive"
-msgstr "Zeige Primitiv"
-
-#: ../src/backend/filters/ionClip.cpp:510
-msgid "Display the 3D interaction object"
+#: ../src/backend/filters/clusterAnalysis.cpp:1939
+msgid "You have specified a bulk distance larger than half your link distance."
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:515
-msgid "Invert Clip"
-msgstr "Invertiere Clip"
-
-#: ../src/backend/filters/ionClip.cpp:518
+#: ../src/backend/filters/clusterAnalysis.cpp:1940
 msgid ""
-"Switch between retaining points inside (false) and outside (true) of "
-"primitive"
+"You can do this; thats OK, but the output is no longer independent of the "
+"computational process;"
 msgstr ""
+"Puedes hacer esto; thats OK, pero la producción es no más largo "
+"independiente del computational proceso;"
 
-#: ../src/backend/filters/ionClip.cpp:532
-#: ../src/backend/filters/profile.cpp:1054
-msgid "Position for centre of sphere"
+#: ../src/backend/filters/clusterAnalysis.cpp:1941
+msgid ""
+"This will be a problem in the case where two or more clusters can equally "
+"lay claim to a \"bulk\" ion. "
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:537
-#: ../src/backend/filters/ionClip.cpp:597
-#: ../src/backend/filters/profile.cpp:1037
-#: ../src/backend/filters/profile.cpp:1059
-#: ../src/backend/filters/spatialAnalysis.cpp:134
-#: ../src/backend/filters/spatialAnalysis.cpp:1058
-msgid "Radius"
-msgstr "Radius"
+#: ../src/backend/filters/clusterAnalysis.cpp:1942
+msgid ""
+" If your inter-cluster distance is sufficiently large (larger than your bulk "
+"linking distance), then you can get away with this."
+msgstr ""
+" Si vuestro inter-distancia de grupo es suficientemente grande (más grande "
+"que vuestro bulk enlazando distancia), entonces puedes conseguir fuera con "
+"esto."
 
-#: ../src/backend/filters/ionClip.cpp:540
-#: ../src/backend/filters/profile.cpp:1062
-msgid "Radius of sphere"
+#: ../src/backend/filters/clusterAnalysis.cpp:1943
+msgid ""
+" In theory it is possible to \"join\" the clusters, but this has not been "
+"implemented for speed reasons."
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:554
-msgid "Position that plane passes through"
+#: ../src/backend/filters/clusterAnalysis.cpp:1944
+msgid ""
+"If you want this, please contact the author, or just use the source to add "
+"this in yourself."
 msgstr ""
+"Si quieres esto, complacer contactar el autor, o justo utilizar la fuente "
+"para añadir esto en tú."
 
-#: ../src/backend/filters/ionClip.cpp:559
-msgid "Plane Normal"
-msgstr "Plane Normal"
+#: ../src/backend/filters/clusterAnalysis.cpp:1945
+msgid "---------------------------------------------------------------------- "
+msgstr "---------------------------------------------------------------------- "
 
-#: ../src/backend/filters/ionClip.cpp:562
-msgid "Perpendicular direction for plane"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1955
+#: ../src/backend/filters/spatialAnalysis.cpp:476
+#: ../src/backend/filters/spatialAnalysis.cpp:2166
+#: ../src/backend/filters/spatialAnalysis.cpp:2595
+#: ../src/backend/filters/spatialAnalysis.cpp:2887
+#: ../src/backend/filters/spatialAnalysis.cpp:3188
+#: ../src/backend/filters/spatialAnalysis.cpp:3334
+#: ../src/backend/filters/spatialAnalysis.cpp:3597
+#: ../src/backend/filters/spatialAnalysis.cpp:3810
+#: ../src/backend/filters/transform.cpp:1015
+msgid "Collate"
+msgstr "Intercalar"
 
-#: ../src/backend/filters/ionClip.cpp:576
-msgid "Centre of cylinder"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1974
+msgid "Build Core"
+msgstr "Núcleo de complexión"
 
-#: ../src/backend/filters/ionClip.cpp:581
-#: ../src/backend/filters/transform.cpp:1294
-#: ../src/backend/filters/profile.cpp:1021
-#: ../src/backend/filters/spatialAnalysis.cpp:1049
-msgid "Axis"
-msgstr "Achse"
+#: ../src/backend/filters/clusterAnalysis.cpp:2002
+msgid "Core"
+msgstr "Núcleo"
 
-#: ../src/backend/filters/ionClip.cpp:584
-msgid "Positive vector for cylinder"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2125
+msgid "Bulk"
+msgstr "Bulk"
 
-#: ../src/backend/filters/ionClip.cpp:589
-#: ../src/backend/filters/profile.cpp:1029
-msgid "Lock Axis Mag."
-msgstr "Achsen Vergr. sperren"
+#: ../src/backend/filters/clusterAnalysis.cpp:2203
+msgid "Erode"
+msgstr "Erosión"
 
-#: ../src/backend/filters/ionClip.cpp:592
-msgid "Prevent changing length of cylinder during 3D interaction"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2281
+msgid "Re-Collate"
+msgstr "Re-Cotejar"
 
-#: ../src/backend/filters/ionClip.cpp:600
-#: ../src/backend/filters/profile.cpp:1040
-#: ../src/backend/filters/spatialAnalysis.cpp:1061
-msgid "Radius of cylinder"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2336
+msgid "Classify Core"
+msgstr "Clasifica Núcleo"
 
-#: ../src/backend/filters/ionClip.cpp:613
-msgid "Centre of axis aligned box"
+#: ../src/backend/filters/clusterAnalysis.cpp:2427
+msgid "Build Bulk"
+msgstr "Complexión Bulk"
+
+#: ../src/backend/filters/clusterAnalysis.cpp:2675
+#: ../src/backend/filters/clusterAnalysis.cpp:2878
+msgid "Cluster Size"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:618
-msgid "Corner offset"
-msgstr "Corner offset"
+#: ../src/backend/filters/clusterAnalysis.cpp:2676
+#: ../src/backend/filters/clusterAnalysis.cpp:2882
+msgid "Frequency"
+msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:621
-msgid "Vector to corner of box"
+#: ../src/backend/filters/clusterAnalysis.cpp:2880
+msgid "Composition"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:111
+#: ../src/backend/filters/voxelise.cpp:116
 msgid "None (Raw count)"
-msgstr "Keine (Roh count)"
+msgstr "Ninguno (Crudo contar)"
 
-#: ../src/backend/filters/voxelise.cpp:112
+#: ../src/backend/filters/voxelise.cpp:117
 msgid "Volume (Density)"
-msgstr "Volumen (Dichte)"
+msgstr "Volumen (Densidad)"
 
-#: ../src/backend/filters/voxelise.cpp:113
+#: ../src/backend/filters/voxelise.cpp:118
 msgid "All Ions (conc)"
-msgstr "Alle Ionen (Konz)"
+msgstr "Todos los  Iones (conc)"
 
-#: ../src/backend/filters/voxelise.cpp:114
+#: ../src/backend/filters/voxelise.cpp:119
 msgid "Ratio (Num/Denom)"
-msgstr "Verhältnis (Zähler/Nenner)"
+msgstr "Proporción (Num/Denom)"
 
-#: ../src/backend/filters/voxelise.cpp:118
+#: ../src/backend/filters/voxelise.cpp:123
 msgid "Point Cloud"
-msgstr "Punktwolke"
+msgstr "Nube de punto"
 
-#: ../src/backend/filters/voxelise.cpp:119
+#: ../src/backend/filters/voxelise.cpp:124
 msgid "Isosurface"
 msgstr "Isosurface"
 
-#: ../src/backend/filters/voxelise.cpp:120
+#: ../src/backend/filters/voxelise.cpp:125
 msgid "Axial slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:124
-#: ../src/backend/filters/voxelise.cpp:130
-#: ../src/backend/filters/algorithms/mass.cpp:25
-#: ../src/backend/filters/spectrumPlot.cpp:76 ../src/backend/plot.cpp:28
-msgid "None"
-msgstr "Keiner"
+#: ../src/backend/filters/voxelise.cpp:126
+msgid "Slice"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:125
+#: ../src/backend/filters/voxelise.cpp:131
 msgid "Gaussian (blur)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:126
+#: ../src/backend/filters/voxelise.cpp:132
 msgid "Lapl. of Gauss. (edges)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:131
+#: ../src/backend/filters/voxelise.cpp:137
 msgid "Linear"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:564
+#: ../src/backend/filters/voxelise.cpp:404
+msgid "Counting"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:579
+msgid "Gauss Smooth"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:585
+msgid "Calc. Laplace"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:609
 msgid "Voxel Limits (min,max): ("
-msgstr "Voxel Grenzen (min,max): ("
+msgstr "Voxel Límites (min,max): ("
+
+#: ../src/backend/filters/voxelise.cpp:619
+#: ../src/backend/filters/voxelise.cpp:1139
+msgid "Representation"
+msgstr "Representacion"
 
-#: ../src/backend/filters/voxelise.cpp:709
+#: ../src/backend/filters/voxelise.cpp:924
 msgid "Fixed width"
-msgstr "Fixe Breite"
+msgstr "Anchura fija"
 
-#: ../src/backend/filters/voxelise.cpp:713
+#: ../src/backend/filters/voxelise.cpp:928
 msgid "If true, use fixed size voxels, otherwise use fixed count"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:719
+#: ../src/backend/filters/voxelise.cpp:934
 msgid "Bin width x"
-msgstr "Bin-Breite x"
+msgstr "Ancho de cubo x"
 
-#: ../src/backend/filters/voxelise.cpp:723
+#: ../src/backend/filters/voxelise.cpp:938
 msgid "Voxel size in X direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:727
+#: ../src/backend/filters/voxelise.cpp:942
 msgid "Bin width y"
-msgstr "Bin-Breite y"
+msgstr "Ancho de cubo y"
 
-#: ../src/backend/filters/voxelise.cpp:730
+#: ../src/backend/filters/voxelise.cpp:945
 msgid "Voxel size in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:736
+#: ../src/backend/filters/voxelise.cpp:951
 msgid "Bin width z"
-msgstr "Bin-Breite Z"
+msgstr "Ancho de cubo z"
 
-#: ../src/backend/filters/voxelise.cpp:739
+#: ../src/backend/filters/voxelise.cpp:954
 msgid "Voxel size in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:746
+#: ../src/backend/filters/voxelise.cpp:961
 msgid "Num bins x"
-msgstr "Anzahl Bins x"
+msgstr "Num Cubos x"
 
-#: ../src/backend/filters/voxelise.cpp:750
+#: ../src/backend/filters/voxelise.cpp:965
 msgid "Number of voxels to use in X direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:755
+#: ../src/backend/filters/voxelise.cpp:970
 msgid "Num bins y"
-msgstr "Anzahl Bins y"
+msgstr "Num Cubos y"
 
-#: ../src/backend/filters/voxelise.cpp:758
+#: ../src/backend/filters/voxelise.cpp:973
 msgid "Number of voxels to use in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:764
+#: ../src/backend/filters/voxelise.cpp:979
 msgid "Num bins z"
-msgstr "Anzahl Bins z"
+msgstr "Num Cubos z"
 
-#: ../src/backend/filters/voxelise.cpp:766
+#: ../src/backend/filters/voxelise.cpp:981
 msgid "Number of voxels to use in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:796
+#: ../src/backend/filters/voxelise.cpp:1011
 msgid "Normalise by"
-msgstr "Normalisieren mit"
+msgstr "Normalise Por"
 
-#: ../src/backend/filters/voxelise.cpp:799
+#: ../src/backend/filters/voxelise.cpp:1014
 msgid "Method to use to normalise scalar value in each voxel"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:802
+#: ../src/backend/filters/voxelise.cpp:1017
 msgid "Computation"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:809
-#: ../src/backend/filters/spatialAnalysis.cpp:1233
-#: ../src/backend/filters/spatialAnalysis.cpp:1254
+#: ../src/backend/filters/voxelise.cpp:1024
+#: ../src/backend/filters/spatialAnalysis.cpp:1122
+#: ../src/backend/filters/spatialAnalysis.cpp:1143
 msgid "Numerator"
-msgstr "Zähler"
+msgstr "Numerador"
 
-#: ../src/backend/filters/voxelise.cpp:812
+#: ../src/backend/filters/voxelise.cpp:1027
 msgid "Parmeter \"a\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:829
+#: ../src/backend/filters/voxelise.cpp:1044
 msgid "Enable this ion for numerator"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:841
-#: ../src/backend/filters/voxelise.cpp:862
-#: ../src/backend/filters/spatialAnalysis.cpp:1261
-#: ../src/backend/filters/spatialAnalysis.cpp:1280
+#: ../src/backend/filters/voxelise.cpp:1056
+#: ../src/backend/filters/voxelise.cpp:1077
+#: ../src/backend/filters/spatialAnalysis.cpp:1150
+#: ../src/backend/filters/spatialAnalysis.cpp:1169
 msgid "Denominator"
-msgstr "Nenner"
+msgstr "Denominador"
 
-#: ../src/backend/filters/voxelise.cpp:844
+#: ../src/backend/filters/voxelise.cpp:1059
 msgid "Parameter \"b\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:858
+#: ../src/backend/filters/voxelise.cpp:1073
 msgid "Enable this ion for denominator contribution"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:880
-#: ../src/backend/filters/voxelise.cpp:911
+#: ../src/backend/filters/voxelise.cpp:1095
+#: ../src/backend/filters/voxelise.cpp:1126
 msgid "Filtering"
-msgstr "Filtern"
+msgstr "Filtrar"
 
-#: ../src/backend/filters/voxelise.cpp:884
+#: ../src/backend/filters/voxelise.cpp:1099
 msgid "Smoothing method to use on voxels"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:887
+#: ../src/backend/filters/voxelise.cpp:1102
 msgid "Processing"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:893
+#: ../src/backend/filters/voxelise.cpp:1108
 msgid "Standard Dev"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:897
+#: ../src/backend/filters/voxelise.cpp:1112
 msgid "Filtering Scale"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:903
+#: ../src/backend/filters/voxelise.cpp:1118
 msgid "Kernel Size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:907
+#: ../src/backend/filters/voxelise.cpp:1122
 msgid ""
 "Filter radius, in multiples of std. dev. Larger -> slower, more accurate"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:927
-msgid "Representation"
-msgstr "Representation"
-
-#: ../src/backend/filters/voxelise.cpp:930
+#: ../src/backend/filters/voxelise.cpp:1142
 msgid "3D display method"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:941
+#: ../src/backend/filters/voxelise.cpp:1153
 msgid "Spot size"
-msgstr "Spot size"
+msgstr "Medida de sitio"
 
-#: ../src/backend/filters/voxelise.cpp:944
+#: ../src/backend/filters/voxelise.cpp:1156
 msgid "Size of the spots to use for display"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:949
-#: ../src/backend/filters/voxelise.cpp:984
-#: ../src/backend/filters/voxelise.cpp:1056
+#: ../src/backend/filters/voxelise.cpp:1161
+#: ../src/backend/filters/voxelise.cpp:1196
+#: ../src/backend/filters/voxelise.cpp:1268
+#: ../src/backend/filters/voxelise.cpp:1358
 msgid "Transparency"
-msgstr "Transparenz"
+msgstr "Transparencia"
 
-#: ../src/backend/filters/voxelise.cpp:952
+#: ../src/backend/filters/voxelise.cpp:1164
 msgid "How \"see through\" each point is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:961
+#: ../src/backend/filters/voxelise.cpp:1173
 msgid "Surf. param."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:964
+#: ../src/backend/filters/voxelise.cpp:1176
 msgid "Isovalue"
 msgstr "Isovalue"
 
-#: ../src/backend/filters/voxelise.cpp:967
+#: ../src/backend/filters/voxelise.cpp:1179
 msgid "Scalar value to show as isosurface"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:972
-#: ../src/backend/filters/voxelise.cpp:1037
-#: ../src/backend/filters/spatialAnalysis.cpp:2344
-#: ../src/backend/filters/spatialAnalysis.cpp:2397
+#: ../src/backend/filters/voxelise.cpp:1184
+#: ../src/backend/filters/voxelise.cpp:1249
+#: ../src/backend/filters/voxelise.cpp:1338
+#: ../src/backend/filters/spatialAnalysis.cpp:2212
+#: ../src/backend/filters/spatialAnalysis.cpp:2265
 msgid "Surface"
-msgstr "Oberfläche"
+msgstr "Superficie"
 
-#: ../src/backend/filters/voxelise.cpp:979
+#: ../src/backend/filters/voxelise.cpp:1191
 msgid "Colour of isosurface"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:987
-#: ../src/backend/filters/voxelise.cpp:1059
+#: ../src/backend/filters/voxelise.cpp:1199
+#: ../src/backend/filters/voxelise.cpp:1271
+#: ../src/backend/filters/voxelise.cpp:1361
 msgid "How \"see through\" each facet is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:998
+#: ../src/backend/filters/voxelise.cpp:1210
+#: ../src/backend/filters/voxelise.cpp:1317
 msgid "Slice param."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1006
+#: ../src/backend/filters/voxelise.cpp:1218
 msgid "Slice Axis"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1009
+#: ../src/backend/filters/voxelise.cpp:1221
 msgid "Normal for the planar slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1016
+#: ../src/backend/filters/voxelise.cpp:1228
 msgid "Slice Coord"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1019
+#: ../src/backend/filters/voxelise.cpp:1231
 msgid "Fractional coordinate that slice plane passes through"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1024
+#: ../src/backend/filters/voxelise.cpp:1236
 msgid "Interp. Mode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1032
+#: ../src/backend/filters/voxelise.cpp:1244
 msgid "Interpolation mode for direction normal to slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1048
+#: ../src/backend/filters/voxelise.cpp:1260
+#: ../src/backend/filters/voxelise.cpp:1350
 msgid "Colour mode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1051
-#: ../src/backend/filters/ionColour.cpp:261
+#: ../src/backend/filters/voxelise.cpp:1263
+#: ../src/backend/filters/voxelise.cpp:1353
+#: ../src/backend/filters/ionColour.cpp:293
 msgid "Colour scheme used to assign points colours by value"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1064
-#: ../src/backend/filters/ionColour.cpp:273
+#: ../src/backend/filters/voxelise.cpp:1276
+#: ../src/backend/filters/voxelise.cpp:1366
+#: ../src/backend/filters/ionColour.cpp:305
 msgid "Show Bar"
-msgstr "Zeige Balken"
+msgstr "Barra de espectáculo"
+
+#: ../src/backend/filters/voxelise.cpp:1279
+msgid "Display colour bar in 3D view?"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1071
+#: ../src/backend/filters/voxelise.cpp:1284
+#: ../src/backend/filters/voxelise.cpp:1373
 msgid "Auto Bounds"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1072
+#: ../src/backend/filters/voxelise.cpp:1285
+#: ../src/backend/filters/voxelise.cpp:1374
 msgid "Auto-compute min/max values in map"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1082
-#: ../src/backend/filters/ionColour.cpp:294
+#: ../src/backend/filters/voxelise.cpp:1295
+#: ../src/backend/filters/voxelise.cpp:1384
+#: ../src/backend/filters/ionColour.cpp:337
 msgid "Map start"
-msgstr ""
+msgstr "Inicio de mapa"
 
-#: ../src/backend/filters/voxelise.cpp:1083
-#: ../src/backend/filters/ionColour.cpp:295
+#: ../src/backend/filters/voxelise.cpp:1296
+#: ../src/backend/filters/voxelise.cpp:1385
+#: ../src/backend/filters/ionColour.cpp:338
 msgid "Assign points with this value to the first colour in map"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1090
-#: ../src/backend/filters/ionColour.cpp:302
+#: ../src/backend/filters/voxelise.cpp:1303
+#: ../src/backend/filters/voxelise.cpp:1392
+#: ../src/backend/filters/ionColour.cpp:345
 msgid "Map end"
-msgstr ""
+msgstr "Fin de mapa"
 
-#: ../src/backend/filters/voxelise.cpp:1091
-#: ../src/backend/filters/ionColour.cpp:303
+#: ../src/backend/filters/voxelise.cpp:1304
+#: ../src/backend/filters/voxelise.cpp:1393
+#: ../src/backend/filters/ionColour.cpp:346
 msgid "Assign points with this value to the last colour in map"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:84
-msgid "Translate"
-msgstr "Translate"
+#: ../src/backend/filters/voxelise.cpp:1320
+msgid "Slice Offset"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:85
-msgid "Scale (isotropic)"
+#: ../src/backend/filters/voxelise.cpp:1323
+msgid "Point on plane for slice, in 0->1 coordinates"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:86
-msgid "Scale (anisotropic)"
+#: ../src/backend/filters/voxelise.cpp:1330
+msgid "Slice Normal"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:87
-msgid "Rotate"
-msgstr "Rotieren"
+#: ../src/backend/filters/voxelise.cpp:1333
+msgid "Normal vector for slice"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:88
-msgid "Value Shuffle"
+#: ../src/backend/filters/ionColour.cpp:289
+msgid "Colour Map"
+msgstr "Mapa de color"
+
+#: ../src/backend/filters/ionColour.cpp:297
+msgid "Reverse map"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:89
-msgid "Spatial Noise"
+#: ../src/backend/filters/ionColour.cpp:298
+msgid "Reverse the colour scale"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:90
-msgid "Translate Value"
-msgstr "Translate Wert"
+#: ../src/backend/filters/ionColour.cpp:306
+msgid "Display the colour legend in the 3D view"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:91
-msgid "Crop Value"
+#: ../src/backend/filters/ionColour.cpp:312
+msgid "Opacity"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:95
-msgid "Specify"
-msgstr "Angeben"
+#: ../src/backend/filters/ionColour.cpp:313
+msgid "How see-through to make the legend (0- transparent, 1- solid)"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:96
-msgid "Boundbox Centre"
-msgstr "Boundbox Zentrum"
+#: ../src/backend/filters/ionColour.cpp:320
+msgid "Num Colours"
+msgstr "Num Colores"
 
-#: ../src/backend/filters/transform.cpp:97
-msgid "Mass Centre"
-msgstr "Massen-Zentrum"
-
-#: ../src/backend/filters/transform.cpp:1008
-#: ../src/backend/filters/clusterAnalysis.cpp:1956
-#: ../src/backend/filters/spatialAnalysis.cpp:635
-#: ../src/backend/filters/spatialAnalysis.cpp:2298
-#: ../src/backend/filters/spatialAnalysis.cpp:2727
-#: ../src/backend/filters/spatialAnalysis.cpp:3016
-#: ../src/backend/filters/spatialAnalysis.cpp:3689
-#: ../src/backend/filters/spatialAnalysis.cpp:3952
-#: ../src/backend/filters/spatialAnalysis.cpp:4165
-msgid "Collate"
-msgstr "Abgleichen"
+#: ../src/backend/filters/ionColour.cpp:322
+msgid "Number of unique colours to use in colour map"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1027
-msgid "Mass-to-Charge (Da/e)"
+#: ../src/backend/filters/ionColour.cpp:327
+msgid "Auto bounds"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1081
-msgid "Shuffle"
+#: ../src/backend/filters/ionColour.cpp:329
+msgid "Automatically scale colour to min/max of data range"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1105
-msgid "Splice"
+#: ../src/backend/filters/ionColour.cpp:460 ../src/backend/filter.cpp:197
+msgid "Aborted"
+msgstr "Abortado"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:123
+msgid "Local Density"
+msgstr "Densidad local"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:124
+msgid "Density Filtering"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1153
-msgid "Algorithm to use to transform point data"
+#: ../src/backend/filters/spatialAnalysis.cpp:125
+msgid "Radial Distribution"
+msgstr "Distribución radial"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:126
+msgid "Axial Distribution"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1157
-#: ../src/backend/filters/ionInfo.cpp:546
-#: ../src/backend/filters/clusterAnalysis.cpp:943
-#: ../src/backend/filters/clusterAnalysis.cpp:951
-#: ../src/backend/filters/spatialAnalysis.cpp:800
-#: ../src/backend/filters/spatialAnalysis.cpp:808
-msgid "Algorithm"
-msgstr "Algorithmus"
+#: ../src/backend/filters/spatialAnalysis.cpp:127
+msgid "Binomial Distribution"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1170
-msgid "Origin mode"
+#: ../src/backend/filters/spatialAnalysis.cpp:128
+msgid "Point Em/Replacement"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1173
-msgid "Select how transform origin is computed"
+#: ../src/backend/filters/spatialAnalysis.cpp:129
+msgid "Local Chemistry"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1178
-msgid "Show marker"
-msgstr "Zeige Markierung"
+#: ../src/backend/filters/spatialAnalysis.cpp:133
+msgid "Neighbour Count"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1182
-msgid "Display an interactive object to set transform origin"
+#: ../src/backend/filters/spatialAnalysis.cpp:484
+msgid "Load"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1184
-msgid "Display a small marker to denote transform origin"
+#: ../src/backend/filters/spatialAnalysis.cpp:539
+#: ../src/backend/filters/spatialAnalysis.cpp:2198
+#: ../src/backend/filters/spatialAnalysis.cpp:2251
+#: ../src/backend/filters/spatialAnalysis.cpp:2601
+#: ../src/backend/filters/spatialAnalysis.cpp:2893
+#: ../src/backend/filters/spatialAnalysis.cpp:3200
+#: ../src/backend/filters/spatialAnalysis.cpp:3829
+msgid "Build"
+msgstr "Construir"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:588
+#: ../src/backend/filters/spatialAnalysis.cpp:3222
+#: ../src/backend/filters/spatialAnalysis.cpp:3718
+#: ../src/backend/filters/spatialAnalysis.cpp:3846
+msgid "Compute"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1200
-msgid "Translation"
-msgstr "Translation"
+#: ../src/backend/filters/spatialAnalysis.cpp:710
+msgid "Spatial analysis algorithm to use"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1203
-msgid "Translation vector for transform"
+#: ../src/backend/filters/spatialAnalysis.cpp:734
+#: ../src/backend/filters/spatialAnalysis.cpp:785
+msgid "Stop Mode"
+msgstr "Modo de parón"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:737
+msgid "Method to use to terminate algorithm when examining each point"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1215
-msgid "Offset"
+#: ../src/backend/filters/spatialAnalysis.cpp:744
+msgid "NN Max"
+msgstr "NN Max"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:747
+msgid "Maximum number of neighbours to examine"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1219
-msgid "Scalar to use to offset each point's associated value"
+#: ../src/backend/filters/spatialAnalysis.cpp:754
+msgid "Normalise bins"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1236
-#: ../src/backend/filters/transform.cpp:1263
-msgid "Origin of scale trasnform"
+#: ../src/backend/filters/spatialAnalysis.cpp:757
+msgid ""
+"Normalise counts by binwidth. Needed when comparing NN histograms against "
+"one another"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1243
-#: ../src/backend/filters/transform.cpp:1270
-msgid "Scale Fact."
-msgstr "Skalierungsfaktor"
+#: ../src/backend/filters/spatialAnalysis.cpp:763
+msgid "Show Random"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1246
-#: ../src/backend/filters/transform.cpp:1273
-msgid "Enlargement factor for scaling around origin"
+#: ../src/backend/filters/spatialAnalysis.cpp:766
+msgid "Show a fitted (density matched) theoretical distribution"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1289
-msgid "Origin of rotation"
+#: ../src/backend/filters/spatialAnalysis.cpp:777
+msgid "Dist Max"
+msgstr "Dist Max"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:780
+msgid "Maximum distance from each point for search"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1297
-msgid "Axis around which to revolve"
+#: ../src/backend/filters/spatialAnalysis.cpp:794
+#: ../src/backend/filters/spatialAnalysis.cpp:928
+#: ../src/backend/filters/profile.cpp:1089
+msgid "Num Bins"
+msgstr "Num Cubos"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:797
+#: ../src/backend/filters/spatialAnalysis.cpp:931
+msgid "Number of bins for output 1D RDF plot"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1302
-msgid "Angle (deg)"
-msgstr "Winkel (deg)"
+#: ../src/backend/filters/spatialAnalysis.cpp:803
+msgid "Surface Remove"
+msgstr "La Superficie Saca"
 
-#: ../src/backend/filters/transform.cpp:1305
-msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
+#: ../src/backend/filters/spatialAnalysis.cpp:806
+msgid ""
+"Exclude surface as part of source to minimise bias in RDF (at cost of "
+"increased noise)"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1322
-msgid "Noise Type"
+#: ../src/backend/filters/spatialAnalysis.cpp:813
+msgid "Remove Dist"
+msgstr "Saca Dist"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:816
+msgid "Minimum distance to remove from surface"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1325
-msgid "Method to use to degrade point data"
+#: ../src/backend/filters/spatialAnalysis.cpp:824
+#: ../src/backend/filters/spatialAnalysis.cpp:936
+msgid "Plot colour "
+msgstr "Color de parcela "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:827
+#: ../src/backend/filters/spatialAnalysis.cpp:939
+msgid "Colour of output plot"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1332
-msgid "Noise level"
+#: ../src/backend/filters/spatialAnalysis.cpp:831
+#: ../src/backend/filters/spatialAnalysis.cpp:917
+#: ../src/backend/filters/spatialAnalysis.cpp:922
+#: ../src/backend/filters/spatialAnalysis.cpp:954
+#: ../src/backend/filters/spatialAnalysis.cpp:993
+msgid "Alg. Params."
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1334
-msgid "Standard dev."
-msgstr "Standardabweichung"
+#: ../src/backend/filters/spatialAnalysis.cpp:844
+#: ../src/backend/filters/spatialAnalysis.cpp:1096
+msgid "Source"
+msgstr "Fuente"
 
-#: ../src/backend/filters/transform.cpp:1342
-msgid "Amplitude of noise"
+#: ../src/backend/filters/spatialAnalysis.cpp:847
+msgid "Ions to use for initiating RDF search"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:860
+#: ../src/backend/filters/spatialAnalysis.cpp:1112
+#: ../src/backend/filters/spatialAnalysis.cpp:1138
+msgid "Enable/disable ion as source"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:865
+#: ../src/backend/filters/spatialAnalysis.cpp:1117
+msgid "Source Ion"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:875
+#: ../src/backend/filters/spatialAnalysis.cpp:1153
+msgid "Enable/disable all ions as target"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:887
+#: ../src/backend/filters/spatialAnalysis.cpp:1165
+msgid "Enable/disable this ion as target"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:891
+msgid "Target Ion"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:901
+msgid "Cutoff"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:904
+msgid "Remove points with local density above/below this value"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:910
+msgid "Retain Upper"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:913
+msgid "Retain either points with density above (enabled) or below cutoff"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:950
+msgid "Vector along which to calculate distribution function"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:961
+msgid "Block size"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:964
+msgid "Number of ions to use per block"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:971
+msgid "Max Block Aspect"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:974
+msgid ""
+"Maximum allowable block aspect ratio. Blocks above this aspect are "
+"discarded. Setting too high decreases correlation strength. Too low causes "
+"loss of statistical power."
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:985
+msgid "Extrusion Direction"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:988
+msgid "Direction in which blocks are extended during construction."
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:997
+msgid "Plot Counts"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1000
+msgid "Show the counts in the binomial histogram"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1009
+msgid ""
+"Normalise the counts in the binomial histogram to a probability density "
+"function"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1013
+msgid "Expected Freq"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1016
+msgid ""
+"Show the theoretically expected probability density function for a random "
+"dataset with the same mean"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1024
+msgid "Display Grid"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1027
+msgid "Show the extruded grid in the 3D view. This may be slow"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1031
+msgid "View Options"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1037
+msgid "Data File"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1041
+msgid "Pos file of points to subtract/replace/etc"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1046
+msgid "Match Tol."
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1049
+msgid "Tolerance to allow for matching"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1065
+msgid "Replacment condition"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1071
+msgid "Replace value"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1074
+msgid "Use value data from file when replacing ions"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1356
-msgid "Min Value"
+#: ../src/backend/filters/spatialAnalysis.cpp:1079
+msgid "Replacement"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1360
-msgid "Minimum value to use for crop"
+#: ../src/backend/filters/spatialAnalysis.cpp:1099
+msgid "Enable/disable all ions as source"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1364
-msgid "Max Value"
+#: ../src/backend/filters/spatialAnalysis.cpp:1125
+msgid "Ions to use as Numerator for conc. calculation"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1368
-msgid "Maximum value to use for crop"
+#: ../src/backend/filters/spatialAnalysis.cpp:1681
+msgid "Spatial analysis aborted by user"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1377
-msgid "Transform Params"
-msgstr "Transformationsparameter"
+#: ../src/backend/filters/spatialAnalysis.cpp:1682
+msgid "Insufficient memory for binomial. Reduce input size?"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1738
-msgid "White"
+#: ../src/backend/filters/spatialAnalysis.cpp:1683
+msgid "Required range data not present"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1740
-msgid "Gaussian"
+#: ../src/backend/filters/spatialAnalysis.cpp:1684
+msgid "Unable to generate usable binomial grid"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:259
-msgid "Collate Input"
+#: ../src/backend/filters/spatialAnalysis.cpp:1686
+msgid "Insufficient points to continue"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:348
-msgid "Execute"
+#: ../src/backend/filters/spatialAnalysis.cpp:1687
+msgid "Unable to load file"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:389
-msgid "Collate output"
+#: ../src/backend/filters/spatialAnalysis.cpp:2305
+#: ../src/backend/filters/spatialAnalysis.cpp:2624
+#: ../src/backend/filters/spatialAnalysis.cpp:2917
+msgid "Analyse"
+msgstr "Analiza"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2384
+#: ../src/backend/filters/spatialAnalysis.cpp:2474
+#: ../src/backend/filters/spatialAnalysis.cpp:2540
+msgid "Radial Distance"
+msgstr "Distancia radial"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2386
+#: ../src/backend/filters/spatialAnalysis.cpp:2479
+msgid "Count/Distance"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:564
-#: ../src/backend/filters/externalProgram.cpp:578
-msgid "Command"
-msgstr "Befehl"
+#: ../src/backend/filters/spatialAnalysis.cpp:2391
+#: ../src/backend/filters/spatialAnalysis.cpp:2484
+msgid "NN Freq."
+msgstr "NN Freq."
 
-#: ../src/backend/filters/externalProgram.cpp:567
+#: ../src/backend/filters/spatialAnalysis.cpp:2531
+msgid "Warning, "
+msgstr "Advertencia, "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2532
 msgid ""
-"Full command to send to operating system. See manual for escape sequence "
-"meanings"
+" points were unable to find neighbour points that exceeded the search "
+"radius, and thus terminated prematurely"
 msgstr ""
+" Los Puntos eran incapaces de encontrar puntos de vecino que superaron la "
+"búsqueda radius, y por ello terminated prematurely"
 
-#: ../src/backend/filters/externalProgram.cpp:571
-msgid "Work Dir"
-msgstr "Arbeitsverzeichnis"
+#: ../src/backend/filters/spatialAnalysis.cpp:2542
+msgid " RDF"
+msgstr " RDF"
 
-#: ../src/backend/filters/externalProgram.cpp:574
-msgid "Directory to run the command in"
-msgstr ""
+#: ../src/backend/filters/spatialAnalysis.cpp:2823
+#: ../src/backend/filters/spatialAnalysis.cpp:3123
+msgid "Number Density (\\#/Vol^3)"
+msgstr "Densidad de número (\\#/Vol^3)"
 
-#: ../src/backend/filters/externalProgram.cpp:581
-msgid "Cleanup input"
-msgstr "Bereinige Eingabe"
+#: ../src/backend/filters/spatialAnalysis.cpp:2848
+#: ../src/backend/filters/spatialAnalysis.cpp:3145
+msgid "Warning,"
+msgstr "Advertencia, "
 
-#: ../src/backend/filters/externalProgram.cpp:584
-msgid "Erase input files when command completed"
-msgstr ""
+#: ../src/backend/filters/spatialAnalysis.cpp:2849
+#: ../src/backend/filters/spatialAnalysis.cpp:3146
+msgid " points were un-analysable. These have been dropped"
+msgstr " Los Puntos eran un-analysable. Estos han sido caídos"
 
-#: ../src/backend/filters/externalProgram.cpp:589
-msgid "Cache"
-msgstr "Zwischenspeicher"
+#: ../src/backend/filters/spatialAnalysis.cpp:2871
+#: ../src/backend/filters/spatialAnalysis.cpp:3168
+msgid "And so on..."
+msgstr "Y tan encima..."
 
-#: ../src/backend/filters/externalProgram.cpp:592
-msgid ""
-"Assume program does not alter its output, unless inputs from 3Depict are "
-"altered"
+#: ../src/backend/filters/spatialAnalysis.cpp:3268
+msgid "Insufficient points to complete analysis"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:26
-msgid "Flat TOF"
+#: ../src/backend/filters/spatialAnalysis.cpp:3291
+msgid "Axial Distance"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:33
-msgid "INsufficient bins to perform fit"
+#: ../src/backend/filters/spatialAnalysis.cpp:3293
+msgid " 1D Dist. Func."
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:34
-msgid "Insufficient counts to perform fit"
+#: ../src/backend/filters/spatialAnalysis.cpp:3344
+msgid "Binomial"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:35
-msgid "Insufficient data to perform fit"
+#: ../src/backend/filters/spatialAnalysis.cpp:3477
+#: ../src/backend/filters/spatialAnalysis.cpp:3542
+msgid "Ions in Block"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:36
-msgid "Data did not appear to be random noise - cannot fit noise level"
+#: ../src/backend/filters/spatialAnalysis.cpp:3479
+#: ../src/backend/filters/spatialAnalysis.cpp:3544
+#: ../src/backend/filters/spectrumPlot.cpp:79
+msgid "Probability"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:37
-msgid "Rectilinear"
-msgstr "Geradlinig"
-
-#: ../src/backend/filters/ionInfo.cpp:38
-msgid "Convex hull"
-msgstr "Konvexe Hülle"
-
-#: ../src/backend/filters/ionInfo.cpp:200
-msgid "No ions"
+#: ../src/backend/filters/spatialAnalysis.cpp:3546
+msgid "Count (blocks)"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:226
-#: ../src/backend/filters/spectrumPlot.cpp:432
-msgid ""
-"Background fit failed - input data was considered ill formed (gauss-test)"
+#: ../src/backend/filters/spatialAnalysis.cpp:3611
+msgid "Build Numerator"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:227
-msgid "Following data has not been corrected"
+#: ../src/backend/filters/spatialAnalysis.cpp:3625
+msgid "Build Denominator"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:279
-msgid "--Counts--"
-msgstr "- Anzahl -"
-
-#: ../src/backend/filters/ionInfo.cpp:289
-msgid "Total Ranged\t"
-msgstr "Gesamt ranged\t"
-
-#: ../src/backend/filters/ionInfo.cpp:294
-msgid "Total (incl. unranged)\t"
-msgstr "Total (inkl. nicht geranged)"
-
-#: ../src/backend/filters/ionInfo.cpp:307
-msgid "n/a"
+#: ../src/backend/filters/spatialAnalysis.cpp:3961
+msgid "Relative Conc. (%)"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:317
-#: ../src/backend/filters/ionDownsample.cpp:496
-msgid "Unranged"
-msgstr "Nicht Geranged"
-
-#: ../src/backend/filters/ionInfo.cpp:330
-msgid "Number of points : "
-msgstr "Anzahl der Punkte: "
-
-#: ../src/backend/filters/ionInfo.cpp:359
-msgid "Rectilinear Bounds : "
-msgstr "Geradlinige Grenzen:"
-
-#: ../src/backend/filters/ionInfo.cpp:364
-msgid "Volume (len^3): "
-msgstr "Volumen (Läng.^3)"
+#: ../src/backend/filters/profile.cpp:51
+msgid "Cylinder (axial)"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:381
-msgid "Convex Volume (len^3): "
-msgstr "Konvexes Volumen (Läng.^3)"
+#: ../src/backend/filters/profile.cpp:52
+msgid "Cylinder (radial)"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:384
-msgid "Unable to compute volume"
-msgstr "Kann Volumen nicht berechnen"
+#: ../src/backend/filters/profile.cpp:595
+msgid "Distance"
+msgstr "Distancia"
 
-#: ../src/backend/filters/ionInfo.cpp:413
-msgid "Ranged Density (pts/vol):"
-msgstr "Ranged Dichte (pts / vol):"
+#: ../src/backend/filters/profile.cpp:603
+msgid "Fraction"
+msgstr "Fracción"
 
-#: ../src/backend/filters/ionInfo.cpp:418
-msgid "Total Density (pts/vol):"
-msgstr "Gesamtdichte (pts / vol):"
+#: ../src/backend/filters/profile.cpp:605
+msgid "Density (\\frac{\\#}{len^3})"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:445
-msgid "Compositions"
-msgstr "Zusammensetzungen"
+#: ../src/backend/filters/profile.cpp:632
+msgid "Freq. Profile"
+msgstr "Freq. Perfil"
 
-#: ../src/backend/filters/ionInfo.cpp:446
-msgid "Display compositional data for points in console"
+#: ../src/backend/filters/profile.cpp:684
+msgid "No data remained in profile - cannot display result"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:450
-msgid "Counts"
-msgstr "Anzahl"
-
-#: ../src/backend/filters/ionInfo.cpp:451
-msgid "Display count data for points in console"
+#: ../src/backend/filters/profile.cpp:971
+msgid "Total Density"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:458
-msgid "Ion data"
+#: ../src/backend/filters/profile.cpp:975
+msgid "Do not do per-species analysis, perform density computation only"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:462
-#: ../src/backend/filters/profile.cpp:1107
-#: ../src/backend/filters/clusterAnalysis.cpp:1108
-#: ../src/backend/filters/spatialAnalysis.cpp:1116
-msgid "Normalise"
-msgstr "Normalisieren"
+#: ../src/backend/filters/profile.cpp:989
+msgid "Primitive type"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:466
-msgid "Normalise count data"
+#: ../src/backend/filters/profile.cpp:993
+msgid "Basic shape to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:530
-msgid "Volume"
-msgstr "Volumen"
+#: ../src/backend/filters/profile.cpp:1005
+msgid "Display the 3D composition profile interaction object"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:533
-msgid "Compute volume for point data"
+#: ../src/backend/filters/profile.cpp:1020
+msgid "Position for centre of cylinder"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:549
-msgid "Select volume counting technique"
+#: ../src/backend/filters/profile.cpp:1028
+msgid "Vector between ends of cylinder"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:562
-msgid "Volume data"
+#: ../src/backend/filters/profile.cpp:1036
+msgid "Prevent length of cylinder changing during interaction"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:120
-#: ../src/backend/filters/rangeFile.h:96
-msgid "Ranging"
-msgstr "Ranging"
+#: ../src/backend/filters/profile.cpp:1079
+msgid "Fixed Bin Num"
+msgstr "Cubo fijo Num"
 
-#: ../src/backend/filters/rangeFile.cpp:560
-#: ../src/backend/filters/rangeFile.cpp:580
-#: ../src/backend/filters/dataLoad.cpp:484
-#: ../src/backend/filters/dataLoad.cpp:505
-msgid "File"
-msgstr "Datei"
+#: ../src/backend/filters/profile.cpp:1082
+msgid ""
+"If true, use a fixed number of bins for profile, otherwise use fixed step "
+"size"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:563
-msgid "File to use for range data"
+#: ../src/backend/filters/profile.cpp:1094
+msgid "Number of bins to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:573
-msgid "Drop unranged"
-msgstr "Nicht gerangete ausschalten"
+#: ../src/backend/filters/profile.cpp:1100
+#: ../src/backend/filters/spectrumPlot.cpp:583
+msgid "Bin width"
+msgstr "Ancho de cubo"
 
-#: ../src/backend/filters/rangeFile.cpp:575
-msgid "Remove unranged points when generating output"
+#: ../src/backend/filters/profile.cpp:1106
+msgid "Size of each bin in profile"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:585
-msgid "Legend"
+#: ../src/backend/filters/profile.cpp:1115
+msgid "Convert bin counts into relative frequencies in each bin"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:587
-msgid "Display colour legend for enabled ions"
+#: ../src/backend/filters/profile.cpp:1119
+msgid "Min. events"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:591
-msgid "View"
+#: ../src/backend/filters/profile.cpp:1123
+msgid "Drop data that does not have this many events"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:607
-msgid "All Ions"
-msgstr "Alle Ionen"
-
-#: ../src/backend/filters/rangeFile.cpp:608
-msgid "Enable/disable all ions at once"
+#: ../src/backend/filters/profile.cpp:1126
+msgid "Settings"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:616
-msgid "Species"
-msgstr ""
+#: ../src/backend/filters/profile.cpp:1148
+#: ../src/backend/filters/spectrumPlot.cpp:672
+msgid "Plot Type"
+msgstr "Tipo de Trazo"
 
-#: ../src/backend/filters/rangeFile.cpp:623
-msgid "IonID "
-msgstr "IonID "
+#: ../src/backend/filters/profile.cpp:1151
+msgid "Visual style for plot"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:624
-msgid "Enable/disable specified ion"
+#: ../src/backend/filters/profile.cpp:1162
+msgid "Colour of plot"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:634
-msgid "Active Ion "
-msgstr "Actives Ion "
+#: ../src/backend/filters/profile.cpp:1178
+msgid "Err. Estimator"
+msgstr "Err. Estimator"
 
-#: ../src/backend/filters/rangeFile.cpp:636
-msgid "If true, ion is used in output"
+#: ../src/backend/filters/profile.cpp:1181
+msgid "Method of estimating error associated with each bin"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:646
-msgid "Colour "
-msgstr "Farbe"
+#: ../src/backend/filters/profile.cpp:1188
+msgid "Avg. Window"
+msgstr "Avg. Ventana"
 
-#: ../src/backend/filters/rangeFile.cpp:650
-msgid "Colour used to represent ion"
+#: ../src/backend/filters/profile.cpp:1191
+msgid "Number of bins to include in moving average filter"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:673
-msgid "All Ranges"
-msgstr "Alle Range"
-
-#: ../src/backend/filters/rangeFile.cpp:674
-msgid "Enable/disable all ranges"
+#: ../src/backend/filters/profile.cpp:1195
+msgid "Error analysis"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:689
-msgid "Active Rng "
-msgstr "Activer Rng "
+#: ../src/backend/filters/transform.cpp:84
+msgid "Translate"
+msgstr "Trasladar"
 
-#: ../src/backend/filters/rangeFile.cpp:692
-msgid ""
-"Enable/disable specified range (ion must also be enabled to activiate range)"
+#: ../src/backend/filters/transform.cpp:85
+msgid "Scale (isotropic)"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:696
-msgid "Ion "
-msgstr "Ion "
-
-#: ../src/backend/filters/rangeFile.cpp:699
-msgid "Name of ion associate to this range"
+#: ../src/backend/filters/transform.cpp:86
+msgid "Scale (anisotropic)"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:708
-msgid "Start rng "
-msgstr "Start rng "
+#: ../src/backend/filters/transform.cpp:87
+msgid "Rotate"
+msgstr "Girar"
 
-#: ../src/backend/filters/rangeFile.cpp:711
-msgid "Start value for range"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:88
+msgid "Value Shuffle"
+msgstr "Valor Shuffle"
 
-#: ../src/backend/filters/rangeFile.cpp:716
-msgid "End rng "
-msgstr "End rng "
+#: ../src/backend/filters/transform.cpp:89
+msgid "Spatial Noise"
+msgstr "Ruido espacial"
 
-#: ../src/backend/filters/rangeFile.cpp:719
-msgid "Stopping value for range`"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:90
+msgid "Translate Value"
+msgstr "Traduce Valor"
 
-#: ../src/backend/filters/profile.cpp:51
-msgid "Cylinder (axial)"
+#: ../src/backend/filters/transform.cpp:91
+msgid "Crop Value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:52
-msgid "Cylinder (radial)"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:95
+msgid "Specify"
+msgstr "Especifica"
+
+#: ../src/backend/filters/transform.cpp:96
+msgid "Boundbox Centre"
+msgstr "Boundbox Centro"
+
+#: ../src/backend/filters/transform.cpp:97
+msgid "Mass Centre"
+msgstr "Centro de masa"
 
-#: ../src/backend/filters/profile.cpp:591
-msgid "Distance"
-msgstr "Abstand"
+#: ../src/backend/filters/transform.cpp:1080
+msgid "Shuffle"
+msgstr "Orden aleatorio"
 
-#: ../src/backend/filters/profile.cpp:599
-msgid "Fraction"
-msgstr "Anteil"
+#: ../src/backend/filters/transform.cpp:1104
+msgid "Splice"
+msgstr "Reunir"
 
-#: ../src/backend/filters/profile.cpp:601
-msgid "Density (\\frac{\\#}{len^3})"
-msgstr "Dichte (\\frac{\\#}{len^3})"
+#: ../src/backend/filters/transform.cpp:1152
+msgid "Algorithm to use to transform point data"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:628
-msgid "Freq. Profile"
-msgstr "Häufigkeitsprofil"
+#: ../src/backend/filters/transform.cpp:1169
+msgid "Origin mode"
+msgstr "Modo de origen"
 
-#: ../src/backend/filters/profile.cpp:680
-msgid "No data remained in profile - cannot display result"
+#: ../src/backend/filters/transform.cpp:1172
+msgid "Select how transform origin is computed"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:967
-msgid "Total Density"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1177
+msgid "Show marker"
+msgstr "Espectáculo marker"
 
-#: ../src/backend/filters/profile.cpp:971
-msgid "Do not do per-species analysis, perform density computation only"
+#: ../src/backend/filters/transform.cpp:1181
+msgid "Display an interactive object to set transform origin"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:985
-msgid "Primitive type"
+#: ../src/backend/filters/transform.cpp:1183
+msgid "Display a small marker to denote transform origin"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:989
-msgid "Basic shape to use for profile"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1199
+msgid "Translation"
+msgstr "Translation"
 
-#: ../src/backend/filters/profile.cpp:1001
-msgid "Display the 3D composition profile interaction object"
+#: ../src/backend/filters/transform.cpp:1202
+msgid "Translation vector for transform"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1016
-#: ../src/backend/filters/spatialAnalysis.cpp:1044
-msgid "Position for centre of cylinder"
+#: ../src/backend/filters/transform.cpp:1214
+msgid "Offset"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1024
-msgid "Vector between ends of cylinder"
+#: ../src/backend/filters/transform.cpp:1218
+msgid "Scalar to use to offset each point's associated value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1032
-msgid "Prevent length of cylinder changing during interaction"
+#: ../src/backend/filters/transform.cpp:1235
+#: ../src/backend/filters/transform.cpp:1262
+msgid "Origin of scale transform"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1075
-msgid "Fixed Bin Num"
-msgstr "Fix. Bin-Anz."
+#: ../src/backend/filters/transform.cpp:1242
+#: ../src/backend/filters/transform.cpp:1269
+msgid "Scale Fact."
+msgstr "Hecho de escala."
 
-#: ../src/backend/filters/profile.cpp:1078
-msgid ""
-"If true, use a fixed number of bins for profile, otherwise use fixed step "
-"size"
+#: ../src/backend/filters/transform.cpp:1245
+#: ../src/backend/filters/transform.cpp:1272
+msgid "Enlargement factor for scaling around origin"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1085
-#: ../src/backend/filters/spatialAnalysis.cpp:887
-#: ../src/backend/filters/spatialAnalysis.cpp:1021
-msgid "Num Bins"
-msgstr "Bin-Anz."
-
-#: ../src/backend/filters/profile.cpp:1090
-msgid "Number of bins to use for profile"
+#: ../src/backend/filters/transform.cpp:1288
+msgid "Origin of rotation"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1096
-#: ../src/backend/filters/spectrumPlot.cpp:580
-msgid "Bin width"
-msgstr "Bin-Breite"
-
-#: ../src/backend/filters/profile.cpp:1102
-msgid "Size of each bin in profile"
+#: ../src/backend/filters/transform.cpp:1296
+msgid "Axis around which to revolve"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1111
-msgid "Convert bin counts into relative frequencies in each bin"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1301
+msgid "Angle (deg)"
+msgstr "ángulo (deg)"
 
-#: ../src/backend/filters/profile.cpp:1115
-msgid "Min. events"
+#: ../src/backend/filters/transform.cpp:1304
+msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1119
-msgid "Drop data that does not have this many events"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1321
+msgid "Noise Type"
+msgstr "Tipo de ruido"
 
-#: ../src/backend/filters/profile.cpp:1122
-msgid "Settings"
+#: ../src/backend/filters/transform.cpp:1324
+msgid "Method to use to degrade point data"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1144
-#: ../src/backend/filters/spectrumPlot.cpp:669
-msgid "Plot Type"
-msgstr "Plot Type"
+#: ../src/backend/filters/transform.cpp:1331
+msgid "Noise level"
+msgstr "Nivel de ruido"
 
-#: ../src/backend/filters/profile.cpp:1147
-msgid "Visual style for plot"
+#: ../src/backend/filters/transform.cpp:1333
+msgid "Standard dev."
+msgstr "Estándar dev."
+
+#: ../src/backend/filters/transform.cpp:1341
+msgid "Amplitude of noise"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1158
-msgid "Colour of plot"
+#: ../src/backend/filters/transform.cpp:1355
+msgid "Min Value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1174
-msgid "Err. Estimator"
-msgstr "Fehlerschätzer"
+#: ../src/backend/filters/transform.cpp:1359
+msgid "Minimum value to use for crop"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1177
-msgid "Method of estimating error associated with each bin"
+#: ../src/backend/filters/transform.cpp:1363
+msgid "Max Value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1184
-msgid "Avg. Window"
+#: ../src/backend/filters/transform.cpp:1367
+msgid "Maximum value to use for crop"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1187
-msgid "Number of bins to include in moving average filter"
+#: ../src/backend/filters/transform.cpp:1376
+msgid "Transform Params"
+msgstr "Transforma Params"
+
+#: ../src/backend/filters/transform.cpp:1745
+msgid "White"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1191
-msgid "Error analysis"
+#: ../src/backend/filters/transform.cpp:1747
+msgid "Gaussian"
 msgstr ""
 
 #: ../src/backend/filters/boundingBox.cpp:64
@@ -3735,1664 +4038,1504 @@ msgstr ""
 msgid "Dimension"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:571
+#: ../src/backend/filters/boundingBox.cpp:572
 msgid "If true, show box, otherwise hide box"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:584
+#: ../src/backend/filters/boundingBox.cpp:585
 msgid "Style"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:587
+#: ../src/backend/filters/boundingBox.cpp:588
 msgid "Box display mode"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:590
+#: ../src/backend/filters/boundingBox.cpp:591
 msgid "Display mode"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:599
+#: ../src/backend/filters/boundingBox.cpp:600
 msgid "Fixed Tick Num"
-msgstr "Fixed Tick Num"
+msgstr "Fijo Tick Num"
 
-#: ../src/backend/filters/boundingBox.cpp:603
+#: ../src/backend/filters/boundingBox.cpp:604
 msgid ""
 "If true, evenly use specified number of ticks. Otherwise, use distance to "
 "determine tick count"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:611
+#: ../src/backend/filters/boundingBox.cpp:612
 msgid "Num X"
 msgstr "Num X"
 
-#: ../src/backend/filters/boundingBox.cpp:614
+#: ../src/backend/filters/boundingBox.cpp:615
 msgid "Tick count in X direction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:619
+#: ../src/backend/filters/boundingBox.cpp:620
 msgid "Num Y"
 msgstr "Num Y"
 
-#: ../src/backend/filters/boundingBox.cpp:622
+#: ../src/backend/filters/boundingBox.cpp:623
 msgid "Tick count in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:627
+#: ../src/backend/filters/boundingBox.cpp:628
 msgid "Num Z"
 msgstr "Num Z"
 
-#: ../src/backend/filters/boundingBox.cpp:630
+#: ../src/backend/filters/boundingBox.cpp:631
 msgid "Tick count in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:636
+#: ../src/backend/filters/boundingBox.cpp:637
 msgid "Spacing X"
-msgstr "X-Abstand"
+msgstr "Espaciando X"
 
-#: ../src/backend/filters/boundingBox.cpp:640
+#: ../src/backend/filters/boundingBox.cpp:641
 msgid "Distance between ticks on X axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:644
+#: ../src/backend/filters/boundingBox.cpp:645
 msgid "Spacing Y"
-msgstr "Y-Abstand"
+msgstr "Espaciando Y"
 
-#: ../src/backend/filters/boundingBox.cpp:648
+#: ../src/backend/filters/boundingBox.cpp:649
 msgid "Distance between ticks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:652
+#: ../src/backend/filters/boundingBox.cpp:653
 msgid "Spacing Z"
-msgstr "Z-Abstand"
+msgstr "Espaciando Z"
 
-#: ../src/backend/filters/boundingBox.cpp:656
+#: ../src/backend/filters/boundingBox.cpp:657
 msgid "Distance between ticks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:664
+#: ../src/backend/filters/boundingBox.cpp:665
 msgid "Ticks X"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:668
+#: ../src/backend/filters/boundingBox.cpp:669
 msgid "Display tick marks on X axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:672
+#: ../src/backend/filters/boundingBox.cpp:673
 msgid "Ticks Y"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:676
+#: ../src/backend/filters/boundingBox.cpp:677
 msgid "Display tick marks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:680
+#: ../src/backend/filters/boundingBox.cpp:681
 msgid "Ticks Z"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:684
+#: ../src/backend/filters/boundingBox.cpp:685
 msgid "Display tick marks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:687
+#: ../src/backend/filters/boundingBox.cpp:688
 msgid "Tick marks"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:694
+#: ../src/backend/filters/boundingBox.cpp:695
 msgid "Box Colour"
-msgstr "Box Farbe"
+msgstr "Color de caja"
 
-#: ../src/backend/filters/boundingBox.cpp:698
+#: ../src/backend/filters/boundingBox.cpp:699
 msgid "Colour of the bounding box"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:703
+#: ../src/backend/filters/boundingBox.cpp:704
 msgid "Line thickness"
-msgstr "Linienbreite"
+msgstr "Grosor de línea"
 
-#: ../src/backend/filters/boundingBox.cpp:707
+#: ../src/backend/filters/boundingBox.cpp:708
 msgid "Thickness of the lines used to draw the box"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:718
+#: ../src/backend/filters/boundingBox.cpp:716
+#: ../src/backend/filters/annotation.cpp:856
+msgid "Font Size"
+msgstr "Tamaño de tipografía"
+
+#: ../src/backend/filters/boundingBox.cpp:719
 msgid "Relative size for text"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:723
+#: ../src/backend/filters/boundingBox.cpp:724
 msgid "Abs. Coords"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:726
+#: ../src/backend/filters/boundingBox.cpp:727
 msgid "Show labels using aboslute coo-ordinates"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:191
-msgid "Sampling"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:447
-msgid "By Count"
-msgstr "Nach Anzahl"
-
-#: ../src/backend/filters/ionDownsample.cpp:450
-msgid "Sample up to a fixed number of ions"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:456
-msgid "Per Species"
-msgstr "Nach Spezies"
-
-#: ../src/backend/filters/ionDownsample.cpp:460
-msgid "Use species specific (from ranging) sampling values"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:489
-msgid "Sampling value for species"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:505
-#: ../src/backend/filters/ionDownsample.cpp:529
-msgid "Sampling rates"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:513
-msgid "Output Count"
-msgstr "Ausgabe Anzahl"
-
-#: ../src/backend/filters/ionDownsample.cpp:516
-msgid "Sample up to this value of points"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:521
-msgid "Out Fraction"
-msgstr "Ausgabe Anteil"
-
-#: ../src/backend/filters/ionDownsample.cpp:525
-msgid "Sample this fraction of points"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:84
-#: ../src/backend/filters/clusterAnalysis.cpp:1060
-msgid "Size Distribution"
-msgstr "Größenverteilung"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:85
-msgid "Chemistry Distribution"
-msgstr "Chemische Verteilung"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:503
-msgid "No range data. Can't cluster."
-msgstr "Keine Rangedaten. Clusteranalyse nicht möglich."
-
-#: ../src/backend/filters/clusterAnalysis.cpp:514
-msgid ""
-"No ranges selected for cluster \"core\". Cannot continue with clustering."
-msgstr ""
-"Kein Range für cluster \"core\" ausgewählt. Kann mit Clusteranalyse nicht "
-"weitermachen."
-
-#: ../src/backend/filters/clusterAnalysis.cpp:523
-msgid ""
-"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
-msgstr ""
-"Kein Range für \"bulk\" ausgewählt. Kann mit Clusteranalyse nicht "
-"weitermachen."
-
-#: ../src/backend/filters/clusterAnalysis.cpp:689
-msgid "Morphology Plot"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:690
-msgid "\\lambda_1:\\lambda_2 ratio"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:691
-msgid "\\lambda_2:\\lambda_3 ratio"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:736
-msgid "No clusters had sufficient dimensionality to compute singular values"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:794
-msgid "Found :"
-msgstr "Gefunden:"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:796
-msgid " clusters"
-msgstr " Cluster"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:888
-msgid "Compositions (fractional, core+bulk)"
-msgstr "Zusammensetzungen (fractional, core+bulk)"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:890
-msgid "Compositions (fractional, core only)"
-msgstr "Zusammensetzungen (fractional, core only)"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:908
-msgid "Frequencies (core+bulk)"
-msgstr "Häufigkeiten (core+bulk)"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:939
-msgid "Core Link + Erode"
-msgstr "Core Link + Erode"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:947
-msgid "Cluster algorithm mode"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:958
-msgid "Core Classify"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:961
-msgid ""
-"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:967
-msgid "Core Classify Dist"
-msgstr "Core Classify Dist"
+#: ../src/backend/filters/annotation.cpp:73
+msgid "Arrow"
+msgstr "Flecha"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:970
-msgid "Restrict only atoms by distance to be cluster sources"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:74
+msgid "Text"
+msgstr "Texto"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:975
-msgid "Classify Knn Max"
-msgstr "Classify Knn Max"
+#: ../src/backend/filters/annotation.cpp:75
+msgid "Arrow+Text"
+msgstr "Texto+de flecha"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:978
-msgid ""
-"Require that the kth NN (this number) is within the classify distance, to be "
-"a cluster source"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:76
+msgid "Angle"
+msgstr "Ángulo"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:984
-msgid "Core Link Dist"
-msgstr "Core Link Dist"
+#: ../src/backend/filters/annotation.cpp:77
+msgid "Ruler"
+msgstr "Regla"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:987
-msgid "Distance between clusters to allow linking"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:177 ../src/backend/filter.cpp:55
+msgid "Draw"
+msgstr "Sorteo"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:992
-msgid "Bulk Link"
+#: ../src/backend/filters/annotation.cpp:532
+msgid "Enable"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:995
-#: ../src/backend/filters/clusterAnalysis.cpp:1012
-msgid "Enable  linking of non-cluster species - eg for composition analysis "
+#: ../src/backend/filters/annotation.cpp:535
+msgid "Enable/disable annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1002
-msgid "Bulk Link (Envelope) Dist"
-msgstr "Bulk Link (Envelope) Dist"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1005
-msgid ""
-"Distance from core points that form cluster that is used to grab surrounding "
-"bulk points"
+#: ../src/backend/filters/annotation.cpp:556
+msgid "Type or style of annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1009
-msgid "Erosion"
+#: ../src/backend/filters/annotation.cpp:572
+#: ../src/backend/filters/annotation.cpp:676
+msgid "Text of annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1018
-msgid "Erode Dist"
-msgstr "Erode Dist"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1021
-msgid ""
-"Distance from unclustered material in which bulk points are eroded from "
-"cluster"
+#: ../src/backend/filters/annotation.cpp:580
+msgid "Position of annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1028
-msgid "Clustering Params"
-msgstr "Cluster Parameter"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1033
-msgid "Size Cropping"
-msgstr "Größeneinschrankungen"
+#: ../src/backend/filters/annotation.cpp:584
+#: ../src/backend/filters/annotation.cpp:691
+#: ../src/backend/filters/annotation.cpp:750
+#: ../src/backend/filters/annotation.cpp:839
+msgid "Up dir"
+msgstr "Arriba de dir"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1036
-msgid "Remove clusters based upon size distribution"
+#: ../src/backend/filters/annotation.cpp:588
+#: ../src/backend/filters/annotation.cpp:843
+msgid "Vector for up direction of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1043
-msgid "Min Size"
-msgstr "Min Größe"
+#: ../src/backend/filters/annotation.cpp:592
+#: ../src/backend/filters/annotation.cpp:698
+#: ../src/backend/filters/annotation.cpp:742
+#: ../src/backend/filters/annotation.cpp:847
+msgid "Across dir"
+msgstr "Across dir"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1046
-msgid "Remove clusters below this size"
+#: ../src/backend/filters/annotation.cpp:596
+#: ../src/backend/filters/annotation.cpp:851
+msgid "Reading direction for annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1051
-msgid "Max Size"
-msgstr "Max Größe"
+#: ../src/backend/filters/annotation.cpp:601
+#: ../src/backend/filters/annotation.cpp:683
+#: ../src/backend/filters/annotation.cpp:777
+msgid "Text size"
+msgstr "Medida de texto"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1054
-msgid "Remove clusters above this size"
+#: ../src/backend/filters/annotation.cpp:605
+#: ../src/backend/filters/annotation.cpp:687
+#: ../src/backend/filters/annotation.cpp:859
+msgid "Relative size of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1063
-msgid "Show number of clusters as a function of cluster size"
+#: ../src/backend/filters/annotation.cpp:617
+#: ../src/backend/filters/annotation.cpp:658
+msgid "3D position for tail of arrow"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1069
-msgid "Log Scale"
-msgstr "Log. Skala"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1072
-msgid "Use logarithmic scale for size distribution"
+#: ../src/backend/filters/annotation.cpp:625
+#: ../src/backend/filters/annotation.cpp:667
+msgid "3D Position to which arrow points"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1079
-msgid "Morphology Dist."
+#: ../src/backend/filters/annotation.cpp:628
+#: ../src/backend/filters/annotation.cpp:738
+msgid "Positioning"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1082
-msgid "Create a plot showing cluster aspect ratio"
+#: ../src/backend/filters/annotation.cpp:633
+#: ../src/backend/filters/annotation.cpp:705
+msgid "Tip radius"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1088
-msgid "Cluster Id"
+#: ../src/backend/filters/annotation.cpp:637
+msgid "Size of the arrow head"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1091
-msgid "Assign cluster output a unique per-cluster value (id)."
+#: ../src/backend/filters/annotation.cpp:641
+msgid "Line size"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1098
-msgid "Chemistry Dist."
-msgstr "Chemistry Dist."
+#: ../src/backend/filters/annotation.cpp:645
+msgid "Thickness of line used to draw arrow stem"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1101
-msgid "Create a plot showing chemistry for each cluster size"
+#: ../src/backend/filters/annotation.cpp:679
+msgid "Options"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1111
-msgid "Convert cluster counts to composition"
+#: ../src/backend/filters/annotation.cpp:715
+msgid "Position A"
+msgstr "Posición Un"
+
+#: ../src/backend/filters/annotation.cpp:719
+msgid "Location of first non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1117
-msgid "Postprocess"
-msgstr "Postprozess"
+#: ../src/backend/filters/annotation.cpp:723
+msgid "Origin "
+msgstr "Origen"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1136
-msgid "If selected, use as \"core\" ion type (can make clusters)"
+#: ../src/backend/filters/annotation.cpp:727
+msgid "Location of central vertex"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1141
-msgid "Core Ranges"
-msgstr "Core Ranges"
+#: ../src/backend/filters/annotation.cpp:731
+msgid "Position B"
+msgstr "Posición B"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1147
-msgid "Enable/Disable All"
+#: ../src/backend/filters/annotation.cpp:735
+msgid "Location of second non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1152
-msgid "Enable/disable all ions"
+#: ../src/backend/filters/annotation.cpp:746
+msgid "Reading direction for angle text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1165
-msgid ""
-"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
+#: ../src/backend/filters/annotation.cpp:751
+msgid "Vector for up direction of angle text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1170
-msgid "Bulk Ranges"
-msgstr "Bulk Ranges"
+#: ../src/backend/filters/annotation.cpp:759
+msgid "Reflexive"
+msgstr "Reflexive"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1186
-msgid "Max. Sep + Erode"
-msgstr "Max. Sep + Erode"
+#: ../src/backend/filters/annotation.cpp:762
+msgid "Measure interor (enabled) or exterior angle (disabled)"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1939
-msgid " --------------------------- Parameter selection notice ------------- "
-msgstr " --------------------------- Parameterauswahl Notiz ------------- "
+#: ../src/backend/filters/annotation.cpp:767
+msgid "Show Angle"
+msgstr "ángulo de espectáculo"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1940
-msgid "You have specified a bulk distance larger than half your link distance."
+#: ../src/backend/filters/annotation.cpp:771
+msgid "Display angle text (when enabled)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1941
-msgid ""
-"You can do this; thats OK, but the output is no longer independent of the "
-"computational process;"
+#: ../src/backend/filters/annotation.cpp:781
+msgid "Size of angle text"
 msgstr ""
-"Sie könne das machen, das ist in Ordnung, aber die Ausgabe ist nicht länger "
-"unabhängig vom Berechnungsprozess"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1942
+#: ../src/backend/filters/annotation.cpp:799
+msgid "Digit format"
+msgstr "Formato de dígito"
+
+#: ../src/backend/filters/annotation.cpp:803
 msgid ""
-"This will be a problem in the case where two or more clusters can equally "
-"lay claim to a \"bulk\" ion. "
+"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
+"gives 12.34"
 msgstr ""
-"Dies ist ein Problem wenn zwei oder mehrere Cluster auf dasselbe \"bulk\" "
-"Ion Anspruch erheben. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1943
-msgid ""
-" If your inter-cluster distance is sufficiently large (larger than your bulk "
-"linking distance), then you can get away with this."
+#: ../src/backend/filters/annotation.cpp:809
+#: ../src/backend/filters/annotation.cpp:894
+msgid "Sphere size"
+msgstr "Sphere Medida"
+
+#: ../src/backend/filters/annotation.cpp:813
+#: ../src/backend/filters/annotation.cpp:898
+msgid "Marker sphere size for manipulating tool"
 msgstr ""
-" If your inter-cluster distance is sufficiently large (larger than your bulk "
-"linking distance), then you can get away with this."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1944
-msgid ""
-" In theory it is possible to \"join\" the clusters, but this has not been "
-"implemented for speed reasons."
+#: ../src/backend/filters/annotation.cpp:827
+msgid "Ruler beginning 3D location"
 msgstr ""
-"Theoretisch ist es möglich die Cluster zu 'verbinden', dies wurde jedoch aus "
-"Gescheindigkeitsgründen nicht implementiert."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1945
-msgid ""
-"If you want this, please contact the author, or just use the source to add "
-"this in yourself."
+#: ../src/backend/filters/annotation.cpp:835
+msgid "Ruler finish 3D location"
 msgstr ""
-"Sollten Sie dies wollen, kontaktieren Sie den Autor oder verwenden Sie den "
-"Sourcecode um es selbst hinzuzufügen."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1946
-msgid "---------------------------------------------------------------------- "
-msgstr "---------------------------------------------------------------------- "
+#: ../src/backend/filters/annotation.cpp:865
+msgid "Fixed ticks"
+msgstr "Fijo ticks"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1975
-msgid "Build Core"
+#: ../src/backend/filters/annotation.cpp:868
+msgid ""
+"Use fixed (enabled) number of text markers, or one every fixed distance "
+"(disabled)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2003
-msgid "Core"
-msgstr "Kern"
+#: ../src/backend/filters/annotation.cpp:875
+msgid "Num Ticks"
+msgstr "Num Ticks"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2126
-msgid "Bulk"
+#: ../src/backend/filters/annotation.cpp:878
+msgid "Number of tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2204
-msgid "Erode"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:885
+msgid "Tick Spacing"
+msgstr "Tick Espaciando"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2282
-msgid "Re-Collate"
+#: ../src/backend/filters/annotation.cpp:888
+msgid "Distance between tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2337
-msgid "Classify Core"
+#: ../src/backend/filters/annotation.cpp:912
+msgid "Colour for ruler and ticks"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2428
-msgid "Build Bulk"
+#: ../src/backend/filters/ionDownsample.cpp:192
+msgid "Sampling"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2676
-#: ../src/backend/filters/clusterAnalysis.cpp:2879
-msgid "Cluster Size"
+#: ../src/backend/filters/ionDownsample.cpp:448
+msgid "By Count"
+msgstr "Por Contar"
+
+#: ../src/backend/filters/ionDownsample.cpp:451
+msgid "Sample up to a fixed number of ions"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2677
-#: ../src/backend/filters/clusterAnalysis.cpp:2883
-msgid "Frequency"
+#: ../src/backend/filters/ionDownsample.cpp:457
+msgid "Per Species"
+msgstr "Por Especie"
+
+#: ../src/backend/filters/ionDownsample.cpp:461
+msgid "Use species specific (from ranging) sampling values"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2881
-msgid "Composition"
+#: ../src/backend/filters/ionDownsample.cpp:491
+msgid "Sampling value for species"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:123
-msgid "Local Density"
-msgstr "Lokale Dichte"
+#: ../src/backend/filters/ionDownsample.cpp:498
+#: ../src/backend/filters/ionInfo.cpp:317
+msgid "Unranged"
+msgstr "Unranged"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:124
-msgid "Density Filtering"
+#: ../src/backend/filters/ionDownsample.cpp:507
+#: ../src/backend/filters/ionDownsample.cpp:531
+msgid "Sampling rates"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:125
-msgid "Radial Distribution"
-msgstr "Radial Distribution"
+#: ../src/backend/filters/ionDownsample.cpp:515
+msgid "Output Count"
+msgstr "La Producción Cuenta"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:126
-msgid "Axial Distribution"
+#: ../src/backend/filters/ionDownsample.cpp:518
+msgid "Sample up to this value of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:127
-msgid "Binomial Distribution"
-msgstr ""
+#: ../src/backend/filters/ionDownsample.cpp:523
+msgid "Out Fraction"
+msgstr "Fuera de Fracción"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:128
-msgid "Point Em/Replacement"
+#: ../src/backend/filters/ionDownsample.cpp:527
+msgid "Sample this fraction of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:129
-msgid "Local Concentration"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:37
+msgid "Rectilinear"
+msgstr "Rectilínea"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:133
-msgid "Neighbour Count"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:38
+msgid "Convex hull"
+msgstr "Convex hull"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:643
-msgid "Load"
+#: ../src/backend/filters/ionInfo.cpp:200
+msgid "No ions"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:660
-#: ../src/backend/filters/spatialAnalysis.cpp:2330
-#: ../src/backend/filters/spatialAnalysis.cpp:2383
-#: ../src/backend/filters/spatialAnalysis.cpp:2733
-#: ../src/backend/filters/spatialAnalysis.cpp:3022
-#: ../src/backend/filters/spatialAnalysis.cpp:3540
-#: ../src/backend/filters/spatialAnalysis.cpp:4184
-msgid "Build"
+#: ../src/backend/filters/ionInfo.cpp:226
+#: ../src/backend/filters/spectrumPlot.cpp:433
+msgid ""
+"Background fit failed - input data was considered ill formed (gauss-test)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:705
-#: ../src/backend/filters/spatialAnalysis.cpp:3558
-#: ../src/backend/filters/spatialAnalysis.cpp:4073
-#: ../src/backend/filters/spatialAnalysis.cpp:4201
-msgid "Compute"
+#: ../src/backend/filters/ionInfo.cpp:227
+msgid "Following data has not been corrected"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:803
-msgid "Spatial analysis algorithm to use"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:279
+msgid "--Counts--"
+msgstr "--Cuenta--"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:827
-#: ../src/backend/filters/spatialAnalysis.cpp:878
-msgid "Stop Mode"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:289
+msgid "Total Ranged\t"
+msgstr "El Total Abarcó\t"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:830
-msgid "Method to use to terminate algorithm when examining each point"
+#: ../src/backend/filters/ionInfo.cpp:294
+msgid "Total (incl. unranged)\t"
+msgstr "Total (incl. unranged)\t"
+
+#: ../src/backend/filters/ionInfo.cpp:307
+msgid "n/a"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:837
-msgid "NN Max"
-msgstr "NN Max"
+#: ../src/backend/filters/ionInfo.cpp:330
+msgid "Number of points : "
+msgstr "Número de puntos : "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:840
-msgid "Maximum number of neighbours to examine"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:359
+msgid "Rectilinear Bounds : "
+msgstr "Rectilinear Bounds : "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:847
-msgid "Normalise bins"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:364
+msgid "Volume (len^3): "
+msgstr "Volumen (len^3): "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:850
-msgid ""
-"Normalise counts by binwidth. Needed when comparing NN histograms against "
-"one another"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:381
+msgid "Convex Volume (len^3): "
+msgstr "Convex Volumen (len^3): "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:856
-msgid "Show Random"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:384
+msgid "Unable to compute volume"
+msgstr "Incapaz de computar volumen"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:859
-msgid "Show a fitted (density matched) theoretical distribution"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:413
+msgid "Ranged Density (pts/vol):"
+msgstr "Densidad abarcada (pts/vol):"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:870
-msgid "Dist Max"
-msgstr "Abst. Max."
+#: ../src/backend/filters/ionInfo.cpp:418
+msgid "Total Density (pts/vol):"
+msgstr "Densidad total (pts/vol):"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:873
-msgid "Maximum distance from each point for search"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:448
+msgid "Compositions"
+msgstr "Composiciones"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:890
-#: ../src/backend/filters/spatialAnalysis.cpp:1024
-msgid "Number of bins for output 1D RDF plot"
+#: ../src/backend/filters/ionInfo.cpp:449
+msgid "Display compositional data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:896
-msgid "Surface Remove"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:453
+msgid "Counts"
+msgstr "Cuenta"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:899
-msgid ""
-"Exclude surface as part of source to minimise bias in RDF (at cost of "
-"increased noise)"
+#: ../src/backend/filters/ionInfo.cpp:454
+msgid "Display count data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:906
-msgid "Remove Dist"
+#: ../src/backend/filters/ionInfo.cpp:461
+msgid "Ion data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:909
-msgid "Minimum distance to remove from surface"
+#: ../src/backend/filters/ionInfo.cpp:469
+msgid "Normalise count data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:917
-#: ../src/backend/filters/spatialAnalysis.cpp:1029
-msgid "Plot colour "
-msgstr "Plotfarbe "
+#: ../src/backend/filters/ionInfo.cpp:533
+msgid "Volume"
+msgstr "Volumen"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:920
-#: ../src/backend/filters/spatialAnalysis.cpp:1032
-msgid "Colour of output plot"
+#: ../src/backend/filters/ionInfo.cpp:536
+msgid "Compute volume for point data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:924
-#: ../src/backend/filters/spatialAnalysis.cpp:1010
-#: ../src/backend/filters/spatialAnalysis.cpp:1015
-#: ../src/backend/filters/spatialAnalysis.cpp:1064
-#: ../src/backend/filters/spatialAnalysis.cpp:1103
-msgid "Alg. Params."
+#: ../src/backend/filters/ionInfo.cpp:552
+msgid "Select volume counting technique"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:937
-#: ../src/backend/filters/spatialAnalysis.cpp:1207
-msgid "Source"
-msgstr "Quelle"
+#: ../src/backend/filters/ionInfo.cpp:565
+msgid "Volume data"
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:940
-msgid "Ions to use for initiating RDF search"
+#: ../src/backend/filters/dataLoad.cpp:64
+msgid "Auto"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:953
-#: ../src/backend/filters/spatialAnalysis.cpp:1223
-#: ../src/backend/filters/spatialAnalysis.cpp:1249
-msgid "Enable/disable ion as source"
+#: ../src/backend/filters/dataLoad.cpp:65
+msgid "Little"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:958
-#: ../src/backend/filters/spatialAnalysis.cpp:1228
-msgid "Source Ion"
+#: ../src/backend/filters/dataLoad.cpp:66
+msgid "Big"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:965 ../src/gl/cameras.cpp:611
-msgid "Target"
-msgstr "Ziel"
+#: ../src/backend/filters/dataLoad.cpp:69
+msgid "POS Data"
+msgstr "Dato de POS"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:968
-#: ../src/backend/filters/spatialAnalysis.cpp:1264
-msgid "Enable/disable all ions as target"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:70
+msgid "Text Data"
+msgstr "Dato de texto"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:980
-#: ../src/backend/filters/spatialAnalysis.cpp:1276
-msgid "Enable/disable this ion as target"
+#: ../src/backend/filters/dataLoad.cpp:71
+msgid "ATO Data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:984
-msgid "Target Ion"
+#: ../src/backend/filters/dataLoad.cpp:72
+msgid "Tapsim Data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:994
-msgid "Cutoff"
+#: ../src/backend/filters/dataLoad.cpp:73
+msgid "3Dap/Posap OPS Data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:997
-msgid "Remove points with local density above/below this value"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:266
+msgid " does not exist"
+msgstr " No existe"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1003
-msgid "Retain Upper"
+#: ../src/backend/filters/dataLoad.cpp:293
+msgid "Reading File"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1006
-msgid "Retain either points with density above (enabled) or below cutoff"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:308
+#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/backend/filters/dataLoad.cpp:365
+#: ../src/backend/filters/dataLoad.cpp:376
+#: ../src/backend/filters/dataLoad.cpp:436
+#: ../src/backend/filters/dataLoad.cpp:458
+#: ../src/backend/filters/dataLoad.cpp:476
+msgid "Error loading file: "
+msgstr "El Error que carga archivo: "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1052
-msgid "Vector between centre and end of cylinder"
+#: ../src/backend/filters/dataLoad.cpp:338
+msgid "Sampling is active, loaded "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1071
-#: ../src/backend/filters/spatialAnalysis.cpp:3827
-#: ../src/backend/filters/spatialAnalysis.cpp:3886
-msgid "Block size"
+#: ../src/backend/filters/dataLoad.cpp:339
+msgid " available."
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1074
-msgid "Number of ions to use per block"
+#: ../src/backend/filters/dataLoad.cpp:347
+msgid "Loaded entire dataset, "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1081
-msgid "Max Block Aspect"
+#: ../src/backend/filters/dataLoad.cpp:347
+#: ../src/backend/filters/dataLoad.cpp:446
+#: ../src/backend/filters/dataLoad.cpp:468
+#: ../src/backend/filters/dataLoad.cpp:486
+msgid " points."
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1084
+#: ../src/backend/filters/dataLoad.cpp:391
 msgid ""
-"Maximum allowable block aspect ratio. Blocks above this aspect are "
-"discarded. Setting too high decreases correlation strength. Too low causes "
-"loss of statistical power."
+"Data file contained incorrect number of columns -- should be 3 or 4, was "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1095
-msgid "Extrusion Direction"
+#: ../src/backend/filters/dataLoad.cpp:445
+#: ../src/backend/filters/dataLoad.cpp:467
+#: ../src/backend/filters/dataLoad.cpp:485
+msgid "Loaded dataset, "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1098
-msgid "Direction in which blocks are extended during construction."
+#: ../src/backend/filters/dataLoad.cpp:517
+msgid ""
+"Warning:One or more bounds of the loaded data approaches the limits of "
+"numerical stability for the internal data type(magnitude too large). "
+"Consider rescaling data before loading"
 msgstr ""
+"Aviso:Uno o más bounds del dato cargado se acerca los límites de numérico "
+"stability para el tipo de dato interno(la magnitud demasiado grande). "
+"Considera rescaling dato antes de cargar"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1107
-msgid "Plot Counts"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:541
+#: ../src/backend/filters/dataLoad.cpp:562
+#: ../src/backend/filters/rangeFile.cpp:561
+#: ../src/backend/filters/rangeFile.cpp:581
+msgid "File"
+msgstr "Archivo"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1110
-msgid "Show the counts in the binomial histogram"
+#: ../src/backend/filters/dataLoad.cpp:542
+msgid "File from which to load data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1119
+#: ../src/backend/filters/dataLoad.cpp:545
 msgid ""
-"Normalise the counts in the binomial histogram to a probability density "
-"function"
+"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)|*.xml;*.pos;*.txt;*."
+"csv;*.ato;*.ops|All Files|*"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1133
-msgid "Display Grid"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:555
+msgid "File type"
+msgstr "Tipo de fichero"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1142
-msgid "View Options"
+#: ../src/backend/filters/dataLoad.cpp:557
+msgid "Type of file to be loaded"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1148
-msgid "Data File"
+#: ../src/backend/filters/dataLoad.cpp:572
+msgid "Entries per point"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1152
-msgid "Pos file of points to subtract/replace/etc"
+#: ../src/backend/filters/dataLoad.cpp:573
+msgid "Number of decimal values in file per 3D point (normally 4)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1157
-msgid "Match Tol."
+#: ../src/backend/filters/dataLoad.cpp:590
+msgid "Relative offset of each entry in file for point's X position"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1160
-msgid "Tolerance to allow for matching"
+#: ../src/backend/filters/dataLoad.cpp:598
+msgid "Relative offset of each entry in file for point's Y position"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1176
-msgid "Replacment condition"
+#: ../src/backend/filters/dataLoad.cpp:606
+msgid "Relative offset of each entry in file for point's Z position"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1182
-msgid "Replace value"
+#: ../src/backend/filters/dataLoad.cpp:614
+msgid ""
+"Relative offset of each entry in file to use for scalar value of 3D point"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1185
-msgid "Use value data from file when replacing ions"
+#: ../src/backend/filters/dataLoad.cpp:630
+msgid "File \"Endianness\""
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1190
-msgid "Replacement"
+#: ../src/backend/filters/dataLoad.cpp:631
+msgid "On-disk data storage format. If file won't load, just try each"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1210
-msgid "Enable/disable all ions as source"
+#: ../src/backend/filters/dataLoad.cpp:643
+msgid "Recon. Width"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1236
-msgid "Ions to use as Numerator for conc. calculation"
+#: ../src/backend/filters/dataLoad.cpp:644
+msgid ""
+"Width of box onto which to place reconstructed detector hits (similar to tip "
+"radius)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1785
-msgid "Spatial analysis aborted by user"
-msgstr "Spatial analysis aborted by user"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:1786
-msgid "Insufficient memory to complete analysis"
+#: ../src/backend/filters/dataLoad.cpp:653
+msgid "Ion Volume"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1787
-msgid "Required range data not present"
+#: ../src/backend/filters/dataLoad.cpp:654
+msgid "Effective volume of an ion (incl. free packing volume)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1788
-msgid "Insufficient memory for binomial. Reduce input size?"
+#: ../src/backend/filters/dataLoad.cpp:662
+msgid "Det. Efficiency"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1789
-msgid "Insufficient points to continue"
+#: ../src/backend/filters/dataLoad.cpp:663
+msgid ""
+"Effiency of system (ions evaporated towards detector/ions detected by "
+"detector)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1790
-msgid "Unable to load file"
+#: ../src/backend/filters/dataLoad.cpp:677
+msgid "Value Label"
+msgstr "Etiqueta de valor"
+
+#: ../src/backend/filters/dataLoad.cpp:681
+msgid "Name for the scalar value associated with each point"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2437
-#: ../src/backend/filters/spatialAnalysis.cpp:2756
-#: ../src/backend/filters/spatialAnalysis.cpp:3046
-msgid "Analyse"
-msgstr "Analyse"
+#: ../src/backend/filters/dataLoad.cpp:684
+msgid "Format params."
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2516
-#: ../src/backend/filters/spatialAnalysis.cpp:2606
-#: ../src/backend/filters/spatialAnalysis.cpp:2672
-msgid "Radial Distance"
-msgstr "Radialer Abstand"
+#: ../src/backend/filters/dataLoad.cpp:690
+msgid "Enabled"
+msgstr "Habilitado"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2518
-#: ../src/backend/filters/spatialAnalysis.cpp:2611
-msgid "Count/Distance"
+#: ../src/backend/filters/dataLoad.cpp:694
+msgid "Load this file?"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2523
-#: ../src/backend/filters/spatialAnalysis.cpp:2616
-msgid "NN Freq."
-msgstr "NN Freq."
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2663
-msgid "Warning, "
-msgstr "Warnung, "
+#: ../src/backend/filters/dataLoad.cpp:705
+msgid "Sample data"
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2664
+#: ../src/backend/filters/dataLoad.cpp:708
 msgid ""
-" points were unable to find neighbour points that exceeded the search "
-"radius, and thus terminated prematurely"
+"Perform random selection on file contents, instead of loading entire file"
 msgstr ""
-" Punkte konnten keine Nachbapunkte die den Suchradius überschritten finden "
-"und beendeten vorzeitig."
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2674
-msgid " RDF"
-msgstr " RDF"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2952
-#: ../src/backend/filters/spatialAnalysis.cpp:3251
-msgid "Number Density (\\#/Vol^3)"
-msgstr "Number Density (\\#/Vol^3)"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2977
-#: ../src/backend/filters/spatialAnalysis.cpp:3271
-msgid "Warning,"
-msgstr "Warnung,"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2978
-#: ../src/backend/filters/spatialAnalysis.cpp:3272
-msgid " points were un-analysable. These have been dropped"
-msgstr " points were un-analysable. These have been dropped"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3000
-#: ../src/backend/filters/spatialAnalysis.cpp:3294
-msgid "And so on..."
-msgstr "Und so weiter..."
+#: ../src/backend/filters/dataLoad.cpp:715
+msgid "Load Limit (MB)"
+msgstr "Límite de carga (MB)"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3376
-msgid "Extract"
+#: ../src/backend/filters/dataLoad.cpp:718
+msgid "Limit for size of data to load"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3449
-msgid "Reduce"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:725
+msgid "Monitor"
+msgstr "Monitor"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3604
-msgid "Insufficient points to complete analysis"
+#: ../src/backend/filters/dataLoad.cpp:729
+msgid ""
+"Watch file timestamp to track changes to file contents from other programs"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3627
-msgid "Axial Distance"
+#: ../src/backend/filters/dataLoad.cpp:733
+msgid "Load params."
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3629
-msgid " 1D Dist. Func."
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:740
+msgid "Default colour "
+msgstr "Default Color "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3698
-msgid "Binomial"
+#: ../src/backend/filters/dataLoad.cpp:743
+msgid "Default colour for points, if not overridden by other filters"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3829
-#: ../src/backend/filters/spatialAnalysis.cpp:3888
-msgid "Rel. Frequency"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:748
+msgid "Draw Size"
+msgstr "Medida de sorteo"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3966
-msgid "Build Numerator"
+#: ../src/backend/filters/dataLoad.cpp:751
+msgid "Default size for points, if not overridden by other filters"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3980
-msgid "Build Denominator"
+#: ../src/backend/filters/spectrumPlot.cpp:77
+msgid "Maximum"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:257
-msgid "Colour Map"
-msgstr "Farbtabelle"
-
-#: ../src/backend/filters/ionColour.cpp:265
-msgid "Reverse map"
+#: ../src/backend/filters/spectrumPlot.cpp:78
+msgid "Max in limit"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:266
-msgid "Reverse the colour scale"
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:171
+msgid "Extrema"
+msgstr "Extrema"
 
-#: ../src/backend/filters/ionColour.cpp:279
-msgid "Opacity"
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:220
+msgid "count"
+msgstr "contar"
 
-#: ../src/backend/filters/ionColour.cpp:286
-msgid "Num Colours"
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:305
+msgid "Mixed data"
+msgstr "Dato mixto"
 
-#: ../src/backend/filters/ionColour.cpp:288
-msgid "Number of unique colours to use in colour map"
+#: ../src/backend/filters/spectrumPlot.cpp:446
+msgid "Background:"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:61
-msgid "Auto"
+#: ../src/backend/filters/spectrumPlot.cpp:505
+msgid "Relative "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:62
-msgid "Little"
+#: ../src/backend/filters/spectrumPlot.cpp:508
+msgid "Probability Density"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:63
-msgid "Big"
+#: ../src/backend/filters/spectrumPlot.cpp:587
+msgid "Step size for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:66
-msgid "POS Data"
-msgstr "Pos-Daten"
-
-#: ../src/backend/filters/dataLoad.cpp:67
-msgid "Text Data"
-msgstr "Text-Daten"
+#: ../src/backend/filters/spectrumPlot.cpp:592
+msgid "Auto Min/max"
+msgstr "Coche Min/max"
 
-#: ../src/backend/filters/dataLoad.cpp:68
-msgid "ATO Data"
+#: ../src/backend/filters/spectrumPlot.cpp:596
+msgid "Automatically compute spectrum upper and lower bound"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:248
-msgid " does not exist"
-msgstr " existiert nicht"
+#: ../src/backend/filters/spectrumPlot.cpp:601
+msgid "Min"
+msgstr "Mínimo"
 
-#: ../src/backend/filters/dataLoad.cpp:275
-msgid "Reading File"
+#: ../src/backend/filters/spectrumPlot.cpp:604
+msgid "Starting position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:290
-#: ../src/backend/filters/dataLoad.cpp:303
-#: ../src/backend/filters/dataLoad.cpp:347
-#: ../src/backend/filters/dataLoad.cpp:358
-#: ../src/backend/filters/dataLoad.cpp:418
-msgid "Error loading file: "
-msgstr "Fehler beim Laden der Datei: "
+#: ../src/backend/filters/spectrumPlot.cpp:609
+msgid "Max"
+msgstr "Max"
 
-#: ../src/backend/filters/dataLoad.cpp:320
-msgid "Sampling is active, loaded "
+#: ../src/backend/filters/spectrumPlot.cpp:612
+msgid "Ending position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:321
-msgid " available."
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:620
+msgid "Logarithmic"
+msgstr "Logarítmica"
 
-#: ../src/backend/filters/dataLoad.cpp:329
-msgid "Loaded entire dataset, "
+#: ../src/backend/filters/spectrumPlot.cpp:623
+msgid "Convert the plot to logarithmic mode"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:329
-#: ../src/backend/filters/dataLoad.cpp:428
-msgid " points."
+#: ../src/backend/filters/spectrumPlot.cpp:635
+msgid "Normalisation"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:373
-msgid ""
-"Data file contained incorrect number of columns -- should be 3 or 4, was "
+#: ../src/backend/filters/spectrumPlot.cpp:638
+msgid "Rescale the plot height, to make inter-spectrum comparisons easier"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:427
-msgid "Loaded dataset, "
+#: ../src/backend/filters/spectrumPlot.cpp:645
+msgid "Lower Bound"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:460
-msgid ""
-"Warning:One or more bounds of the loaded data approaches the limits of "
-"numerical stability for the internal data type(magnitude too large). "
-"Consider rescaling data before loading"
+#: ../src/backend/filters/spectrumPlot.cpp:649
+msgid "Do not use data below this x-value for normalisation"
 msgstr ""
-"Warnung: Eine oder mehrere Grenzen der geladenen Daten erreichen das Limit "
-"der numerischen Stabilität des internen Datentyps (Größenordnung zu groß). "
-"Erwägen Sie die Daten vor dem Laden zu skalieren. "
 
-#: ../src/backend/filters/dataLoad.cpp:485
-msgid "File from which to load data"
+#: ../src/backend/filters/spectrumPlot.cpp:653
+msgid "Upper Bound"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:488
-msgid ""
-"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)|*.xml;*.pos;*.txt;*.csv;*."
-"ato|All Files|*"
+#: ../src/backend/filters/spectrumPlot.cpp:657
+msgid "Do not use data above this x-value for normalisation"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:498
-msgid "File type"
-msgstr "Dateityp"
-
-#: ../src/backend/filters/dataLoad.cpp:500
-msgid "Type of file to be loaded"
+#: ../src/backend/filters/spectrumPlot.cpp:675
+msgid "Visual style of plot"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:515
-msgid "Entries per point"
+#: ../src/backend/filters/spectrumPlot.cpp:682
+msgid "Colour of plotted spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:516
-msgid "Number of decimal values in file per 3D point (normally 4)"
+#: ../src/backend/filters/spectrumPlot.cpp:697
+msgid "Model"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:535
-msgid "File \"Endianness\""
+#: ../src/backend/filters/spectrumPlot.cpp:700
+msgid "Fitting method to use"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:536
-msgid "On-disk data storage format. If file won't load, just try each"
+#: ../src/backend/filters/spectrumPlot.cpp:711
+msgid "Fit Start"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:561
-msgid "Relative offset of each entry in file for point's X position"
+#: ../src/backend/filters/spectrumPlot.cpp:712
+msgid "Start mass value for fitting background"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:569
-msgid "Relative offset of each entry in file for point's Y position"
+#: ../src/backend/filters/spectrumPlot.cpp:718
+msgid "Fit End"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:577
-msgid "Relative offset of each entry in file for point's Z position"
+#: ../src/backend/filters/spectrumPlot.cpp:719
+msgid "End mass value for fitting background"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:585
-msgid ""
-"Relative offset of each entry in file to use for scalar value of 3D point"
+#: ../src/backend/filters/spectrumPlot.cpp:732
+msgid "Corr. Only"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:588
-msgid "Value Label"
+#: ../src/backend/filters/spectrumPlot.cpp:733
+msgid "Only show corrected spectrum, not fit"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:592
-msgid "Name for the scalar value associated with each point"
+#: ../src/backend/filters/spectrumPlot.cpp:741
+msgid "Background Mode"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:595
-msgid "Format params."
+#: ../src/backend/filters/rangeFile.cpp:121
+#: ../src/backend/filters/rangeFile.h:96
+msgid "Ranging"
+msgstr "Abarcando"
+
+#: ../src/backend/filters/rangeFile.cpp:564
+msgid "File to use for range data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:601
-msgid "Enabled"
-msgstr "Aktiviert"
+#: ../src/backend/filters/rangeFile.cpp:574
+msgid "Drop unranged"
+msgstr "Gota unranged"
 
-#: ../src/backend/filters/dataLoad.cpp:605
-msgid "Load this file?"
+#: ../src/backend/filters/rangeFile.cpp:576
+msgid "Remove unranged points when generating output"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:616
-msgid "Sample data"
+#: ../src/backend/filters/rangeFile.cpp:586
+msgid "Legend"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:619
-msgid ""
-"Perform random selection on file contents, instead of loading entire file"
+#: ../src/backend/filters/rangeFile.cpp:588
+msgid "Display colour legend for enabled ions"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:626
-msgid "Load Limit (MB)"
-msgstr "Ladelimit (MB)"
-
-#: ../src/backend/filters/dataLoad.cpp:629
-msgid "Limit for size of data to load"
+#: ../src/backend/filters/rangeFile.cpp:592
+msgid "View"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:636
-msgid "Monitor"
-msgstr "Monitor"
+#: ../src/backend/filters/rangeFile.cpp:608
+msgid "All Ions"
+msgstr "Todos los Iones"
 
-#: ../src/backend/filters/dataLoad.cpp:640
-msgid ""
-"Watch file timestamp to track changes to file contents from other programs"
+#: ../src/backend/filters/rangeFile.cpp:609
+msgid "Enable/disable all ions at once"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:644
-msgid "Load params."
+#: ../src/backend/filters/rangeFile.cpp:617
+msgid "Species"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:651
-msgid "Default colour "
-msgstr "Bevorzugte Farbe "
+#: ../src/backend/filters/rangeFile.cpp:624
+msgid "IonID "
+msgstr "IonID "
 
-#: ../src/backend/filters/dataLoad.cpp:654
-msgid "Default colour for points, if not overridden by other filters"
+#: ../src/backend/filters/rangeFile.cpp:625
+msgid "Enable/disable specified ion"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:659
-msgid "Draw Size"
-msgstr "Draw Size"
+#: ../src/backend/filters/rangeFile.cpp:635
+msgid "Active Ion "
+msgstr "Ión activo "
 
-#: ../src/backend/filters/dataLoad.cpp:662
-msgid "Default size for points, if not overridden by other filters"
+#: ../src/backend/filters/rangeFile.cpp:637
+msgid "If true, ion is used in output"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:77
-msgid "Maximum"
-msgstr ""
+#: ../src/backend/filters/rangeFile.cpp:647
+msgid "Colour "
+msgstr "Colour"
 
-#: ../src/backend/filters/spectrumPlot.cpp:78
-msgid "Max in limit"
+#: ../src/backend/filters/rangeFile.cpp:651
+msgid "Colour used to represent ion"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:79
-msgid "Probability"
-msgstr ""
+#: ../src/backend/filters/rangeFile.cpp:674
+msgid "All Ranges"
+msgstr "Todas las Gamas"
 
-#: ../src/backend/filters/spectrumPlot.cpp:170
-msgid "Extrema"
-msgstr "Extrema"
+#: ../src/backend/filters/rangeFile.cpp:675
+msgid "Enable/disable all ranges"
+msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:219
-msgid "count"
-msgstr "Anzahl"
+#: ../src/backend/filters/rangeFile.cpp:690
+msgid "Active Rng "
+msgstr "Activo Rng "
 
-#: ../src/backend/filters/spectrumPlot.cpp:304
-msgid "Mixed data"
+#: ../src/backend/filters/rangeFile.cpp:693
+msgid ""
+"Enable/disable specified range (ion must also be enabled to activiate range)"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:445
-msgid "Background:"
-msgstr ""
+#: ../src/backend/filters/rangeFile.cpp:697
+msgid "Ion "
+msgstr "Ión "
 
-#: ../src/backend/filters/spectrumPlot.cpp:504
-msgid "Relative "
+#: ../src/backend/filters/rangeFile.cpp:700
+msgid "Name of ion associate to this range"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:507
-msgid "Probability Density"
-msgstr ""
+#: ../src/backend/filters/rangeFile.cpp:709
+msgid "Start rng "
+msgstr "Inicio rng "
 
-#: ../src/backend/filters/spectrumPlot.cpp:584
-msgid "Step size for spectrum"
+#: ../src/backend/filters/rangeFile.cpp:712
+msgid "Start value for range"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:589
-msgid "Auto Min/max"
-msgstr "Auto Min/max"
+#: ../src/backend/filters/rangeFile.cpp:717
+msgid "End rng "
+msgstr "Fin rng "
 
-#: ../src/backend/filters/spectrumPlot.cpp:593
-msgid "Automatically compute spectrum upper and lower bound"
+#: ../src/backend/filters/rangeFile.cpp:720
+msgid "Stopping value for range`"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:598
-msgid "Min"
-msgstr "Min"
-
-#: ../src/backend/filters/spectrumPlot.cpp:601
-msgid "Starting position for spectrum"
+#: ../src/backend/state.cpp:165
+msgid ""
+"This file is a \"state\" file for the 3Depict program, and stores "
+"information about a particular analysis session. This file should be a valid "
+"\"XML\" file"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:606
-msgid "Max"
-msgstr "Max"
+#: ../src/backend/state.cpp:337
+msgid "Failed to allocate parser"
+msgstr "Fallado a allocate parser"
 
-#: ../src/backend/filters/spectrumPlot.cpp:609
-msgid "Ending position for spectrum"
+#: ../src/backend/state.cpp:372
+msgid ""
+"Unable to retrieve root node in input state file... Is this really a non-"
+"empty XML file?"
 msgstr ""
+"Incapaz de recuperar nodo de raíz en entrada archivo estatal... Es esto "
+"realmente un XML no vacío archivo?"
 
-#: ../src/backend/filters/spectrumPlot.cpp:617
-msgid "Logarithmic"
-msgstr "Logarithmisch"
+#: ../src/backend/state.cpp:379
+msgid "Base state node missing. Is this really a state XML file??"
+msgstr ""
+"Base el nodo estatal que pierde. Es esto realmente un archivo de XML "
+"estatal??"
 
-#: ../src/backend/filters/spectrumPlot.cpp:620
-msgid "Convert the plot to logarithmic mode"
+#: ../src/backend/state.cpp:408
+msgid "State was created by a newer version of this program.. "
+msgstr "El Estado fue creado por una versión más nueva de este programa.. "
+
+#: ../src/backend/state.cpp:409
+msgid "file reading will continue, but may fail."
+msgstr "Lectura de archivo continuará, pero puede fallar."
+
+#: ../src/backend/state.cpp:419
+msgid ""
+"Warning, unparseable version number in state file. File reading will "
+"continue, but may fail"
 msgstr ""
+"Aviso, unparseable número de versión en archivo estatal. Lectura de archivo "
+"continuará, pero puede fallar"
 
-#: ../src/backend/filters/spectrumPlot.cpp:632
-msgid "Normalisation"
+#: ../src/backend/state.cpp:428
+msgid "Unable to find the \"writer\" node"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:635
-msgid "Rescale the plot height, to make inter-spectrum comparisons easier"
+#: ../src/backend/state.cpp:438
+msgid "Unable to find the \"backcolour\" node."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:642
-msgid "Lower Bound"
+#: ../src/backend/state.cpp:445
+msgid "\"backcolour\" node missing \"r\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:646
-msgid "Do not use data below this x-value for normalisation"
+#: ../src/backend/state.cpp:450
+msgid "Unable to interpret \"backColour\" node's \"r\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:650
-msgid "Upper Bound"
+#: ../src/backend/state.cpp:458
+msgid "\"backcolour\" node missing \"g\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:654
-msgid "Do not use data above this x-value for normalisation"
+#: ../src/backend/state.cpp:464
+msgid "Unable to interpret \"backColour\" node's \"g\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:672
-msgid "Visual style of plot"
+#: ../src/backend/state.cpp:472
+msgid "\"backcolour\" node missing \"b\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:679
-msgid "Colour of plotted spectrum"
+#: ../src/backend/state.cpp:478
+msgid "Unable to interpret \"backColour\" node's \"b\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:694
-msgid "Model"
+#: ../src/backend/state.cpp:485
+msgid "\"backcolour\"s rgb values must be in range [0,1]"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:697
-msgid "Fitting method to use"
+#: ../src/backend/state.cpp:513
+msgid "Unable to find or interpret \"showaxis\" node"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:708
-msgid "Fit Start"
+#: ../src/backend/state.cpp:557
+msgid "Unable to locate \"filtertree\" node."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:709
-msgid "Start mass value for fitting background"
+#: ../src/backend/state.cpp:573
+msgid "Cameras section missing \"active\" node."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:715
-msgid "Fit End"
+#: ../src/backend/state.cpp:581
+msgid "Unable to find property \"value\"  for \"cameras->active\" node."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:716
-msgid "End mass value for fitting background"
+#: ../src/backend/state.cpp:587
+msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:729
-msgid "Corr. Only"
+#: ../src/backend/state.cpp:607
+msgid "Failed to interpret camera state for camera : "
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:730
-msgid "Only show corrected spectrum, not fit"
+#: ../src/backend/state.cpp:615
+msgid "Unable to interpret the camera type for camera : "
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:738
-msgid "Background Mode"
+#: ../src/backend/state.cpp:671
+msgid "Unable to locate stash name for stash "
+msgstr "Incapaz de localizar stash nombre para stash "
+
+#: ../src/backend/state.cpp:678
+msgid "Empty stash name for stash "
+msgstr "Vacío stash nombre para stash "
+
+#: ../src/backend/state.cpp:687
+msgid "No filter tree for stash:"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:187
-msgid "Config file present, but is not valid (root node test)"
-msgstr "Konfigurationsdatei vorhanden, aber nicht gültig (root node test)"
+#: ../src/backend/state.cpp:693
+msgid "For stash "
+msgstr "Para stash "
 
-#: ../src/backend/configFile.cpp:228
-msgid "Unable to interpret recent file entry"
-msgstr "Kann den letzten Dateieintrag nicht interpretieren"
+#: ../src/backend/state.cpp:725
+msgid "Unrecognised effect :"
+msgstr "Unrecognised Efecto :"
 
-#: ../src/backend/configFile.cpp:268
-msgid "Unable to determine filter type in defaults listing."
-msgstr "Kann den Filtertyp im Defaultslisting nicht bestimmen."
+#: ../src/backend/state.cpp:735
+msgid "Duplicate effect found"
+msgstr "El Efecto duplicado encontró"
 
-#: ../src/backend/configFile.cpp:605
-msgid "Online access for non win32/apple platforms is intentionally disabled, "
-msgstr ""
-"Onlinezugang für nicht Win32/apple systeme wurde absichtlich deaktiviert."
+#: ../src/backend/state.cpp:735
+msgid " cannot use."
+msgstr " No puede utilizar."
 
-#: ../src/backend/configFile.cpp:606
-msgid ""
-"regardless of the settings you use here. Use your package manager to keep up-"
-"to-date"
-msgstr ""
-"Nutzen Sie Ihren Paketmanager um up-to-date zu sein unabhängig von den "
-"Einstellungen die Sie hier verwenden"
+#: ../src/backend/state.cpp:745
+msgid "Error reading effect : "
+msgstr "Efecto de lectura del error : "
+
+#: ../src/backend/state.cpp:965
+msgid "-merge"
+msgstr "-Fusionar"
 
-#: ../src/backend/filtertreeAnalyse.cpp:223
+#: ../src/backend/filtertreeAnalyse.cpp:225
 msgid ""
 "Parent filter has no output, but filter requires input -- there is no point "
 "in placing a child filter here."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:224
+#: ../src/backend/filtertreeAnalyse.cpp:226
 msgid "Leaf-only filter with child"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:234
+#: ../src/backend/filtertreeAnalyse.cpp:236
 msgid ""
 "Parent filters' output will be blocked by child, without use. Parent results "
 "will be dropped."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:235
-#: ../src/backend/filtertreeAnalyse.cpp:249
+#: ../src/backend/filtertreeAnalyse.cpp:237
+#: ../src/backend/filtertreeAnalyse.cpp:251
 msgid "Bad parent->child pair"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:248
+#: ../src/backend/filtertreeAnalyse.cpp:250
 msgid ""
 "First filter does not output anything useable by child filter. Child filter "
 "not useful."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:328
+#: ../src/backend/filtertreeAnalyse.cpp:330
 msgid "Spatial results possibly altered"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:329
+#: ../src/backend/filtertreeAnalyse.cpp:331
 msgid ""
 "Filters and settings selected that could alter reported results that depend "
 "upon density. Check to see if spatial sampling may be happening in the "
 "filter tree - this warning is provisional only."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:397
+#: ../src/backend/filtertreeAnalyse.cpp:399
 msgid "Filter needs parent \""
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:398
+#: ../src/backend/filtertreeAnalyse.cpp:400
 msgid ""
 "\" but does not have one. Filter may not function correctly until this "
 "parent is given."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:399
+#: ../src/backend/filtertreeAnalyse.cpp:401
 msgid "Filter missing needed parent"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:430
+#: ../src/backend/filtertreeAnalyse.cpp:432
 msgid "Bad range filter settings"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:431
+#: ../src/backend/filtertreeAnalyse.cpp:433
 msgid ""
 "Rangefile set to drop unranged data, however a child filter requires it."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:613
+#: ../src/backend/filtertreeAnalyse.cpp:529
+msgid "Filter cannot generate data, but has no input - it is at the tree base."
+msgstr ""
+
+#: ../src/backend/filtertreeAnalyse.cpp:530
+msgid "Non data-generating filter at root"
+msgstr ""
+
+#: ../src/backend/filtertreeAnalyse.cpp:632
 msgid "Composition results possibly altered"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:614
+#: ../src/backend/filtertreeAnalyse.cpp:633
 msgid ""
 "Filters and settings selected that could bias reported composition. Check to "
 "see if species biasing may occcur in the filter tree - this warning is "
 "provisional only."
 msgstr ""
 
-#: ../src/backend/plot.cpp:29
-msgid "Moving avg."
-msgstr "Gleit.Durchschn."
-
-#: ../src/backend/plot.cpp:33
-msgid "Lines"
-msgstr "Linien"
-
-#: ../src/backend/plot.cpp:34
-msgid "Bars"
-msgstr "Block"
-
-#: ../src/backend/plot.cpp:35
-msgid "Steps"
-msgstr "Stufen"
-
-#: ../src/backend/plot.cpp:36
-msgid "Stem"
-msgstr "Stem"
-
-#: ../src/backend/plot.cpp:37
-msgid "Points"
-msgstr "Punkte"
-
-#: ../src/backend/plot.cpp:39
-msgid "Density"
-msgstr ""
+#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
+#: ../src/backend/APT/APTFileIO.cpp:103 ../src/backend/APT/APTFileIO.cpp:123
+msgid "Error opening file"
+msgstr "Error al abrir el archivo"
 
-#: ../src/backend/plot.cpp:40
-msgid "Scatter"
+#: ../src/backend/APT/APTFileIO.cpp:45
+msgid "Only found header, no data"
 msgstr ""
 
-#: ../src/backend/plot.cpp:739 ../src/backend/plot.cpp:747
-msgid "Multiple data types"
+#: ../src/backend/APT/APTFileIO.cpp:46
+msgid "Unable to reopen file after first scan"
 msgstr ""
 
-#: ../src/backend/plot.cpp:1581
-msgid "error"
-msgstr "Fehler"
+#: ../src/backend/APT/APTFileIO.cpp:47
+msgid "Error whilst reading file contents"
+msgstr "Error whilst leyendo contenidos de archivo"
 
-#: ../src/backend/plot.cpp:1821
-msgid "Amplitude"
+#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
+msgid "Unexpected file format"
 msgstr ""
 
-#: ../src/backend/filtertree.cpp:1151
-msgid "WARNING: Skipping node "
-msgstr "WARNUNG: Skipping node "
-
-#: ../src/backend/filtertree.cpp:1151
-msgid " as it was not recognised"
-msgstr " wurde nicht erkannt."
-
-#: ../src/backend/filtertree.cpp:1189
-msgid "Error processing node: "
-msgstr "Fehler beim Verarbeiten von Node: "
-
-#: ../src/gl/cameras.cpp:596
-msgid "Lock"
-msgstr "Sperren"
-
-#: ../src/gl/cameras.cpp:617
-msgid "Up Dir."
-msgstr "Up Dir."
+#: ../src/backend/APT/APTFileIO.cpp:50
+msgid "Insufficient memory to continue"
+msgstr ""
 
-#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
-msgid "Perspective"
-msgstr "Perspektivisch"
+#: ../src/backend/APT/APTFileIO.cpp:54
+msgid "Memory allocation failure on POS load"
+msgstr "Fracaso de asignación de la memoria en carga de POS"
 
-#: ../src/gl/cameras.cpp:631
-msgid "Projection"
-msgstr "Projektion"
+#: ../src/backend/APT/APTFileIO.cpp:55
+msgid "Error opening pos file"
+msgstr "El Error que abre pos archivo"
 
-#: ../src/gl/cameras.cpp:640
-msgid "Field of View (deg)"
-msgstr "Bildausschnitt"
+#: ../src/backend/APT/APTFileIO.cpp:56
+msgid "Pos file empty"
+msgstr "Pos Archiva vacío"
 
-#: ../src/gl/cameras.cpp:646
-msgid "View size"
-msgstr "Anzeigegröße"
+#: ../src/backend/APT/APTFileIO.cpp:57
+msgid "Pos file size appears to have non-integer number of entries"
+msgstr "Pos Medida de archivo aparece para tener no-integer número de entradas"
 
-#: ../src/3Depict.cpp:397
-msgid "File : "
-msgstr "Datei : "
+#: ../src/backend/APT/APTFileIO.cpp:58
+msgid "Error reading from pos file (after open)"
+msgstr "Lectura de error de pos archivo (después de abierto)"
 
-#: ../src/3Depict.cpp:397
-msgid " does not exist. Skipping"
-msgstr " existiert nicht. Überspringe"
+#: ../src/backend/APT/APTFileIO.cpp:59
+msgid "Error - Found NaN in pos file"
+msgstr "Error - Encontrado NaN en pos archivo"
 
-#: ../src/common/constants.cpp:22
-msgid ""
-"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
-"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
-"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+#: ../src/backend/APT/APTFileIO.cpp:60
+msgid "Error - Found Inf in pos file"
 msgstr ""
 
-#: ../src/common/basics.cpp:183
-msgid "in the future?"
-msgstr "in Zukunft?"
-
-#: ../src/common/basics.cpp:234
-msgid "a decade ago"
-msgstr "vor zehn Jahren"
-
-#: ../src/common/basics.cpp:235
-msgid "a year ago"
-msgstr "vor einem Jahr"
-
-#: ../src/common/basics.cpp:236
-msgid "a month ago"
-msgstr "vor einem Monat"
-
-#: ../src/common/basics.cpp:237
-msgid "a week ago"
-msgstr "vor einer Woche"
+#: ../src/backend/APT/APTFileIO.cpp:61
+msgid "Pos load aborted by interrupt."
+msgstr "Pos Carga abortado por interrumpir."
 
-#: ../src/common/basics.cpp:238
-msgid "a day ago"
-msgstr "gestern"
+#: ../src/backend/APT/APTFileIO.cpp:80
+msgid "No numerical data found"
+msgstr "No el dato numérico encontró"
 
-#: ../src/common/basics.cpp:239
-msgid "an hour ago"
-msgstr "vor einer Stunde"
+#: ../src/backend/APT/APTFileIO.cpp:81
+msgid "Error re-opening file, after first scan"
+msgstr "Error re-abriendo archivo, después de que primer escáner"
 
-#: ../src/common/basics.cpp:240
-msgid "45 minutes ago"
-msgstr "vor 45 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:82
+msgid "Unable to read file contents after open"
+msgstr "Incapaz de leer contenidos de archivo después de abierto"
 
-#: ../src/common/basics.cpp:241
-msgid "30 minutes ago"
-msgstr "vor 30 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:83
+msgid "Error interpreting field in file"
+msgstr "El Error que interpreta campo en archivo"
 
-#: ../src/common/basics.cpp:242
-msgid "20 minutes ago"
-msgstr "vor 20 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:84
+msgid "Incorrect number of fields in file"
+msgstr "Incorrect Número de campos en archivo"
 
-#: ../src/common/basics.cpp:243
-msgid "15 minutes ago"
-msgstr "vor 15 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
+msgid "Unable to allocate memory to store data"
+msgstr "Incapaz a allocate memoria para almacenar dato"
 
-#: ../src/common/basics.cpp:244
-msgid "10 minutes ago"
-msgstr "vor 10 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:104
+msgid "File is empty"
+msgstr ""
 
-#: ../src/common/basics.cpp:245
-msgid "5 minutes ago"
-msgstr "vor 5 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:105
+msgid "Filesize does not match expected format"
+msgstr ""
 
-#: ../src/common/basics.cpp:246
-msgid "a minute ago"
-msgstr "vor einer Minute"
+#: ../src/backend/APT/APTFileIO.cpp:106
+msgid "File version number not <4, as expected"
+msgstr ""
 
-#: ../src/common/basics.cpp:247
-msgid "30 seconds ago"
-msgstr "vor 30 Sekunden"
+#: ../src/backend/APT/APTFileIO.cpp:108
+msgid "Unable to detect endian-ness in file"
+msgstr ""
 
-#: ../src/common/basics.cpp:248
-msgid "10 seconds ago"
-msgstr "vor 10 Sekunden"
+#: ../src/backend/APT/APTFileIO.cpp:122
+msgid "Error interpreting file contents"
+msgstr ""
 
-#: ../src/common/basics.cpp:249
-msgid "a second ago"
-msgstr "vor einer Sekunde"
+#: ../src/backend/APT/APTFileIO.cpp:124
+msgid "Aborted opening file"
+msgstr ""
 
-#: ../src/common/basics.cpp:254
-msgid "a few decades ago"
-msgstr "vor einigen Dekaden"
+#: ../src/backend/APT/APTRanges.cpp:48
+msgid "Error opening file, check name and permissions."
+msgstr "Archivo de apertura del error, nombre de control y permisos."
 
-#: ../src/common/basics.cpp:255
-msgid "a few years ago"
-msgstr "vor einigen Jahren"
+#: ../src/backend/APT/APTRanges.cpp:49
+msgid ""
+"Error interpreting range file header, expecting ion count and range count, "
+"respectively."
+msgstr ""
+"El Error que interpreta archivo de gama header, esperando el ión cuenta y la "
+"gama cuenta, respectivamente."
 
-#: ../src/common/basics.cpp:256
-msgid "a few months ago"
-msgstr "vor einigen Monaten"
+#: ../src/backend/APT/APTRanges.cpp:50
+msgid ""
+"Range file appears to be empty, check file is a proper range file and is not "
+"empty."
+msgstr ""
+"Archivo de gama aparece para ser vacío, archivo de control es un archivo de "
+"gama propio y no es vacío."
 
-#: ../src/common/basics.cpp:257
-msgid "a few weeks ago"
-msgstr "vor einigen Wochen"
+#: ../src/backend/APT/APTRanges.cpp:51
+msgid "Error reading the long name for ion."
+msgstr "El Error que lee el nombre largo para ión."
 
-#: ../src/common/basics.cpp:258
-msgid "a few days ago"
-msgstr "vor einigen Tagen"
+#: ../src/backend/APT/APTRanges.cpp:52
+msgid "Error reading the short name for ion."
+msgstr "El Error que lee el nombre corto para ión."
 
-#: ../src/common/basics.cpp:259
-msgid "a few hours ago"
-msgstr "vor einigen Stunden"
+#: ../src/backend/APT/APTRanges.cpp:53
+msgid ""
+"Error reading colour data in the file, expecting 3 decimal values, space "
+"separated."
+msgstr ""
+"Dato de color de lectura de error en el archivo, esperando 3 valores "
+"decimales, el espacio separó."
 
-#: ../src/common/basics.cpp:266
-msgid "a few minutes ago"
-msgstr "vor einigen Minuten"
+#: ../src/backend/APT/APTRanges.cpp:54
+msgid ""
+"Tried skipping to table separator line (line with dashes), but did not find "
+"it."
+msgstr ""
+"Probado skipping a mesa separator línea (línea con dashes), pero no lo "
+"encontró."
 
-#: ../src/common/basics.cpp:269
-msgid "a few seconds ago"
-msgstr "vor einigen Sekunden"
+#: ../src/backend/APT/APTRanges.cpp:55
+msgid ""
+"Number of ions in the table header did not match the number specified at the "
+"start of the file"
+msgstr ""
 
-#: ../src/common/basics.cpp:296
-msgid "moments ago"
-msgstr "kürzlich"
+#: ../src/backend/APT/APTRanges.cpp:56
+msgid ""
+"Unexpected failure whilst trying to skip over range lead-in data (bit before "
+"range start value)"
+msgstr ""
+"Fracaso inesperado whilst probando a skip sobre ventaja de gama-en dato (bit "
+"antes de valor de inicio de la gama)"
 
-#: ../src/common/colourmap.cpp:242
-msgid "Jet"
-msgstr "Jet"
+#: ../src/backend/APT/APTRanges.cpp:57
+msgid ""
+"Range table had an incorrect number of entries, should be 2 or 3 + number of "
+"ranges"
+msgstr ""
 
-#: ../src/common/colourmap.cpp:243
-msgid "Hot"
-msgstr "Heiss"
+#: ../src/backend/APT/APTRanges.cpp:58
+msgid "Unable to read range start and end values"
+msgstr "Incapaz de leer inicio de gama y valores de fin"
 
-#: ../src/common/colourmap.cpp:244
-msgid "Cold"
-msgstr "Kalt"
+#: ../src/backend/APT/APTRanges.cpp:59
+msgid "Unable to read range table entry"
+msgstr "Incapaz de leer entrada de mesa de la gama"
 
-#: ../src/common/colourmap.cpp:245
-msgid "Grey"
-msgstr "Grau"
+#: ../src/backend/APT/APTRanges.cpp:60
+msgid ""
+"Error reading file, unexpected format, are you sure it is a proper range "
+"file?"
+msgstr ""
+"Archivo de lectura del error, formato inesperado, te es seguro es un archivo "
+"de gama propio?"
 
-#: ../src/common/colourmap.cpp:246
-msgid "Cyclic"
-msgstr "Cyclic"
+#: ../src/backend/APT/APTRanges.cpp:61
+msgid ""
+"Too many ranges appeared to have range entries with no usable data (eg, all "
+"blank)"
+msgstr ""
+"Demasiadas gamas aparecidas para tener entradas de gama con ningún usable "
+"dato (eg, todo espacio)"
 
-#: ../src/common/colourmap.cpp:247
-msgid "General"
-msgstr "Allgemein"
+#: ../src/backend/APT/APTRanges.cpp:62
+msgid ""
+"Range file appears to contain malformed data, check things like start and "
+"ends of m/c are not equal or flipped."
+msgstr ""
+"Archivo de gama aparece para contener malformed dato, cosas de control como "
+"inicio y fines de m/c no es igual o flipped."
 
-#: ../src/common/colourmap.cpp:248
-msgid "Blue"
-msgstr "Blau"
+#: ../src/backend/APT/APTRanges.cpp:63
+msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
+msgstr "Archivo de gama aparece para ser inconsistent (eg, overlapping gamas)"
 
-#: ../src/common/colourmap.cpp:249
-msgid "Pseudo-Random"
-msgstr "Pseudo-Random"
+#: ../src/backend/APT/APTRanges.cpp:64
+msgid "No ion name mapping found  for multiple ion."
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:191
-msgid "Save Data..."
-msgstr "Datei speichern..."
+#: ../src/backend/APT/APTRanges.cpp:65
+msgid "Polyatomic extension range matches multiple masses in first section"
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:192
-msgid "Text File (*.txt)|*.txt|All Files (*)|*"
-msgstr "Text Datei (*.txt)|*.txt|Alle Dateien (*)|*"
+#: ../src/backend/APT/APTRanges.cpp:66
+msgid "Range file is exceedingly large. Refusing to open"
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:204
-msgid "Error saving file. Check output dir is writable."
+#: ../src/backend/APT/APTRanges.cpp:1404
+msgid ""
+"Range headings do not match order of the ions listed in the name "
+"specifications. The name specification ordering will be used when reading "
+"the range table, as the range heading section is declared as a comment in "
+"the file-format specifications, and is not to be intepreted by this program. "
+"Check range-species associations actually match what you expect."
 msgstr ""
-"Fehler beim Schreiben der Datei. Stellen Sie sicher, dass das "
-"Zielverzeichnis nicht schreibgeschüzt ist."
 
-#: ../src/backend/filters/dataLoad.h:135
-msgid "Pos Data"
-msgstr "POS-Daten"
+#: ../src/backend/filter.cpp:54
+msgid "2D Plot"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.h:103
-msgid "Ion info"
-msgstr "Ioneninfo"
+#: ../src/backend/filter.cpp:56
+msgid "Range"
+msgstr "Rango"
 
-#: ../src/backend/filters/externalProgram.h:69
-msgid "Ext. Program"
-msgstr "Ext. Programm"
+#: ../src/backend/filter.cpp:57
+msgid "Voxel"
+msgstr "Voxel"
+
+#: ../src/backend/filters/transform.h:71
+msgid "Ion. Transform"
+msgstr "Ión. Transforma"
 
-#: ../src/backend/filters/ionColour.h:63
+#: ../src/backend/filters/ionColour.h:66
 msgid "Spectral Colour"
-msgstr "Spectral Farbe"
+msgstr ""
 
-#: ../src/backend/filters/profile.h:123
-msgid "Comp. Prof."
-msgstr "Konz. Prof."
+#: ../src/backend/filters/boundingBox.h:76
+msgid "Bound box"
+msgstr "Caja ligada"
 
 #: ../src/backend/filters/ionDownsample.h:79
 msgid "Ion Sampler"
-msgstr "Ion Sampler"
+msgstr "Ión Sampler"
 
-#: ../src/backend/filters/boundingBox.h:76
-msgid "Bound box"
-msgstr "Begrenzungs-Box"
+#: ../src/backend/filters/profile.h:123
+msgid "Comp. Prof."
+msgstr "Comp. Prof."
 
-#: ../src/backend/filters/transform.h:71
-msgid "Ion. Transform"
-msgstr "Ion. Transformieren"
+#: ../src/backend/filters/ionInfo.h:103
+msgid "Ion info"
+msgstr "Ión info"
 
-#: ../src/wx/wxcomponents.h:82
-msgid "treeCtrl"
-msgstr ""
+#: ../src/backend/filters/dataLoad.h:145
+msgid "Pos Data"
+msgstr "Pos Dato"
+
+#: ../src/backend/filters/externalProgram.h:69
+msgid "Ext. Program"
+msgstr "Ext. Programa"
 
 #: ../data/startup-tips.txt:5
 msgid ""
 "You can reset the main view by tapping the space bar. Hold down modifier "
 "keys like shift,ctrl to change the axis. Double tap to switch which axis to "
-"look down"
+"look the other way (+ve or -ve direction)"
 msgstr ""
 
 #: ../data/startup-tips.txt:6
@@ -5409,7 +5552,8 @@ msgstr ""
 #: ../data/startup-tips.txt:8
 msgid ""
 "Package files can be easily shared to allow others to view your analysis, "
-"using the File->Export->Package menu item"
+"using the File->Export->Package menu item. This will automatically import "
+"all referenced files (eg pos/rng files) into a single shareable folder"
 msgstr ""
 
 #: ../data/startup-tips.txt:9
@@ -5448,12 +5592,13 @@ msgstr ""
 #: ../data/startup-tips.txt:15
 msgid ""
 "That anyone can contribute to improving this program, even without knowing "
-"about computer programming?"
+"about computer programming? Reporting bugs helps us to prioritise our work, "
+"and directs us to fix real problems for all users"
 msgstr ""
 
 #: ../data/startup-tips.txt:16
 msgid ""
-"You can load more than one file at a time, then either operate on the "
+"You can load more than one file at a time, then either operate on them "
 "separately, or together"
 msgstr ""
 
@@ -5493,8 +5638,8 @@ msgstr ""
 
 #: ../data/startup-tips.txt:23
 msgid ""
-"By creating a camera, you can switch between orthographic and perspective "
-"views"
+"By creating a camera, you can switch between orthographic (parallel) and "
+"perspective views"
 msgstr ""
 
 #: ../data/startup-tips.txt:24
@@ -5503,191 +5648,53 @@ msgid ""
 "translating (shifting) one of the datasets to one side"
 msgstr ""
 
-#~ msgid "ORNL format RNG (*.rng)|*.rng|All Files (*)|*"
-#~ msgstr "ORNL Format RNG (*.rng)|*.rng|Alle Dateien (*)|*"
-
-#~ msgid "POS Data (*.pos)|*.pos|All Files (*)|*"
-#~ msgstr "POS-Daten (*.pos)|*.pos|All Files (*)|*"
-
-#~ msgid "Mass-to-Charge (amu/e)"
-#~ msgstr "Masse-zu-Ladung (amu/e)"
-
-#~ msgid "Last Outputs"
-#~ msgstr "Letzte Ausgabe"
-
-#~ msgid "Type"
-#~ msgstr "Type"
-
-#~ msgid "Num"
-#~ msgstr "Num"
-
-#~ msgid "Aborted."
-#~ msgstr "Abgebrochen"
-
-#~ msgid "Gaussian (2𝜎)"
-#~ msgstr "Gauss (2𝜎)"
-
-#~ msgid "Zero"
-#~ msgstr "Null"
-
-#~ msgid "Bounce"
-#~ msgstr "Bounce"
-
-#~ msgid "Kernel Bins"
-#~ msgstr "Kernel Bins"
-
-#~ msgid "Exterior values"
-#~ msgstr "Exterior values"
-
-#~ msgid "Inconsistent number of columns found"
-#~ msgstr "Inkonsistente Anzahl an Spalten gefunden"
-
-#~ msgid "Tile "
-#~ msgstr "Tile "
-
-#~ msgid "Filter Defaults"
-#~ msgstr "Filtervoreinstellungen"
-
-#~ msgid "Notice"
-#~ msgstr "Notiz"
-
-#~ msgid "For security reasons, defaults are not modifiable for this filter"
-#~ msgstr ""
-#~ "Aus Sicherheitsgründen können die Voreinstellungen für diesen Filter "
-#~ "nicht geändert werden."
-
-#~ msgid "Pref"
-#~ msgstr "Pref"
-
-#~ msgid "New stash name...."
-#~ msgstr "Neuer Stashname..."
-
-#~ msgid ""
-#~ "Range Files (*rng; *env; *rrng)|*rng;*env;*rrng|RNG File (*.rng)|*.rng|"
-#~ "Environment File (*.env)|*.env|RRNG Files (*.rrng)|*.rrng|All Files (*)|*"
-#~ msgstr ""
-#~ "Rangedatei (*rng; *env; *rrng)|*rng;*env;*rrng|RNG File (*.rng)|*.rng|"
-#~ "Environment Datei (*.env)|*.env|RRNG Files (*.rrng)|*.rrng|Alle Dateien "
-#~ "(*)|*"
-
-#~ msgid "Next Fullscreen mode: none"
-#~ msgstr "Nächster Vollbildmodus: keiner"
-
-#~ msgid "Next Fullscreen mode: complete"
-#~ msgstr "Nächster Vollbildmodus: vollständig"
-
-#~ msgid "Next Fullscreen mode: with toolbars"
-#~ msgstr "Nächster Vollbildmodus: mit Werkzeugleisten"
-
-#~ msgid "Next Mode: No fullscreen"
-#~ msgstr "Nächster Modus: Kein Vollbild"
-
-#~ msgid "Next Mode: fullscreen w/o toolbar"
-#~ msgstr "Nächster Modus: Vollbild ohne Werkzeugleiste"
-
-#~ msgid "Next Mode: fullscreen with toolbar"
-#~ msgstr "Nächster Modus: Vollbild mit Werkzeugleiste"
-
-#~ msgid "displays this message"
-#~ msgstr "zeigt diese Nachricht"
-
-#~ msgid "inputfile"
-#~ msgstr "Eingabedatei"
-
-#~ msgid "Error processing command line"
-#~ msgstr "Fehler beim Ausführen der Kommandozeile"
-
-#~ msgid "Unable to set working directory"
-#~ msgstr "Kann Arbeitsverzeichnis nicht festlegen"
-
-#~ msgid "Error saving posfile result for external program"
-#~ msgstr "Fehler beim Speichern von Posdateiergebnis für externes Programm"
-
-#~ msgid "Error saving plot result for externalprogram"
-#~ msgstr "Fehler beim Speichern von Posdateiergebnis für externes Programm"
-
-#~ msgid "Error creating temporary directory"
-#~ msgstr "Fehler beim Anlegen des temporären Verzeichnisses"
-
-#~ msgid "Detected unusable number of columns in plot"
-#~ msgstr "Detected unusable number of columns in plot"
-
-#~ msgid "Unable to parse plot result from external program"
-#~ msgstr "Unable to parse plot result from external program"
-
-#~ msgid "Unable to load ions from external program"
-#~ msgstr "Kann Ionen von externem Programm nicht laden"
-
-#~ msgid "Unable to perform commandline substitution"
-#~ msgstr "Unable to perform commandline substitution"
-
-#~ msgid "Error executing external program"
-#~ msgstr "Fehler beim Ausführen von externem Programm"
-
-#~ msgid "Clustering aborted"
-#~ msgstr "Clustering abgebrochen"
-
-#~ msgid "No core ions for cluster"
-#~ msgstr "Keine Kernionen für Cluster"
-
-#~ msgid "No bulk ions for cluster"
-#~ msgstr "Keine Bulkionen für Cluster"
-
-#~ msgid "Voxelisation aborted"
-#~ msgstr "Voxelisation abgebrochen"
-
-#~ msgid "Out of memory"
-#~ msgstr "Zu wenig Speicher"
-
-#~ msgid "Unable to perform filter convolution"
-#~ msgstr "Kann Filter convolution nicht durchführen"
-
-#~ msgid "Voxelisation bounds are invalid"
-#~ msgstr "Voxelisation Grenzen sin ungültig"
-
-#~ msgid "Too many bins in comp. profile."
-#~ msgstr "Zu viele Bins im Konzentrationsprofil."
-
-#~ msgid "Not enough memory for comp. profile."
-#~ msgstr "Nicht genug Speicher für Konz.-Profil."
-
-#~ msgid "Aborted composition prof."
-#~ msgstr "Konzentrationspr. abgebr."
+#: ../data/startup-tips.txt:25
+msgid ""
+"From version 0.0.20, vector values in filter properties (e.g. \"(1,0,0)\") "
+"can be specified using ISO 31-11 spherical coordinates using the following "
+"notation <r,theta,phi>, with angles in degrees"
+msgstr ""
 
-#~ msgid "Insufficient data to complete analysis."
-#~ msgstr "Ungenügend Daten zum Fertigstellen der Analyse."
+#: ../data/startup-tips.txt:26
+msgid ""
+"You can change the behavior of filter dragging by holding Ctrl (mac: cmd) or "
+"Shift whilst dragging? This switches between move, copy and \"splice"
+msgstr ""
 
-#~ msgid "Unable to allocate memory"
-#~ msgstr "Kann Speicher nicht zuweisen"
+#: ../data/startup-tips.txt:27
+msgid ""
+"We like to know where we are being helpful? Please consider writing the "
+"program and version number in any work you might publish - whether in print "
+"or online. Alternatively, link to our website, or write to us to let us know "
+"we helped!"
+msgstr ""
 
-#~ msgid "Downsample Aborted"
-#~ msgstr "Datenreduktion abgebrochen"
+#: ../data/startup-tips.txt:28
+msgid ""
+"You can merge files by placing two \"Pos Data\" filters in series,  then  "
+"saving the result?"
+msgstr ""
 
-#~ msgid "Insuffient memory for downsample"
-#~ msgstr "Nicht genug Speicher zur Datenreduktion"
+#~ msgid "ORNL format RNG (*.rng)|*.rng|All Files (*)|*"
+#~ msgstr "formato de ORNL RNG (*.rng)|*.rng|Todos los  Archivos (*)|*"
 
-#~ msgid "Insufficient memory for operation"
-#~ msgstr "Nicht genügend Speicher für Operation"
+#~ msgid "POS Data (*.pos)|*.pos|All Files (*)|*"
+#~ msgstr "Dato de POS (*.pos)|*.pos|Todos los  Archivos (*)|*"
 
-#~ msgid "Bug? Problem with qhull library, cannot run convex hull."
-#~ msgstr ""
-#~ "Bug? Problem mit qhull Bibliothek. Kann convex hull nicht ausführen."
+#~ msgid "Moving - Hold ⌘ (command) to copy"
+#~ msgstr "Moviendo - Control ⌘ (orden) para copiar"
 
-#~ msgid "Insufficient memory for spectrum filter."
-#~ msgstr "Nicht genügend Speicher für Spektrumfilter"
+#~ msgid "Moving - Hold control to copy"
+#~ msgstr "Moviendo - control de Control para copiar"
 
-#~ msgid "Bad bincount value in spectrum filter."
-#~ msgstr "Falsche Binanzahl im Spektrumfilter."
+#~ msgid "\\% Done (Esc aborts)"
+#~ msgstr "\\% Hecho (Esc aborta)"
 
-#~ msgid "Ranging aborted by user"
-#~ msgstr "Ranging durch User abgebrochen"
+#~ msgid "\\% Done"
+#~ msgstr "\\% Hecho"
 
-#~ msgid "Insufficient memory for range"
-#~ msgstr "Nicht genug Speicher für Range"
+#~ msgid "Mass-to-Charge (amu/e)"
+#~ msgstr "Masa-a-Cargo (amu/e)"
 
-#~ msgid ""
-#~ " Unable to merge stashes correctly. This is improbable, so please report "
-#~ "this."
-#~ msgstr ""
-#~ " Kann stashes nicht korrekt zusammenführen. Dies ist nicht möglich bitte "
-#~ "melden Sie das."
+#~ msgid "Pre-Allocate"
+#~ msgstr "Pre-Allocate"
diff --git a/translations/3Depict_fr_FR.mo b/translations/3Depict_fr_FR.mo
new file mode 100644
index 0000000..fd89bc3
Binary files /dev/null and b/translations/3Depict_fr_FR.mo differ
diff --git a/translations/3Depict_de_DE.po b/translations/3Depict_fr_FR.po
similarity index 55%
copy from translations/3Depict_de_DE.po
copy to translations/3Depict_fr_FR.po
index ecaad27..da68509 100644
--- a/translations/3Depict_de_DE.po
+++ b/translations/3Depict_fr_FR.po
@@ -1,122 +1,339 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
+# Translation file for locale fr_FR
+# Copyright (C) 2017
+# This file is distributed under the same license as the 3Depict package.
 #
 # Translators:
-# epix1234 <erich_s at gmx.de>, 2011.
-#   <erich_s at gmx.de>, 2011, 2012.
-#   <mycae at yahoo.com>, 2011.
 msgid ""
 msgstr ""
 "Project-Id-Version: 3Depict\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-31 11:15+1000\n"
-"PO-Revision-Date: 2012-07-09 08:21+0000\n"
-"Last-Translator: epix1234 <erich_s at gmx.de>\n"
-"Language-Team: German (Germany) (http://www.transifex.com/projects/p/3depict/"
-"language/de_DE/)\n"
-"Language: de_DE\n"
+"POT-Creation-Date: 2017-02-04 23:42+0000\n"
+"PO-Revision-Date: 2016-01-03 21:27+0000\n"
+"Last-Translator: \n"
+"Language-Team: French (http://www.transifex.com/mycae/3depict/language/fr/)\n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: ../src/gl/cameras.cpp:596
+msgid "Lock"
+msgstr "Verrouiller"
+
+#: ../src/gl/cameras.cpp:603 ../src/backend/filters/ionClip.cpp:529
+#: ../src/backend/filters/ionClip.cpp:551
+#: ../src/backend/filters/ionClip.cpp:573
+#: ../src/backend/filters/ionClip.cpp:610
+#: ../src/backend/filters/profile.cpp:1017
+#: ../src/backend/filters/profile.cpp:1055
+#: ../src/backend/filters/transform.cpp:1232
+#: ../src/backend/filters/transform.cpp:1259
+#: ../src/backend/filters/transform.cpp:1285
+#: ../src/backend/filters/annotation.cpp:576
+msgid "Origin"
+msgstr "Origine"
+
+#: ../src/gl/cameras.cpp:611 ../src/backend/filters/spatialAnalysis.cpp:872
+msgid "Target"
+msgstr "Cible"
+
+#: ../src/gl/cameras.cpp:617
+msgid "Up Dir."
+msgstr "Chef amunt de Dire."
+
+#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
+msgid "Perspective"
+msgstr "Perspective"
+
+#: ../src/gl/cameras.cpp:627 ../src/gl/cameras.cpp:730
+#: ../src/gui/mainFrame.cpp:5416
+msgid "Orthogonal"
+msgstr "Othogonal"
+
+#: ../src/gl/cameras.cpp:631
+msgid "Projection"
+msgstr "Projection"
+
+#: ../src/gl/cameras.cpp:640
+msgid "Field of View (deg)"
+msgstr "Champ de Vue (deg). "
+
+#: ../src/gl/cameras.cpp:646
+msgid "View size"
+msgstr "Mida de vue. "
+
+#: ../src/wx/wxcomponents.cpp:191
+msgid "Save Data..."
+msgstr "Sauve Donnée..."
+
+#: ../src/wx/wxcomponents.cpp:192
+msgid "Text File (*.txt)|*.txt|All Files (*)|*"
+msgstr "Archives de texte (*.txt)|*.txt|Toutes les  Archives (*)|*. "
+
+#: ../src/wx/wxcomponents.cpp:204
+msgid "Error saving file. Check output dir is writable."
+msgstr "Archives d'estalvi de l'erreur. Sortie de contrôle dire est writable."
+
+#: ../src/wx/wxcomponents.cpp:204 ../src/gui/dialogs/ExportRngDialog.cpp:187
+#: ../src/gui/mainFrame.cpp:1478 ../src/gui/mainFrame.cpp:1603
+#: ../src/gui/mainFrame.cpp:1652 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2284 ../src/gui/mainFrame.cpp:2357
+#: ../src/gui/mainFrame.cpp:2460 ../src/gui/mainFrame.cpp:2573
+msgid "Save error"
+msgstr "Erreur d'enregistrement"
+
+#: ../src/common/basics.cpp:183
+msgid "in the future?"
+msgstr "En le futur?. "
+
+#: ../src/common/basics.cpp:234
+msgid "a decade ago"
+msgstr "Fait une décade. "
+
+#: ../src/common/basics.cpp:235
+msgid "a year ago"
+msgstr "Fait une année. "
+
+#: ../src/common/basics.cpp:236
+msgid "a month ago"
+msgstr "Fait un mois. "
+
+#: ../src/common/basics.cpp:237
+msgid "a week ago"
+msgstr "Fait une semaine. "
+
+#: ../src/common/basics.cpp:238
+msgid "a day ago"
+msgstr "Fait un jour. "
+
+#: ../src/common/basics.cpp:239
+msgid "an hour ago"
+msgstr "il y a une heure"
+
+#: ../src/common/basics.cpp:240
+msgid "45 minutes ago"
+msgstr "Fait 45 minutes. "
+
+#: ../src/common/basics.cpp:241
+msgid "30 minutes ago"
+msgstr "Fait 30 minutes. "
+
+#: ../src/common/basics.cpp:242
+msgid "20 minutes ago"
+msgstr "Fait 20 minutes. "
+
+#: ../src/common/basics.cpp:243
+msgid "15 minutes ago"
+msgstr "Fait 15 minutes. "
+
+#: ../src/common/basics.cpp:244
+msgid "10 minutes ago"
+msgstr "Fait 10 minutes. "
+
+#: ../src/common/basics.cpp:245
+msgid "5 minutes ago"
+msgstr "Fait 5 minutes. "
+
+#: ../src/common/basics.cpp:246
+msgid "a minute ago"
+msgstr "il y a une minute"
+
+#: ../src/common/basics.cpp:247
+msgid "30 seconds ago"
+msgstr "Fait 30 secondes. "
+
+#: ../src/common/basics.cpp:248
+msgid "10 seconds ago"
+msgstr "Fait 10 secondes. "
+
+#: ../src/common/basics.cpp:249
+msgid "a second ago"
+msgstr "Une seconde fait. "
+
+#: ../src/common/basics.cpp:254
+msgid "a few decades ago"
+msgstr "Fait des combien décades. "
+
+#: ../src/common/basics.cpp:255
+msgid "a few years ago"
+msgstr "Fait des combien années. "
+
+#: ../src/common/basics.cpp:256
+msgid "a few months ago"
+msgstr "Fait des combien mois. "
+
+#: ../src/common/basics.cpp:257
+msgid "a few weeks ago"
+msgstr "Fait des combien semaines. "
+
+#: ../src/common/basics.cpp:258
+msgid "a few days ago"
+msgstr "Fait des combien jours. "
+
+#: ../src/common/basics.cpp:259
+msgid "a few hours ago"
+msgstr "Fait des combien heures. "
+
+#: ../src/common/basics.cpp:262
+msgid "tens of minutes ago"
+msgstr ""
+
+#: ../src/common/basics.cpp:266
+msgid "a few minutes ago"
+msgstr "Fait des combien minutes. "
+
+#: ../src/common/basics.cpp:269
+msgid "a few seconds ago"
+msgstr "il y a quelques secondes"
+
+#: ../src/common/basics.cpp:296
+msgid "moments ago"
+msgstr "Fait des moments. "
+
+#: ../src/common/colourmap.cpp:307
+msgid "Jet"
+msgstr "Jet"
+
+#: ../src/common/colourmap.cpp:308
+msgid "Hot"
+msgstr "Chaud"
+
+#: ../src/common/colourmap.cpp:309
+msgid "Cold"
+msgstr "Froid"
+
+#: ../src/common/colourmap.cpp:310
+msgid "Grey"
+msgstr "Gris"
+
+#: ../src/common/colourmap.cpp:311
+msgid "Cyclic"
+msgstr "Cyclique"
+
+#: ../src/common/colourmap.cpp:312
+msgid "General"
+msgstr "Général"
+
+#: ../src/common/colourmap.cpp:313
+msgid "Blue"
+msgstr "Bleu"
+
+#: ../src/common/colourmap.cpp:314
+msgid "Pseudo-Random"
+msgstr "Pseudo-Aleatori. "
+
+#: ../src/common/colourmap.cpp:315
+msgid "Inferno"
+msgstr ""
+
+#: ../src/common/colourmap.cpp:316
+msgid "Viridis"
+msgstr ""
+
+#: ../src/common/constants.cpp:22
+msgid ""
+"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
+"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
+"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+msgstr ""
 
 #: ../src/gui/glPane.cpp:642
 msgid "Use shift/ctrl-space or double tap to alter reset axis"
 msgstr ""
-"Verwenden Sie Shift / Strng-Leertaste oder doppeltippen, um Achsen "
-"zurückzusetzen oder zu verändern"
+"Changement d'usage/ctrl-aixeta espacial ou double pour altérer axe de "
+"reinicialització. "
 
 #: ../src/gui/glPane.cpp:938
 msgid "Image progress"
-msgstr "Bild Fortschritt"
+msgstr "Progrès d'image. "
 
 #: ../src/gui/glPane.cpp:939
 msgid "Rendering tiles..."
-msgstr "Rendering tiles..."
+msgstr "Rendering Dalle..."
 
 #: ../src/gui/glPane.cpp:1132
 msgid "Animation progress"
-msgstr "Animation-Fortschritt"
+msgstr "Progrès d'animation. "
 
 #: ../src/gui/glPane.cpp:1133
 msgid "Rendering sequence..."
-msgstr "Renderreihenfolge..."
+msgstr "Rendering Seqüència..."
 
 #: ../src/gui/glPane.cpp:1171
 msgid "Saving Image "
-msgstr "Speichere Bild "
+msgstr "Image d'estalvi.  "
 
-#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4401
-#: ../src/gui/mainFrame.cpp:4405 ../src/gui/mainFrame.cpp:4418
-#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/gui/glPane.cpp:1171 ../src/gui/mainFrame.cpp:4504
+#: ../src/gui/mainFrame.cpp:4508 ../src/gui/mainFrame.cpp:4521
+#: ../src/backend/filters/dataLoad.cpp:339
 msgid " of "
-msgstr " von "
+msgstr "sur"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:40
 msgid "Range Sources"
-msgstr "Range Sources"
+msgstr "Sources de gamme. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:42
 msgid "Details"
-msgstr "Details"
+msgstr "Détails"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:53
 msgid "Source Filter"
-msgstr "Source Filter"
+msgstr "Filtre source"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:54
-#: ../src/backend/filters/rangeFile.cpp:656
+#: ../src/backend/filters/rangeFile.cpp:657
 msgid "Ions"
-msgstr "Ionen"
+msgstr "Ions. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:55
 #: ../src/gui/dialogs/rangeEditDialog.cpp:1587
-#: ../src/backend/filters/voxelise.cpp:834
-#: ../src/backend/filters/rangeFile.cpp:723
+#: ../src/backend/filters/voxelise.cpp:1049
+#: ../src/backend/filters/rangeFile.cpp:724
 msgid "Ranges"
-msgstr "Ranges"
+msgstr "Intervalles"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:88
 msgid "Param"
-msgstr "Param."
+msgstr "Arrêtons. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:89
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:105
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:352
-#: ../src/backend/filters/dataLoad.cpp:581
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
+#: ../src/backend/filters/dataLoad.cpp:610
 msgid "Value"
-msgstr "Wert"
+msgstr "Valeur"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:90
 msgid "Value2"
-msgstr "Wert2"
+msgstr "Valeur2. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:97
 msgid "Ion Name"
-msgstr "Ionenname"
+msgstr "Nom d'ió. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:98
 msgid "Num Ranges"
-msgstr "Num Ranges"
+msgstr "Num Gammes. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:116
-#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:53
+#: ../src/gui/dialogs/rangeEditDialog.cpp:696 ../src/backend/filter.cpp:52
 msgid "Ion"
 msgstr "Ion"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:117
 msgid "Range Start"
-msgstr "Range Anfang"
+msgstr "Début de gamme. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:118
 msgid "Range end"
-msgstr "Range Ende"
+msgstr "Fin de période"
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2376
+#: ../src/gui/dialogs/ExportRngDialog.cpp:151 ../src/gui/mainFrame.cpp:2395
 msgid "Save pos..."
-msgstr "pos speichern..."
+msgstr "Sauve pos..."
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:152
 msgid ""
@@ -124,277 +341,143 @@ msgid ""
 "(*.env)|*.env|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1638 ../src/gui/mainFrame.cpp:1713
-#: ../src/gui/mainFrame.cpp:2266 ../src/gui/mainFrame.cpp:2443
-#: ../src/gui/mainFrame.cpp:2556
+#: ../src/gui/dialogs/ExportRngDialog.cpp:184 ../src/gui/mainFrame.cpp:1478
+#: ../src/gui/mainFrame.cpp:1653 ../src/gui/mainFrame.cpp:1728
+#: ../src/gui/mainFrame.cpp:2285 ../src/gui/mainFrame.cpp:2461
+#: ../src/gui/mainFrame.cpp:2574
 msgid "Unable to save. Check output destination can be written to."
 msgstr ""
-"Speichern nicht möglich. Bitte überprüfen Sie ob der Ausgabepfad "
-"schreibgeschützt ist."
-
-#: ../src/gui/dialogs/ExportRngDialog.cpp:187 ../src/gui/mainFrame.cpp:1463
-#: ../src/gui/mainFrame.cpp:1588 ../src/gui/mainFrame.cpp:1637
-#: ../src/gui/mainFrame.cpp:1713 ../src/gui/mainFrame.cpp:2265
-#: ../src/gui/mainFrame.cpp:2338 ../src/gui/mainFrame.cpp:2442
-#: ../src/gui/mainFrame.cpp:2555 ../src/wx/wxcomponents.cpp:204
-msgid "Save error"
-msgstr "Fehler speichern"
+"Impossible d'enregistrer. Vérifiez la destination de sortie peut être écrit."
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:253
 msgid "Export Range"
-msgstr "Range exportieren"
+msgstr "Exporter la plage"
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:258
 msgid "List of rangefiles in filter tree"
-msgstr "Liste der Rangedateien im Filterbaum"
+msgstr "Liste de rangefiles en arbre de filtre. "
 
 #: ../src/gui/dialogs/ExportRngDialog.cpp:260
 msgid "Detailed view of selected range"
-msgstr "Detailierte Ansicht des ausgewählten Range"
+msgstr "Vue detallada de gamme sélectionnée. "
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:92
-msgid "Cameca/Ametek RRNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:221
+msgid "Show Overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:93
-msgid "Oak-Ridge RNG"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:246
+msgid "e.g. H2O"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:94
-msgid "Cameca/Ametek ENV"
-msgstr ""
+#: ../src/gui/dialogs/rangeEditDialog.cpp:561
+#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:6071
+#: ../src/backend/filter.cpp:53
+msgid "Plot"
+msgstr "Courbe"
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:156
-msgid "Key frames"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:562
+msgid "Short Name"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:157
-msgid "Output Data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:563
+msgid "Long Name"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:158
-msgid "Filters and properties"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:564
+#: ../src/backend/filters/voxelise.cpp:1188
+#: ../src/backend/filters/profile.cpp:1159
+#: ../src/backend/filters/annotation.cpp:909
+#: ../src/backend/filters/spectrumPlot.cpp:679
+msgid "Colour"
+msgstr "Couleurs"
+
+#: ../src/gui/dialogs/rangeEditDialog.cpp:697
+#: ../src/backend/filters/annotation.cpp:613
+#: ../src/backend/filters/annotation.cpp:654
+#: ../src/backend/filters/annotation.cpp:823
+msgid "Start"
+msgstr "Début"
+
+#: ../src/gui/dialogs/rangeEditDialog.cpp:698
+#: ../src/backend/filters/annotation.cpp:621
+#: ../src/backend/filters/annotation.cpp:663
+#: ../src/backend/filters/annotation.cpp:831
+msgid "End"
+msgstr "Fin"
+
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
+msgid "Range or ion?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:164
-msgid "Dir : "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
+msgid "Select type to add"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:167
-msgid "Output only when refresh required"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
+msgid "Range Editor"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:169
-msgid "Data Types:"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
+msgid "Enable or disable all overlays"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:170
-msgid "3D Images"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
+msgid "Entered overlays, use delete to remove"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:171
-msgid "File Prefix: "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
+msgid "Available plots for ranging"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:173
-msgid "Size : "
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
+msgid "Enter species to display as overlay, e.g. SiO2"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:175
-msgid "..."
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
+msgid "Editable ranges"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:176
-msgid "Point data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
+msgid "Editable ions"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:177
 #: ../src/gui/dialogs/rangeEditDialog.cpp:1586
+#: ../src/gui/dialogs/animateFilterDialog.cpp:177
 msgid "Plots"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:178
-msgid "Voxel data"
+#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
+msgid "Overlay"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:179
-msgid "Range files"
+#: ../src/gui/dialogs/autosaveDialog.cpp:39
+msgid "Remove &All"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:180
-msgid "Format"
+#: ../src/gui/dialogs/autosaveDialog.cpp:123
+msgid "Restore state?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:197
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
-#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
-msgid "Frame"
+#: ../src/gui/dialogs/autosaveDialog.cpp:133
+msgid "Multiple autosave states were found; would you like to restore one?"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-msgid "transition frame"
+#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:481
+#: ../src/backend/filter.cpp:484
+msgid "Error"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:702
-#: ../src/gui/mainFrame.cpp:1690
-msgid "Frame count"
-msgstr "Bildanzahl"
+#: ../src/gui/dialogs/filterErrorDialog.cpp:39
+msgid "Warning"
+msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:774
-msgid "Key frame : Colour"
+#: ../src/gui/dialogs/filterErrorDialog.cpp:42
+#: ../src/gui/dialogs/filterErrorDialog.cpp:52
+msgid "Filter Errors"
 msgstr ""
 
-#: ../src/gui/dialogs/animateFilterDialog.cpp:827
-msgid "File existed, but was unable to read or interpret file contents."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:828
-msgid "String load failed"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:849
-msgid "Keyframe : decimal"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:858
-msgid "Keyframe : integer"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:867
-msgid "Keyframe : 3D Point"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:995
-msgid "Select or create new folder"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
-msgid "Export Animation"
-msgstr "Animation exportieren"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
-msgid "Select filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1177
-msgid "Select property"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
-msgid "Filter"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1199
-msgid "Property"
-msgstr "Eigenschaft"
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
-#: ../src/backend/filters/annotation.cpp:545
-#: ../src/backend/filters/annotation.cpp:551
-#: ../src/backend/filters/transform.cpp:1150
-#: ../src/backend/filters/ionDownsample.cpp:465
-#: ../src/backend/filters/spatialAnalysis.cpp:1173
-msgid "Mode"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
-msgid "Start Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
-#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
-msgid "End Frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
-msgid "Keyframe table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
-msgid "Remove the selected keyframe from the table"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
-msgid "Enter where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1187
-msgid "Browse to directory where the animation frames will be exported to"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
-msgid ""
-"Title for files, result will be saved as #-name.png, where # is image number."
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
-msgid "Target resolution (image size)"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
-msgid "Select frame for property display"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
-msgid "Enter frame number to change frame (eg 1/20)"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
-msgid "Save point data (POS files) in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
-msgid "Save plots (as text files) in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
-msgid "Save voxel data (raw files) in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1196
-msgid "Save range files  in output folder?"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
-msgid "Animation parameters for current frame"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
-msgid "Abort animation"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1203
-msgid "Run Animation"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
-msgid "Filter view"
-msgstr ""
-
-#: ../src/gui/dialogs/animateFilterDialog.cpp:1275
-msgid "Frame view"
-msgstr ""
-
-#: ../src/gui/dialogs/filterErrorDialog.cpp:37 ../src/backend/filter.cpp:476
-#: ../src/backend/filter.cpp:479
-msgid "Error"
-msgstr ""
-
-#: ../src/gui/dialogs/filterErrorDialog.cpp:39
-msgid "Warning"
-msgstr ""
-
-#: ../src/gui/dialogs/filterErrorDialog.cpp:42
-#: ../src/gui/dialogs/filterErrorDialog.cpp:52
-msgid "Filter Errors"
-msgstr ""
-
-#: ../src/gui/dialogs/StashDialog.cpp:49
-msgid "Stashes"
+#: ../src/gui/dialogs/StashDialog.cpp:49
+msgid "Stashes"
 msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:52
@@ -407,60 +490,31 @@ msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:60
 msgid "Stash Name"
-msgstr "Stash Name"
+msgstr "Stash Nom. "
 
 #: ../src/gui/dialogs/StashDialog.cpp:61
 msgid "Filter Count"
-msgstr "Filter Count"
+msgstr "Le Filtre Compte. "
 
 #: ../src/gui/dialogs/StashDialog.cpp:94
 msgid "Stashed Trees"
-msgstr "Stashed Trees"
+msgstr "Stashed Arbres. "
 
 #: ../src/gui/dialogs/StashDialog.cpp:97
 msgid "Erase stashed item"
-msgstr ""
+msgstr "Stashed Filtres. "
 
 #: ../src/gui/dialogs/StashDialog.cpp:98
 msgid "Filter view for current stash"
-msgstr "Filteransicht für den aktuellen Stash"
+msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:99
 msgid "Settings for selected filter in current stash"
-msgstr "Einstellungen für den ausgewählten Stash"
+msgstr ""
 
 #: ../src/gui/dialogs/StashDialog.cpp:100
 msgid "Available stashes"
-msgstr "Verfügbare Stash"
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:45
-msgid "Width :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:47
-msgid "Height :"
-msgstr ""
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:50
-#: ../src/gui/dialogs/prefDialog.cpp:85
-msgid "Reset"
-msgstr "Zurücksetzen"
-
-#: ../src/gui/dialogs/resolutionDialog.cpp:336
-msgid "Resolution Selection"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:39
-msgid "Remove &All"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:123
-msgid "Restore state?"
-msgstr ""
-
-#: ../src/gui/dialogs/autosaveDialog.cpp:133
-msgid "Multiple autosave states were found; would you like to restore one?"
-msgstr ""
+msgstr "Donnée disponible. "
 
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:45
 msgid "Start Frame: "
@@ -474,6 +528,12 @@ msgstr ""
 msgid "From Table"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:104
+#: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:350
+#: ../src/gui/dialogs/animateFilterDialog.cpp:197
+msgid "Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/stringKeyFrameDialog.cpp:240
 msgid "Select text file..."
 msgstr ""
@@ -538,6 +598,16 @@ msgstr ""
 msgid "Ramp"
 msgstr ""
 
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:68
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1181
+msgid "Start Frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:70
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1182
+msgid "End Frame"
+msgstr ""
+
 #: ../src/gui/dialogs/animateSubDialogs/colourKeyFrameDialog.cpp:73
 msgid "Initial Value"
 msgstr ""
@@ -566,176 +636,266 @@ msgstr ""
 msgid "Colour at end of transition"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:73
-msgid "Panel Display"
-msgstr "Panel Display"
-
-#: ../src/gui/dialogs/prefDialog.cpp:75
-msgid "Online Updates"
-msgstr "Online Updates"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:92
+msgid "Cameca/Ametek RRNG"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
-msgid "Startup"
-msgstr "Startup"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:93
+msgid "Oak-Ridge RNG"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:78
-msgid "Camera Speed"
-msgstr "Kamerageschwindigkeit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:94
+msgid "Cameca/Ametek ENV"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:79
-msgid "Available Filters"
-msgstr "Verfügbare Filter"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:156
+msgid "Key frames"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:84
-msgid "Reset All"
-msgstr "Alle zurücksetzen"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:157
+msgid "Output Data"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:87
-msgid "Show all panels"
-msgstr "Zeige alle Fenster"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:158
+msgid "Filters and properties"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:88
-msgid "Remember last"
-msgstr "Zuletzt verwendet"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:164
+msgid "Dir : "
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:89
-msgid "Show Selected"
-msgstr "Zeige Auswahl"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:167
+msgid "Output only when refresh required"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:92
-msgid "Control Pane"
-msgstr "Kontrollfenster"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:169
+msgid "Data Types:"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:93
-msgid "Raw Data Panel"
-msgstr "Rohdatenfenster"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:170
+msgid "3D Images"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:691
-msgid "Plot List"
-msgstr "Plotliste"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:171
+msgid "File Prefix: "
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:96
-msgid "Periodically notify about available updates"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:173
+msgid "Size : "
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:98
-msgid "Prefer orthographic at startup"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:175
+msgid "..."
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:99
-msgid "Move Rate"
-msgstr "Bewegungsgeschwindigkeit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:176
+msgid "Point data"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:100 ../src/gui/dialogs/prefDialog.cpp:104
-msgid "(slow)"
-msgstr "(langsam)"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:178
+msgid "Voxel data"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:102 ../src/gui/dialogs/prefDialog.cpp:106
-msgid "(fast)"
-msgstr "(schnell)"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:179
+msgid "Range files"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:103
-msgid "Zoom Rate"
-msgstr "Zoomgeschwindigkeit"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:180
+msgid "Format"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:416
-msgid "Show all panels when starting program"
-msgstr "Zeige alle Fenster beim Programmstart"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701
+msgid "transition frame"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:419
-msgid "Show panels visible at last shutdown when starting program"
-msgstr "Beim Programmstart zuletzt eingeschaltete Fenster anzeigen."
+#: ../src/gui/dialogs/animateFilterDialog.cpp:701 ../src/gui/mainFrame.cpp:1705
+msgid "Frame count"
+msgstr "Numéro de l'image"
 
-#: ../src/gui/dialogs/prefDialog.cpp:426
-msgid "Show selected panels when starting program"
-msgstr "Zeige ausgewählte Fenster beim Programmstart"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:773
+msgid "Key frame : Colour"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:475
-msgid "Preferences"
-msgstr "Voreinstellungen"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:826
+msgid "File existed, but was unable to read or interpret file contents."
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:477
-msgid "Set the method of panel layout when starting the program"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:827
+msgid "String load failed"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:480
-msgid ""
-"Lets the program check the internet to see if updates to the program version "
-"are available, then notifies you about updates now and again."
+#: ../src/gui/dialogs/animateFilterDialog.cpp:848
+msgid "Keyframe : decimal"
 msgstr ""
-"Lässt das Programm via Internet überprüfen ob Updates für diese "
-"Programmversion verfügbar sind. Danach informiert es über die neuen Updates."
 
-#: ../src/gui/dialogs/prefDialog.cpp:482
+#: ../src/gui/dialogs/animateFilterDialog.cpp:857
+msgid "Keyframe : integer"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:866
+msgid "Keyframe : 3D Point"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:994
+msgid "Select or create new folder"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1174
+msgid "Export Animation"
+msgstr "Animation d'exportation. "
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1175
+msgid "Select filter"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1176
+msgid "Select property"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1178
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1197
+msgid "Filter"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1179
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1198
+msgid "Property"
+msgstr "Propriété"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1180
+#: ../src/backend/filters/spatialAnalysis.cpp:1062
+#: ../src/backend/filters/transform.cpp:1149
+#: ../src/backend/filters/annotation.cpp:553
+#: ../src/backend/filters/annotation.cpp:559
+#: ../src/backend/filters/ionDownsample.cpp:466
+msgid "Mode"
+msgstr "Mode"
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1183
+msgid "Keyframe table"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1184
+msgid "Remove the selected keyframe from the table"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1185
+msgid "Enter where the animation frames will be exported to"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1186
+msgid "Browse to directory where the animation frames will be exported to"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1188
 msgid ""
-"By default, use an orthographic camera at startup. State files will override "
-"this preference."
+"Title for files, result will be saved as #-name.png, where # is image number."
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:483
-msgid "Camera translation, orbit and swivel rates. "
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1189
+msgid "Target resolution (image size)"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:484
-msgid "Camera zooming rate."
-msgstr "Zoomgeschwindigkeit der Kamera"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1190
+msgid "Select frame for property display"
+msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:486
-msgid "Reset the filter initial values back to program defaults"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1191
+msgid "Enter frame number to change frame (eg 1/20)"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:487
-msgid "Reset all filter initial values back to program defaults"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1192
+msgid "Save point data (POS files) in output folder?"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:559
-msgid "Filt. Default"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1193
+msgid "Save plots (as text files) in output folder?"
 msgstr ""
 
-#: ../src/gui/dialogs/prefDialog.cpp:561
-msgid "Camera"
-msgstr "Kamera"
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1194
+msgid "Save voxel data (raw files) in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1195
+msgid "Save range files  in output folder?"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1200
+msgid "Animation parameters for current frame"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1201
+msgid "Abort animation"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1202
+msgid "Run Animation"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1273
+msgid "Filter view"
+msgstr ""
+
+#: ../src/gui/dialogs/animateFilterDialog.cpp:1274
+msgid "Frame view"
+msgstr ""
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:45
+msgid "Width :"
+msgstr ""
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:47
+msgid "Height :"
+msgstr ""
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:50
+#: ../src/gui/dialogs/prefDialog.cpp:85
+msgid "Reset"
+msgstr "Réinitialiser"
+
+#: ../src/gui/dialogs/resolutionDialog.cpp:336
+msgid "Resolution Selection"
+msgstr ""
 
 #: ../src/gui/dialogs/ExportPos.cpp:63
 msgid "Export:"
-msgstr "Exportieren:"
+msgstr "Exporter :"
 
 #: ../src/gui/dialogs/ExportPos.cpp:64
-#: ../src/backend/filters/boundingBox.cpp:567
+#: ../src/backend/filters/boundingBox.cpp:568
 msgid "Visible"
-msgstr "Sichtbar"
+msgstr "Visible"
 
 #: ../src/gui/dialogs/ExportPos.cpp:65
 msgid "Selected Data"
-msgstr "Daten auswählen"
+msgstr "Donnée sélectionnée. "
 
 #: ../src/gui/dialogs/ExportPos.cpp:67
 msgid "Available Data"
-msgstr "Verfügbare Daten"
+msgstr "Donnée disponible. "
 
 #: ../src/gui/dialogs/ExportPos.cpp:73
 msgid "Selection"
-msgstr "Auswahl"
+msgstr "Sélection"
 
 #: ../src/gui/dialogs/ExportPos.cpp:98 ../src/gui/dialogs/ExportPos.cpp:101
 msgid "Index"
 msgstr "Index"
 
 #: ../src/gui/dialogs/ExportPos.cpp:99 ../src/gui/dialogs/ExportPos.cpp:102
-#: ../src/backend/filters/profile.cpp:604
-#: ../src/backend/filters/spatialAnalysis.cpp:2520
-#: ../src/backend/filters/spatialAnalysis.cpp:2613
-#: ../src/backend/filters/spatialAnalysis.cpp:2673
-#: ../src/backend/filters/spatialAnalysis.cpp:3628
-#: ../src/backend/filters/spatialAnalysis.cpp:3831
-#: ../src/backend/filters/spatialAnalysis.cpp:3890
+#: ../src/backend/filters/spatialAnalysis.cpp:2388
+#: ../src/backend/filters/spatialAnalysis.cpp:2481
+#: ../src/backend/filters/spatialAnalysis.cpp:2541
+#: ../src/backend/filters/spatialAnalysis.cpp:3292
+#: ../src/backend/filters/spatialAnalysis.cpp:3481
+#: ../src/backend/filters/profile.cpp:608
 #: ../src/backend/filters/spectrumPlot.cpp:65
 msgid "Count"
-msgstr "Anzahl"
+msgstr "Décompte"
 
 #: ../src/gui/dialogs/ExportPos.cpp:451
 msgid "Export Pos Data"
-msgstr "POS Daten exportieren"
+msgstr "Exportation Pos Donnée. "
 
 #: ../src/gui/dialogs/ExportPos.cpp:454
 msgid "Tree of filters, select leaves to show ion data."
@@ -753,2974 +913,3125 @@ msgstr ""
 msgid "Add selected data from currently selected filter"
 msgstr ""
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:221
-msgid "Show Overlays"
-msgstr ""
-
-#: ../src/gui/dialogs/rangeEditDialog.cpp:246
-msgid "e.g. H2O"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:73
+msgid "Panel Display"
+msgstr "Affichage du tableau de bord"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:561
-#: ../src/gui/dialogs/rangeEditDialog.cpp:695 ../src/gui/mainFrame.cpp:5966
-#: ../src/backend/filter.cpp:54
-msgid "Plot"
-msgstr "Plot"
+#: ../src/gui/dialogs/prefDialog.cpp:75
+msgid "Online Updates"
+msgstr "En ligne Actualitza. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:562
-msgid "Short Name"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:77 ../src/gui/dialogs/prefDialog.cpp:560
+msgid "Startup"
+msgstr "Démarrage"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:563
-msgid "Long Name"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:78
+msgid "Camera Speed"
+msgstr "Vitesse de càmera. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:564
-#: ../src/backend/filters/annotation.cpp:901
-#: ../src/backend/filters/voxelise.cpp:976
-#: ../src/backend/filters/profile.cpp:1155
-#: ../src/backend/filters/spectrumPlot.cpp:676
-msgid "Colour"
-msgstr "Farbe"
+#: ../src/gui/dialogs/prefDialog.cpp:79
+msgid "Available Filters"
+msgstr "Filtres disponibles"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:697
-#: ../src/backend/filters/annotation.cpp:605
-#: ../src/backend/filters/annotation.cpp:646
-#: ../src/backend/filters/annotation.cpp:815
-msgid "Start"
-msgstr "Anfang"
+#: ../src/gui/dialogs/prefDialog.cpp:84
+msgid "Reset All"
+msgstr "Tout réinitialiser"
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:698
-#: ../src/backend/filters/annotation.cpp:613
-#: ../src/backend/filters/annotation.cpp:655
-#: ../src/backend/filters/annotation.cpp:823
-msgid "End"
-msgstr "Ende"
+#: ../src/gui/dialogs/prefDialog.cpp:87
+msgid "Show all panels"
+msgstr "Spectacle tous les plafons. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1260
-msgid "Range or ion?"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:88
+msgid "Remember last"
+msgstr "Souvient dernier. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1261
-msgid "Select type to add"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:89
+msgid "Show Selected"
+msgstr "Le Spectacle a Sélectionné. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1542
-msgid "Range Editor"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:92
+msgid "Control Pane"
+msgstr "Contrôle Pane. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1546
-msgid "Enable or disable all overlays"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:93
+msgid "Raw Data Panel"
+msgstr "Plafó de Donnée crue. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1547
-msgid "Entered overlays, use delete to remove"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:94 ../src/gui/mainFrame.cpp:693
+msgid "Plot List"
+msgstr "Liste de trama. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1548
-msgid "Available plots for ranging"
+#: ../src/gui/dialogs/prefDialog.cpp:96
+msgid "Periodically notify about available updates"
 msgstr ""
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1549
-msgid "Enter species to display as overlay, e.g. SiO2"
+#: ../src/gui/dialogs/prefDialog.cpp:98
+msgid "Prefer orthographic at startup"
 msgstr ""
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1550
-msgid "Editable ranges"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:99
+msgid "Move Rate"
+msgstr "índex de mouvement. "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1551
-msgid "Editable ions"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:100 ../src/gui/dialogs/prefDialog.cpp:104
+msgid "(slow)"
+msgstr "(Lent). "
 
-#: ../src/gui/dialogs/rangeEditDialog.cpp:1588
-msgid "Overlay"
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:102 ../src/gui/dialogs/prefDialog.cpp:106
+msgid "(fast)"
+msgstr "(Rapide). "
 
-#: ../src/gui/mainFrame.cpp:119
-msgid "New camera name..."
-msgstr "Neuer Kameraname..."
+#: ../src/gui/dialogs/prefDialog.cpp:103
+msgid "Zoom Rate"
+msgstr "índex de zoom. "
 
-#: ../src/gui/mainFrame.cpp:120
-msgid "New stash name..."
-msgstr ""
+#: ../src/gui/dialogs/prefDialog.cpp:416
+msgid "Show all panels when starting program"
+msgstr "Spectacle tous les plafons quand commençant programme. "
 
-#: ../src/gui/mainFrame.cpp:125
-msgid "New Filter..."
+#: ../src/gui/dialogs/prefDialog.cpp:419
+msgid "Show panels visible at last shutdown when starting program"
 msgstr ""
+"Plafons de spectacle visibles à dernier shutdown quand commençant programme. "
 
-#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:560
-#: ../src/backend/filters/annotation.cpp:664
-#: ../src/backend/filters/annotation.h:96
-msgid "Annotation"
-msgstr "Kommentar"
+#: ../src/gui/dialogs/prefDialog.cpp:426
+msgid "Show selected panels when starting program"
+msgstr "Spectacle plafons sélectionnés quand commençant programme. "
 
-#: ../src/gui/mainFrame.cpp:143
-msgid "Bounding Box"
-msgstr "Begrenzungs-Box"
+#: ../src/gui/dialogs/prefDialog.cpp:475
+msgid "Preferences"
+msgstr "Préférences"
 
-#: ../src/gui/mainFrame.cpp:144 ../src/backend/filters/ionClip.cpp:629
-#: ../src/backend/filters/ionClip.h:66
-msgid "Clipping"
-msgstr "Zuschneiden"
+#: ../src/gui/dialogs/prefDialog.cpp:477
+msgid "Set the method of panel layout when starting the program"
+msgstr ""
+"Définissez la méthode de la présentation du panneau lors du démarrage du "
+"programme"
+
+#: ../src/gui/dialogs/prefDialog.cpp:480
+msgid ""
+"Lets the program check the internet to see if updates to the program version "
+"are available, then notifies you about updates now and again."
+msgstr ""
+"Laisse le programme constate l'internet pour voir si actualitza à la version "
+"de programme est disponible, alors te notifica environ actualitza de "
+"tellement de en tellement de."
+
+#: ../src/gui/dialogs/prefDialog.cpp:482
+msgid ""
+"By default, use an orthographic camera at startup. State files will override "
+"this preference."
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:483
+msgid "Camera translation, orbit and swivel rates. "
+msgstr "Traduction de càmera, orbite et swivel índexs. "
+
+#: ../src/gui/dialogs/prefDialog.cpp:484
+msgid "Camera zooming rate."
+msgstr "Taux de caméra zoom. "
+
+#: ../src/gui/dialogs/prefDialog.cpp:486
+msgid "Reset the filter initial values back to program defaults"
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:487
+msgid "Reset all filter initial values back to program defaults"
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:559
+msgid "Filt. Default"
+msgstr ""
+
+#: ../src/gui/dialogs/prefDialog.cpp:561
+msgid "Camera"
+msgstr "Appareil photo"
+
+#: ../src/gui/mainFrame.cpp:119
+msgid "New camera name..."
+msgstr "Nom de càmera nouvelle..."
+
+#: ../src/gui/mainFrame.cpp:120
+msgid "New stash name..."
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:125
+msgid "New Filter..."
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:142 ../src/backend/filters/annotation.cpp:568
+#: ../src/backend/filters/annotation.cpp:672
+#: ../src/backend/filters/annotation.h:96
+msgid "Annotation"
+msgstr "Annotation"
+
+#: ../src/gui/mainFrame.cpp:143
+msgid "Bounding Box"
+msgstr "Tracé selon enveloppe"
+
+#: ../src/gui/mainFrame.cpp:144 ../src/backend/filters/ionClip.cpp:629
+#: ../src/backend/filters/ionClip.h:66
+msgid "Clipping"
+msgstr "Saturation"
 
 #: ../src/gui/mainFrame.cpp:145 ../src/backend/filters/clusterAnalysis.h:151
 msgid "Cluster Analysis"
-msgstr "Clusteranalyse"
+msgstr "Anàlisi de groupe. "
 
 #: ../src/gui/mainFrame.cpp:146
 msgid "Compos. Profiles"
-msgstr "Konz.Profil"
+msgstr "Compos. Profils. "
 
 #: ../src/gui/mainFrame.cpp:147
 msgid "Downsampling"
-msgstr "Datenreduktion"
+msgstr "Downsampling. "
 
 #: ../src/gui/mainFrame.cpp:148
 msgid "Extern. Prog."
-msgstr "Ext. Progr."
+msgstr "Extern. Prog."
 
 #: ../src/gui/mainFrame.cpp:149
 msgid "Ion Colour"
-msgstr "Ionenfarbe"
+msgstr "Couleur d'ió. "
 
 #: ../src/gui/mainFrame.cpp:150
 msgid "Ion Info"
-msgstr "Ion Info"
+msgstr "Ió Info. "
 
 #: ../src/gui/mainFrame.cpp:151
 msgid "Ion Transform"
-msgstr "Ionentransform."
+msgstr "L'Ió Transforme. "
 
 #: ../src/gui/mainFrame.cpp:152 ../src/backend/filters/spectrumPlot.h:76
 msgid "Spectrum"
-msgstr "Spektrum"
+msgstr "Spectre"
 
 #: ../src/gui/mainFrame.cpp:153
 msgid "Range File"
-msgstr "Rangedatei"
+msgstr "Archives de gamme. "
 
-#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:202
+#: ../src/gui/mainFrame.cpp:154 ../src/backend/filters/spatialAnalysis.h:192
 msgid "Spat. Analysis"
-msgstr "Räumliche Analyse"
+msgstr "Spat. Anàlisi. "
 
-#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:122
+#: ../src/gui/mainFrame.cpp:155 ../src/backend/filters/voxelise.h:126
 msgid "Voxelisation"
-msgstr "Voxelisation"
+msgstr "Voxelisation. "
 
-#: ../src/gui/mainFrame.cpp:451
+#: ../src/gui/mainFrame.cpp:453
 msgid "OpenGL Failed"
-msgstr "OpenGL fehlgeschlagen"
+msgstr "OpenGL A failli. "
 
-#: ../src/gui/mainFrame.cpp:452 ../src/gui/mainFrame.cpp:454
+#: ../src/gui/mainFrame.cpp:454 ../src/gui/mainFrame.cpp:456
 msgid ""
 "Unable to initialise the openGL (3D) panel. Program cannot start. Please "
 "check your video drivers."
 msgstr ""
-"Kann das OpenGL (3D)-Panel nicht initialisieren. Das Programm kann nicht "
-"gestartet werden. Bitte überprüfen Sie Ihren Video-Treiber."
+"Incapaç à initialise l'openGL (3D) plafó. Le Programme ne peut pas "
+"commencer. Si vous plau constater vos conducteurs de vidéo."
 
-#: ../src/gui/mainFrame.cpp:475
+#: ../src/gui/mainFrame.cpp:477
 msgid "&Open...\tCtrl+O"
-msgstr "&Öffnen...\tCtrl+O"
+msgstr "&Ouvert... Ctrl+O. \t"
 
-#: ../src/gui/mainFrame.cpp:475
+#: ../src/gui/mainFrame.cpp:477
 msgid "Open state file"
-msgstr "Statusdatei öffnen"
+msgstr "Archives estatal ouvert. "
 
-#: ../src/gui/mainFrame.cpp:476
+#: ../src/gui/mainFrame.cpp:478
 msgid "&Merge...\tCtrl+Shift+O"
-msgstr "&Zusammenführen...\tCtrl+Shift+O"
+msgstr "&Fusionne... Ctrl+Shift+O. \t"
 
-#: ../src/gui/mainFrame.cpp:476
+#: ../src/gui/mainFrame.cpp:478
 msgid "Merge other file"
-msgstr "Merge other file"
+msgstr "Fusionner autres archives. "
 
-#: ../src/gui/mainFrame.cpp:480
+#: ../src/gui/mainFrame.cpp:482
 msgid "&Recent"
-msgstr "&Letzte"
+msgstr "&Récent. "
 
-#: ../src/gui/mainFrame.cpp:481
+#: ../src/gui/mainFrame.cpp:483
 msgid "&Save\tCtrl+S"
-msgstr "&Speichern\tCtrl+S"
+msgstr "&Sauve\tCtrl+S. "
 
-#: ../src/gui/mainFrame.cpp:481
+#: ../src/gui/mainFrame.cpp:483
 msgid "Save state to file"
-msgstr "Status in Datei speichern"
+msgstr "Sauve estatal d'archiver. "
 
-#: ../src/gui/mainFrame.cpp:483
+#: ../src/gui/mainFrame.cpp:485
 msgid "Save &As...\tCtrl+Shift+S"
-msgstr "Speichern &als...\tCtrl+Shift+S"
+msgstr "Sauve &Tellement... Ctrl+Changement+S. \t"
 
-#: ../src/gui/mainFrame.cpp:483
+#: ../src/gui/mainFrame.cpp:485
 msgid "Save current state to new file"
-msgstr "Aktuellen Status als neue Datei speichern"
+msgstr "Sauvez été actuel à archives nouveau. "
 
-#: ../src/gui/mainFrame.cpp:486
+#: ../src/gui/mainFrame.cpp:488
 msgid "&Plot...\tCtrl+P"
-msgstr "&Plot...\tCtrl+P"
+msgstr "&Trama... Ctrl+P. \t"
 
-#: ../src/gui/mainFrame.cpp:486
+#: ../src/gui/mainFrame.cpp:488
 msgid "Export Current Plot"
-msgstr "Aktuellen Plot exportieren"
+msgstr "Exportation Trama Actuelle. "
 
-#: ../src/gui/mainFrame.cpp:487
+#: ../src/gui/mainFrame.cpp:489
 msgid "&Image...\tCtrl+I"
-msgstr "&Bild...\tCtrl+I"
+msgstr "&Image... Ctrl+Je. \t"
 
-#: ../src/gui/mainFrame.cpp:487
+#: ../src/gui/mainFrame.cpp:489
 msgid "Export Current 3D View"
-msgstr "Aktuelle 3D Ansicht exportieren"
+msgstr "Courant d'exportation 3Dème Vue. "
 
-#: ../src/gui/mainFrame.cpp:488
+#: ../src/gui/mainFrame.cpp:490
 msgid "Ion&s...\tCtrl+N"
-msgstr "Ion&en...\tCtrl+N"
+msgstr "Ió&s... Ctrl+N. \t"
 
-#: ../src/gui/mainFrame.cpp:488
+#: ../src/gui/mainFrame.cpp:490
 msgid "Export Ion Data"
-msgstr "Ionendaten exportieren"
+msgstr "Donnée d'Ió de l'exportation. "
 
-#: ../src/gui/mainFrame.cpp:489
+#: ../src/gui/mainFrame.cpp:491
 msgid "Ran&ges...\tCtrl+G"
-msgstr "Ran&ges...\tCtrl+G"
+msgstr "A couru&ges... Ctrl+G. \t"
 
-#: ../src/gui/mainFrame.cpp:489
+#: ../src/gui/mainFrame.cpp:491
 msgid "Export Range Data"
-msgstr "Rangedaten exportieren"
+msgstr "Donnée de Gamme de l'exportation. "
 
-#: ../src/gui/mainFrame.cpp:490
+#: ../src/gui/mainFrame.cpp:492
 msgid "&Animate Filters...\tCtrl+T"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:490
+#: ../src/gui/mainFrame.cpp:492
 msgid "Export Animated Filter"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
+#: ../src/gui/mainFrame.cpp:493
 msgid "Ani&mate Camera...\tCtrl+M"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:491
+#: ../src/gui/mainFrame.cpp:493
 msgid "Export Animated Camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:492
+#: ../src/gui/mainFrame.cpp:494
 msgid "Pac&kage...\tCtrl+K"
-msgstr "Pa&ket...\tCtrl+K"
+msgstr "Pac&kage... Ctrl+K. \t"
 
-#: ../src/gui/mainFrame.cpp:492
+#: ../src/gui/mainFrame.cpp:494
 msgid "Export analysis package"
-msgstr "Analysepaket exportieren"
+msgstr "Colis d'anàlisi de l'exportation. "
 
-#: ../src/gui/mainFrame.cpp:494
+#: ../src/gui/mainFrame.cpp:496
 msgid "&Export"
-msgstr "&Exportieren"
+msgstr "&Exporter"
 
-#: ../src/gui/mainFrame.cpp:497
+#: ../src/gui/mainFrame.cpp:499
 msgid "&Quit\tCtrl+Q"
-msgstr "&Beenden\tCtrl+Q"
+msgstr "&Quit\tCtrl+Q. "
 
-#: ../src/gui/mainFrame.cpp:497 ../src/gui/mainFrame.cpp:499
+#: ../src/gui/mainFrame.cpp:499 ../src/gui/mainFrame.cpp:501
 msgid "Exit Program"
-msgstr "Programm beenden"
+msgstr "Programme de sortie. "
 
-#: ../src/gui/mainFrame.cpp:499
+#: ../src/gui/mainFrame.cpp:501
 msgid "E&xit"
-msgstr "E&xit"
+msgstr "&Quitter"
 
-#: ../src/gui/mainFrame.cpp:501
+#: ../src/gui/mainFrame.cpp:503
 msgid "&File"
-msgstr "&Datei"
+msgstr "&Fichier"
 
-#: ../src/gui/mainFrame.cpp:505
+#: ../src/gui/mainFrame.cpp:507
 msgid "&Background Colour...\tCtrl+B"
-msgstr "&Hintergrundfarbe...\tCtrl+B"
+msgstr "&Couleur de fond... Ctrl+B. \t"
 
-#: ../src/gui/mainFrame.cpp:505
+#: ../src/gui/mainFrame.cpp:507
 msgid "Change background colour"
-msgstr "Hintergrundfarbe ändern"
+msgstr "Couleur de fond du changement. "
 
-#: ../src/gui/mainFrame.cpp:509
+#: ../src/gui/mainFrame.cpp:511
 msgid "&Control Pane\tF2"
-msgstr "&Kontrollfenster\tF2"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:509 ../src/gui/mainFrame.cpp:512
+#: ../src/gui/mainFrame.cpp:511 ../src/gui/mainFrame.cpp:514
 msgid "Toggle left control pane"
-msgstr "Linkes Kontrollfenster ein/aus schalten"
+msgstr "Toggle Contrôle laissé pane. "
 
-#: ../src/gui/mainFrame.cpp:512
+#: ../src/gui/mainFrame.cpp:514
 msgid "&Control Pane\tAlt+C"
-msgstr "&Kontrollfenster\tAlt+C"
+msgstr "&Contrôle Pane\tGrand+Cème. "
 
-#: ../src/gui/mainFrame.cpp:518
+#: ../src/gui/mainFrame.cpp:520
 msgid "&Raw Data Pane\tF3"
-msgstr "&Rohdatenfenster\tF3"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:518 ../src/gui/mainFrame.cpp:521
+#: ../src/gui/mainFrame.cpp:520 ../src/gui/mainFrame.cpp:523
 msgid "Toggle raw data  pane (bottom)"
-msgstr "Rohdatenfenster (unten)"
+msgstr "Toggle Donnée crue  pane (inferior). "
 
-#: ../src/gui/mainFrame.cpp:521
+#: ../src/gui/mainFrame.cpp:523
 msgid "&Raw Data Pane\tAlt+R"
-msgstr "&Rohdatenfenster\tAlt+R"
+msgstr "&Donnée crue Pane\tGrand+R. "
 
-#: ../src/gui/mainFrame.cpp:525
+#: ../src/gui/mainFrame.cpp:527
 msgid "&Plot List\tF4"
-msgstr "&Plot Liste\tF4"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:525 ../src/gui/mainFrame.cpp:527
+#: ../src/gui/mainFrame.cpp:527 ../src/gui/mainFrame.cpp:529
 msgid "Toggle plot list"
-msgstr "Plotliste ein/aus schalten"
+msgstr "Toggle Liste de trama. "
 
-#: ../src/gui/mainFrame.cpp:527
+#: ../src/gui/mainFrame.cpp:529
 msgid "&Plot List\tAlt+P"
-msgstr "&Plot Liste\tAlt+P"
+msgstr "&Liste de trama\tGrand+P. "
 
-#: ../src/gui/mainFrame.cpp:533
+#: ../src/gui/mainFrame.cpp:535
 msgid "&Legend\tCtrl+L"
-msgstr "&Legende\tCtrl+L"
+msgstr "&Légende\tCtrl+L. "
 
-#: ../src/gui/mainFrame.cpp:533
+#: ../src/gui/mainFrame.cpp:535
 msgid "Toggle Legend display"
-msgstr "Legende anzeigen ein/aus"
+msgstr "Toggle écran de légende. "
 
-#: ../src/gui/mainFrame.cpp:535
+#: ../src/gui/mainFrame.cpp:537
 msgid "P&lot..."
-msgstr "P&lot..."
+msgstr "P&Parcel·la..."
 
-#: ../src/gui/mainFrame.cpp:536
+#: ../src/gui/mainFrame.cpp:538
 msgid "&Axis\tCtrl+Shift+I"
-msgstr "&Achsen\tCtrl+Shift+I"
+msgstr "&Axe\tCtrl+Shift+je. "
 
-#: ../src/gui/mainFrame.cpp:536
+#: ../src/gui/mainFrame.cpp:538
 msgid "Toggle World Axis display"
-msgstr "Hauptachsen ein/aus schalten"
+msgstr "Toggle écran Eixa mondial. "
 
-#: ../src/gui/mainFrame.cpp:541
+#: ../src/gui/mainFrame.cpp:543
 msgid "&Fullscreen mode\tF11"
-msgstr "&Vollbildmodus\tF11"
+msgstr "&Fullscreen Mode\tF11. "
 
-#: ../src/gui/mainFrame.cpp:541 ../src/gui/mainFrame.cpp:543
+#: ../src/gui/mainFrame.cpp:543 ../src/gui/mainFrame.cpp:545
 msgid "Next fullscreen mode: with toolbars"
-msgstr "Nächster Vollbildmodus: ohne Werkzeugleisten"
+msgstr "Proche fullscreen mode: avec toolbars. "
 
-#: ../src/gui/mainFrame.cpp:543
+#: ../src/gui/mainFrame.cpp:545
 msgid "&Fullscreen mode\tCtrl+Shift+F"
-msgstr "&Vollbildmodus\tCtrl+Shift+F"
+msgstr "&Fullscreen Mode\tCtrl+Shift+F. "
 
-#: ../src/gui/mainFrame.cpp:548
+#: ../src/gui/mainFrame.cpp:550
 msgid "&Undo\tCtrl+Z"
-msgstr "&Zurück\tCtrl+Z"
+msgstr "&Défait\tCtrl+Z. "
 
-#: ../src/gui/mainFrame.cpp:550
+#: ../src/gui/mainFrame.cpp:552
 msgid "&Redo\tCtrl+Y"
-msgstr "&Wiederholen\tCtrl+Y"
+msgstr "&Redo\tCtrl+Y. "
 
-#: ../src/gui/mainFrame.cpp:553
+#: ../src/gui/mainFrame.cpp:555
 msgid "&Range"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:556
+#: ../src/gui/mainFrame.cpp:558
 msgid "&Preferences"
-msgstr "&Voreinstellungen"
+msgstr "&Préférences"
 
-#: ../src/gui/mainFrame.cpp:558
+#: ../src/gui/mainFrame.cpp:560
 msgid "&Edit"
-msgstr "&Bearbeiten"
+msgstr "É&dition"
 
-#: ../src/gui/mainFrame.cpp:561
+#: ../src/gui/mainFrame.cpp:563
 msgid "&View"
-msgstr "&Ansicht"
+msgstr "&Affichage"
 
-#: ../src/gui/mainFrame.cpp:563
+#: ../src/gui/mainFrame.cpp:565
 msgid "&Help...\tCtrl+H"
-msgstr "&Hilfe...\tCtrl+H"
+msgstr "&Aide... Ctrl+H. \t"
 
-#: ../src/gui/mainFrame.cpp:563
+#: ../src/gui/mainFrame.cpp:565
 msgid "Show help files and documentation"
-msgstr "Hilfedateien und Dokumentation anzeigen"
+msgstr "Archives d'aide du spectacle et documentation. "
 
-#: ../src/gui/mainFrame.cpp:564
+#: ../src/gui/mainFrame.cpp:566
 msgid "&Contact..."
-msgstr "&Kontakt..."
+msgstr "&Contact..."
 
-#: ../src/gui/mainFrame.cpp:564
+#: ../src/gui/mainFrame.cpp:566
 msgid "Open contact page"
-msgstr "Kontaktseite öffnen"
+msgstr "Page de contact ouvert. "
 
-#: ../src/gui/mainFrame.cpp:566
+#: ../src/gui/mainFrame.cpp:568
 msgid "&About..."
-msgstr "Über 3Depict..."
+msgstr "À &propos de..."
 
-#: ../src/gui/mainFrame.cpp:566
+#: ../src/gui/mainFrame.cpp:568
 msgid "Information about this program"
-msgstr "Informationen zu diesem Programm"
+msgstr "Information enveloppe ce programme. "
 
-#: ../src/gui/mainFrame.cpp:567
+#: ../src/gui/mainFrame.cpp:569
 msgid "&Help"
-msgstr "&Hilfe"
+msgstr "Aid&e"
 
-#: ../src/gui/mainFrame.cpp:569
+#: ../src/gui/mainFrame.cpp:571
 msgid "Stashed Filters"
-msgstr "Zwischengelagerte Filter"
+msgstr "Stashed Filtres. "
 
-#: ../src/gui/mainFrame.cpp:574
+#: ../src/gui/mainFrame.cpp:576
 msgid "New Filters"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:604
+#: ../src/gui/mainFrame.cpp:606
 msgid "Auto Refresh"
-msgstr ""
-"Autom.\n"
-"aktualisieren"
+msgstr "Voiture Refresh. "
 
-#: ../src/gui/mainFrame.cpp:610
+#: ../src/gui/mainFrame.cpp:612
 msgid "Filter settings"
-msgstr "Filtereinstellungen"
+msgstr "Paramètres de filtrage"
 
-#: ../src/gui/mainFrame.cpp:613
+#: ../src/gui/mainFrame.cpp:615
 msgid "Camera Name"
-msgstr "Kameraname"
+msgstr "Nom de càmera. "
 
-#: ../src/gui/mainFrame.cpp:625
+#: ../src/gui/mainFrame.cpp:627
 msgid "Resize to Fit"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:627
+#: ../src/gui/mainFrame.cpp:629
 msgid "3D Post-processing"
-msgstr "3D Nachbearbeitung"
+msgstr "Post-traitement 3D"
 
-#: ../src/gui/mainFrame.cpp:629
+#: ../src/gui/mainFrame.cpp:631
 msgid "Enable Cropping"
-msgstr "Zuschneiden aktivieren"
+msgstr "Activer recadrage"
 
-#: ../src/gui/mainFrame.cpp:631 ../src/gui/mainFrame.cpp:642
+#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
 msgid "x-y"
-msgstr "x-y"
+msgstr "x-y. "
 
-#: ../src/gui/mainFrame.cpp:632 ../src/gui/mainFrame.cpp:643
+#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
 msgid "x-z"
-msgstr "x-z"
+msgstr "x-z. "
 
-#: ../src/gui/mainFrame.cpp:633 ../src/gui/mainFrame.cpp:644
+#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
 msgid "y-x"
-msgstr "y-x"
+msgstr "y-x. "
 
-#: ../src/gui/mainFrame.cpp:634 ../src/gui/mainFrame.cpp:645
+#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
 msgid "y-z"
-msgstr "y-z"
+msgstr "y-z. "
 
-#: ../src/gui/mainFrame.cpp:635 ../src/gui/mainFrame.cpp:646
+#: ../src/gui/mainFrame.cpp:637 ../src/gui/mainFrame.cpp:648
 msgid "z-x"
-msgstr "z-x"
+msgstr "z-x. "
 
-#: ../src/gui/mainFrame.cpp:636 ../src/gui/mainFrame.cpp:647
+#: ../src/gui/mainFrame.cpp:638 ../src/gui/mainFrame.cpp:649
 msgid "z-y"
-msgstr "z-y"
+msgstr "z-y. "
 
-#: ../src/gui/mainFrame.cpp:651
+#: ../src/gui/mainFrame.cpp:653
 msgid "Use camera coordinates"
-msgstr "Verwende Kamerakoordinaten"
+msgstr "Coordenades de càmera de l'usage. "
 
-#: ../src/gui/mainFrame.cpp:652
+#: ../src/gui/mainFrame.cpp:654
 msgid "dX"
-msgstr "dX"
+msgstr "dX. "
 
-#: ../src/gui/mainFrame.cpp:654
+#: ../src/gui/mainFrame.cpp:656
 msgid "dY"
-msgstr "dY"
+msgstr "dY. "
 
-#: ../src/gui/mainFrame.cpp:656
+#: ../src/gui/mainFrame.cpp:658
 msgid "dZ"
-msgstr "dZ"
+msgstr "dZ. "
 
-#: ../src/gui/mainFrame.cpp:658
+#: ../src/gui/mainFrame.cpp:660
 msgid "Enable Anaglyphic Stereo"
-msgstr "Anaglyphic Stereo aktivieren"
+msgstr "Activer stéréo anaglyphe"
 
-#: ../src/gui/mainFrame.cpp:659
+#: ../src/gui/mainFrame.cpp:661
 msgid "Flip Channels"
-msgstr "Kanäle tauschen"
+msgstr "Canals de ditada. "
 
-#: ../src/gui/mainFrame.cpp:660
+#: ../src/gui/mainFrame.cpp:662
 msgid "Anaglyph Mode"
-msgstr "Anaglyphmodus"
+msgstr "Anaglyph Mode. "
 
-#: ../src/gui/mainFrame.cpp:662
+#: ../src/gui/mainFrame.cpp:664
 msgid "Red-Blue"
-msgstr "Rot-Blau"
+msgstr "Rouge-Bleu. "
 
-#: ../src/gui/mainFrame.cpp:663
+#: ../src/gui/mainFrame.cpp:665
 msgid "Red-Green"
-msgstr "Rot-Grün"
+msgstr "Rouge-Vert. "
 
-#: ../src/gui/mainFrame.cpp:664
+#: ../src/gui/mainFrame.cpp:666
 msgid "Red-Cyan"
-msgstr "Rot-Zyan"
+msgstr "Rouge-Cyan. "
 
-#: ../src/gui/mainFrame.cpp:665
+#: ../src/gui/mainFrame.cpp:667
 msgid "Green-Magenta"
-msgstr "Grün-Magenta"
+msgstr "Vert-Magenta. "
 
-#: ../src/gui/mainFrame.cpp:669
+#: ../src/gui/mainFrame.cpp:671
 msgid "Baseline Separation"
-msgstr "Basislinienabstand"
-
-#: ../src/gui/mainFrame.cpp:671 ../src/backend/filters/annotation.cpp:906
-#: ../src/backend/filters/voxelise.cpp:938
-#: ../src/backend/filters/voxelise.cpp:1106
-#: ../src/backend/filters/profile.cpp:1164
-#: ../src/backend/filters/boundingBox.cpp:731
-#: ../src/backend/filters/dataLoad.cpp:666
-#: ../src/backend/filters/spectrumPlot.cpp:683
+msgstr "Baseline écart. "
+
+#: ../src/gui/mainFrame.cpp:673 ../src/backend/filters/voxelise.cpp:1150
+#: ../src/backend/filters/voxelise.cpp:1409
+#: ../src/backend/filters/profile.cpp:1168
+#: ../src/backend/filters/boundingBox.cpp:732
+#: ../src/backend/filters/annotation.cpp:914
+#: ../src/backend/filters/dataLoad.cpp:755
+#: ../src/backend/filters/spectrumPlot.cpp:686
 msgid "Appearance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:672
+#: ../src/gui/mainFrame.cpp:674
 msgid "Smooth && translucent objects"
-msgstr "Glatte && durchsichtige Objekte"
+msgstr "Objets translúcids objets"
 
-#: ../src/gui/mainFrame.cpp:674
+#: ../src/gui/mainFrame.cpp:676
 msgid "3D lighting"
-msgstr "3D Beleuchtung"
+msgstr "3D enllumenat. "
 
-#: ../src/gui/mainFrame.cpp:677
+#: ../src/gui/mainFrame.cpp:679
 msgid "Performance"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:678
+#: ../src/gui/mainFrame.cpp:680
 msgid "Fast and weak randomisation."
-msgstr "Schnelle aber schwache Randomisierung"
+msgstr "Randomisation rapide et faible."
 
-#: ../src/gui/mainFrame.cpp:680
+#: ../src/gui/mainFrame.cpp:682
 msgid "Limit Output Pts"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:685
+#: ../src/gui/mainFrame.cpp:687
 msgid "Filter caching"
-msgstr "Filter zwischenspeichern"
+msgstr "Filtre caching. "
 
-#: ../src/gui/mainFrame.cpp:687
+#: ../src/gui/mainFrame.cpp:689
 msgid "Max. Ram usage (%)"
-msgstr "Max. RAM-Nutzung (%)"
+msgstr "Max. Bouquet Usage (%). "
 
-#: ../src/gui/mainFrame.cpp:759
+#: ../src/gui/mainFrame.cpp:761
 msgid "Warning: Your configuration file appears to be invalid:\n"
-msgstr "Warnung: Ihre Konfigurationsdatei scheint ungültig zu sein.\n"
+msgstr "Attention: Votre fichier de configuration semble invalide:\n"
 
-#: ../src/gui/mainFrame.cpp:760
+#: ../src/gui/mainFrame.cpp:762
 msgid "\tConfig Load: "
-msgstr "\tConfig Load: "
+msgstr "\tConfig Charge:.  "
 
-#: ../src/gui/mainFrame.cpp:1054
+#: ../src/gui/mainFrame.cpp:1060
 msgid "Current state has not been saved, would you like to save it now?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1055
+#: ../src/gui/mainFrame.cpp:1061
 msgid "State changed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1073
-msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)"
-msgstr "Lesbare Dateien (*.xml, *.pos, *.txt,*.csv,*.ato)"
+#: ../src/gui/mainFrame.cpp:1079
+msgid "Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1075
+#: ../src/gui/mainFrame.cpp:1081
 msgid "XML State File (*.xml)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1076
+#: ../src/gui/mainFrame.cpp:1082
 msgid "POS File (*.pos)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1077
+#: ../src/gui/mainFrame.cpp:1083
 msgid "LAWATAP ATO File (*.ato)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1078
+#: ../src/gui/mainFrame.cpp:1084
 msgid "Text File (*.txt, *.csv)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1079
+#: ../src/gui/mainFrame.cpp:1085
+msgid "3Dap Files (*.ops)"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:1086
 msgid "All Files (*)"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1092 ../src/gui/mainFrame.cpp:1141
+#: ../src/gui/mainFrame.cpp:1099 ../src/gui/mainFrame.cpp:1148
 msgid "Select Data or State File..."
-msgstr "Daten oder Statusdatei auswählen..."
+msgstr "Sélectionner des données ou fichier d'état ..."
 
-#: ../src/gui/mainFrame.cpp:1142
+#: ../src/gui/mainFrame.cpp:1149
 msgid ""
 "3Depict file (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS File (*.pos)|*.pos|"
 "XML State File (*.xml)|*.xml|All Files (*)|*"
 msgstr ""
-"3Depictdateien (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS Datei (*.pos)|*."
-"pos|XML Status Datei (*.xml)|*.xml|All Files (*)|*"
+"3Décrit archives (*.xml, *.pos,*.txt)|*.xml;*.pos;*.txt|POS Archives (*.pos)|"
+"*.pos|XML Archives estatal (*.xml)|*.xml|Toutes les  Archives (*)|*. "
 
-#: ../src/gui/mainFrame.cpp:1153
+#: ../src/gui/mainFrame.cpp:1160
 msgid "Merged file."
-msgstr "Datei zusammengeführt."
+msgstr "Archives fusionnées."
 
-#: ../src/gui/mainFrame.cpp:1256
+#: ../src/gui/mainFrame.cpp:1263
 msgid "Tip: You can use ⌘ (command) to merge"
-msgstr "Tip: Sie können ⌘ (command) zum Zusammenführen verwenden"
+msgstr "Astuce: Vous pouvez utiliser ⌘ (commande) de fusionner"
 
-#: ../src/gui/mainFrame.cpp:1258
+#: ../src/gui/mainFrame.cpp:1265
 msgid "Tip: You can use ctrl to merge"
-msgstr "Tip: Sie können strg zum Zusammen führen verwenden"
+msgstr "Astuce: Vous pouvez utiliser la touche ctrl pour fusionner"
 
-#: ../src/gui/mainFrame.cpp:1292
+#: ../src/gui/mainFrame.cpp:1299
 msgid "Load error"
-msgstr "Fehler beim Laden"
+msgstr "Erreur de chargement"
 
-#: ../src/gui/mainFrame.cpp:1293
+#: ../src/gui/mainFrame.cpp:1300
 msgid ""
 "Error loading state file.\n"
 "See console for more info."
 msgstr ""
-"Fehler beim Laden der Statusdatei.\n"
-"Konsole für mehr Informationen."
+"Fichier d'état d'erreur de chargement.\n"
+"Voir la console pour plus d'informations."
 
-#: ../src/gui/mainFrame.cpp:1301
+#: ../src/gui/mainFrame.cpp:1308
 msgid ""
 "This state file contains filters that can be unsafe to run\n"
 "Do you wish to remove these before continuing?."
 msgstr ""
-"Diese Statusdatei enthält Filter deren Anwendung möglicherweise unsicher "
-"ist. Wollen Sie diese entfernen."
+"Ce fichier contient l'état des filtres qui peuvent être dangereux à courir\n"
+"Voulez-vous supprimer ces avant de continuer?."
 
-#: ../src/gui/mainFrame.cpp:1302
+#: ../src/gui/mainFrame.cpp:1309
 msgid "Security warning"
-msgstr "Sicherheitswarnung"
+msgstr "Alerte de sécurité"
 
-#: ../src/gui/mainFrame.cpp:1484 ../src/gui/mainFrame.cpp:1580
-#: ../src/gui/mainFrame.cpp:2010
+#: ../src/gui/mainFrame.cpp:1499 ../src/gui/mainFrame.cpp:1595
+#: ../src/gui/mainFrame.cpp:2029
 msgid "Unable to save"
-msgstr "Speichern nicht möglich"
+msgstr "Impossible d'enregistrer"
 
-#: ../src/gui/mainFrame.cpp:1485
+#: ../src/gui/mainFrame.cpp:1500
 msgid "No plot available. Please create a plot before exporting."
-msgstr "Kein Plot vefügbar. Plot muss vor dem Exportieren erzeugt werden."
+msgstr ""
+"Pas d'intrigue disponibles. S'il vous plaît créer un terrain avant "
+"d'exporter."
 
-#: ../src/gui/mainFrame.cpp:1489
+#: ../src/gui/mainFrame.cpp:1504
 msgid "Save plot..."
-msgstr "Plot speichern..."
+msgstr "Sauve trama..."
 
-#: ../src/gui/mainFrame.cpp:1490
+#: ../src/gui/mainFrame.cpp:1505
 msgid ""
 "By Extension (svg,png)|*.svg;*.png|Scalable Vector Graphics File (*.svg)|*."
 "svg|PNG File (*.png)|*.png|All Files (*)|*"
 msgstr ""
-"Dateierweiterung (svg,png)|*.svg;*.png|Skalierbare Vektorgrafik (*.svg)|*."
-"svg|PNG Datei (*.png)|*.png|Alle Dateien (*)|*"
+"Pour Extension (svg,png)|*.svg;*.png|Scalable Archives de Graphiques du "
+"vector (*.svg)|*.svg|PNG Archives (*.png)|*.png|Toutes les  Archives (*)|*. "
 
-#: ../src/gui/mainFrame.cpp:1544
+#: ../src/gui/mainFrame.cpp:1559
 msgid "Select type for save"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1545
+#: ../src/gui/mainFrame.cpp:1560
 msgid "Choose file type"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1565 ../src/gui/mainFrame.cpp:1622
-#: ../src/gui/mainFrame.cpp:1658
+#: ../src/gui/mainFrame.cpp:1580 ../src/gui/mainFrame.cpp:1637
+#: ../src/gui/mainFrame.cpp:1673
 msgid "Choose resolution"
-msgstr "Auflösung auswählen"
+msgstr "écueil résolution. "
 
-#: ../src/gui/mainFrame.cpp:1581
+#: ../src/gui/mainFrame.cpp:1596
 msgid "Unknown file extension. Please use \"svg\" or \"png\""
-msgstr "Unbekannte Dateierweiterung. Bitte verwenden Sie \"svg\" oder \"png\""
+msgstr "Extension d'archives inconnu. Si vous plau usage.  "
 
-#: ../src/gui/mainFrame.cpp:1592
+#: ../src/gui/mainFrame.cpp:1607
 msgid "Saved plot: "
-msgstr "Gespeicherter Plot:"
+msgstr "Trama sauvée:.  "
 
-#: ../src/gui/mainFrame.cpp:1599 ../src/gui/mainFrame.cpp:1651
+#: ../src/gui/mainFrame.cpp:1614 ../src/gui/mainFrame.cpp:1666
 msgid "Save Image..."
-msgstr "Speichere Bild..."
+msgstr "Sauve Image..."
 
-#: ../src/gui/mainFrame.cpp:1600 ../src/gui/mainFrame.cpp:1652
+#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:1667
 msgid "PNG File (*.png)|*.png|All Files (*)|*"
-msgstr "PNG Datei (*.png)|*.png|Alle Dateien (*)|*"
+msgstr "PNG Archives (*.png)|*.png|Toutes les  Archives (*)|*. "
 
-#: ../src/gui/mainFrame.cpp:1614
+#: ../src/gui/mainFrame.cpp:1629
 msgid "File already exists. Overwrite?"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1615 ../src/gui/mainFrame.cpp:2407
-#: ../src/gui/mainFrame.cpp:2513 ../src/gui/mainFrame.cpp:2536
+#: ../src/gui/mainFrame.cpp:1630 ../src/gui/mainFrame.cpp:2425
+#: ../src/gui/mainFrame.cpp:2531 ../src/gui/mainFrame.cpp:2554
 msgid "Overwrite?"
-msgstr "Überschreiben?"
+msgstr "Écraser ?"
 
-#: ../src/gui/mainFrame.cpp:1642 ../src/gui/mainFrame.cpp:1718
+#: ../src/gui/mainFrame.cpp:1657 ../src/gui/mainFrame.cpp:1733
 msgid "Saved 3D View :"
-msgstr "Gespeicherte 3D Ansicht"
+msgstr "Sauvé 3Dème Vue :. "
 
-#: ../src/gui/mainFrame.cpp:1672
+#: ../src/gui/mainFrame.cpp:1687
 msgid "Program limitation"
-msgstr "Programmeinschränkung"
+msgstr "Limitation de programme. "
 
-#: ../src/gui/mainFrame.cpp:1673
+#: ../src/gui/mainFrame.cpp:1688
 msgid ""
 "Limitation on the screenshot dimension; please ensure that both width and "
 "height exceed the initial values,\n"
 " or that they are smaller than the initial values.\n"
 " If this bothers, please submit a bug."
 msgstr ""
-"Beschränkung der Screenshot Dimensionen; stellen Sie bitte sicher, dass "
-"Breite und Höhe die ursprünglichen Werte überschreiten, oder dass diese "
-"kleiner als die ursprünglichen Werte sind. Sollte Sie dies stören, melden "
-"Sie bitte einen Bug."
+"Limitation en le screenshot dimension; si vous plau assurer qu'ambdues "
+"amplada et la levée surpassent les valeurs inicials,\n"
+" ou que sont plus petits que les valeurs inicials. Si\n"
+" ce dérange, si vous plau entregar un bug."
 
-#: ../src/gui/mainFrame.cpp:1690
+#: ../src/gui/mainFrame.cpp:1705
 msgid "Number of frames"
-msgstr "Bilderanzahl"
+msgstr "Nombre d'images"
 
-#: ../src/gui/mainFrame.cpp:1744
+#: ../src/gui/mainFrame.cpp:1759
 msgid "Abo&rt"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1746
+#: ../src/gui/mainFrame.cpp:1761
 msgid "&Refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1855
+#: ../src/gui/mainFrame.cpp:1870
 msgid "Cannot animate with no filters."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1933
+#: ../src/gui/mainFrame.cpp:1952
 msgid "Animating"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1934
+#: ../src/gui/mainFrame.cpp:1953
 msgid "Performing refresh"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1960
+#: ../src/gui/mainFrame.cpp:1979
 msgid "Filter property change failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:1982
+#: ../src/gui/mainFrame.cpp:2001
 msgid "Refresh failed on frame :"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2011
+#: ../src/gui/mainFrame.cpp:2030
 msgid "Image save failed for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2036
+#: ../src/gui/mainFrame.cpp:2055
 msgid "Ion save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2037
+#: ../src/gui/mainFrame.cpp:2056
 msgid "Unable to save ions for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2068
+#: ../src/gui/mainFrame.cpp:2087
 msgid "Plot save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2069
+#: ../src/gui/mainFrame.cpp:2088
 msgid "Unable to save plot or frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2110
+#: ../src/gui/mainFrame.cpp:2129
 msgid "Range save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2111
+#: ../src/gui/mainFrame.cpp:2130
 msgid "Unable to save range for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2140
+#: ../src/gui/mainFrame.cpp:2159
 msgid "Voxel save failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2141
+#: ../src/gui/mainFrame.cpp:2160
 msgid "Unable to save voxels for frame "
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2170
+#: ../src/gui/mainFrame.cpp:2189
 msgid "Animate failed"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2194 ../src/gui/mainFrame.cpp:2360
-#: ../src/gui/mainFrame.cpp:2468
+#: ../src/gui/mainFrame.cpp:2213 ../src/gui/mainFrame.cpp:2379
+#: ../src/gui/mainFrame.cpp:2486
 msgid "No filters means no data to export"
-msgstr "Keine Filter bedeutet keine Daten zum Exportieren"
+msgstr "Pas de filtres signifie pas de données à exporter"
 
-#: ../src/gui/mainFrame.cpp:2208
+#: ../src/gui/mainFrame.cpp:2227
 msgid "Package name"
-msgstr "Paketname"
+msgstr "Nom du paquet"
 
-#: ../src/gui/mainFrame.cpp:2209
+#: ../src/gui/mainFrame.cpp:2228
 msgid "Package directory name"
-msgstr "Paketverzeichnis"
+msgstr "Nom de directori du colis. "
 
-#: ../src/gui/mainFrame.cpp:2211
+#: ../src/gui/mainFrame.cpp:2230
 msgid "AnalysisPackage"
-msgstr "Analysepaket"
+msgstr "AnalysisPackage. "
 
-#: ../src/gui/mainFrame.cpp:2224
+#: ../src/gui/mainFrame.cpp:2243
 msgid "Package folder already exists, won't overwrite."
-msgstr "Paketverzeichnis existiert bereits. Werde es nicht überschreiben."
+msgstr "Carpeta de colis déjà existe,  n'overwrite."
 
-#: ../src/gui/mainFrame.cpp:2225
+#: ../src/gui/mainFrame.cpp:2244
 msgid "Not available"
-msgstr "Nicht verfügbar"
+msgstr "Non disponible"
 
-#: ../src/gui/mainFrame.cpp:2250
+#: ../src/gui/mainFrame.cpp:2269
 msgid ""
 "Package folder creation failed\n"
 "check writing to this location is possible."
 msgstr ""
-"Anlegen des Paketverzeichnisses fehlgeschlagen\n"
-"Überprüfen Sie ob der angegenbene Ort schreibgeschützt ist."
+"Création d'un dossier package a échoué\n"
+" vérifier par écrit à cet endroit est possible."
 
-#: ../src/gui/mainFrame.cpp:2251
+#: ../src/gui/mainFrame.cpp:2270
 msgid "Folder creation failed"
-msgstr "Anlegen des Ordners ist fehlgeschlagen"
+msgstr "Création du dossier n'a pas"
 
-#: ../src/gui/mainFrame.cpp:2271
+#: ../src/gui/mainFrame.cpp:2290
 msgid "Copying"
-msgstr "kopiere"
+msgstr "Copie en cours"
 
-#: ../src/gui/mainFrame.cpp:2272
+#: ../src/gui/mainFrame.cpp:2291
 msgid "Copying referenced files"
-msgstr "Copying referenced files"
+msgstr "Copie de fichiers référencés"
 
-#: ../src/gui/mainFrame.cpp:2338
+#: ../src/gui/mainFrame.cpp:2357
 msgid "Error copying file"
-msgstr "Fehler beim Kopieren der Datei"
+msgstr "L'Erreur que copia archives. "
 
-#: ../src/gui/mainFrame.cpp:2347
+#: ../src/gui/mainFrame.cpp:2366
 msgid "Saved package: "
-msgstr "Gespeicherte Pakete: "
+msgstr "Colis sauvé:.  "
 
-#: ../src/gui/mainFrame.cpp:2371
+#: ../src/gui/mainFrame.cpp:2390
 msgid "Export"
-msgstr "Exportieren"
+msgstr "Export"
 
-#: ../src/gui/mainFrame.cpp:2377
+#: ../src/gui/mainFrame.cpp:2396
 msgid ""
 "POS Data (*.pos)|*.pos|Text File (*.txt)|*.txt|VTK Legacy (*.vtk)|*.vtk|All "
 "Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2406 ../src/gui/mainFrame.cpp:2512
+#: ../src/gui/mainFrame.cpp:2424 ../src/gui/mainFrame.cpp:2530
 msgid "File already exists, overwrite?"
-msgstr "Datei existiert bereits. Überschreiben?"
+msgstr "Le Archives déjà existe, écraser?"
 
-#: ../src/gui/mainFrame.cpp:2447
+#: ../src/gui/mainFrame.cpp:2465
 msgid "Saved ions: "
-msgstr "Gespeicherte Ionen:"
+msgstr "Ions sauvés:.  "
 
-#: ../src/gui/mainFrame.cpp:2472
+#: ../src/gui/mainFrame.cpp:2490
 msgid "Export Ranges"
-msgstr "Range exportieren"
+msgstr "Gammes d'exportation. "
 
-#: ../src/gui/mainFrame.cpp:2494
+#: ../src/gui/mainFrame.cpp:2512
 msgid "Save state..."
-msgstr "Speichere Status..."
+msgstr "Sauve estatal..."
 
-#: ../src/gui/mainFrame.cpp:2495
+#: ../src/gui/mainFrame.cpp:2513
 msgid "XML state file (*.xml)|*.xml|All Files (*)|*"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2535
+#: ../src/gui/mainFrame.cpp:2553
 msgid "Files have been referred to using relative paths. Keep relative paths?"
 msgstr ""
-"Auf Dateien wurde mit relativen Pfaden verwiesen. Relative Pfade beibehalten?"
+"Les Archives ont été referred à utiliser des chemins relatifs. Il entretient "
+"des chemins relatifs?. "
 
-#: ../src/gui/mainFrame.cpp:2568
+#: ../src/gui/mainFrame.cpp:2586
 msgid "Saved state: "
-msgstr "Gespeicherter Status: "
+msgstr "été sauvé:.  "
 
-#: ../src/gui/mainFrame.cpp:2644
+#: ../src/gui/mainFrame.cpp:2662
 msgid "Range editor"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:2901
+#: ../src/gui/mainFrame.cpp:2929
 msgid "Manual not found locally. Launching web browser"
-msgstr "Anleitung konnte lokal nicht gefunden werden. Starte Webbrowser"
+msgstr "Manuel pas trouvé localement. Lancement navigateur Web"
 
-#: ../src/gui/mainFrame.cpp:2910
+#: ../src/gui/mainFrame.cpp:2938
 msgid "Opening contact page in external web browser"
-msgstr "Öffne Kontaktseite in externem Browser"
+msgstr "Ouverture page de contact dans le navigateur web externe."
 
-#: ../src/gui/mainFrame.cpp:2918
+#: ../src/gui/mainFrame.cpp:2946
 msgid "No filter stashes to edit."
-msgstr "Keine Filterstashes zum Bearbeiten."
+msgstr "Chef filtre stashes pour editar."
 
-#: ../src/gui/mainFrame.cpp:2922
+#: ../src/gui/mainFrame.cpp:2950
 msgid "Filter Stashes"
-msgstr "Filter Stashes"
+msgstr "Filtre Stashes. "
 
-#: ../src/gui/mainFrame.cpp:2939
+#: ../src/gui/mainFrame.cpp:2967
 msgid "Quick and dirty analysis for point data."
-msgstr "\"Quick and dirty\" Analyse von Punktdaten."
+msgstr "Anàlisi rapide et sale pour donnée de point."
 
-#: ../src/gui/mainFrame.cpp:2949
+#: ../src/gui/mainFrame.cpp:2977
 msgid "Compiled with wx Version: "
-msgstr "Kompiliert mit wx Version: "
+msgstr "Compilat avec wx Version:.  "
 
-#: ../src/gui/mainFrame.cpp:2970
+#: ../src/gui/mainFrame.cpp:2998
 msgid "Press enter to store new stash"
-msgstr "Eingabe drücken um neuen Filterstash zu speichern"
+msgstr "La Presse rentre à pour stocker nouveau stash. "
 
-#: ../src/gui/mainFrame.cpp:2976
+#: ../src/gui/mainFrame.cpp:3004
 msgid "Press enter to restore stash"
-msgstr "Eingabe drücken um Stash wiederherzustellen"
+msgstr "La Presse rentre à pour restaurer stash. "
 
-#: ../src/gui/mainFrame.cpp:3009
+#: ../src/gui/mainFrame.cpp:3037
 msgid "Unable to create stash, selection invalid"
-msgstr "Stash kann nicht erstellt werden, Auswahl ungültig"
+msgstr "Incapaç de créer stash, invalide de sélection. "
 
-#: ../src/gui/mainFrame.cpp:3016
+#: ../src/gui/mainFrame.cpp:3044
 msgid "Created new filter tree stash"
-msgstr "Neuer Filterstash wurde erzeugt"
+msgstr "Arbre de filtre nouveau créé stash. "
 
-#: ../src/gui/mainFrame.cpp:3123
+#: ../src/gui/mainFrame.cpp:3156
 msgid "Filter type not a data source - can't be at tree base"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3263
-msgid "Moving - Hold ⌘ (command) to copy"
-msgstr "Verschieben - Halte ⌘ (command) um zu kopieren"
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete\tDel"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:3236
+msgid "Delete the selected filter"
+msgstr ""
+
+#: ../src/gui/mainFrame.cpp:3351
+msgid "Moving - Hold ⌘ (command) to copy, shift to splice"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3265
-msgid "Moving - Hold control to copy"
-msgstr "Verschieben - Halte Strg zum kopieren"
+#: ../src/gui/mainFrame.cpp:3353
+msgid "Moving - Hold control to copy, shift to splice"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3604
+#: ../src/gui/mainFrame.cpp:3696
 msgid "Press enter to store new camera"
-msgstr "Eingabe drücken um neue Kamera zu speichern"
+msgstr "Appuyez sur Entrée pour enregistrer nouvel appareil photo"
 
-#: ../src/gui/mainFrame.cpp:3606
+#: ../src/gui/mainFrame.cpp:3698
 msgid "Press enter to restore camera"
-msgstr "Eingabe drücken um Kamera wiederherzustellen"
+msgstr "La Presse rentre à pour restaurer càmera. "
 
-#: ../src/gui/mainFrame.cpp:3631 ../src/gui/mainFrame.cpp:3672
+#: ../src/gui/mainFrame.cpp:3723 ../src/gui/mainFrame.cpp:3764
 msgid "Restored camera: "
-msgstr "Wiederhergestellte Kamera: "
+msgstr "Càmera restaurée:.  "
 
-#: ../src/gui/mainFrame.cpp:3649
+#: ../src/gui/mainFrame.cpp:3741
 msgid "Stored camera: "
-msgstr "Gespeicherte Kamera: "
+msgstr "Càmera stockée:.  "
 
-#: ../src/gui/mainFrame.cpp:3735
+#: ../src/gui/mainFrame.cpp:3827
 msgid "Select an item from the filter tree before choosing a new filter"
 msgstr ""
-"Aktivieren Sie zuerst ein Punkt aus dem Filterverlauf bevor Sie einen neuen "
-"Filter auswählen"
+"Sélectionnez un élément de l'arbre de filtre avant de choisir un nouveau "
+"filtre"
 
-#: ../src/gui/mainFrame.cpp:3737
+#: ../src/gui/mainFrame.cpp:3829
 msgid "Load data source (file->open) before choosing a new filter"
-msgstr "Lade Datenquelle (Datei->öffnen) vor dem Auswählen eines neuen Filters"
+msgstr ""
+"Source de donnée de la charge (archives->ouvertes) avant de choisir un "
+"filtre nouveau. "
 
-#: ../src/gui/mainFrame.cpp:3763
+#: ../src/gui/mainFrame.cpp:3855
 msgid "Select RNG File..."
-msgstr "RNG Datei auswählen..."
+msgstr "Sélectionne RNG Archives..."
 
-#: ../src/gui/mainFrame.cpp:3784
+#: ../src/gui/mainFrame.cpp:3876
 msgid "Failed reading range file."
-msgstr "Fehler beim Lesen der Rangedatei."
+msgstr "Archives de gamme de lecture failli."
 
-#: ../src/gui/mainFrame.cpp:3788
+#: ../src/gui/mainFrame.cpp:3880
 msgid "Error loading file"
-msgstr "Fehler beim Laden der Datei"
+msgstr "Erreur lors du chargement du fichier"
 
-#: ../src/gui/mainFrame.cpp:3849 ../src/gui/mainFrame.cpp:3944
-#: ../src/gui/mainFrame.cpp:5449 ../src/gui/mainFrame.cpp:5968
+#: ../src/gui/mainFrame.cpp:3941 ../src/gui/mainFrame.cpp:4042
+#: ../src/gui/mainFrame.cpp:5554 ../src/gui/mainFrame.cpp:6073
 msgid "Cons."
-msgstr "Kons."
+msgstr "Contres."
 
-#: ../src/gui/mainFrame.cpp:3907
+#: ../src/gui/mainFrame.cpp:4005
 msgid "Refresh Aborted."
-msgstr "Aktualisieren abgebrochen"
+msgstr "Refresh Va avortar."
 
-#: ../src/gui/mainFrame.cpp:3948
+#: ../src/gui/mainFrame.cpp:4046
 msgid "*Cons."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:3950
+#: ../src/gui/mainFrame.cpp:4048
 msgid "§Cons."
-msgstr "§Kons."
+msgstr "§Contres."
 
-#: ../src/gui/mainFrame.cpp:4007
+#: ../src/gui/mainFrame.cpp:4110
 msgid "Complete"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4105
+#: ../src/gui/mainFrame.cpp:4208
 msgid "msgs"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4146
+#: ../src/gui/mainFrame.cpp:4249
 msgid "Autosave complete."
-msgstr "Autosave beendet."
+msgstr "Enregistrement automatique terminé."
 
-#: ../src/gui/mainFrame.cpp:4350
+#: ../src/gui/mainFrame.cpp:4453
 msgid "Aborting...."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4416
+#: ../src/gui/mainFrame.cpp:4519
 msgid "Updated."
-msgstr "Updated."
+msgstr "Mis à jour."
 
-#: ../src/gui/mainFrame.cpp:4425
+#: ../src/gui/mainFrame.cpp:4528
 msgid "Calculating..."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4428
-msgid "\\% Done (Esc aborts)"
-msgstr "\\% fertig (Esc abbrechen)"
+#: ../src/gui/mainFrame.cpp:4531
+msgid "% Done (Esc aborts)"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4430
-msgid "\\% Done"
-msgstr "\\% fertig"
+#: ../src/gui/mainFrame.cpp:4533
+msgid "% Done"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4704
+#: ../src/gui/mainFrame.cpp:4808
 msgid "Tip: You can shift-click to force full refresh, if required"
-msgstr "Tipp: Verwende shift-click um komplettes Aktualisieren zu erzwingen"
+msgstr ""
 
-#: ../src/gui/mainFrame.cpp:4766
+#: ../src/gui/mainFrame.cpp:4870
 msgid "No data to save"
-msgstr "Keine Daten zum Sichern"
+msgstr "Chef donnée pour sauver. "
 
-#: ../src/gui/mainFrame.cpp:4950
+#: ../src/gui/mainFrame.cpp:5052
 msgid "Aborting..."
-msgstr "Abbrechen..."
+msgstr "Abandon..."
 
-#: ../src/gui/mainFrame.cpp:4956
+#: ../src/gui/mainFrame.cpp:5058
 msgid ""
 "Waiting for refresh to abort. Exiting could lead to the program "
 "backgrounding. Exit anyway? "
 msgstr ""
-"Waiting for refresh to abort. Exiting could lead to the program "
-"backgrounding. Exit anyway? "
+"en Attendant pour refresh pour avortar. en Sortant pourrait porter au "
+"programme backgrounding. Sortie de toute façon?.  "
 
-#: ../src/gui/mainFrame.cpp:4957 ../src/gui/mainFrame.cpp:4977
+#: ../src/gui/mainFrame.cpp:5059 ../src/gui/mainFrame.cpp:5079
 msgid "Confirmation request"
-msgstr "Bestätigungsabfrage"
+msgstr "Petició de confirmació. "
 
-#: ../src/gui/mainFrame.cpp:4976
+#: ../src/gui/mainFrame.cpp:5078
 msgid "Are you sure you wish to exit 3Depict?"
-msgstr "Sind Sie sicher, dass Sie 3Depict beenden wollen?"
-
-#: ../src/gui/mainFrame.cpp:5314 ../src/gl/cameras.cpp:627
-#: ../src/gl/cameras.cpp:730
-msgid "Orthogonal"
-msgstr "Orthogonal"
+msgstr "T'est sûr souhaites sortir 3Depict?. "
 
-#: ../src/gui/mainFrame.cpp:5477
+#: ../src/gui/mainFrame.cpp:5582
 msgid "Update Notice: New version "
-msgstr "Updatenotiz: Neue Version "
+msgstr "Actualitza Avís: version Nouvelle.  "
 
-#: ../src/gui/mainFrame.cpp:5477
+#: ../src/gui/mainFrame.cpp:5582
 msgid " found online."
-msgstr " online gefunden."
+msgstr " Trouvé en ligne."
 
-#: ../src/gui/mainFrame.cpp:5481
+#: ../src/gui/mainFrame.cpp:5586
 msgid "Online Check: "
-msgstr "Überprüfe online:"
+msgstr "Contrôle en ligne:.  "
 
-#: ../src/gui/mainFrame.cpp:5481
+#: ../src/gui/mainFrame.cpp:5586
 msgid " is up-to-date."
-msgstr "ist up-to-date."
+msgstr " Est actuel."
 
-#: ../src/gui/mainFrame.cpp:5571
+#: ../src/gui/mainFrame.cpp:5676
 msgid "An auto-save state was found, would you like to restore it?."
-msgstr "Ein auto-save Status wurde gefunden. Wollen Sie ihn wiederherstellen?"
+msgstr "Une voiture-sauver l'état a été trouvé,  te plaît le restaurer?."
 
-#: ../src/gui/mainFrame.cpp:5572
+#: ../src/gui/mainFrame.cpp:5677
 msgid "Autosave"
-msgstr "Automatisch speichern"
+msgstr "Enregistrement automatique"
 
-#: ../src/gui/mainFrame.cpp:5579
+#: ../src/gui/mainFrame.cpp:5684
 msgid "Unable to load autosave file.."
-msgstr "Kann Autosavedatei nicht laden.."
+msgstr "Impossible de charger le fichier d'enregistrement automatique .."
 
-#: ../src/gui/mainFrame.cpp:5770
+#: ../src/gui/mainFrame.cpp:5875
 msgid "List of available filters"
-msgstr "Liste der verfügbaren Filter"
+msgstr "Liste de filtres disponibles. "
 
-#: ../src/gui/mainFrame.cpp:5772
-msgid "Tree - drag to move items, hold ⌘ for copy. Tap delete to remove items"
+#: ../src/gui/mainFrame.cpp:5877
+msgid ""
+"Tree - drag to move items, hold ⌘ for copy, shift for splice. Tap delete to "
+"remove items, multi-click to rename"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5774
+#: ../src/gui/mainFrame.cpp:5879
 msgid ""
-"Tree - drag to move items, hold Ctrl for copy. Tap delete to remove items."
+"Tree - drag to move items, hold Ctrl for copy, shift for splice. Tap delete "
+"to remove items, multi-click to rename."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5776
+#: ../src/gui/mainFrame.cpp:5881
 msgid ""
 "Enable/Disable automatic updates of data when filter change takes effect"
 msgstr ""
-"Ein/Ausschalten vom automatischen Aktualisieren der Daten wenn Änderungen am "
-"Filter wirksam werden"
+"Habilitar/Impossibilitar automatique actualitza de donnée quand changement "
+"de filtre prend effet. "
 
-#: ../src/gui/mainFrame.cpp:5779
+#: ../src/gui/mainFrame.cpp:5884
 msgid ""
 "Enable/Disable \"Alpha blending\" (transparency) in rendering system. "
 "Blending is used to smooth objects (avoids artefacts known as \"jaggies\") "
 "and to make transparent surfaces. Disabling will provide faster rendering "
 "but look more blocky"
 msgstr ""
-"Ein/Ausschalten des \"Alpha blending\" (Transparenz) im Rendersystem. Dieses "
-"wird verwendet um ebene Objekte (vermeidet Artefakte bekannt als jaggies) "
-"und transparente Oberflächen zu generieren. Ausschalten erlaubt schnelleres "
-"Renden führt jedoch zu blockigerer Darstellung."
 
-#: ../src/gui/mainFrame.cpp:5780
+#: ../src/gui/mainFrame.cpp:5885
 msgid ""
 "Enable/Disable lighting calculations in rendering, for objects that request "
 "this. Lighting provides important depth cues for objects comprised of 3D "
 "surfaces. Disabling may allow faster rendering in complex scenes"
 msgstr ""
-"Ein/Ausschalten der Beleuchtungseffekte beim Rendern von Objekten die dies "
-"anfordern. Beleuchtung bietet wichtige 'depth cues' für mit 3D Oberflächen "
-"umrandete Objekte. Deaktivieren erlaubt u.U. schnelleres Rendern bei "
-"komplizierten Szenen."
+"Activer / Désactiver les calculs d'éclairage dans le rendu, pour les objets "
+"qui demandent cela. Eclairage fournit des indices importants pour la "
+"profondeur des objets constitués de surfaces 3D. Désactivation peut "
+"permettre un rendu plus rapide dans des scènes complexes"
 
-#: ../src/gui/mainFrame.cpp:5781
+#: ../src/gui/mainFrame.cpp:5886
 msgid ""
 "Enable/Disable weak randomisation (Galois linear feedback shift register). "
 "Strong randomisation uses a much slower random selection method, but "
 "provides better protection against inadvertent correlations, and is "
 "recommended for final analyses"
 msgstr ""
-"Ein/Ausschalten der schwachen Randomisierung (Galois linear feedback shift "
-"register). Starke Randomisierung verwendet einen viel langsamere "
-"Auswahlmethode bietet dafür aber einen besseren Schutz gegen unbeabsichtigte "
-"Korrelationen und wird für die endgültige Analyse empfohlen."
+"Habilitar/Impossibilitar dèbil randomisation (Galois lineal feedback "
+"registre de changement). Fort randomisation utilise une beaucoup de "
+"sélection aleatòria plus lente méthode, mais il fournit de la protection "
+"meilleure contre inadvertent correlacions, et c'est recommandé pour anàlisis "
+"finaux. "
 
-#: ../src/gui/mainFrame.cpp:5783
+#: ../src/gui/mainFrame.cpp:5888
 msgid ""
 "Limit the number of points that can be displayed in the 3D  scene. Does not "
 "affect filter tree calculations. Disabling this can severely reduce "
 "performance, due to large numbers of points being visible at once."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5784
+#: ../src/gui/mainFrame.cpp:5889
 msgid ""
 "Enable/Disable caching of intermediate results during filter updates. "
 "Disabling caching will use less system RAM, though changes to any filter "
 "property will cause the entire filter tree to be recomputed, greatly slowing "
 "computations"
 msgstr ""
-"Ein/Ausschalten des Zwischenspeicherns von Ergebnissen während "
-"Filteraktualisierungen. Dies verbraucht weniger RAM, führt jedoch dazu, dass "
-"bei Änderungen der Filterparameter der ganze Filterbaum neu berechnet wird. "
-"Dies erhöht den Rechenaufwand deutlich."
 
-#: ../src/gui/mainFrame.cpp:5786
+#: ../src/gui/mainFrame.cpp:5891
 msgid "Camera data information"
-msgstr "Kamerainformation"
+msgstr "Information de donnée de la càmera. "
 
-#: ../src/gui/mainFrame.cpp:5790
+#: ../src/gui/mainFrame.cpp:5895
 msgid "Enable/disable visual effects on final 3D output"
-msgstr "Ein/Ausschalten von visuellen Effekten in der finalen 3D Ausgabe."
+msgstr "Activer / désactiver les effets visuels sur la production 3D finale"
 
-#: ../src/gui/mainFrame.cpp:5792
+#: ../src/gui/mainFrame.cpp:5897
 msgid "Enable cropping post-process effect"
-msgstr "Cropping post-Prozess Effect einschalten"
+msgstr "Activer culture post-traitement d'effet"
 
-#: ../src/gui/mainFrame.cpp:5795
+#: ../src/gui/mainFrame.cpp:5900
 msgid ""
 "Colour based 3D effect enable/disable - requires appropriate colour filter "
 "3D glasses."
 msgstr ""
-"Farbbasierte 3D-Effekte ein/ausschalten - erfordert geeignete 3D-Brillen"
+"Couleur basée sur les effets 3D d'activer / désactiver - exige appropriées "
+"de filtrage de couleur des lunettes 3D."
 
-#: ../src/gui/mainFrame.cpp:5796
+#: ../src/gui/mainFrame.cpp:5901
 msgid "Glasses colour mode"
-msgstr "Brillenfarbmodus"
+msgstr "Mode de couleur des verres. "
 
-#: ../src/gui/mainFrame.cpp:5798
+#: ../src/gui/mainFrame.cpp:5903
 msgid ""
 "Level of separation between left and right images, which sets 3D depth to "
 "visual distortion tradeoff"
 msgstr ""
-"Level of separation between left and right images, which sets 3D depth to "
-"visual distortion tradeoff"
+"Niveau de la séparation entre les images gauche et droite, qui définit la "
+"profondeur 3D à compromis distorsion visuelle"
 
-#: ../src/gui/mainFrame.cpp:5802
+#: ../src/gui/mainFrame.cpp:5907
 msgid "X"
 msgstr "X"
 
-#: ../src/gui/mainFrame.cpp:5803
+#: ../src/gui/mainFrame.cpp:5908
 msgid "Y"
 msgstr "Y"
 
-#: ../src/gui/mainFrame.cpp:5804
+#: ../src/gui/mainFrame.cpp:5909
 msgid "Save raw data to file"
-msgstr "Speichere Rohdaten in Datei"
+msgstr "Sauve donnée crue pour archiver. "
 
-#: ../src/gui/mainFrame.cpp:5805
+#: ../src/gui/mainFrame.cpp:5910
 msgid "Copy raw data to clipboard"
-msgstr "Kopiere Rohdaten in die Zwischenablage"
+msgstr "Copie donnée crue à clipboard. "
 
-#: ../src/gui/mainFrame.cpp:5806
+#: ../src/gui/mainFrame.cpp:5911
 msgid "Manage \"stashed\" data."
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5807
+#: ../src/gui/mainFrame.cpp:5912
 msgid "Program text output"
-msgstr "Programm Textausgabe"
+msgstr "Sortie de texte du programme. "
 
-#: ../src/gui/mainFrame.cpp:5808
+#: ../src/gui/mainFrame.cpp:5913
 msgid "Select active camera, or type to create new named camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5809
+#: ../src/gui/mainFrame.cpp:5914
 msgid "Remove the selected camera"
-msgstr "Ausgewählte Kamera entfernen"
+msgstr "Càmera restaurée:.  "
 
-#: ../src/gui/mainFrame.cpp:5810
+#: ../src/gui/mainFrame.cpp:5915
 msgid "Perform cropping from coordinate frame of camera"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5811
+#: ../src/gui/mainFrame.cpp:5916
 msgid ""
 "Set the maximum amount of RAM to use in order to speed repeat computations"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5812
+#: ../src/gui/mainFrame.cpp:5917
 msgid "Collapse the filter tree"
-msgstr ""
+msgstr "Arbre de filtre nouveau créé stash. "
 
-#: ../src/gui/mainFrame.cpp:5813
+#: ../src/gui/mainFrame.cpp:5918
 msgid "Expand the filter tree"
-msgstr ""
+msgstr "Arbre de filtre nouveau créé stash. "
 
-#: ../src/gui/mainFrame.cpp:5814
+#: ../src/gui/mainFrame.cpp:5919
 msgid "Process the filter tree, hold shift to purge cached filter data"
 msgstr ""
 
-#: ../src/gui/mainFrame.cpp:5928
+#: ../src/gui/mainFrame.cpp:6033
 msgid "Crop"
-msgstr "Zuschneiden"
+msgstr "Découper"
 
-#: ../src/gui/mainFrame.cpp:5929
+#: ../src/gui/mainFrame.cpp:6034
 msgid "Stereo"
-msgstr "Stereo"
+msgstr "Stéréo"
 
-#: ../src/gui/mainFrame.cpp:5946
-#: ../src/backend/filters/externalProgram.cpp:596
-#: ../src/backend/filters/ionColour.cpp:308
-#: ../src/backend/filters/spectrumPlot.cpp:612
+#: ../src/gui/mainFrame.cpp:6051 ../src/backend/filters/externalProgram.cpp:596
+#: ../src/backend/filters/ionColour.cpp:352
+#: ../src/backend/filters/spectrumPlot.cpp:615
 msgid "Data"
-msgstr "Daten"
+msgstr "Contenu"
 
-#: ../src/gui/mainFrame.cpp:5947
+#: ../src/gui/mainFrame.cpp:6052
 msgid "Cam"
-msgstr "Cam"
+msgstr "Lève. "
 
-#: ../src/gui/mainFrame.cpp:5948
+#: ../src/gui/mainFrame.cpp:6053
 msgid "Post"
-msgstr "Post"
+msgstr "Publier"
 
-#: ../src/gui/mainFrame.cpp:5949
+#: ../src/gui/mainFrame.cpp:6054
 msgid "Tools"
-msgstr "Werkz."
+msgstr "Outils"
 
-#: ../src/gui/mainFrame.cpp:5967
+#: ../src/gui/mainFrame.cpp:6072
 msgid "Raw"
-msgstr "Roh"
+msgstr "Brut"
 
-#: ../src/gui/mainFrame.cpp:6010
+#: ../src/gui/mainFrame.cpp:6115
 msgid "Align Camera"
 msgstr ""
 
-#: ../src/gui/mathglPane.cpp:259
+#: ../src/gui/mathglPane.cpp:264
 msgid "No plots selected."
-msgstr "Kein Plot ausgewählt."
+msgstr "Chef trama a sélectionné."
 
-#: ../src/gui/mathglPane.cpp:1201
+#: ../src/gui/mathglPane.cpp:1228
 msgid ""
 "Unable to allocate requested memory.\n"
 " Try a lower resolution, or save as vector (SVG)."
 msgstr ""
-"Kann den notwendigen Speicher nicht zuordnen. Versuche eine geringer "
-"Auflösung oder speichere als Vektografik (svg)."
+"Impossible d'allouer de la mémoire demandée.\n"
+"Essayez une résolution inférieure, ou enregistrer en tant que vecteur (SVG)."
 
-#: ../src/gui/mathglPane.cpp:1203
+#: ../src/gui/mathglPane.cpp:1230
 msgid "Plotting functions returned an error:\n"
-msgstr "Plot-Funktion meldete einen Fehler:\n"
+msgstr "Plotting Les Fonctions vont retornar une erreur:. \n"
 
-#: ../src/gui/mathglPane.cpp:1205
+#: ../src/gui/mathglPane.cpp:1232
 msgid "File readback check failed"
-msgstr "File readback check failed"
+msgstr "Archives readback le contrôle a failli. "
 
-#: ../src/gui/mathglPane.cpp:1207
+#: ../src/gui/mathglPane.cpp:1234
 msgid "Filesize during readback appears to be zero."
-msgstr "Filesize during readback appears to be zero."
+msgstr "Filesize Pendant readback apparaît pour être zéro."
 
-#: ../src/backend/filter.cpp:55
-msgid "2D Plot"
-msgstr ""
+#: ../src/3Depict.cpp:399
+msgid "File : "
+msgstr "Archives :.  "
 
-#: ../src/backend/filter.cpp:56
-msgid "Draw"
-msgstr "Zeichnen"
+#: ../src/3Depict.cpp:399
+msgid " does not exist. Skipping"
+msgstr " N'existe pas. Skipping. "
 
-#: ../src/backend/filter.cpp:57
-msgid "Range"
-msgstr "Range"
+#: ../src/backend/configFile.cpp:187
+msgid "Config file present, but is not valid (root node test)"
+msgstr ""
+"Fichier de configuration présente, mais n'est pas valide (test de nœud "
+"racine)"
 
-#: ../src/backend/filter.cpp:58
-msgid "Voxel"
-msgstr "Voxel"
+#: ../src/backend/configFile.cpp:228
+msgid "Unable to interpret recent file entry"
+msgstr "Impossible d'interpréter l'entrée des fichiers récents"
 
-#: ../src/backend/filter.cpp:192 ../src/backend/filters/ionColour.cpp:411
-msgid "Aborted"
-msgstr "Abgebrochen"
+#: ../src/backend/configFile.cpp:268
+msgid "Unable to determine filter type in defaults listing."
+msgstr "Unable to determine filter type in defaults listing."
 
-#: ../src/backend/state.cpp:151
-msgid ""
-"This file is a \"state\" file for the 3Depict program, and stores "
-"information about a particular analysis session. This file should be a valid "
-"\"XML\" file"
+#: ../src/backend/configFile.cpp:605
+msgid "Online access for non win32/apple platforms is intentionally disabled, "
 msgstr ""
-"Diese Datei ist ein \"Status\" Datei für das Programm 3Depict. Sie speichert "
-"Informationen über die jeweiligen Analysesitzung. Dies sollte ein gültige "
-"\"XML\" Datei sein."
-
-#: ../src/backend/state.cpp:319
-msgid "Failed to allocate parser"
-msgstr "Kann Parser nicht zuordnen"
+"Accès en ligne pour ne gagner32/plate-formes de pomme est intencionadament "
+"impossibilité,.  "
 
-#: ../src/backend/state.cpp:354
+#: ../src/backend/configFile.cpp:606
 msgid ""
-"Unable to retrieve root node in input state file... Is this really a non-"
-"empty XML file?"
-msgstr ""
-
-#: ../src/backend/state.cpp:361
-msgid "Base state node missing. Is this really a state XML file??"
+"regardless of the settings you use here. Use your package manager to keep up-"
+"to-date"
 msgstr ""
+"Malgré tout du settings t'utilise ici. Usage votre directeur de colis pour "
+"entretenir actuel. "
 
-#: ../src/backend/state.cpp:390
-msgid "State was created by a newer version of this program.. "
-msgstr "Status wurde von einer neueren Version dieses Programmes erstellt.. "
-
-#: ../src/backend/state.cpp:391
-msgid "file reading will continue, but may fail."
-msgstr "Datei wird weiter eingelesen kann aber unter Umständen fehlschlagen."
+#: ../src/backend/plot.cpp:28 ../src/backend/filters/algorithms/mass.cpp:25
+#: ../src/backend/filters/voxelise.cpp:130
+#: ../src/backend/filters/voxelise.cpp:136
+#: ../src/backend/filters/spectrumPlot.cpp:76
+msgid "None"
+msgstr "Aucun"
 
-#: ../src/backend/state.cpp:396
-msgid ""
-"Warning, unparseable version number in state file. File reading will "
-"continue, but may fail"
-msgstr ""
-"Warnung: Nicht lesbare Versionsnummer in Statusdatei. Datei wird weiter "
-"eingelesen kann aber unter Umständen fehlschlagen."
+#: ../src/backend/plot.cpp:29
+msgid "Moving avg."
+msgstr "en Mouvant avg."
 
-#: ../src/backend/state.cpp:403
-msgid "Unable to find the \"writer\" node"
-msgstr "Kann \"writer\" node nicht finden"
+#: ../src/backend/plot.cpp:33
+msgid "Lines"
+msgstr "Lignes"
 
-#: ../src/backend/state.cpp:413
-msgid "Unable to find the \"backcolour\" node."
-msgstr "Unable to find the \"backcolour\" node."
+#: ../src/backend/plot.cpp:34
+msgid "Bars"
+msgstr "Barres"
 
-#: ../src/backend/state.cpp:420
-msgid "\"backcolour\" node missing \"r\" value."
-msgstr "\"backcolour\" node fehlt \"r\" Wert."
+#: ../src/backend/plot.cpp:35
+msgid "Steps"
+msgstr "Escaliers"
 
-#: ../src/backend/state.cpp:425
-msgid "Unable to interpret \"backColour\" node's \"r\" value."
-msgstr "Kann \"backColour\" node's \"r\" Wert nicht interpretieren."
+#: ../src/backend/plot.cpp:36
+msgid "Stem"
+msgstr "Tija. "
 
-#: ../src/backend/state.cpp:433
-msgid "\"backcolour\" node missing \"g\" value."
-msgstr "\"backcolour\" node fehlt \"g\" Wert."
+#: ../src/backend/plot.cpp:37
+msgid "Points"
+msgstr "Points"
 
-#: ../src/backend/state.cpp:439
-msgid "Unable to interpret \"backColour\" node's \"g\" value."
-msgstr "Kann \"backColour\" node's \"g\" Wert nicht interpretieren."
+#: ../src/backend/plot.cpp:39
+msgid "Density"
+msgstr ""
 
-#: ../src/backend/state.cpp:447
-msgid "\"backcolour\" node missing \"b\" value."
-msgstr "\"backcolour\" node fehlt \"b\" Wert."
+#: ../src/backend/plot.cpp:40
+msgid "Scatter"
+msgstr ""
 
-#: ../src/backend/state.cpp:453
-msgid "Unable to interpret \"backColour\" node's \"b\" value."
-msgstr "Kann \"backColour\" node's \"b\" Wert nicht interpretieren."
+#: ../src/backend/plot.cpp:746 ../src/backend/plot.cpp:754
+msgid "Multiple data types"
+msgstr ""
 
-#: ../src/backend/state.cpp:460
-msgid "\"backcolour\"s rgb values must be in range [0,1]"
-msgstr "\"backcolour\"s rgb Wert muss im Bereich [0,1] liegen"
+#: ../src/backend/plot.cpp:1577
+msgid "error"
+msgstr "error"
 
-#: ../src/backend/state.cpp:488
-msgid "Unable to find or interpret \"showaxis\" node"
-msgstr "Kann \"showaxis\" node nicht interpretieren"
+#: ../src/backend/plot.cpp:1818
+msgid "Amplitude"
+msgstr ""
 
-#: ../src/backend/state.cpp:532
-msgid "Unable to locate \"filtertree\" node."
-msgstr "Kann \"filtertree\" node nicht finden."
+#: ../src/backend/filtertree.cpp:1150
+msgid "WARNING: Skipping node "
+msgstr "AVíS: Skipping node.  "
 
-#: ../src/backend/state.cpp:548
-msgid "Cameras section missing \"active\" node."
-msgstr "Cameras section fehlt \"active\" node."
+#: ../src/backend/filtertree.cpp:1150
+msgid " as it was not recognised"
+msgstr " Tandis que ne va pas être recognised. "
 
-#: ../src/backend/state.cpp:556
-msgid "Unable to find property \"value\"  for \"cameras->active\" node."
-msgstr "Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht finden."
+#: ../src/backend/filtertree.cpp:1188
+msgid "Error processing node: "
+msgstr "L'Erreur que processa node:.  "
 
-#: ../src/backend/state.cpp:562
-msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
+#: ../src/backend/filters/externalProgram.cpp:259
+msgid "Collate Input"
 msgstr ""
-"Kann \"Eigenschaftswert\"  für \"Kamera->aktiv\" Node nicht interpretieren."
 
-#: ../src/backend/state.cpp:582
-msgid "Failed to interpret camera state for camera : "
+#: ../src/backend/filters/externalProgram.cpp:348
+msgid "Execute"
 msgstr ""
 
-#: ../src/backend/state.cpp:590
-msgid "Unable to interpret the camera type for camera : "
-msgstr "Kann den Kameratype nicht interpretieren für :"
-
-#: ../src/backend/state.cpp:648
-msgid "Unable to locate stash name for stash "
-msgstr "Kann den Stashnamen für Stash  nicht finden"
-
-#: ../src/backend/state.cpp:655
-msgid "Empty stash name for stash "
-msgstr "Leerer Stashname für Stash"
-
-#: ../src/backend/state.cpp:664
-msgid "No filter tree for stash:"
+#: ../src/backend/filters/externalProgram.cpp:389
+msgid "Collate output"
 msgstr ""
 
-#: ../src/backend/state.cpp:670
-msgid "For stash "
-msgstr "Für Stash "
+#: ../src/backend/filters/externalProgram.cpp:564
+#: ../src/backend/filters/externalProgram.cpp:578
+msgid "Command"
+msgstr "Commande"
 
-#: ../src/backend/state.cpp:702
-msgid "Unrecognised effect :"
-msgstr "Nichterkannter Effekt :"
+#: ../src/backend/filters/externalProgram.cpp:567
+msgid ""
+"Full command to send to operating system. See manual for escape sequence "
+"meanings"
+msgstr ""
 
-#: ../src/backend/state.cpp:712
-msgid "Duplicate effect found"
-msgstr "Doppelter Effekt gefunden"
+#: ../src/backend/filters/externalProgram.cpp:571
+msgid "Work Dir"
+msgstr "Emploi Dire. "
 
-#: ../src/backend/state.cpp:712
-msgid " cannot use."
-msgstr "kann nicht   verwenden."
+#: ../src/backend/filters/externalProgram.cpp:574
+msgid "Directory to run the command in"
+msgstr ""
 
-#: ../src/backend/state.cpp:722
-msgid "Error reading effect : "
-msgstr "Fehler beim Lesen:"
+#: ../src/backend/filters/externalProgram.cpp:581
+msgid "Cleanup input"
+msgstr "Cleanup Rentrée. "
 
-#: ../src/backend/state.cpp:927
-msgid "-merge"
+#: ../src/backend/filters/externalProgram.cpp:584
+msgid "Erase input files when command completed"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
-#: ../src/backend/APT/APTFileIO.cpp:103
-msgid "Error opening file"
-msgstr "Fehler beim Öffnen der Datei"
+#: ../src/backend/filters/externalProgram.cpp:589
+msgid "Cache"
+msgstr "Cache"
 
-#: ../src/backend/APT/APTFileIO.cpp:45
-msgid "Only found header, no data"
+#: ../src/backend/filters/externalProgram.cpp:592
+msgid ""
+"Assume program does not alter its output, unless inputs from 3Depict are "
+"altered"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:46
-msgid "Unable to reopen file after first scan"
+#: ../src/backend/filters/algorithms/mass.cpp:26
+msgid "Flat TOF"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:47
-msgid "Error whilst reading file contents"
-msgstr "Fehler beim Lesen des Dateiinhaltes"
-
-#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
-msgid "Unexpected file format"
+#: ../src/backend/filters/algorithms/mass.cpp:33
+msgid "INsufficient bins to perform fit"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:50
-msgid "Insufficient memory to continue"
+#: ../src/backend/filters/algorithms/mass.cpp:34
+msgid "Insufficient counts to perform fit"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:54
-msgid "Memory allocation failure on POS load"
-msgstr "Speicherzuweisungsfeher beim Laden der pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:55
-msgid "Error opening pos file"
-msgstr "Fehler beim Öffnen der pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:56
-msgid "Pos file empty"
-msgstr "Pos-Datei ist leer"
-
-#: ../src/backend/APT/APTFileIO.cpp:57
-msgid "Pos file size appears to have non-integer number of entries"
+#: ../src/backend/filters/algorithms/mass.cpp:35
+msgid "Insufficient data to perform fit"
 msgstr ""
-"Pos-Dateigröße scheint eine nicht ganzzahlige Anzahl an Einträgen zu haben"
-
-#: ../src/backend/APT/APTFileIO.cpp:58
-msgid "Error reading from pos file (after open)"
-msgstr "Fehler beim Lesen aus pos-Datei (nach dem öffnen)"
 
-#: ../src/backend/APT/APTFileIO.cpp:59
-msgid "Error - Found NaN in pos file"
-msgstr "Fehler - Fand NaN in pos-Datei"
-
-#: ../src/backend/APT/APTFileIO.cpp:60
-msgid "Error - Found Inf in pos file"
+#: ../src/backend/filters/algorithms/mass.cpp:36
+msgid "Data did not appear to be random noise - cannot fit noise level"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:61
-msgid "Pos load aborted by interrupt."
-msgstr "Pos laden durch Interrupt abgebrochen."
-
-#: ../src/backend/APT/APTFileIO.cpp:80
-msgid "No numerical data found"
-msgstr "Keine numerischen Daten gefunden"
-
-#: ../src/backend/APT/APTFileIO.cpp:81
-msgid "Error re-opening file, after first scan"
-msgstr "Fehler beim nochmaligen Öffnen der Datei nach dem ersten Scan"
-
-#: ../src/backend/APT/APTFileIO.cpp:82
-msgid "Unable to read file contents after open"
-msgstr "Kann den Dateiinhalt nach dem Öffnen nich lesen"
+#: ../src/backend/filters/ionClip.cpp:65 ../src/backend/filters/profile.cpp:53
+msgid "Sphere"
+msgstr "Sphère"
 
-#: ../src/backend/APT/APTFileIO.cpp:83
-msgid "Error interpreting field in file"
-msgstr "Fehler beim Interpretieren eine Feldes in der Datei"
+#: ../src/backend/filters/ionClip.cpp:66
+msgid "Plane"
+msgstr "Plan"
 
-#: ../src/backend/APT/APTFileIO.cpp:84
-msgid "Incorrect number of fields in file"
-msgstr "Die Datei enthält eine falsche Anzahl von Feldern"
+#: ../src/backend/filters/ionClip.cpp:67
+msgid "Cylinder"
+msgstr "Cylindre"
 
-#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
-msgid "Unable to allocate memory to store data"
-msgstr "Kann Speicher nicht zuordnen"
+#: ../src/backend/filters/ionClip.cpp:68
+msgid "Aligned box"
+msgstr "Aligned Caisse. "
 
-#: ../src/backend/APT/APTFileIO.cpp:104
-msgid "File is empty"
-msgstr ""
+#: ../src/backend/filters/ionClip.cpp:498
+#: ../src/backend/filters/profile.cpp:995
+msgid "Primitive"
+msgstr "Objet"
 
-#: ../src/backend/APT/APTFileIO.cpp:105
-msgid "Filesize does not match expected format"
+#: ../src/backend/filters/ionClip.cpp:501
+msgid "Shape of clipping object"
 msgstr ""
 
-#: ../src/backend/APT/APTFileIO.cpp:106
-msgid "File version number not <4, as expected"
-msgstr ""
+#: ../src/backend/filters/ionClip.cpp:507
+#: ../src/backend/filters/profile.cpp:1001
+msgid "Show Primitive"
+msgstr "Le Spectacle Primitiu. "
 
-#: ../src/backend/APT/APTFileIO.cpp:108
-msgid "Unable to detect endian-ness in file"
+#: ../src/backend/filters/ionClip.cpp:510
+msgid "Display the 3D interaction object"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:48
-msgid "Error opening file, check name and permissions."
-msgstr "Fehler beim Öffnen der Datei, überprüfe Namen und Berechtigungen."
+#: ../src/backend/filters/ionClip.cpp:515
+msgid "Invert Clip"
+msgstr "Invert Clip. "
 
-#: ../src/backend/APT/APTRanges.cpp:49
+#: ../src/backend/filters/ionClip.cpp:518
 msgid ""
-"Error interpreting range file header, expecting ion count and range count, "
-"respectively."
+"Switch between retaining points inside (false) and outside (true) of "
+"primitive"
 msgstr ""
-"Fehler beim Rangedatei interpretieren, erwarte Ionenanzahl bzw. Rangeanzahl."
 
-#: ../src/backend/APT/APTRanges.cpp:50
-msgid ""
-"Range file appears to be empty, check file is a proper range file and is not "
-"empty."
+#: ../src/backend/filters/ionClip.cpp:532
+#: ../src/backend/filters/profile.cpp:1058
+msgid "Position for centre of sphere"
 msgstr ""
-"Rangedatei scheint leer zu sein. Prüfe ob die Datei wirklich ein Rangedatei "
-"und nicht leer ist."
-
-#: ../src/backend/APT/APTRanges.cpp:51
-msgid "Error reading the long name for ion."
-msgstr "Fehler beim Lesen des langen Namens für Ion."
 
-#: ../src/backend/APT/APTRanges.cpp:52
-msgid "Error reading the short name for ion."
-msgstr "Fehler beim Lesen des kurzen Namens für Ion."
+#: ../src/backend/filters/ionClip.cpp:537
+#: ../src/backend/filters/ionClip.cpp:597
+#: ../src/backend/filters/spatialAnalysis.cpp:134
+#: ../src/backend/filters/profile.cpp:1041
+#: ../src/backend/filters/profile.cpp:1063
+msgid "Radius"
+msgstr "Rayon"
 
-#: ../src/backend/APT/APTRanges.cpp:53
-msgid ""
-"Error reading colour data in the file, expecting 3 decimal values, space "
-"separated."
+#: ../src/backend/filters/ionClip.cpp:540
+#: ../src/backend/filters/profile.cpp:1066
+msgid "Radius of sphere"
 msgstr ""
-"Fehler beim Lesen der Farbinformationen in der Datei. Erwarte 3, durch "
-"Leerzeichen getrennte, Dezimalwerte."
 
-#: ../src/backend/APT/APTRanges.cpp:54
-msgid ""
-"Tried skipping to table separator line (line with dashes), but did not find "
-"it."
+#: ../src/backend/filters/ionClip.cpp:554
+msgid "Position that plane passes through"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:55
-msgid ""
-"Number of ions in the table header did not match the number specified at the "
-"start of the file"
-msgstr ""
+#: ../src/backend/filters/ionClip.cpp:559
+msgid "Plane Normal"
+msgstr "L'Avion Normal. "
 
-#: ../src/backend/APT/APTRanges.cpp:56
-msgid ""
-"Unexpected failure whilst trying to skip over range lead-in data (bit before "
-"range start value)"
+#: ../src/backend/filters/ionClip.cpp:562
+msgid "Perpendicular direction for plane"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:57
-msgid ""
-"Range table had an incorrect number of entries, should be 2 or 3 + number of "
-"ranges"
+#: ../src/backend/filters/ionClip.cpp:576
+msgid "Centre of cylinder"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:58
-msgid "Unable to read range start and end values"
-msgstr "Kann Anfangs und Endwert des Range nicht lesen"
-
-#: ../src/backend/APT/APTRanges.cpp:59
-msgid "Unable to read range table entry"
-msgstr "Kann Rangetabelleneintrag nich lesen"
+#: ../src/backend/filters/ionClip.cpp:581
+#: ../src/backend/filters/spatialAnalysis.cpp:947
+#: ../src/backend/filters/profile.cpp:1025
+#: ../src/backend/filters/transform.cpp:1293
+msgid "Axis"
+msgstr "Axe"
 
-#: ../src/backend/APT/APTRanges.cpp:60
-msgid ""
-"Error reading file, unexpected format, are you sure it is a proper range "
-"file?"
+#: ../src/backend/filters/ionClip.cpp:584
+msgid "Positive vector for cylinder"
 msgstr ""
-"Fehler beim Lesen der Datei: Unerwartetes Format, sind Sie sicher, dass dies "
-"eine korrekte Rangedatei ist?"
 
-#: ../src/backend/APT/APTRanges.cpp:61
-msgid ""
-"Too many ranges appeared to have range entries with no usable data (eg, all "
-"blank)"
-msgstr "Zu viele Ranges scheinen  ungültige Einträge zu haben (z.B. alle leer)"
+#: ../src/backend/filters/ionClip.cpp:589
+#: ../src/backend/filters/profile.cpp:1033
+msgid "Lock Axis Mag."
+msgstr "Axe de pany Mag."
 
-#: ../src/backend/APT/APTRanges.cpp:62
-msgid ""
-"Range file appears to contain malformed data, check things like start and "
-"ends of m/c are not equal or flipped."
+#: ../src/backend/filters/ionClip.cpp:592
+msgid "Prevent changing length of cylinder during 3D interaction"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:63
-msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
-msgstr "Rangedatei schein inkonsistent zu sein (z.B. überlappende Ranges)"
-
-#: ../src/backend/APT/APTRanges.cpp:64
-msgid "No ion name mapping found  for multiple ion."
+#: ../src/backend/filters/ionClip.cpp:600
+#: ../src/backend/filters/profile.cpp:1044
+msgid "Radius of cylinder"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:65
-msgid "Polyatomic extension range matches multiple masses in first section"
+#: ../src/backend/filters/ionClip.cpp:613
+msgid "Centre of axis aligned box"
 msgstr ""
 
-#: ../src/backend/APT/APTRanges.cpp:66
-msgid "Range file is exceedingly large. Refusing to open"
-msgstr ""
+#: ../src/backend/filters/ionClip.cpp:618
+msgid "Corner offset"
+msgstr "Offset de coin. "
 
-#: ../src/backend/APT/APTRanges.cpp:1404
-msgid ""
-"Range headings do not match order of the ions listed in the name "
-"specifications. The name specification ordering will be used when reading "
-"the range table, as the range heading section is declared as a comment in "
-"the file-format specifications, and is not to be intepreted by this program. "
-"Check range-species associations actually match what you expect."
+#: ../src/backend/filters/ionClip.cpp:621
+msgid "Vector to corner of box"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:73
-msgid "Arrow"
-msgstr "Pfeil"
+#: ../src/backend/filters/clusterAnalysis.cpp:84
+#: ../src/backend/filters/clusterAnalysis.cpp:1060
+msgid "Size Distribution"
+msgstr "Distribution de mida. "
 
-#: ../src/backend/filters/annotation.cpp:74
-msgid "Text"
-msgstr "Text"
+#: ../src/backend/filters/clusterAnalysis.cpp:85
+msgid "Chemistry Distribution"
+msgstr "Distribution de chimie. "
 
-#: ../src/backend/filters/annotation.cpp:75
-msgid "Arrow+Text"
-msgstr "Pfeil+Text"
+#: ../src/backend/filters/clusterAnalysis.cpp:503
+msgid "No range data. Can't cluster."
+msgstr "Chef donnée de gamme. Il peut ne groupe."
 
-#: ../src/backend/filters/annotation.cpp:76
-msgid "Angle"
-msgstr "Winkel"
+#: ../src/backend/filters/clusterAnalysis.cpp:514
+msgid ""
+"No ranges selected for cluster \"core\". Cannot continue with clustering."
+msgstr "Chef gamme a sélectionné pour groupe.  "
 
-#: ../src/backend/filters/annotation.cpp:77
-msgid "Ruler"
-msgstr "Lineal"
+#: ../src/backend/filters/clusterAnalysis.cpp:523
+msgid ""
+"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
+msgstr "Chef gamme a sélectionné pour groupe.  "
 
-#: ../src/backend/filters/annotation.cpp:524
-msgid "Enable"
+#: ../src/backend/filters/clusterAnalysis.cpp:689
+msgid "Morphology Plot"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:527
-msgid "Enable/disable annotation"
+#: ../src/backend/filters/clusterAnalysis.cpp:690
+msgid "\\lambda_1:\\lambda_2 ratio"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:548
-msgid "Type or style of annotation"
+#: ../src/backend/filters/clusterAnalysis.cpp:691
+msgid "\\lambda_2:\\lambda_3 ratio"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:564
-#: ../src/backend/filters/annotation.cpp:668
-msgid "Text of annotation"
+#: ../src/backend/filters/clusterAnalysis.cpp:736
+msgid "No clusters had sufficient dimensionality to compute singular values"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:568
-#: ../src/backend/filters/ionClip.cpp:529
-#: ../src/backend/filters/ionClip.cpp:551
-#: ../src/backend/filters/ionClip.cpp:573
-#: ../src/backend/filters/ionClip.cpp:610
-#: ../src/backend/filters/transform.cpp:1233
-#: ../src/backend/filters/transform.cpp:1260
-#: ../src/backend/filters/transform.cpp:1286
-#: ../src/backend/filters/profile.cpp:1013
-#: ../src/backend/filters/profile.cpp:1051
-#: ../src/backend/filters/spatialAnalysis.cpp:1041 ../src/gl/cameras.cpp:603
-msgid "Origin"
-msgstr "Ursprung"
+#: ../src/backend/filters/clusterAnalysis.cpp:794
+msgid "Found :"
+msgstr "Trouvé :. "
 
-#: ../src/backend/filters/annotation.cpp:572
-msgid "Position of annotation"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:796
+msgid " clusters"
+msgstr " Groupes. "
 
-#: ../src/backend/filters/annotation.cpp:576
-#: ../src/backend/filters/annotation.cpp:683
-#: ../src/backend/filters/annotation.cpp:742
-#: ../src/backend/filters/annotation.cpp:831
-msgid "Up dir"
-msgstr "Up dir"
+#: ../src/backend/filters/clusterAnalysis.cpp:888
+msgid "Compositions (fractional, core+bulk)"
+msgstr "Compositions (fraccionari, noyau+bulk). "
 
-#: ../src/backend/filters/annotation.cpp:580
-#: ../src/backend/filters/annotation.cpp:835
-msgid "Vector for up direction of annotation text"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:890
+msgid "Compositions (fractional, core only)"
+msgstr "Compositions (fraccionari, le noyau unique). "
 
-#: ../src/backend/filters/annotation.cpp:584
-#: ../src/backend/filters/annotation.cpp:690
-#: ../src/backend/filters/annotation.cpp:734
-#: ../src/backend/filters/annotation.cpp:839
-msgid "Across dir"
-msgstr "Across dir"
+#: ../src/backend/filters/clusterAnalysis.cpp:908
+msgid "Frequencies (core+bulk)"
+msgstr "Fréquences (noyau+bulk). "
 
-#: ../src/backend/filters/annotation.cpp:588
-#: ../src/backend/filters/annotation.cpp:843
-msgid "Reading direction for annotation"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:939
+msgid "Core Link + Erode"
+msgstr "Lien de noyau + Erosiona. "
 
-#: ../src/backend/filters/annotation.cpp:593
-#: ../src/backend/filters/annotation.cpp:675
-#: ../src/backend/filters/annotation.cpp:769
-msgid "Text size"
-msgstr "Textgröße"
+#: ../src/backend/filters/clusterAnalysis.cpp:943
+#: ../src/backend/filters/clusterAnalysis.cpp:951
+#: ../src/backend/filters/spatialAnalysis.cpp:707
+#: ../src/backend/filters/spatialAnalysis.cpp:715
+#: ../src/backend/filters/transform.cpp:1156
+#: ../src/backend/filters/ionInfo.cpp:549
+msgid "Algorithm"
+msgstr "Algorithme"
 
-#: ../src/backend/filters/annotation.cpp:597
-#: ../src/backend/filters/annotation.cpp:679
-#: ../src/backend/filters/annotation.cpp:851
-msgid "Relative size of annotation text"
+#: ../src/backend/filters/clusterAnalysis.cpp:947
+msgid "Cluster algorithm mode"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:609
-#: ../src/backend/filters/annotation.cpp:650
-msgid "3D position for tail of arrow"
+#: ../src/backend/filters/clusterAnalysis.cpp:958
+msgid "Core Classify"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:617
-#: ../src/backend/filters/annotation.cpp:659
-msgid "3D Position to which arrow points"
+#: ../src/backend/filters/clusterAnalysis.cpp:961
+msgid ""
+"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:620
-#: ../src/backend/filters/annotation.cpp:730
-msgid "Positioning"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:967
+msgid "Core Classify Dist"
+msgstr "Le Noyau Classe Dist. "
 
-#: ../src/backend/filters/annotation.cpp:625
-#: ../src/backend/filters/annotation.cpp:697
-msgid "Tip radius"
+#: ../src/backend/filters/clusterAnalysis.cpp:970
+msgid "Restrict only atoms by distance to be cluster sources"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:629
-msgid "Size of the arrow head"
+#: ../src/backend/filters/clusterAnalysis.cpp:975
+msgid "Classify Knn Max"
+msgstr "Classe Knn Max. "
+
+#: ../src/backend/filters/clusterAnalysis.cpp:978
+msgid ""
+"Require that the kth NN (this number) is within the classify distance, to be "
+"a cluster source"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:633
-msgid "Line size"
+#: ../src/backend/filters/clusterAnalysis.cpp:984
+msgid "Core Link Dist"
+msgstr "Lien de noyau Dist. "
+
+#: ../src/backend/filters/clusterAnalysis.cpp:987
+msgid "Distance between clusters to allow linking"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:637
-msgid "Thickness of line used to draw arrow stem"
+#: ../src/backend/filters/clusterAnalysis.cpp:992
+msgid "Bulk Link"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:671
-msgid "Options"
+#: ../src/backend/filters/clusterAnalysis.cpp:995
+#: ../src/backend/filters/clusterAnalysis.cpp:1012
+msgid "Enable  linking of non-cluster species - eg for composition analysis "
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:707
-msgid "Position A"
-msgstr "Position A"
+#: ../src/backend/filters/clusterAnalysis.cpp:1002
+msgid "Bulk Link (Envelope) Dist"
+msgstr "Bulk Lien (Enveloppe) Dist. "
 
-#: ../src/backend/filters/annotation.cpp:711
-msgid "Location of first non-central vertex"
+#: ../src/backend/filters/clusterAnalysis.cpp:1005
+msgid ""
+"Distance from core points that form cluster that is used to grab surrounding "
+"bulk points"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:715
-msgid "Origin "
-msgstr "Ursprung "
-
-#: ../src/backend/filters/annotation.cpp:719
-msgid "Location of central vertex"
+#: ../src/backend/filters/clusterAnalysis.cpp:1009
+msgid "Erosion"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:723
-msgid "Position B"
-msgstr "Position B"
+#: ../src/backend/filters/clusterAnalysis.cpp:1018
+msgid "Erode Dist"
+msgstr "Erosiona Dist. "
 
-#: ../src/backend/filters/annotation.cpp:727
-msgid "Location of second non-central vertex"
+#: ../src/backend/filters/clusterAnalysis.cpp:1021
+msgid ""
+"Distance from unclustered material in which bulk points are eroded from "
+"cluster"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:738
-msgid "Reading direction for angle text"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1028
+msgid "Clustering Params"
+msgstr "Clustering Params. "
 
-#: ../src/backend/filters/annotation.cpp:743
-msgid "Vector for up direction of angle text"
+#: ../src/backend/filters/clusterAnalysis.cpp:1033
+msgid "Size Cropping"
+msgstr "Mida Cropping. "
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1036
+msgid "Remove clusters based upon size distribution"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:751
-msgid "Reflexive"
-msgstr "Reflexive"
+#: ../src/backend/filters/clusterAnalysis.cpp:1043
+msgid "Min Size"
+msgstr "Taille min."
 
-#: ../src/backend/filters/annotation.cpp:754
-msgid "Measure interor (enabled) or exterior angle (disabled)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1046
+msgid "Remove clusters below this size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:759
-msgid "Show Angle"
-msgstr "Zeige Winkel"
+#: ../src/backend/filters/clusterAnalysis.cpp:1051
+msgid "Max Size"
+msgstr "Taille max."
 
-#: ../src/backend/filters/annotation.cpp:763
-msgid "Display angle text (when enabled)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1054
+msgid "Remove clusters above this size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:773
-msgid "Size of angle text"
+#: ../src/backend/filters/clusterAnalysis.cpp:1063
+msgid "Show number of clusters as a function of cluster size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:791
-msgid "Digit format"
-msgstr "Zahlenformat"
+#: ../src/backend/filters/clusterAnalysis.cpp:1069
+msgid "Log Scale"
+msgstr "Log échelle. "
 
-#: ../src/backend/filters/annotation.cpp:795
-msgid ""
-"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
-"gives 12.34"
+#: ../src/backend/filters/clusterAnalysis.cpp:1072
+msgid "Use logarithmic scale for size distribution"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:801
-#: ../src/backend/filters/annotation.cpp:886
-msgid "Sphere size"
-msgstr "Kugelgröße"
-
-#: ../src/backend/filters/annotation.cpp:805
-#: ../src/backend/filters/annotation.cpp:890
-msgid "Marker sphere size for manipulating tool"
+#: ../src/backend/filters/clusterAnalysis.cpp:1079
+msgid "Morphology Dist."
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:819
-msgid "Ruler beginning 3D location"
+#: ../src/backend/filters/clusterAnalysis.cpp:1082
+msgid "Create a plot showing cluster aspect ratio"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:827
-msgid "Ruler finish 3D location"
+#: ../src/backend/filters/clusterAnalysis.cpp:1088
+msgid "Cluster Id"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:848
-#: ../src/backend/filters/boundingBox.cpp:715
-msgid "Font Size"
-msgstr "Schriftgröße"
+#: ../src/backend/filters/clusterAnalysis.cpp:1091
+msgid "Assign cluster output a unique per-cluster value (id)."
+msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:857
-msgid "Fixed ticks"
-msgstr "Fixe Marker"
+#: ../src/backend/filters/clusterAnalysis.cpp:1098
+msgid "Chemistry Dist."
+msgstr "Chimie Dist."
 
-#: ../src/backend/filters/annotation.cpp:860
-msgid ""
-"Use fixed (enabled) number of text markers, or one every fixed distance "
-"(disabled)"
+#: ../src/backend/filters/clusterAnalysis.cpp:1101
+msgid "Create a plot showing chemistry for each cluster size"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:867
-msgid "Num Ticks"
-msgstr "Anzahl Marker"
+#: ../src/backend/filters/clusterAnalysis.cpp:1108
+#: ../src/backend/filters/spatialAnalysis.cpp:1006
+#: ../src/backend/filters/profile.cpp:1111
+#: ../src/backend/filters/ionInfo.cpp:465
+msgid "Normalise"
+msgstr "Normalise"
 
-#: ../src/backend/filters/annotation.cpp:870
-msgid "Number of tick marks along ruler"
+#: ../src/backend/filters/clusterAnalysis.cpp:1111
+msgid "Convert cluster counts to composition"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:877
-msgid "Tick Spacing"
-msgstr "Markerabstand"
+#: ../src/backend/filters/clusterAnalysis.cpp:1117
+msgid "Postprocess"
+msgstr "Postprocess. "
 
-#: ../src/backend/filters/annotation.cpp:880
-msgid "Distance between tick marks along ruler"
+#: ../src/backend/filters/clusterAnalysis.cpp:1136
+msgid "If selected, use as \"core\" ion type (can make clusters)"
 msgstr ""
 
-#: ../src/backend/filters/annotation.cpp:904
-msgid "Colour for ruler and ticks"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1141
+msgid "Core Ranges"
+msgstr "Gammes de noyau. "
 
-#: ../src/backend/filters/ionClip.cpp:65 ../src/backend/filters/profile.cpp:53
-msgid "Sphere"
-msgstr "Kugel"
+#: ../src/backend/filters/clusterAnalysis.cpp:1147
+msgid "Enable/Disable All"
+msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:66
-msgid "Plane"
-msgstr "Ebene"
+#: ../src/backend/filters/clusterAnalysis.cpp:1151
+msgid "Enable/disable all ions"
+msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:67
-msgid "Cylinder"
-msgstr "Zylinder"
+#: ../src/backend/filters/clusterAnalysis.cpp:1164
+msgid ""
+"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
+msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:68
-msgid "Aligned box"
-msgstr "Ausgerichtete Box"
+#: ../src/backend/filters/clusterAnalysis.cpp:1169
+msgid "Bulk Ranges"
+msgstr "Bulk Gammes. "
 
-#: ../src/backend/filters/ionClip.cpp:498
-#: ../src/backend/filters/profile.cpp:991
-msgid "Primitive"
-msgstr "Primitiv"
+#: ../src/backend/filters/clusterAnalysis.cpp:1185
+msgid "Max. Sep + Erode"
+msgstr "Max. Sep + Erosiona. "
 
-#: ../src/backend/filters/ionClip.cpp:501
-msgid "Shape of clipping object"
+#: ../src/backend/filters/clusterAnalysis.cpp:1938
+msgid " --------------------------- Parameter selection notice ------------- "
 msgstr ""
+" --------------------------- Avís de sélection du paramètre -------------.  "
 
-#: ../src/backend/filters/ionClip.cpp:507
-#: ../src/backend/filters/profile.cpp:997
-msgid "Show Primitive"
-msgstr "Zeige Primitiv"
-
-#: ../src/backend/filters/ionClip.cpp:510
-msgid "Display the 3D interaction object"
+#: ../src/backend/filters/clusterAnalysis.cpp:1939
+msgid "You have specified a bulk distance larger than half your link distance."
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:515
-msgid "Invert Clip"
-msgstr "Invertiere Clip"
+#: ../src/backend/filters/clusterAnalysis.cpp:1940
+msgid ""
+"You can do this; thats OK, but the output is no longer independent of the "
+"computational process;"
+msgstr ""
+"Peux faire ce; thats OK, mais la sortie est déjà n'indépendante du procès "
+"computacional;. "
 
-#: ../src/backend/filters/ionClip.cpp:518
+#: ../src/backend/filters/clusterAnalysis.cpp:1941
 msgid ""
-"Switch between retaining points inside (false) and outside (true) of "
-"primitive"
+"This will be a problem in the case where two or more clusters can equally "
+"lay claim to a \"bulk\" ion. "
 msgstr ""
+"Ce sera un problème en le cas où deux ou plus les groupes également peuvent "
+"mettre réclamation à un.  "
 
-#: ../src/backend/filters/ionClip.cpp:532
-#: ../src/backend/filters/profile.cpp:1054
-msgid "Position for centre of sphere"
+#: ../src/backend/filters/clusterAnalysis.cpp:1942
+msgid ""
+" If your inter-cluster distance is sufficiently large (larger than your bulk "
+"linking distance), then you can get away with this."
 msgstr ""
+" Si votre inter-distance de groupe est suficientment grand (plus grand que "
+"votre bulk raccordant distance), alors te peux escapar avec ce."
 
-#: ../src/backend/filters/ionClip.cpp:537
-#: ../src/backend/filters/ionClip.cpp:597
-#: ../src/backend/filters/profile.cpp:1037
-#: ../src/backend/filters/profile.cpp:1059
-#: ../src/backend/filters/spatialAnalysis.cpp:134
-#: ../src/backend/filters/spatialAnalysis.cpp:1058
-msgid "Radius"
-msgstr "Radius"
+#: ../src/backend/filters/clusterAnalysis.cpp:1943
+msgid ""
+" In theory it is possible to \"join\" the clusters, but this has not been "
+"implemented for speed reasons."
+msgstr " En théorie est possible à implementat pour des raisons de vitesse."
 
-#: ../src/backend/filters/ionClip.cpp:540
-#: ../src/backend/filters/profile.cpp:1062
-msgid "Radius of sphere"
+#: ../src/backend/filters/clusterAnalysis.cpp:1944
+msgid ""
+"If you want this, please contact the author, or just use the source to add "
+"this in yourself."
 msgstr ""
+"Si veux ce, si vous plau contactar l'auteur, ou seulement utiliser la source "
+"pour ajouter cet en tu."
 
-#: ../src/backend/filters/ionClip.cpp:554
-msgid "Position that plane passes through"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:1945
+msgid "---------------------------------------------------------------------- "
+msgstr "----------------------------------------------------------------------.  "
+
+#: ../src/backend/filters/clusterAnalysis.cpp:1955
+#: ../src/backend/filters/spatialAnalysis.cpp:476
+#: ../src/backend/filters/spatialAnalysis.cpp:2166
+#: ../src/backend/filters/spatialAnalysis.cpp:2595
+#: ../src/backend/filters/spatialAnalysis.cpp:2887
+#: ../src/backend/filters/spatialAnalysis.cpp:3188
+#: ../src/backend/filters/spatialAnalysis.cpp:3334
+#: ../src/backend/filters/spatialAnalysis.cpp:3597
+#: ../src/backend/filters/spatialAnalysis.cpp:3810
+#: ../src/backend/filters/transform.cpp:1015
+msgid "Collate"
+msgstr "Copies assemblées"
 
-#: ../src/backend/filters/ionClip.cpp:559
-msgid "Plane Normal"
-msgstr "Plane Normal"
+#: ../src/backend/filters/clusterAnalysis.cpp:1974
+msgid "Build Core"
+msgstr "Noyau de complexió. "
 
-#: ../src/backend/filters/ionClip.cpp:562
-msgid "Perpendicular direction for plane"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2002
+msgid "Core"
+msgstr "Noyau"
 
-#: ../src/backend/filters/ionClip.cpp:576
-msgid "Centre of cylinder"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2125
+msgid "Bulk"
+msgstr "Bulk. "
 
-#: ../src/backend/filters/ionClip.cpp:581
-#: ../src/backend/filters/transform.cpp:1294
-#: ../src/backend/filters/profile.cpp:1021
-#: ../src/backend/filters/spatialAnalysis.cpp:1049
-msgid "Axis"
-msgstr "Achse"
+#: ../src/backend/filters/clusterAnalysis.cpp:2203
+msgid "Erode"
+msgstr "Contracter"
 
-#: ../src/backend/filters/ionClip.cpp:584
-msgid "Positive vector for cylinder"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2281
+msgid "Re-Collate"
+msgstr "Re-Acarar. "
 
-#: ../src/backend/filters/ionClip.cpp:589
-#: ../src/backend/filters/profile.cpp:1029
-msgid "Lock Axis Mag."
-msgstr "Achsen Vergr. sperren"
+#: ../src/backend/filters/clusterAnalysis.cpp:2336
+msgid "Classify Core"
+msgstr "Classe Noyau. "
 
-#: ../src/backend/filters/ionClip.cpp:592
-msgid "Prevent changing length of cylinder during 3D interaction"
-msgstr ""
+#: ../src/backend/filters/clusterAnalysis.cpp:2427
+msgid "Build Bulk"
+msgstr "Complexió Bulk. "
 
-#: ../src/backend/filters/ionClip.cpp:600
-#: ../src/backend/filters/profile.cpp:1040
-#: ../src/backend/filters/spatialAnalysis.cpp:1061
-msgid "Radius of cylinder"
+#: ../src/backend/filters/clusterAnalysis.cpp:2675
+#: ../src/backend/filters/clusterAnalysis.cpp:2878
+msgid "Cluster Size"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:613
-msgid "Centre of axis aligned box"
+#: ../src/backend/filters/clusterAnalysis.cpp:2676
+#: ../src/backend/filters/clusterAnalysis.cpp:2882
+msgid "Frequency"
 msgstr ""
 
-#: ../src/backend/filters/ionClip.cpp:618
-msgid "Corner offset"
-msgstr "Corner offset"
-
-#: ../src/backend/filters/ionClip.cpp:621
-msgid "Vector to corner of box"
+#: ../src/backend/filters/clusterAnalysis.cpp:2880
+msgid "Composition"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:111
+#: ../src/backend/filters/voxelise.cpp:116
 msgid "None (Raw count)"
-msgstr "Keine (Roh count)"
+msgstr "Chef (Cru compter). "
 
-#: ../src/backend/filters/voxelise.cpp:112
+#: ../src/backend/filters/voxelise.cpp:117
 msgid "Volume (Density)"
-msgstr "Volumen (Dichte)"
+msgstr "Volume (Densité). "
 
-#: ../src/backend/filters/voxelise.cpp:113
+#: ../src/backend/filters/voxelise.cpp:118
 msgid "All Ions (conc)"
-msgstr "Alle Ionen (Konz)"
+msgstr "Tous les  Ions (conc). "
 
-#: ../src/backend/filters/voxelise.cpp:114
+#: ../src/backend/filters/voxelise.cpp:119
 msgid "Ratio (Num/Denom)"
-msgstr "Verhältnis (Zähler/Nenner)"
+msgstr "Proportion (Num/Denom). "
 
-#: ../src/backend/filters/voxelise.cpp:118
+#: ../src/backend/filters/voxelise.cpp:123
 msgid "Point Cloud"
-msgstr "Punktwolke"
+msgstr "Nuage de point. "
 
-#: ../src/backend/filters/voxelise.cpp:119
+#: ../src/backend/filters/voxelise.cpp:124
 msgid "Isosurface"
-msgstr "Isosurface"
+msgstr "Isosurface. "
 
-#: ../src/backend/filters/voxelise.cpp:120
+#: ../src/backend/filters/voxelise.cpp:125
 msgid "Axial slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:124
-#: ../src/backend/filters/voxelise.cpp:130
-#: ../src/backend/filters/algorithms/mass.cpp:25
-#: ../src/backend/filters/spectrumPlot.cpp:76 ../src/backend/plot.cpp:28
-msgid "None"
-msgstr "Keiner"
+#: ../src/backend/filters/voxelise.cpp:126
+msgid "Slice"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:125
+#: ../src/backend/filters/voxelise.cpp:131
 msgid "Gaussian (blur)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:126
+#: ../src/backend/filters/voxelise.cpp:132
 msgid "Lapl. of Gauss. (edges)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:131
+#: ../src/backend/filters/voxelise.cpp:137
 msgid "Linear"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:564
+#: ../src/backend/filters/voxelise.cpp:404
+msgid "Counting"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:579
+msgid "Gauss Smooth"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:585
+msgid "Calc. Laplace"
+msgstr ""
+
+#: ../src/backend/filters/voxelise.cpp:609
 msgid "Voxel Limits (min,max): ("
-msgstr "Voxel Grenzen (min,max): ("
+msgstr "Voxel Limites (min,max): (. "
 
-#: ../src/backend/filters/voxelise.cpp:709
+#: ../src/backend/filters/voxelise.cpp:619
+#: ../src/backend/filters/voxelise.cpp:1139
+msgid "Representation"
+msgstr "Représentation"
+
+#: ../src/backend/filters/voxelise.cpp:924
 msgid "Fixed width"
-msgstr "Fixe Breite"
+msgstr "Largeur de recouvrement"
 
-#: ../src/backend/filters/voxelise.cpp:713
+#: ../src/backend/filters/voxelise.cpp:928
 msgid "If true, use fixed size voxels, otherwise use fixed count"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:719
+#: ../src/backend/filters/voxelise.cpp:934
 msgid "Bin width x"
-msgstr "Bin-Breite x"
+msgstr "Amplada de galleda x. "
 
-#: ../src/backend/filters/voxelise.cpp:723
+#: ../src/backend/filters/voxelise.cpp:938
 msgid "Voxel size in X direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:727
+#: ../src/backend/filters/voxelise.cpp:942
 msgid "Bin width y"
-msgstr "Bin-Breite y"
+msgstr "Amplada de galleda y. "
 
-#: ../src/backend/filters/voxelise.cpp:730
+#: ../src/backend/filters/voxelise.cpp:945
 msgid "Voxel size in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:736
+#: ../src/backend/filters/voxelise.cpp:951
 msgid "Bin width z"
-msgstr "Bin-Breite Z"
+msgstr "Amplada de galleda z. "
 
-#: ../src/backend/filters/voxelise.cpp:739
+#: ../src/backend/filters/voxelise.cpp:954
 msgid "Voxel size in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:746
+#: ../src/backend/filters/voxelise.cpp:961
 msgid "Num bins x"
-msgstr "Anzahl Bins x"
+msgstr "Num Galledes x. "
 
-#: ../src/backend/filters/voxelise.cpp:750
+#: ../src/backend/filters/voxelise.cpp:965
 msgid "Number of voxels to use in X direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:755
+#: ../src/backend/filters/voxelise.cpp:970
 msgid "Num bins y"
-msgstr "Anzahl Bins y"
+msgstr "Num Galledes y. "
 
-#: ../src/backend/filters/voxelise.cpp:758
+#: ../src/backend/filters/voxelise.cpp:973
 msgid "Number of voxels to use in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:764
+#: ../src/backend/filters/voxelise.cpp:979
 msgid "Num bins z"
-msgstr "Anzahl Bins z"
+msgstr "Num Galledes z. "
 
-#: ../src/backend/filters/voxelise.cpp:766
+#: ../src/backend/filters/voxelise.cpp:981
 msgid "Number of voxels to use in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:796
+#: ../src/backend/filters/voxelise.cpp:1011
 msgid "Normalise by"
-msgstr "Normalisieren mit"
+msgstr "Normalise Pour. "
 
-#: ../src/backend/filters/voxelise.cpp:799
+#: ../src/backend/filters/voxelise.cpp:1014
 msgid "Method to use to normalise scalar value in each voxel"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:802
+#: ../src/backend/filters/voxelise.cpp:1017
 msgid "Computation"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:809
-#: ../src/backend/filters/spatialAnalysis.cpp:1233
-#: ../src/backend/filters/spatialAnalysis.cpp:1254
+#: ../src/backend/filters/voxelise.cpp:1024
+#: ../src/backend/filters/spatialAnalysis.cpp:1122
+#: ../src/backend/filters/spatialAnalysis.cpp:1143
 msgid "Numerator"
-msgstr "Zähler"
+msgstr "Numérateur"
 
-#: ../src/backend/filters/voxelise.cpp:812
+#: ../src/backend/filters/voxelise.cpp:1027
 msgid "Parmeter \"a\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:829
+#: ../src/backend/filters/voxelise.cpp:1044
 msgid "Enable this ion for numerator"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:841
-#: ../src/backend/filters/voxelise.cpp:862
-#: ../src/backend/filters/spatialAnalysis.cpp:1261
-#: ../src/backend/filters/spatialAnalysis.cpp:1280
+#: ../src/backend/filters/voxelise.cpp:1056
+#: ../src/backend/filters/voxelise.cpp:1077
+#: ../src/backend/filters/spatialAnalysis.cpp:1150
+#: ../src/backend/filters/spatialAnalysis.cpp:1169
 msgid "Denominator"
-msgstr "Nenner"
+msgstr "Dénominateur"
 
-#: ../src/backend/filters/voxelise.cpp:844
+#: ../src/backend/filters/voxelise.cpp:1059
 msgid "Parameter \"b\" used in fraction (a/b) to get voxel value"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:858
+#: ../src/backend/filters/voxelise.cpp:1073
 msgid "Enable this ion for denominator contribution"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:880
-#: ../src/backend/filters/voxelise.cpp:911
+#: ../src/backend/filters/voxelise.cpp:1095
+#: ../src/backend/filters/voxelise.cpp:1126
 msgid "Filtering"
-msgstr "Filtern"
+msgstr "Filtrage"
 
-#: ../src/backend/filters/voxelise.cpp:884
+#: ../src/backend/filters/voxelise.cpp:1099
 msgid "Smoothing method to use on voxels"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:887
+#: ../src/backend/filters/voxelise.cpp:1102
 msgid "Processing"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:893
+#: ../src/backend/filters/voxelise.cpp:1108
 msgid "Standard Dev"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:897
+#: ../src/backend/filters/voxelise.cpp:1112
 msgid "Filtering Scale"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:903
+#: ../src/backend/filters/voxelise.cpp:1118
 msgid "Kernel Size"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:907
+#: ../src/backend/filters/voxelise.cpp:1122
 msgid ""
 "Filter radius, in multiples of std. dev. Larger -> slower, more accurate"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:927
-msgid "Representation"
-msgstr "Representation"
-
-#: ../src/backend/filters/voxelise.cpp:930
+#: ../src/backend/filters/voxelise.cpp:1142
 msgid "3D display method"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:941
+#: ../src/backend/filters/voxelise.cpp:1153
 msgid "Spot size"
-msgstr "Spot size"
+msgstr "Mida de tache. "
 
-#: ../src/backend/filters/voxelise.cpp:944
+#: ../src/backend/filters/voxelise.cpp:1156
 msgid "Size of the spots to use for display"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:949
-#: ../src/backend/filters/voxelise.cpp:984
-#: ../src/backend/filters/voxelise.cpp:1056
+#: ../src/backend/filters/voxelise.cpp:1161
+#: ../src/backend/filters/voxelise.cpp:1196
+#: ../src/backend/filters/voxelise.cpp:1268
+#: ../src/backend/filters/voxelise.cpp:1358
 msgid "Transparency"
-msgstr "Transparenz"
+msgstr "Transparence"
 
-#: ../src/backend/filters/voxelise.cpp:952
+#: ../src/backend/filters/voxelise.cpp:1164
 msgid "How \"see through\" each point is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:961
+#: ../src/backend/filters/voxelise.cpp:1173
 msgid "Surf. param."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:964
+#: ../src/backend/filters/voxelise.cpp:1176
 msgid "Isovalue"
-msgstr "Isovalue"
+msgstr "Isovalue. "
 
-#: ../src/backend/filters/voxelise.cpp:967
+#: ../src/backend/filters/voxelise.cpp:1179
 msgid "Scalar value to show as isosurface"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:972
-#: ../src/backend/filters/voxelise.cpp:1037
-#: ../src/backend/filters/spatialAnalysis.cpp:2344
-#: ../src/backend/filters/spatialAnalysis.cpp:2397
+#: ../src/backend/filters/voxelise.cpp:1184
+#: ../src/backend/filters/voxelise.cpp:1249
+#: ../src/backend/filters/voxelise.cpp:1338
+#: ../src/backend/filters/spatialAnalysis.cpp:2212
+#: ../src/backend/filters/spatialAnalysis.cpp:2265
 msgid "Surface"
-msgstr "Oberfläche"
+msgstr "Surface"
 
-#: ../src/backend/filters/voxelise.cpp:979
+#: ../src/backend/filters/voxelise.cpp:1191
 msgid "Colour of isosurface"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:987
-#: ../src/backend/filters/voxelise.cpp:1059
+#: ../src/backend/filters/voxelise.cpp:1199
+#: ../src/backend/filters/voxelise.cpp:1271
+#: ../src/backend/filters/voxelise.cpp:1361
 msgid "How \"see through\" each facet is (0 - opaque, 1 - invisible)"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:998
+#: ../src/backend/filters/voxelise.cpp:1210
+#: ../src/backend/filters/voxelise.cpp:1317
 msgid "Slice param."
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1006
+#: ../src/backend/filters/voxelise.cpp:1218
 msgid "Slice Axis"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1009
+#: ../src/backend/filters/voxelise.cpp:1221
 msgid "Normal for the planar slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1016
+#: ../src/backend/filters/voxelise.cpp:1228
 msgid "Slice Coord"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1019
+#: ../src/backend/filters/voxelise.cpp:1231
 msgid "Fractional coordinate that slice plane passes through"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1024
+#: ../src/backend/filters/voxelise.cpp:1236
 msgid "Interp. Mode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1032
+#: ../src/backend/filters/voxelise.cpp:1244
 msgid "Interpolation mode for direction normal to slice"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1048
+#: ../src/backend/filters/voxelise.cpp:1260
+#: ../src/backend/filters/voxelise.cpp:1350
 msgid "Colour mode"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1051
-#: ../src/backend/filters/ionColour.cpp:261
+#: ../src/backend/filters/voxelise.cpp:1263
+#: ../src/backend/filters/voxelise.cpp:1353
+#: ../src/backend/filters/ionColour.cpp:293
 msgid "Colour scheme used to assign points colours by value"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1064
-#: ../src/backend/filters/ionColour.cpp:273
+#: ../src/backend/filters/voxelise.cpp:1276
+#: ../src/backend/filters/voxelise.cpp:1366
+#: ../src/backend/filters/ionColour.cpp:305
 msgid "Show Bar"
-msgstr "Zeige Balken"
+msgstr "Bar de spectacle. "
+
+#: ../src/backend/filters/voxelise.cpp:1279
+msgid "Display colour bar in 3D view?"
+msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1071
+#: ../src/backend/filters/voxelise.cpp:1284
+#: ../src/backend/filters/voxelise.cpp:1373
 msgid "Auto Bounds"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1072
+#: ../src/backend/filters/voxelise.cpp:1285
+#: ../src/backend/filters/voxelise.cpp:1374
 msgid "Auto-compute min/max values in map"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1082
-#: ../src/backend/filters/ionColour.cpp:294
+#: ../src/backend/filters/voxelise.cpp:1295
+#: ../src/backend/filters/voxelise.cpp:1384
+#: ../src/backend/filters/ionColour.cpp:337
 msgid "Map start"
-msgstr ""
+msgstr "Début de carte. "
 
-#: ../src/backend/filters/voxelise.cpp:1083
-#: ../src/backend/filters/ionColour.cpp:295
+#: ../src/backend/filters/voxelise.cpp:1296
+#: ../src/backend/filters/voxelise.cpp:1385
+#: ../src/backend/filters/ionColour.cpp:338
 msgid "Assign points with this value to the first colour in map"
 msgstr ""
 
-#: ../src/backend/filters/voxelise.cpp:1090
-#: ../src/backend/filters/ionColour.cpp:302
+#: ../src/backend/filters/voxelise.cpp:1303
+#: ../src/backend/filters/voxelise.cpp:1392
+#: ../src/backend/filters/ionColour.cpp:345
 msgid "Map end"
-msgstr ""
+msgstr "Fin de carte. "
 
-#: ../src/backend/filters/voxelise.cpp:1091
-#: ../src/backend/filters/ionColour.cpp:303
+#: ../src/backend/filters/voxelise.cpp:1304
+#: ../src/backend/filters/voxelise.cpp:1393
+#: ../src/backend/filters/ionColour.cpp:346
 msgid "Assign points with this value to the last colour in map"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:84
-msgid "Translate"
-msgstr "Translate"
+#: ../src/backend/filters/voxelise.cpp:1320
+msgid "Slice Offset"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:85
-msgid "Scale (isotropic)"
+#: ../src/backend/filters/voxelise.cpp:1323
+msgid "Point on plane for slice, in 0->1 coordinates"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:86
-msgid "Scale (anisotropic)"
+#: ../src/backend/filters/voxelise.cpp:1330
+msgid "Slice Normal"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:87
-msgid "Rotate"
-msgstr "Rotieren"
+#: ../src/backend/filters/voxelise.cpp:1333
+msgid "Normal vector for slice"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:88
-msgid "Value Shuffle"
+#: ../src/backend/filters/ionColour.cpp:289
+msgid "Colour Map"
+msgstr "Carte de couleur. "
+
+#: ../src/backend/filters/ionColour.cpp:297
+msgid "Reverse map"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:89
-msgid "Spatial Noise"
+#: ../src/backend/filters/ionColour.cpp:298
+msgid "Reverse the colour scale"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:90
-msgid "Translate Value"
-msgstr "Translate Wert"
+#: ../src/backend/filters/ionColour.cpp:306
+msgid "Display the colour legend in the 3D view"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:91
-msgid "Crop Value"
+#: ../src/backend/filters/ionColour.cpp:312
+msgid "Opacity"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:95
-msgid "Specify"
-msgstr "Angeben"
+#: ../src/backend/filters/ionColour.cpp:313
+msgid "How see-through to make the legend (0- transparent, 1- solid)"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:96
-msgid "Boundbox Centre"
-msgstr "Boundbox Zentrum"
+#: ../src/backend/filters/ionColour.cpp:320
+msgid "Num Colours"
+msgstr "Num Couleurs. "
 
-#: ../src/backend/filters/transform.cpp:97
-msgid "Mass Centre"
-msgstr "Massen-Zentrum"
-
-#: ../src/backend/filters/transform.cpp:1008
-#: ../src/backend/filters/clusterAnalysis.cpp:1956
-#: ../src/backend/filters/spatialAnalysis.cpp:635
-#: ../src/backend/filters/spatialAnalysis.cpp:2298
-#: ../src/backend/filters/spatialAnalysis.cpp:2727
-#: ../src/backend/filters/spatialAnalysis.cpp:3016
-#: ../src/backend/filters/spatialAnalysis.cpp:3689
-#: ../src/backend/filters/spatialAnalysis.cpp:3952
-#: ../src/backend/filters/spatialAnalysis.cpp:4165
-msgid "Collate"
-msgstr "Abgleichen"
+#: ../src/backend/filters/ionColour.cpp:322
+msgid "Number of unique colours to use in colour map"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1027
-msgid "Mass-to-Charge (Da/e)"
+#: ../src/backend/filters/ionColour.cpp:327
+msgid "Auto bounds"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1081
-msgid "Shuffle"
+#: ../src/backend/filters/ionColour.cpp:329
+msgid "Automatically scale colour to min/max of data range"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1105
-msgid "Splice"
+#: ../src/backend/filters/ionColour.cpp:460 ../src/backend/filter.cpp:197
+msgid "Aborted"
+msgstr "Interrompu"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:123
+msgid "Local Density"
+msgstr "Densité locale. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:124
+msgid "Density Filtering"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1153
-msgid "Algorithm to use to transform point data"
+#: ../src/backend/filters/spatialAnalysis.cpp:125
+msgid "Radial Distribution"
+msgstr "Distribution radial. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:126
+msgid "Axial Distribution"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1157
-#: ../src/backend/filters/ionInfo.cpp:546
-#: ../src/backend/filters/clusterAnalysis.cpp:943
-#: ../src/backend/filters/clusterAnalysis.cpp:951
-#: ../src/backend/filters/spatialAnalysis.cpp:800
-#: ../src/backend/filters/spatialAnalysis.cpp:808
-msgid "Algorithm"
-msgstr "Algorithmus"
+#: ../src/backend/filters/spatialAnalysis.cpp:127
+msgid "Binomial Distribution"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1170
-msgid "Origin mode"
+#: ../src/backend/filters/spatialAnalysis.cpp:128
+msgid "Point Em/Replacement"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1173
-msgid "Select how transform origin is computed"
+#: ../src/backend/filters/spatialAnalysis.cpp:129
+msgid "Local Chemistry"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1178
-msgid "Show marker"
-msgstr "Zeige Markierung"
+#: ../src/backend/filters/spatialAnalysis.cpp:133
+msgid "Neighbour Count"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1182
-msgid "Display an interactive object to set transform origin"
+#: ../src/backend/filters/spatialAnalysis.cpp:484
+msgid "Load"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1184
-msgid "Display a small marker to denote transform origin"
+#: ../src/backend/filters/spatialAnalysis.cpp:539
+#: ../src/backend/filters/spatialAnalysis.cpp:2198
+#: ../src/backend/filters/spatialAnalysis.cpp:2251
+#: ../src/backend/filters/spatialAnalysis.cpp:2601
+#: ../src/backend/filters/spatialAnalysis.cpp:2893
+#: ../src/backend/filters/spatialAnalysis.cpp:3200
+#: ../src/backend/filters/spatialAnalysis.cpp:3829
+msgid "Build"
+msgstr "Construction"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:588
+#: ../src/backend/filters/spatialAnalysis.cpp:3222
+#: ../src/backend/filters/spatialAnalysis.cpp:3718
+#: ../src/backend/filters/spatialAnalysis.cpp:3846
+msgid "Compute"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1200
-msgid "Translation"
-msgstr "Translation"
+#: ../src/backend/filters/spatialAnalysis.cpp:710
+msgid "Spatial analysis algorithm to use"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1203
-msgid "Translation vector for transform"
+#: ../src/backend/filters/spatialAnalysis.cpp:734
+#: ../src/backend/filters/spatialAnalysis.cpp:785
+msgid "Stop Mode"
+msgstr "Mode de chômeuse. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:737
+msgid "Method to use to terminate algorithm when examining each point"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1215
-msgid "Offset"
+#: ../src/backend/filters/spatialAnalysis.cpp:744
+msgid "NN Max"
+msgstr "NN Max. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:747
+msgid "Maximum number of neighbours to examine"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1219
-msgid "Scalar to use to offset each point's associated value"
+#: ../src/backend/filters/spatialAnalysis.cpp:754
+msgid "Normalise bins"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1236
-#: ../src/backend/filters/transform.cpp:1263
-msgid "Origin of scale trasnform"
+#: ../src/backend/filters/spatialAnalysis.cpp:757
+msgid ""
+"Normalise counts by binwidth. Needed when comparing NN histograms against "
+"one another"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1243
-#: ../src/backend/filters/transform.cpp:1270
-msgid "Scale Fact."
-msgstr "Skalierungsfaktor"
+#: ../src/backend/filters/spatialAnalysis.cpp:763
+msgid "Show Random"
+msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1246
-#: ../src/backend/filters/transform.cpp:1273
-msgid "Enlargement factor for scaling around origin"
+#: ../src/backend/filters/spatialAnalysis.cpp:766
+msgid "Show a fitted (density matched) theoretical distribution"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1289
-msgid "Origin of rotation"
+#: ../src/backend/filters/spatialAnalysis.cpp:777
+msgid "Dist Max"
+msgstr "Dist Max. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:780
+msgid "Maximum distance from each point for search"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1297
-msgid "Axis around which to revolve"
+#: ../src/backend/filters/spatialAnalysis.cpp:794
+#: ../src/backend/filters/spatialAnalysis.cpp:928
+#: ../src/backend/filters/profile.cpp:1089
+msgid "Num Bins"
+msgstr "Num Galledes. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:797
+#: ../src/backend/filters/spatialAnalysis.cpp:931
+msgid "Number of bins for output 1D RDF plot"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1302
-msgid "Angle (deg)"
-msgstr "Winkel (deg)"
+#: ../src/backend/filters/spatialAnalysis.cpp:803
+msgid "Surface Remove"
+msgstr "La Surface Enlève. "
 
-#: ../src/backend/filters/transform.cpp:1305
-msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
+#: ../src/backend/filters/spatialAnalysis.cpp:806
+msgid ""
+"Exclude surface as part of source to minimise bias in RDF (at cost of "
+"increased noise)"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1322
-msgid "Noise Type"
+#: ../src/backend/filters/spatialAnalysis.cpp:813
+msgid "Remove Dist"
+msgstr "Enlève Dist. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:816
+msgid "Minimum distance to remove from surface"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1325
-msgid "Method to use to degrade point data"
+#: ../src/backend/filters/spatialAnalysis.cpp:824
+#: ../src/backend/filters/spatialAnalysis.cpp:936
+msgid "Plot colour "
+msgstr "Couleur de trama.  "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:827
+#: ../src/backend/filters/spatialAnalysis.cpp:939
+msgid "Colour of output plot"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:831
+#: ../src/backend/filters/spatialAnalysis.cpp:917
+#: ../src/backend/filters/spatialAnalysis.cpp:922
+#: ../src/backend/filters/spatialAnalysis.cpp:954
+#: ../src/backend/filters/spatialAnalysis.cpp:993
+msgid "Alg. Params."
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:844
+#: ../src/backend/filters/spatialAnalysis.cpp:1096
+msgid "Source"
+msgstr "Source"
+
+#: ../src/backend/filters/spatialAnalysis.cpp:847
+msgid "Ions to use for initiating RDF search"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:860
+#: ../src/backend/filters/spatialAnalysis.cpp:1112
+#: ../src/backend/filters/spatialAnalysis.cpp:1138
+msgid "Enable/disable ion as source"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:865
+#: ../src/backend/filters/spatialAnalysis.cpp:1117
+msgid "Source Ion"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:875
+#: ../src/backend/filters/spatialAnalysis.cpp:1153
+msgid "Enable/disable all ions as target"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:887
+#: ../src/backend/filters/spatialAnalysis.cpp:1165
+msgid "Enable/disable this ion as target"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:891
+msgid "Target Ion"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:901
+msgid "Cutoff"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:904
+msgid "Remove points with local density above/below this value"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:910
+msgid "Retain Upper"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:913
+msgid "Retain either points with density above (enabled) or below cutoff"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:950
+msgid "Vector along which to calculate distribution function"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:961
+msgid "Block size"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:964
+msgid "Number of ions to use per block"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:971
+msgid "Max Block Aspect"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:974
+msgid ""
+"Maximum allowable block aspect ratio. Blocks above this aspect are "
+"discarded. Setting too high decreases correlation strength. Too low causes "
+"loss of statistical power."
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:985
+msgid "Extrusion Direction"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:988
+msgid "Direction in which blocks are extended during construction."
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:997
+msgid "Plot Counts"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1000
+msgid "Show the counts in the binomial histogram"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1009
+msgid ""
+"Normalise the counts in the binomial histogram to a probability density "
+"function"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1013
+msgid "Expected Freq"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1016
+msgid ""
+"Show the theoretically expected probability density function for a random "
+"dataset with the same mean"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1024
+msgid "Display Grid"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1027
+msgid "Show the extruded grid in the 3D view. This may be slow"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1031
+msgid "View Options"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1037
+msgid "Data File"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1041
+msgid "Pos file of points to subtract/replace/etc"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1046
+msgid "Match Tol."
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1049
+msgid "Tolerance to allow for matching"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1065
+msgid "Replacment condition"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1071
+msgid "Replace value"
+msgstr ""
+
+#: ../src/backend/filters/spatialAnalysis.cpp:1074
+msgid "Use value data from file when replacing ions"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1332
-msgid "Noise level"
+#: ../src/backend/filters/spatialAnalysis.cpp:1079
+msgid "Replacement"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1334
-msgid "Standard dev."
-msgstr "Standardabweichung"
-
-#: ../src/backend/filters/transform.cpp:1342
-msgid "Amplitude of noise"
+#: ../src/backend/filters/spatialAnalysis.cpp:1099
+msgid "Enable/disable all ions as source"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1356
-msgid "Min Value"
+#: ../src/backend/filters/spatialAnalysis.cpp:1125
+msgid "Ions to use as Numerator for conc. calculation"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1360
-msgid "Minimum value to use for crop"
+#: ../src/backend/filters/spatialAnalysis.cpp:1681
+msgid "Spatial analysis aborted by user"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1364
-msgid "Max Value"
+#: ../src/backend/filters/spatialAnalysis.cpp:1682
+msgid "Insufficient memory for binomial. Reduce input size?"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1368
-msgid "Maximum value to use for crop"
+#: ../src/backend/filters/spatialAnalysis.cpp:1683
+msgid "Required range data not present"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1377
-msgid "Transform Params"
-msgstr "Transformationsparameter"
-
-#: ../src/backend/filters/transform.cpp:1738
-msgid "White"
+#: ../src/backend/filters/spatialAnalysis.cpp:1684
+msgid "Unable to generate usable binomial grid"
 msgstr ""
 
-#: ../src/backend/filters/transform.cpp:1740
-msgid "Gaussian"
+#: ../src/backend/filters/spatialAnalysis.cpp:1686
+msgid "Insufficient points to continue"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:259
-msgid "Collate Input"
+#: ../src/backend/filters/spatialAnalysis.cpp:1687
+msgid "Unable to load file"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:348
-msgid "Execute"
-msgstr ""
+#: ../src/backend/filters/spatialAnalysis.cpp:2305
+#: ../src/backend/filters/spatialAnalysis.cpp:2624
+#: ../src/backend/filters/spatialAnalysis.cpp:2917
+msgid "Analyse"
+msgstr "Analyse. "
 
-#: ../src/backend/filters/externalProgram.cpp:389
-msgid "Collate output"
+#: ../src/backend/filters/spatialAnalysis.cpp:2384
+#: ../src/backend/filters/spatialAnalysis.cpp:2474
+#: ../src/backend/filters/spatialAnalysis.cpp:2540
+msgid "Radial Distance"
+msgstr "Distance radial. "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2386
+#: ../src/backend/filters/spatialAnalysis.cpp:2479
+msgid "Count/Distance"
 msgstr ""
 
-#: ../src/backend/filters/externalProgram.cpp:564
-#: ../src/backend/filters/externalProgram.cpp:578
-msgid "Command"
-msgstr "Befehl"
+#: ../src/backend/filters/spatialAnalysis.cpp:2391
+#: ../src/backend/filters/spatialAnalysis.cpp:2484
+msgid "NN Freq."
+msgstr "NN Freq."
 
-#: ../src/backend/filters/externalProgram.cpp:567
+#: ../src/backend/filters/spatialAnalysis.cpp:2531
+msgid "Warning, "
+msgstr "Avís,.  "
+
+#: ../src/backend/filters/spatialAnalysis.cpp:2532
 msgid ""
-"Full command to send to operating system. See manual for escape sequence "
-"meanings"
+" points were unable to find neighbour points that exceeded the search "
+"radius, and thus terminated prematurely"
 msgstr ""
+" Les Points étaient incapaços de trouver des points de voisin qu'ont "
+"surpassé la recerca radius, et pour ce terminated prematurely. "
 
-#: ../src/backend/filters/externalProgram.cpp:571
-msgid "Work Dir"
-msgstr "Arbeitsverzeichnis"
+#: ../src/backend/filters/spatialAnalysis.cpp:2542
+msgid " RDF"
+msgstr " RDF. "
 
-#: ../src/backend/filters/externalProgram.cpp:574
-msgid "Directory to run the command in"
-msgstr ""
+#: ../src/backend/filters/spatialAnalysis.cpp:2823
+#: ../src/backend/filters/spatialAnalysis.cpp:3123
+msgid "Number Density (\\#/Vol^3)"
+msgstr "Densité de numéro (\\#/Veut^3). "
 
-#: ../src/backend/filters/externalProgram.cpp:581
-msgid "Cleanup input"
-msgstr "Bereinige Eingabe"
+#: ../src/backend/filters/spatialAnalysis.cpp:2848
+#: ../src/backend/filters/spatialAnalysis.cpp:3145
+msgid "Warning,"
+msgstr "Avís,. "
 
-#: ../src/backend/filters/externalProgram.cpp:584
-msgid "Erase input files when command completed"
-msgstr ""
+#: ../src/backend/filters/spatialAnalysis.cpp:2849
+#: ../src/backend/filters/spatialAnalysis.cpp:3146
+msgid " points were un-analysable. These have been dropped"
+msgstr " Les Points étaient un-analysable. Ceux-ci ont été laissés tomber. "
 
-#: ../src/backend/filters/externalProgram.cpp:589
-msgid "Cache"
-msgstr "Zwischenspeicher"
+#: ../src/backend/filters/spatialAnalysis.cpp:2871
+#: ../src/backend/filters/spatialAnalysis.cpp:3168
+msgid "And so on..."
+msgstr "Etcètera..."
 
-#: ../src/backend/filters/externalProgram.cpp:592
-msgid ""
-"Assume program does not alter its output, unless inputs from 3Depict are "
-"altered"
+#: ../src/backend/filters/spatialAnalysis.cpp:3268
+msgid "Insufficient points to complete analysis"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:26
-msgid "Flat TOF"
+#: ../src/backend/filters/spatialAnalysis.cpp:3291
+msgid "Axial Distance"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:33
-msgid "INsufficient bins to perform fit"
+#: ../src/backend/filters/spatialAnalysis.cpp:3293
+msgid " 1D Dist. Func."
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:34
-msgid "Insufficient counts to perform fit"
+#: ../src/backend/filters/spatialAnalysis.cpp:3344
+msgid "Binomial"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:35
-msgid "Insufficient data to perform fit"
+#: ../src/backend/filters/spatialAnalysis.cpp:3477
+#: ../src/backend/filters/spatialAnalysis.cpp:3542
+msgid "Ions in Block"
 msgstr ""
 
-#: ../src/backend/filters/algorithms/mass.cpp:36
-msgid "Data did not appear to be random noise - cannot fit noise level"
+#: ../src/backend/filters/spatialAnalysis.cpp:3479
+#: ../src/backend/filters/spatialAnalysis.cpp:3544
+#: ../src/backend/filters/spectrumPlot.cpp:79
+msgid "Probability"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:37
-msgid "Rectilinear"
-msgstr "Geradlinig"
-
-#: ../src/backend/filters/ionInfo.cpp:38
-msgid "Convex hull"
-msgstr "Konvexe Hülle"
-
-#: ../src/backend/filters/ionInfo.cpp:200
-msgid "No ions"
+#: ../src/backend/filters/spatialAnalysis.cpp:3546
+msgid "Count (blocks)"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:226
-#: ../src/backend/filters/spectrumPlot.cpp:432
-msgid ""
-"Background fit failed - input data was considered ill formed (gauss-test)"
+#: ../src/backend/filters/spatialAnalysis.cpp:3611
+msgid "Build Numerator"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:227
-msgid "Following data has not been corrected"
+#: ../src/backend/filters/spatialAnalysis.cpp:3625
+msgid "Build Denominator"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:279
-msgid "--Counts--"
-msgstr "- Anzahl -"
-
-#: ../src/backend/filters/ionInfo.cpp:289
-msgid "Total Ranged\t"
-msgstr "Gesamt ranged\t"
-
-#: ../src/backend/filters/ionInfo.cpp:294
-msgid "Total (incl. unranged)\t"
-msgstr "Total (inkl. nicht geranged)"
-
-#: ../src/backend/filters/ionInfo.cpp:307
-msgid "n/a"
+#: ../src/backend/filters/spatialAnalysis.cpp:3961
+msgid "Relative Conc. (%)"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:317
-#: ../src/backend/filters/ionDownsample.cpp:496
-msgid "Unranged"
-msgstr "Nicht Geranged"
-
-#: ../src/backend/filters/ionInfo.cpp:330
-msgid "Number of points : "
-msgstr "Anzahl der Punkte: "
-
-#: ../src/backend/filters/ionInfo.cpp:359
-msgid "Rectilinear Bounds : "
-msgstr "Geradlinige Grenzen:"
-
-#: ../src/backend/filters/ionInfo.cpp:364
-msgid "Volume (len^3): "
-msgstr "Volumen (Läng.^3)"
+#: ../src/backend/filters/profile.cpp:51
+msgid "Cylinder (axial)"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:381
-msgid "Convex Volume (len^3): "
-msgstr "Konvexes Volumen (Läng.^3)"
+#: ../src/backend/filters/profile.cpp:52
+msgid "Cylinder (radial)"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:384
-msgid "Unable to compute volume"
-msgstr "Kann Volumen nicht berechnen"
+#: ../src/backend/filters/profile.cpp:595
+msgid "Distance"
+msgstr "Distance"
 
-#: ../src/backend/filters/ionInfo.cpp:413
-msgid "Ranged Density (pts/vol):"
-msgstr "Ranged Dichte (pts / vol):"
+#: ../src/backend/filters/profile.cpp:603
+msgid "Fraction"
+msgstr "Fraction"
 
-#: ../src/backend/filters/ionInfo.cpp:418
-msgid "Total Density (pts/vol):"
-msgstr "Gesamtdichte (pts / vol):"
+#: ../src/backend/filters/profile.cpp:605
+msgid "Density (\\frac{\\#}{len^3})"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:445
-msgid "Compositions"
-msgstr "Zusammensetzungen"
+#: ../src/backend/filters/profile.cpp:632
+msgid "Freq. Profile"
+msgstr "Freq. Profil. "
 
-#: ../src/backend/filters/ionInfo.cpp:446
-msgid "Display compositional data for points in console"
+#: ../src/backend/filters/profile.cpp:684
+msgid "No data remained in profile - cannot display result"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:450
-msgid "Counts"
-msgstr "Anzahl"
-
-#: ../src/backend/filters/ionInfo.cpp:451
-msgid "Display count data for points in console"
+#: ../src/backend/filters/profile.cpp:971
+msgid "Total Density"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:458
-msgid "Ion data"
+#: ../src/backend/filters/profile.cpp:975
+msgid "Do not do per-species analysis, perform density computation only"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:462
-#: ../src/backend/filters/profile.cpp:1107
-#: ../src/backend/filters/clusterAnalysis.cpp:1108
-#: ../src/backend/filters/spatialAnalysis.cpp:1116
-msgid "Normalise"
-msgstr "Normalisieren"
+#: ../src/backend/filters/profile.cpp:989
+msgid "Primitive type"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:466
-msgid "Normalise count data"
+#: ../src/backend/filters/profile.cpp:993
+msgid "Basic shape to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:530
-msgid "Volume"
-msgstr "Volumen"
+#: ../src/backend/filters/profile.cpp:1005
+msgid "Display the 3D composition profile interaction object"
+msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:533
-msgid "Compute volume for point data"
+#: ../src/backend/filters/profile.cpp:1020
+msgid "Position for centre of cylinder"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:549
-msgid "Select volume counting technique"
+#: ../src/backend/filters/profile.cpp:1028
+msgid "Vector between ends of cylinder"
 msgstr ""
 
-#: ../src/backend/filters/ionInfo.cpp:562
-msgid "Volume data"
+#: ../src/backend/filters/profile.cpp:1036
+msgid "Prevent length of cylinder changing during interaction"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:120
-#: ../src/backend/filters/rangeFile.h:96
-msgid "Ranging"
-msgstr "Ranging"
+#: ../src/backend/filters/profile.cpp:1079
+msgid "Fixed Bin Num"
+msgstr "Galleda fixe Num. "
 
-#: ../src/backend/filters/rangeFile.cpp:560
-#: ../src/backend/filters/rangeFile.cpp:580
-#: ../src/backend/filters/dataLoad.cpp:484
-#: ../src/backend/filters/dataLoad.cpp:505
-msgid "File"
-msgstr "Datei"
+#: ../src/backend/filters/profile.cpp:1082
+msgid ""
+"If true, use a fixed number of bins for profile, otherwise use fixed step "
+"size"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:563
-msgid "File to use for range data"
+#: ../src/backend/filters/profile.cpp:1094
+msgid "Number of bins to use for profile"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:573
-msgid "Drop unranged"
-msgstr "Nicht gerangete ausschalten"
+#: ../src/backend/filters/profile.cpp:1100
+#: ../src/backend/filters/spectrumPlot.cpp:583
+msgid "Bin width"
+msgstr "Amplada de galleda. "
 
-#: ../src/backend/filters/rangeFile.cpp:575
-msgid "Remove unranged points when generating output"
+#: ../src/backend/filters/profile.cpp:1106
+msgid "Size of each bin in profile"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:585
-msgid "Legend"
+#: ../src/backend/filters/profile.cpp:1115
+msgid "Convert bin counts into relative frequencies in each bin"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:587
-msgid "Display colour legend for enabled ions"
+#: ../src/backend/filters/profile.cpp:1119
+msgid "Min. events"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:591
-msgid "View"
+#: ../src/backend/filters/profile.cpp:1123
+msgid "Drop data that does not have this many events"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:607
-msgid "All Ions"
-msgstr "Alle Ionen"
-
-#: ../src/backend/filters/rangeFile.cpp:608
-msgid "Enable/disable all ions at once"
+#: ../src/backend/filters/profile.cpp:1126
+msgid "Settings"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:616
-msgid "Species"
-msgstr ""
+#: ../src/backend/filters/profile.cpp:1148
+#: ../src/backend/filters/spectrumPlot.cpp:672
+msgid "Plot Type"
+msgstr "Type de graphique"
 
-#: ../src/backend/filters/rangeFile.cpp:623
-msgid "IonID "
-msgstr "IonID "
+#: ../src/backend/filters/profile.cpp:1151
+msgid "Visual style for plot"
+msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:624
-msgid "Enable/disable specified ion"
+#: ../src/backend/filters/profile.cpp:1162
+msgid "Colour of plot"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:634
-msgid "Active Ion "
-msgstr "Actives Ion "
+#: ../src/backend/filters/profile.cpp:1178
+msgid "Err. Estimator"
+msgstr "Err. Estimador. "
 
-#: ../src/backend/filters/rangeFile.cpp:636
-msgid "If true, ion is used in output"
+#: ../src/backend/filters/profile.cpp:1181
+msgid "Method of estimating error associated with each bin"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:646
-msgid "Colour "
-msgstr "Farbe"
+#: ../src/backend/filters/profile.cpp:1188
+msgid "Avg. Window"
+msgstr "Avg. Fenêtre. "
 
-#: ../src/backend/filters/rangeFile.cpp:650
-msgid "Colour used to represent ion"
+#: ../src/backend/filters/profile.cpp:1191
+msgid "Number of bins to include in moving average filter"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:673
-msgid "All Ranges"
-msgstr "Alle Range"
-
-#: ../src/backend/filters/rangeFile.cpp:674
-msgid "Enable/disable all ranges"
+#: ../src/backend/filters/profile.cpp:1195
+msgid "Error analysis"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:689
-msgid "Active Rng "
-msgstr "Activer Rng "
+#: ../src/backend/filters/transform.cpp:84
+msgid "Translate"
+msgstr "Translater"
 
-#: ../src/backend/filters/rangeFile.cpp:692
-msgid ""
-"Enable/disable specified range (ion must also be enabled to activiate range)"
+#: ../src/backend/filters/transform.cpp:85
+msgid "Scale (isotropic)"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:696
-msgid "Ion "
-msgstr "Ion "
-
-#: ../src/backend/filters/rangeFile.cpp:699
-msgid "Name of ion associate to this range"
+#: ../src/backend/filters/transform.cpp:86
+msgid "Scale (anisotropic)"
 msgstr ""
 
-#: ../src/backend/filters/rangeFile.cpp:708
-msgid "Start rng "
-msgstr "Start rng "
+#: ../src/backend/filters/transform.cpp:87
+msgid "Rotate"
+msgstr "Rotation"
 
-#: ../src/backend/filters/rangeFile.cpp:711
-msgid "Start value for range"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:88
+msgid "Value Shuffle"
+msgstr "Valeur Shuffle. "
 
-#: ../src/backend/filters/rangeFile.cpp:716
-msgid "End rng "
-msgstr "End rng "
+#: ../src/backend/filters/transform.cpp:89
+msgid "Spatial Noise"
+msgstr "Bruit espacial. "
 
-#: ../src/backend/filters/rangeFile.cpp:719
-msgid "Stopping value for range`"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:90
+msgid "Translate Value"
+msgstr "Traduit Valeur. "
 
-#: ../src/backend/filters/profile.cpp:51
-msgid "Cylinder (axial)"
+#: ../src/backend/filters/transform.cpp:91
+msgid "Crop Value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:52
-msgid "Cylinder (radial)"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:95
+msgid "Specify"
+msgstr "Especifica. "
+
+#: ../src/backend/filters/transform.cpp:96
+msgid "Boundbox Centre"
+msgstr "Boundbox Centre. "
+
+#: ../src/backend/filters/transform.cpp:97
+msgid "Mass Centre"
+msgstr "Centre de masse. "
 
-#: ../src/backend/filters/profile.cpp:591
-msgid "Distance"
-msgstr "Abstand"
+#: ../src/backend/filters/transform.cpp:1080
+msgid "Shuffle"
+msgstr "Mélanger"
 
-#: ../src/backend/filters/profile.cpp:599
-msgid "Fraction"
-msgstr "Anteil"
+#: ../src/backend/filters/transform.cpp:1104
+msgid "Splice"
+msgstr "Collant"
 
-#: ../src/backend/filters/profile.cpp:601
-msgid "Density (\\frac{\\#}{len^3})"
-msgstr "Dichte (\\frac{\\#}{len^3})"
+#: ../src/backend/filters/transform.cpp:1152
+msgid "Algorithm to use to transform point data"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:628
-msgid "Freq. Profile"
-msgstr "Häufigkeitsprofil"
+#: ../src/backend/filters/transform.cpp:1169
+msgid "Origin mode"
+msgstr "Mode d'origine. "
 
-#: ../src/backend/filters/profile.cpp:680
-msgid "No data remained in profile - cannot display result"
+#: ../src/backend/filters/transform.cpp:1172
+msgid "Select how transform origin is computed"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:967
-msgid "Total Density"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1177
+msgid "Show marker"
+msgstr "Spectacle marker. "
 
-#: ../src/backend/filters/profile.cpp:971
-msgid "Do not do per-species analysis, perform density computation only"
+#: ../src/backend/filters/transform.cpp:1181
+msgid "Display an interactive object to set transform origin"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:985
-msgid "Primitive type"
+#: ../src/backend/filters/transform.cpp:1183
+msgid "Display a small marker to denote transform origin"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:989
-msgid "Basic shape to use for profile"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1199
+msgid "Translation"
+msgstr "Translation"
 
-#: ../src/backend/filters/profile.cpp:1001
-msgid "Display the 3D composition profile interaction object"
+#: ../src/backend/filters/transform.cpp:1202
+msgid "Translation vector for transform"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1016
-#: ../src/backend/filters/spatialAnalysis.cpp:1044
-msgid "Position for centre of cylinder"
+#: ../src/backend/filters/transform.cpp:1214
+msgid "Offset"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1024
-msgid "Vector between ends of cylinder"
+#: ../src/backend/filters/transform.cpp:1218
+msgid "Scalar to use to offset each point's associated value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1032
-msgid "Prevent length of cylinder changing during interaction"
+#: ../src/backend/filters/transform.cpp:1235
+#: ../src/backend/filters/transform.cpp:1262
+msgid "Origin of scale transform"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1075
-msgid "Fixed Bin Num"
-msgstr "Fix. Bin-Anz."
+#: ../src/backend/filters/transform.cpp:1242
+#: ../src/backend/filters/transform.cpp:1269
+msgid "Scale Fact."
+msgstr "Fait d'échelle."
 
-#: ../src/backend/filters/profile.cpp:1078
-msgid ""
-"If true, use a fixed number of bins for profile, otherwise use fixed step "
-"size"
+#: ../src/backend/filters/transform.cpp:1245
+#: ../src/backend/filters/transform.cpp:1272
+msgid "Enlargement factor for scaling around origin"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1085
-#: ../src/backend/filters/spatialAnalysis.cpp:887
-#: ../src/backend/filters/spatialAnalysis.cpp:1021
-msgid "Num Bins"
-msgstr "Bin-Anz."
-
-#: ../src/backend/filters/profile.cpp:1090
-msgid "Number of bins to use for profile"
+#: ../src/backend/filters/transform.cpp:1288
+msgid "Origin of rotation"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1096
-#: ../src/backend/filters/spectrumPlot.cpp:580
-msgid "Bin width"
-msgstr "Bin-Breite"
-
-#: ../src/backend/filters/profile.cpp:1102
-msgid "Size of each bin in profile"
+#: ../src/backend/filters/transform.cpp:1296
+msgid "Axis around which to revolve"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1111
-msgid "Convert bin counts into relative frequencies in each bin"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1301
+msgid "Angle (deg)"
+msgstr "Angle (deg). "
 
-#: ../src/backend/filters/profile.cpp:1115
-msgid "Min. events"
+#: ../src/backend/filters/transform.cpp:1304
+msgid "Angle to perform rotation (ACW, as viewed from axis towards origin)"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1119
-msgid "Drop data that does not have this many events"
-msgstr ""
+#: ../src/backend/filters/transform.cpp:1321
+msgid "Noise Type"
+msgstr "Type de bruit"
 
-#: ../src/backend/filters/profile.cpp:1122
-msgid "Settings"
+#: ../src/backend/filters/transform.cpp:1324
+msgid "Method to use to degrade point data"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1144
-#: ../src/backend/filters/spectrumPlot.cpp:669
-msgid "Plot Type"
-msgstr "Plot Type"
+#: ../src/backend/filters/transform.cpp:1331
+msgid "Noise level"
+msgstr "Niveau de bruit. "
 
-#: ../src/backend/filters/profile.cpp:1147
-msgid "Visual style for plot"
+#: ../src/backend/filters/transform.cpp:1333
+msgid "Standard dev."
+msgstr "Standard dev."
+
+#: ../src/backend/filters/transform.cpp:1341
+msgid "Amplitude of noise"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1158
-msgid "Colour of plot"
+#: ../src/backend/filters/transform.cpp:1355
+msgid "Min Value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1174
-msgid "Err. Estimator"
-msgstr "Fehlerschätzer"
+#: ../src/backend/filters/transform.cpp:1359
+msgid "Minimum value to use for crop"
+msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1177
-msgid "Method of estimating error associated with each bin"
+#: ../src/backend/filters/transform.cpp:1363
+msgid "Max Value"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1184
-msgid "Avg. Window"
+#: ../src/backend/filters/transform.cpp:1367
+msgid "Maximum value to use for crop"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1187
-msgid "Number of bins to include in moving average filter"
+#: ../src/backend/filters/transform.cpp:1376
+msgid "Transform Params"
+msgstr "Transforme Params. "
+
+#: ../src/backend/filters/transform.cpp:1745
+msgid "White"
 msgstr ""
 
-#: ../src/backend/filters/profile.cpp:1191
-msgid "Error analysis"
+#: ../src/backend/filters/transform.cpp:1747
+msgid "Gaussian"
 msgstr ""
 
 #: ../src/backend/filters/boundingBox.cpp:64
@@ -3735,1664 +4046,1508 @@ msgstr ""
 msgid "Dimension"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:571
+#: ../src/backend/filters/boundingBox.cpp:572
 msgid "If true, show box, otherwise hide box"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:584
+#: ../src/backend/filters/boundingBox.cpp:585
 msgid "Style"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:587
+#: ../src/backend/filters/boundingBox.cpp:588
 msgid "Box display mode"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:590
+#: ../src/backend/filters/boundingBox.cpp:591
 msgid "Display mode"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:599
+#: ../src/backend/filters/boundingBox.cpp:600
 msgid "Fixed Tick Num"
-msgstr "Fixed Tick Num"
+msgstr "Tic-tac fix Num. "
 
-#: ../src/backend/filters/boundingBox.cpp:603
+#: ../src/backend/filters/boundingBox.cpp:604
 msgid ""
 "If true, evenly use specified number of ticks. Otherwise, use distance to "
 "determine tick count"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:611
+#: ../src/backend/filters/boundingBox.cpp:612
 msgid "Num X"
-msgstr "Num X"
+msgstr "Num Xème. "
 
-#: ../src/backend/filters/boundingBox.cpp:614
+#: ../src/backend/filters/boundingBox.cpp:615
 msgid "Tick count in X direction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:619
+#: ../src/backend/filters/boundingBox.cpp:620
 msgid "Num Y"
-msgstr "Num Y"
+msgstr "Num Y. "
 
-#: ../src/backend/filters/boundingBox.cpp:622
+#: ../src/backend/filters/boundingBox.cpp:623
 msgid "Tick count in Y direction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:627
+#: ../src/backend/filters/boundingBox.cpp:628
 msgid "Num Z"
-msgstr "Num Z"
+msgstr "Num Z. "
 
-#: ../src/backend/filters/boundingBox.cpp:630
+#: ../src/backend/filters/boundingBox.cpp:631
 msgid "Tick count in Z direction"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:636
+#: ../src/backend/filters/boundingBox.cpp:637
 msgid "Spacing X"
-msgstr "X-Abstand"
+msgstr "Espacé Xème. "
 
-#: ../src/backend/filters/boundingBox.cpp:640
+#: ../src/backend/filters/boundingBox.cpp:641
 msgid "Distance between ticks on X axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:644
+#: ../src/backend/filters/boundingBox.cpp:645
 msgid "Spacing Y"
-msgstr "Y-Abstand"
+msgstr "Espacé Y. "
 
-#: ../src/backend/filters/boundingBox.cpp:648
+#: ../src/backend/filters/boundingBox.cpp:649
 msgid "Distance between ticks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:652
+#: ../src/backend/filters/boundingBox.cpp:653
 msgid "Spacing Z"
-msgstr "Z-Abstand"
+msgstr "Espacé Z. "
 
-#: ../src/backend/filters/boundingBox.cpp:656
+#: ../src/backend/filters/boundingBox.cpp:657
 msgid "Distance between ticks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:664
+#: ../src/backend/filters/boundingBox.cpp:665
 msgid "Ticks X"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:668
+#: ../src/backend/filters/boundingBox.cpp:669
 msgid "Display tick marks on X axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:672
+#: ../src/backend/filters/boundingBox.cpp:673
 msgid "Ticks Y"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:676
+#: ../src/backend/filters/boundingBox.cpp:677
 msgid "Display tick marks on Y axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:680
+#: ../src/backend/filters/boundingBox.cpp:681
 msgid "Ticks Z"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:684
+#: ../src/backend/filters/boundingBox.cpp:685
 msgid "Display tick marks on Z axis"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:687
+#: ../src/backend/filters/boundingBox.cpp:688
 msgid "Tick marks"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:694
+#: ../src/backend/filters/boundingBox.cpp:695
 msgid "Box Colour"
-msgstr "Box Farbe"
+msgstr "Couleur de caisse. "
 
-#: ../src/backend/filters/boundingBox.cpp:698
+#: ../src/backend/filters/boundingBox.cpp:699
 msgid "Colour of the bounding box"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:703
+#: ../src/backend/filters/boundingBox.cpp:704
 msgid "Line thickness"
-msgstr "Linienbreite"
+msgstr "Gruix de ligne. "
 
-#: ../src/backend/filters/boundingBox.cpp:707
+#: ../src/backend/filters/boundingBox.cpp:708
 msgid "Thickness of the lines used to draw the box"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:718
+#: ../src/backend/filters/boundingBox.cpp:716
+#: ../src/backend/filters/annotation.cpp:856
+msgid "Font Size"
+msgstr "Taille de fonte"
+
+#: ../src/backend/filters/boundingBox.cpp:719
 msgid "Relative size for text"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:723
+#: ../src/backend/filters/boundingBox.cpp:724
 msgid "Abs. Coords"
 msgstr ""
 
-#: ../src/backend/filters/boundingBox.cpp:726
+#: ../src/backend/filters/boundingBox.cpp:727
 msgid "Show labels using aboslute coo-ordinates"
 msgstr ""
 
-#: ../src/backend/filters/ionDownsample.cpp:191
-msgid "Sampling"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:447
-msgid "By Count"
-msgstr "Nach Anzahl"
-
-#: ../src/backend/filters/ionDownsample.cpp:450
-msgid "Sample up to a fixed number of ions"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:456
-msgid "Per Species"
-msgstr "Nach Spezies"
-
-#: ../src/backend/filters/ionDownsample.cpp:460
-msgid "Use species specific (from ranging) sampling values"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:489
-msgid "Sampling value for species"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:505
-#: ../src/backend/filters/ionDownsample.cpp:529
-msgid "Sampling rates"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:513
-msgid "Output Count"
-msgstr "Ausgabe Anzahl"
-
-#: ../src/backend/filters/ionDownsample.cpp:516
-msgid "Sample up to this value of points"
-msgstr ""
-
-#: ../src/backend/filters/ionDownsample.cpp:521
-msgid "Out Fraction"
-msgstr "Ausgabe Anteil"
-
-#: ../src/backend/filters/ionDownsample.cpp:525
-msgid "Sample this fraction of points"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:84
-#: ../src/backend/filters/clusterAnalysis.cpp:1060
-msgid "Size Distribution"
-msgstr "Größenverteilung"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:85
-msgid "Chemistry Distribution"
-msgstr "Chemische Verteilung"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:503
-msgid "No range data. Can't cluster."
-msgstr "Keine Rangedaten. Clusteranalyse nicht möglich."
-
-#: ../src/backend/filters/clusterAnalysis.cpp:514
-msgid ""
-"No ranges selected for cluster \"core\". Cannot continue with clustering."
-msgstr ""
-"Kein Range für cluster \"core\" ausgewählt. Kann mit Clusteranalyse nicht "
-"weitermachen."
-
-#: ../src/backend/filters/clusterAnalysis.cpp:523
-msgid ""
-"No ranges selected for cluster \"bulk\". Cannot continue with clustering."
-msgstr ""
-"Kein Range für \"bulk\" ausgewählt. Kann mit Clusteranalyse nicht "
-"weitermachen."
-
-#: ../src/backend/filters/clusterAnalysis.cpp:689
-msgid "Morphology Plot"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:690
-msgid "\\lambda_1:\\lambda_2 ratio"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:691
-msgid "\\lambda_2:\\lambda_3 ratio"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:736
-msgid "No clusters had sufficient dimensionality to compute singular values"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:794
-msgid "Found :"
-msgstr "Gefunden:"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:796
-msgid " clusters"
-msgstr " Cluster"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:888
-msgid "Compositions (fractional, core+bulk)"
-msgstr "Zusammensetzungen (fractional, core+bulk)"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:890
-msgid "Compositions (fractional, core only)"
-msgstr "Zusammensetzungen (fractional, core only)"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:908
-msgid "Frequencies (core+bulk)"
-msgstr "Häufigkeiten (core+bulk)"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:939
-msgid "Core Link + Erode"
-msgstr "Core Link + Erode"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:947
-msgid "Cluster algorithm mode"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:958
-msgid "Core Classify"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:961
-msgid ""
-"Enable core-classifcation pre-step in clustering (Stephenson et al, 2007)"
-msgstr ""
-
-#: ../src/backend/filters/clusterAnalysis.cpp:967
-msgid "Core Classify Dist"
-msgstr "Core Classify Dist"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:970
-msgid "Restrict only atoms by distance to be cluster sources"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:73
+msgid "Arrow"
+msgstr "Flèche"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:975
-msgid "Classify Knn Max"
-msgstr "Classify Knn Max"
+#: ../src/backend/filters/annotation.cpp:74
+msgid "Text"
+msgstr "Texte"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:978
-msgid ""
-"Require that the kth NN (this number) is within the classify distance, to be "
-"a cluster source"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:75
+msgid "Arrow+Text"
+msgstr "Texte+de flèche. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:984
-msgid "Core Link Dist"
-msgstr "Core Link Dist"
+#: ../src/backend/filters/annotation.cpp:76
+msgid "Angle"
+msgstr "Angle"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:987
-msgid "Distance between clusters to allow linking"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:77
+msgid "Ruler"
+msgstr "Règle"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:992
-msgid "Bulk Link"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:177 ../src/backend/filter.cpp:55
+msgid "Draw"
+msgstr "Nul"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:995
-#: ../src/backend/filters/clusterAnalysis.cpp:1012
-msgid "Enable  linking of non-cluster species - eg for composition analysis "
+#: ../src/backend/filters/annotation.cpp:532
+msgid "Enable"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1002
-msgid "Bulk Link (Envelope) Dist"
-msgstr "Bulk Link (Envelope) Dist"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1005
-msgid ""
-"Distance from core points that form cluster that is used to grab surrounding "
-"bulk points"
+#: ../src/backend/filters/annotation.cpp:535
+msgid "Enable/disable annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1009
-msgid "Erosion"
+#: ../src/backend/filters/annotation.cpp:556
+msgid "Type or style of annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1018
-msgid "Erode Dist"
-msgstr "Erode Dist"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1021
-msgid ""
-"Distance from unclustered material in which bulk points are eroded from "
-"cluster"
+#: ../src/backend/filters/annotation.cpp:572
+#: ../src/backend/filters/annotation.cpp:676
+msgid "Text of annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1028
-msgid "Clustering Params"
-msgstr "Cluster Parameter"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1033
-msgid "Size Cropping"
-msgstr "Größeneinschrankungen"
-
-#: ../src/backend/filters/clusterAnalysis.cpp:1036
-msgid "Remove clusters based upon size distribution"
+#: ../src/backend/filters/annotation.cpp:580
+msgid "Position of annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1043
-msgid "Min Size"
-msgstr "Min Größe"
+#: ../src/backend/filters/annotation.cpp:584
+#: ../src/backend/filters/annotation.cpp:691
+#: ../src/backend/filters/annotation.cpp:750
+#: ../src/backend/filters/annotation.cpp:839
+msgid "Up dir"
+msgstr "Chef amunt de dire. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1046
-msgid "Remove clusters below this size"
+#: ../src/backend/filters/annotation.cpp:588
+#: ../src/backend/filters/annotation.cpp:843
+msgid "Vector for up direction of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1051
-msgid "Max Size"
-msgstr "Max Größe"
+#: ../src/backend/filters/annotation.cpp:592
+#: ../src/backend/filters/annotation.cpp:698
+#: ../src/backend/filters/annotation.cpp:742
+#: ../src/backend/filters/annotation.cpp:847
+msgid "Across dir"
+msgstr "à travers dire. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1054
-msgid "Remove clusters above this size"
+#: ../src/backend/filters/annotation.cpp:596
+#: ../src/backend/filters/annotation.cpp:851
+msgid "Reading direction for annotation"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1063
-msgid "Show number of clusters as a function of cluster size"
+#: ../src/backend/filters/annotation.cpp:601
+#: ../src/backend/filters/annotation.cpp:683
+#: ../src/backend/filters/annotation.cpp:777
+msgid "Text size"
+msgstr "Taille texte"
+
+#: ../src/backend/filters/annotation.cpp:605
+#: ../src/backend/filters/annotation.cpp:687
+#: ../src/backend/filters/annotation.cpp:859
+msgid "Relative size of annotation text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1069
-msgid "Log Scale"
-msgstr "Log. Skala"
+#: ../src/backend/filters/annotation.cpp:617
+#: ../src/backend/filters/annotation.cpp:658
+msgid "3D position for tail of arrow"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1072
-msgid "Use logarithmic scale for size distribution"
+#: ../src/backend/filters/annotation.cpp:625
+#: ../src/backend/filters/annotation.cpp:667
+msgid "3D Position to which arrow points"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1079
-msgid "Morphology Dist."
+#: ../src/backend/filters/annotation.cpp:628
+#: ../src/backend/filters/annotation.cpp:738
+msgid "Positioning"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1082
-msgid "Create a plot showing cluster aspect ratio"
+#: ../src/backend/filters/annotation.cpp:633
+#: ../src/backend/filters/annotation.cpp:705
+msgid "Tip radius"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1088
-msgid "Cluster Id"
+#: ../src/backend/filters/annotation.cpp:637
+msgid "Size of the arrow head"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1091
-msgid "Assign cluster output a unique per-cluster value (id)."
+#: ../src/backend/filters/annotation.cpp:641
+msgid "Line size"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1098
-msgid "Chemistry Dist."
-msgstr "Chemistry Dist."
+#: ../src/backend/filters/annotation.cpp:645
+msgid "Thickness of line used to draw arrow stem"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1101
-msgid "Create a plot showing chemistry for each cluster size"
+#: ../src/backend/filters/annotation.cpp:679
+msgid "Options"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1111
-msgid "Convert cluster counts to composition"
+#: ../src/backend/filters/annotation.cpp:715
+msgid "Position A"
+msgstr "Position Un. "
+
+#: ../src/backend/filters/annotation.cpp:719
+msgid "Location of first non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1117
-msgid "Postprocess"
-msgstr "Postprozess"
+#: ../src/backend/filters/annotation.cpp:723
+msgid "Origin "
+msgstr "Origine"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1136
-msgid "If selected, use as \"core\" ion type (can make clusters)"
+#: ../src/backend/filters/annotation.cpp:727
+msgid "Location of central vertex"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1141
-msgid "Core Ranges"
-msgstr "Core Ranges"
+#: ../src/backend/filters/annotation.cpp:731
+msgid "Position B"
+msgstr "Position B. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1147
-msgid "Enable/Disable All"
+#: ../src/backend/filters/annotation.cpp:735
+msgid "Location of second non-central vertex"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1152
-msgid "Enable/disable all ions"
+#: ../src/backend/filters/annotation.cpp:746
+msgid "Reading direction for angle text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1165
-msgid ""
-"If selected, use as \"bulk\" ion type (can be included in existing clusters)"
+#: ../src/backend/filters/annotation.cpp:751
+msgid "Vector for up direction of angle text"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1170
-msgid "Bulk Ranges"
-msgstr "Bulk Ranges"
+#: ../src/backend/filters/annotation.cpp:759
+msgid "Reflexive"
+msgstr "Reflexive. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1186
-msgid "Max. Sep + Erode"
-msgstr "Max. Sep + Erode"
+#: ../src/backend/filters/annotation.cpp:762
+msgid "Measure interor (enabled) or exterior angle (disabled)"
+msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1939
-msgid " --------------------------- Parameter selection notice ------------- "
-msgstr " --------------------------- Parameterauswahl Notiz ------------- "
+#: ../src/backend/filters/annotation.cpp:767
+msgid "Show Angle"
+msgstr "Angle de spectacle. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1940
-msgid "You have specified a bulk distance larger than half your link distance."
+#: ../src/backend/filters/annotation.cpp:771
+msgid "Display angle text (when enabled)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1941
-msgid ""
-"You can do this; thats OK, but the output is no longer independent of the "
-"computational process;"
+#: ../src/backend/filters/annotation.cpp:781
+msgid "Size of angle text"
 msgstr ""
-"Sie könne das machen, das ist in Ordnung, aber die Ausgabe ist nicht länger "
-"unabhängig vom Berechnungsprozess"
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1942
+#: ../src/backend/filters/annotation.cpp:799
+msgid "Digit format"
+msgstr "Format de dígit. "
+
+#: ../src/backend/filters/annotation.cpp:803
 msgid ""
-"This will be a problem in the case where two or more clusters can equally "
-"lay claim to a \"bulk\" ion. "
+"Format of angle text; # for numeral position, '.' for separator, eg ##.## "
+"gives 12.34"
 msgstr ""
-"Dies ist ein Problem wenn zwei oder mehrere Cluster auf dasselbe \"bulk\" "
-"Ion Anspruch erheben. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1943
-msgid ""
-" If your inter-cluster distance is sufficiently large (larger than your bulk "
-"linking distance), then you can get away with this."
+#: ../src/backend/filters/annotation.cpp:809
+#: ../src/backend/filters/annotation.cpp:894
+msgid "Sphere size"
+msgstr "Sphere Mida. "
+
+#: ../src/backend/filters/annotation.cpp:813
+#: ../src/backend/filters/annotation.cpp:898
+msgid "Marker sphere size for manipulating tool"
 msgstr ""
-" If your inter-cluster distance is sufficiently large (larger than your bulk "
-"linking distance), then you can get away with this."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1944
-msgid ""
-" In theory it is possible to \"join\" the clusters, but this has not been "
-"implemented for speed reasons."
+#: ../src/backend/filters/annotation.cpp:827
+msgid "Ruler beginning 3D location"
 msgstr ""
-"Theoretisch ist es möglich die Cluster zu 'verbinden', dies wurde jedoch aus "
-"Gescheindigkeitsgründen nicht implementiert."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1945
-msgid ""
-"If you want this, please contact the author, or just use the source to add "
-"this in yourself."
+#: ../src/backend/filters/annotation.cpp:835
+msgid "Ruler finish 3D location"
 msgstr ""
-"Sollten Sie dies wollen, kontaktieren Sie den Autor oder verwenden Sie den "
-"Sourcecode um es selbst hinzuzufügen."
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1946
-msgid "---------------------------------------------------------------------- "
-msgstr "---------------------------------------------------------------------- "
+#: ../src/backend/filters/annotation.cpp:865
+msgid "Fixed ticks"
+msgstr "Tic-tacs fixos. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:1975
-msgid "Build Core"
+#: ../src/backend/filters/annotation.cpp:868
+msgid ""
+"Use fixed (enabled) number of text markers, or one every fixed distance "
+"(disabled)"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2003
-msgid "Core"
-msgstr "Kern"
+#: ../src/backend/filters/annotation.cpp:875
+msgid "Num Ticks"
+msgstr "Num Tic-tacs. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2126
-msgid "Bulk"
+#: ../src/backend/filters/annotation.cpp:878
+msgid "Number of tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2204
-msgid "Erode"
-msgstr ""
+#: ../src/backend/filters/annotation.cpp:885
+msgid "Tick Spacing"
+msgstr "Espacé de tic-tac. "
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2282
-msgid "Re-Collate"
+#: ../src/backend/filters/annotation.cpp:888
+msgid "Distance between tick marks along ruler"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2337
-msgid "Classify Core"
+#: ../src/backend/filters/annotation.cpp:912
+msgid "Colour for ruler and ticks"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2428
-msgid "Build Bulk"
+#: ../src/backend/filters/ionDownsample.cpp:192
+msgid "Sampling"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2676
-#: ../src/backend/filters/clusterAnalysis.cpp:2879
-msgid "Cluster Size"
+#: ../src/backend/filters/ionDownsample.cpp:448
+msgid "By Count"
+msgstr "Pour Compter. "
+
+#: ../src/backend/filters/ionDownsample.cpp:451
+msgid "Sample up to a fixed number of ions"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2677
-#: ../src/backend/filters/clusterAnalysis.cpp:2883
-msgid "Frequency"
+#: ../src/backend/filters/ionDownsample.cpp:457
+msgid "Per Species"
+msgstr "Pour Espèce. "
+
+#: ../src/backend/filters/ionDownsample.cpp:461
+msgid "Use species specific (from ranging) sampling values"
 msgstr ""
 
-#: ../src/backend/filters/clusterAnalysis.cpp:2881
-msgid "Composition"
+#: ../src/backend/filters/ionDownsample.cpp:491
+msgid "Sampling value for species"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:123
-msgid "Local Density"
-msgstr "Lokale Dichte"
+#: ../src/backend/filters/ionDownsample.cpp:498
+#: ../src/backend/filters/ionInfo.cpp:317
+msgid "Unranged"
+msgstr "Unranged. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:124
-msgid "Density Filtering"
+#: ../src/backend/filters/ionDownsample.cpp:507
+#: ../src/backend/filters/ionDownsample.cpp:531
+msgid "Sampling rates"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:125
-msgid "Radial Distribution"
-msgstr "Radial Distribution"
+#: ../src/backend/filters/ionDownsample.cpp:515
+msgid "Output Count"
+msgstr "La Sortie Compte. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:126
-msgid "Axial Distribution"
+#: ../src/backend/filters/ionDownsample.cpp:518
+msgid "Sample up to this value of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:127
-msgid "Binomial Distribution"
-msgstr ""
+#: ../src/backend/filters/ionDownsample.cpp:523
+msgid "Out Fraction"
+msgstr "Hors Fracció. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:128
-msgid "Point Em/Replacement"
+#: ../src/backend/filters/ionDownsample.cpp:527
+msgid "Sample this fraction of points"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:129
-msgid "Local Concentration"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:37
+msgid "Rectilinear"
+msgstr "Rectilinéaire"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:133
-msgid "Neighbour Count"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:38
+msgid "Convex hull"
+msgstr "Convex hull. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:643
-msgid "Load"
+#: ../src/backend/filters/ionInfo.cpp:200
+msgid "No ions"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:660
-#: ../src/backend/filters/spatialAnalysis.cpp:2330
-#: ../src/backend/filters/spatialAnalysis.cpp:2383
-#: ../src/backend/filters/spatialAnalysis.cpp:2733
-#: ../src/backend/filters/spatialAnalysis.cpp:3022
-#: ../src/backend/filters/spatialAnalysis.cpp:3540
-#: ../src/backend/filters/spatialAnalysis.cpp:4184
-msgid "Build"
+#: ../src/backend/filters/ionInfo.cpp:226
+#: ../src/backend/filters/spectrumPlot.cpp:433
+msgid ""
+"Background fit failed - input data was considered ill formed (gauss-test)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:705
-#: ../src/backend/filters/spatialAnalysis.cpp:3558
-#: ../src/backend/filters/spatialAnalysis.cpp:4073
-#: ../src/backend/filters/spatialAnalysis.cpp:4201
-msgid "Compute"
+#: ../src/backend/filters/ionInfo.cpp:227
+msgid "Following data has not been corrected"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:803
-msgid "Spatial analysis algorithm to use"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:279
+msgid "--Counts--"
+msgstr "--Compte--. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:827
-#: ../src/backend/filters/spatialAnalysis.cpp:878
-msgid "Stop Mode"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:289
+msgid "Total Ranged\t"
+msgstr "Le Total a Varié. \t"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:830
-msgid "Method to use to terminate algorithm when examining each point"
+#: ../src/backend/filters/ionInfo.cpp:294
+msgid "Total (incl. unranged)\t"
+msgstr "Total (incl. unranged). \t"
+
+#: ../src/backend/filters/ionInfo.cpp:307
+msgid "n/a"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:837
-msgid "NN Max"
-msgstr "NN Max"
+#: ../src/backend/filters/ionInfo.cpp:330
+msgid "Number of points : "
+msgstr "Numéro de points :.  "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:840
-msgid "Maximum number of neighbours to examine"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:359
+msgid "Rectilinear Bounds : "
+msgstr "Rectiligne Saute :.  "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:847
-msgid "Normalise bins"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:364
+msgid "Volume (len^3): "
+msgstr "Volume (len^3):.  "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:850
-msgid ""
-"Normalise counts by binwidth. Needed when comparing NN histograms against "
-"one another"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:381
+msgid "Convex Volume (len^3): "
+msgstr "Convex Volume (len^3):.  "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:856
-msgid "Show Random"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:384
+msgid "Unable to compute volume"
+msgstr "Incapaç de computar volume. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:859
-msgid "Show a fitted (density matched) theoretical distribution"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:413
+msgid "Ranged Density (pts/vol):"
+msgstr "Densité variée (pts/veut):. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:870
-msgid "Dist Max"
-msgstr "Abst. Max."
+#: ../src/backend/filters/ionInfo.cpp:418
+msgid "Total Density (pts/vol):"
+msgstr "Densité totale (pts/veut):. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:873
-msgid "Maximum distance from each point for search"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:448
+msgid "Compositions"
+msgstr "Compositions. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:890
-#: ../src/backend/filters/spatialAnalysis.cpp:1024
-msgid "Number of bins for output 1D RDF plot"
+#: ../src/backend/filters/ionInfo.cpp:449
+msgid "Display compositional data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:896
-msgid "Surface Remove"
-msgstr ""
+#: ../src/backend/filters/ionInfo.cpp:453
+msgid "Counts"
+msgstr "Compte. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:899
-msgid ""
-"Exclude surface as part of source to minimise bias in RDF (at cost of "
-"increased noise)"
+#: ../src/backend/filters/ionInfo.cpp:454
+msgid "Display count data for points in console"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:906
-msgid "Remove Dist"
+#: ../src/backend/filters/ionInfo.cpp:461
+msgid "Ion data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:909
-msgid "Minimum distance to remove from surface"
+#: ../src/backend/filters/ionInfo.cpp:469
+msgid "Normalise count data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:917
-#: ../src/backend/filters/spatialAnalysis.cpp:1029
-msgid "Plot colour "
-msgstr "Plotfarbe "
+#: ../src/backend/filters/ionInfo.cpp:533
+msgid "Volume"
+msgstr "Volume"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:920
-#: ../src/backend/filters/spatialAnalysis.cpp:1032
-msgid "Colour of output plot"
+#: ../src/backend/filters/ionInfo.cpp:536
+msgid "Compute volume for point data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:924
-#: ../src/backend/filters/spatialAnalysis.cpp:1010
-#: ../src/backend/filters/spatialAnalysis.cpp:1015
-#: ../src/backend/filters/spatialAnalysis.cpp:1064
-#: ../src/backend/filters/spatialAnalysis.cpp:1103
-msgid "Alg. Params."
+#: ../src/backend/filters/ionInfo.cpp:552
+msgid "Select volume counting technique"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:937
-#: ../src/backend/filters/spatialAnalysis.cpp:1207
-msgid "Source"
-msgstr "Quelle"
+#: ../src/backend/filters/ionInfo.cpp:565
+msgid "Volume data"
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:940
-msgid "Ions to use for initiating RDF search"
+#: ../src/backend/filters/dataLoad.cpp:64
+msgid "Auto"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:953
-#: ../src/backend/filters/spatialAnalysis.cpp:1223
-#: ../src/backend/filters/spatialAnalysis.cpp:1249
-msgid "Enable/disable ion as source"
+#: ../src/backend/filters/dataLoad.cpp:65
+msgid "Little"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:958
-#: ../src/backend/filters/spatialAnalysis.cpp:1228
-msgid "Source Ion"
+#: ../src/backend/filters/dataLoad.cpp:66
+msgid "Big"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:965 ../src/gl/cameras.cpp:611
-msgid "Target"
-msgstr "Ziel"
+#: ../src/backend/filters/dataLoad.cpp:69
+msgid "POS Data"
+msgstr "POS Donnée. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:968
-#: ../src/backend/filters/spatialAnalysis.cpp:1264
-msgid "Enable/disable all ions as target"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:70
+msgid "Text Data"
+msgstr "Donnée de texte. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:980
-#: ../src/backend/filters/spatialAnalysis.cpp:1276
-msgid "Enable/disable this ion as target"
+#: ../src/backend/filters/dataLoad.cpp:71
+msgid "ATO Data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:984
-msgid "Target Ion"
+#: ../src/backend/filters/dataLoad.cpp:72
+msgid "Tapsim Data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:994
-msgid "Cutoff"
+#: ../src/backend/filters/dataLoad.cpp:73
+msgid "3Dap/Posap OPS Data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:997
-msgid "Remove points with local density above/below this value"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:266
+msgid " does not exist"
+msgstr " N'existe pas. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1003
-msgid "Retain Upper"
+#: ../src/backend/filters/dataLoad.cpp:293
+msgid "Reading File"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1006
-msgid "Retain either points with density above (enabled) or below cutoff"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:308
+#: ../src/backend/filters/dataLoad.cpp:321
+#: ../src/backend/filters/dataLoad.cpp:365
+#: ../src/backend/filters/dataLoad.cpp:376
+#: ../src/backend/filters/dataLoad.cpp:436
+#: ../src/backend/filters/dataLoad.cpp:458
+#: ../src/backend/filters/dataLoad.cpp:476
+msgid "Error loading file: "
+msgstr "Erreur lors du chargement du fichier :"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1052
-msgid "Vector between centre and end of cylinder"
+#: ../src/backend/filters/dataLoad.cpp:338
+msgid "Sampling is active, loaded "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1071
-#: ../src/backend/filters/spatialAnalysis.cpp:3827
-#: ../src/backend/filters/spatialAnalysis.cpp:3886
-msgid "Block size"
+#: ../src/backend/filters/dataLoad.cpp:339
+msgid " available."
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1074
-msgid "Number of ions to use per block"
+#: ../src/backend/filters/dataLoad.cpp:347
+msgid "Loaded entire dataset, "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1081
-msgid "Max Block Aspect"
+#: ../src/backend/filters/dataLoad.cpp:347
+#: ../src/backend/filters/dataLoad.cpp:446
+#: ../src/backend/filters/dataLoad.cpp:468
+#: ../src/backend/filters/dataLoad.cpp:486
+msgid " points."
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1084
+#: ../src/backend/filters/dataLoad.cpp:391
 msgid ""
-"Maximum allowable block aspect ratio. Blocks above this aspect are "
-"discarded. Setting too high decreases correlation strength. Too low causes "
-"loss of statistical power."
+"Data file contained incorrect number of columns -- should be 3 or 4, was "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1095
-msgid "Extrusion Direction"
+#: ../src/backend/filters/dataLoad.cpp:445
+#: ../src/backend/filters/dataLoad.cpp:467
+#: ../src/backend/filters/dataLoad.cpp:485
+msgid "Loaded dataset, "
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1098
-msgid "Direction in which blocks are extended during construction."
+#: ../src/backend/filters/dataLoad.cpp:517
+msgid ""
+"Warning:One or more bounds of the loaded data approaches the limits of "
+"numerical stability for the internal data type(magnitude too large). "
+"Consider rescaling data before loading"
 msgstr ""
+"Avís:Un ou plus saute de la donnée chargée s'acosta les limites de numérique "
+"stability pour le type de donnée interne(magnitud trop grande). Il envisage "
+"rescaling donnée avant de charger. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1107
-msgid "Plot Counts"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:541
+#: ../src/backend/filters/dataLoad.cpp:562
+#: ../src/backend/filters/rangeFile.cpp:561
+#: ../src/backend/filters/rangeFile.cpp:581
+msgid "File"
+msgstr "Fichier"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1110
-msgid "Show the counts in the binomial histogram"
+#: ../src/backend/filters/dataLoad.cpp:542
+msgid "File from which to load data"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1119
+#: ../src/backend/filters/dataLoad.cpp:545
 msgid ""
-"Normalise the counts in the binomial histogram to a probability density "
-"function"
+"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato, *.ops)|*.xml;*.pos;*.txt;*."
+"csv;*.ato;*.ops|All Files|*"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1133
-msgid "Display Grid"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:555
+msgid "File type"
+msgstr "Type de fichier"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1142
-msgid "View Options"
+#: ../src/backend/filters/dataLoad.cpp:557
+msgid "Type of file to be loaded"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1148
-msgid "Data File"
+#: ../src/backend/filters/dataLoad.cpp:572
+msgid "Entries per point"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1152
-msgid "Pos file of points to subtract/replace/etc"
+#: ../src/backend/filters/dataLoad.cpp:573
+msgid "Number of decimal values in file per 3D point (normally 4)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1157
-msgid "Match Tol."
+#: ../src/backend/filters/dataLoad.cpp:590
+msgid "Relative offset of each entry in file for point's X position"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1160
-msgid "Tolerance to allow for matching"
+#: ../src/backend/filters/dataLoad.cpp:598
+msgid "Relative offset of each entry in file for point's Y position"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1176
-msgid "Replacment condition"
+#: ../src/backend/filters/dataLoad.cpp:606
+msgid "Relative offset of each entry in file for point's Z position"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1182
-msgid "Replace value"
+#: ../src/backend/filters/dataLoad.cpp:614
+msgid ""
+"Relative offset of each entry in file to use for scalar value of 3D point"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1185
-msgid "Use value data from file when replacing ions"
+#: ../src/backend/filters/dataLoad.cpp:630
+msgid "File \"Endianness\""
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1190
-msgid "Replacement"
+#: ../src/backend/filters/dataLoad.cpp:631
+msgid "On-disk data storage format. If file won't load, just try each"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1210
-msgid "Enable/disable all ions as source"
+#: ../src/backend/filters/dataLoad.cpp:643
+msgid "Recon. Width"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1236
-msgid "Ions to use as Numerator for conc. calculation"
+#: ../src/backend/filters/dataLoad.cpp:644
+msgid ""
+"Width of box onto which to place reconstructed detector hits (similar to tip "
+"radius)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1785
-msgid "Spatial analysis aborted by user"
-msgstr "Spatial analysis aborted by user"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:1786
-msgid "Insufficient memory to complete analysis"
+#: ../src/backend/filters/dataLoad.cpp:653
+msgid "Ion Volume"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1787
-msgid "Required range data not present"
+#: ../src/backend/filters/dataLoad.cpp:654
+msgid "Effective volume of an ion (incl. free packing volume)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1788
-msgid "Insufficient memory for binomial. Reduce input size?"
+#: ../src/backend/filters/dataLoad.cpp:662
+msgid "Det. Efficiency"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1789
-msgid "Insufficient points to continue"
+#: ../src/backend/filters/dataLoad.cpp:663
+msgid ""
+"Effiency of system (ions evaporated towards detector/ions detected by "
+"detector)"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:1790
-msgid "Unable to load file"
+#: ../src/backend/filters/dataLoad.cpp:677
+msgid "Value Label"
+msgstr "Etiqueta de valeur. "
+
+#: ../src/backend/filters/dataLoad.cpp:681
+msgid "Name for the scalar value associated with each point"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2437
-#: ../src/backend/filters/spatialAnalysis.cpp:2756
-#: ../src/backend/filters/spatialAnalysis.cpp:3046
-msgid "Analyse"
-msgstr "Analyse"
+#: ../src/backend/filters/dataLoad.cpp:684
+msgid "Format params."
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2516
-#: ../src/backend/filters/spatialAnalysis.cpp:2606
-#: ../src/backend/filters/spatialAnalysis.cpp:2672
-msgid "Radial Distance"
-msgstr "Radialer Abstand"
+#: ../src/backend/filters/dataLoad.cpp:690
+msgid "Enabled"
+msgstr "Activé"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2518
-#: ../src/backend/filters/spatialAnalysis.cpp:2611
-msgid "Count/Distance"
+#: ../src/backend/filters/dataLoad.cpp:694
+msgid "Load this file?"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2523
-#: ../src/backend/filters/spatialAnalysis.cpp:2616
-msgid "NN Freq."
-msgstr "NN Freq."
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2663
-msgid "Warning, "
-msgstr "Warnung, "
+#: ../src/backend/filters/dataLoad.cpp:705
+msgid "Sample data"
+msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2664
+#: ../src/backend/filters/dataLoad.cpp:708
 msgid ""
-" points were unable to find neighbour points that exceeded the search "
-"radius, and thus terminated prematurely"
+"Perform random selection on file contents, instead of loading entire file"
 msgstr ""
-" Punkte konnten keine Nachbapunkte die den Suchradius überschritten finden "
-"und beendeten vorzeitig."
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2674
-msgid " RDF"
-msgstr " RDF"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2952
-#: ../src/backend/filters/spatialAnalysis.cpp:3251
-msgid "Number Density (\\#/Vol^3)"
-msgstr "Number Density (\\#/Vol^3)"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:2977
-#: ../src/backend/filters/spatialAnalysis.cpp:3271
-msgid "Warning,"
-msgstr "Warnung,"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:2978
-#: ../src/backend/filters/spatialAnalysis.cpp:3272
-msgid " points were un-analysable. These have been dropped"
-msgstr " points were un-analysable. These have been dropped"
-
-#: ../src/backend/filters/spatialAnalysis.cpp:3000
-#: ../src/backend/filters/spatialAnalysis.cpp:3294
-msgid "And so on..."
-msgstr "Und so weiter..."
+#: ../src/backend/filters/dataLoad.cpp:715
+msgid "Load Limit (MB)"
+msgstr "Limite de charge (MB). "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3376
-msgid "Extract"
+#: ../src/backend/filters/dataLoad.cpp:718
+msgid "Limit for size of data to load"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3449
-msgid "Reduce"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:725
+msgid "Monitor"
+msgstr "Moniteur"
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3604
-msgid "Insufficient points to complete analysis"
+#: ../src/backend/filters/dataLoad.cpp:729
+msgid ""
+"Watch file timestamp to track changes to file contents from other programs"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3627
-msgid "Axial Distance"
+#: ../src/backend/filters/dataLoad.cpp:733
+msgid "Load params."
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3629
-msgid " 1D Dist. Func."
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:740
+msgid "Default colour "
+msgstr "Default Couleur.  "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3698
-msgid "Binomial"
+#: ../src/backend/filters/dataLoad.cpp:743
+msgid "Default colour for points, if not overridden by other filters"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3829
-#: ../src/backend/filters/spatialAnalysis.cpp:3888
-msgid "Rel. Frequency"
-msgstr ""
+#: ../src/backend/filters/dataLoad.cpp:748
+msgid "Draw Size"
+msgstr "Mida de sorteig. "
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3966
-msgid "Build Numerator"
+#: ../src/backend/filters/dataLoad.cpp:751
+msgid "Default size for points, if not overridden by other filters"
 msgstr ""
 
-#: ../src/backend/filters/spatialAnalysis.cpp:3980
-msgid "Build Denominator"
+#: ../src/backend/filters/spectrumPlot.cpp:77
+msgid "Maximum"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:257
-msgid "Colour Map"
-msgstr "Farbtabelle"
-
-#: ../src/backend/filters/ionColour.cpp:265
-msgid "Reverse map"
+#: ../src/backend/filters/spectrumPlot.cpp:78
+msgid "Max in limit"
 msgstr ""
 
-#: ../src/backend/filters/ionColour.cpp:266
-msgid "Reverse the colour scale"
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:171
+msgid "Extrema"
+msgstr "Extrema"
 
-#: ../src/backend/filters/ionColour.cpp:279
-msgid "Opacity"
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:220
+msgid "count"
+msgstr "nombre"
 
-#: ../src/backend/filters/ionColour.cpp:286
-msgid "Num Colours"
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:305
+msgid "Mixed data"
+msgstr "Donnée mixta. "
 
-#: ../src/backend/filters/ionColour.cpp:288
-msgid "Number of unique colours to use in colour map"
+#: ../src/backend/filters/spectrumPlot.cpp:446
+msgid "Background:"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:61
-msgid "Auto"
+#: ../src/backend/filters/spectrumPlot.cpp:505
+msgid "Relative "
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:62
-msgid "Little"
+#: ../src/backend/filters/spectrumPlot.cpp:508
+msgid "Probability Density"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:63
-msgid "Big"
+#: ../src/backend/filters/spectrumPlot.cpp:587
+msgid "Step size for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:66
-msgid "POS Data"
-msgstr "Pos-Daten"
-
-#: ../src/backend/filters/dataLoad.cpp:67
-msgid "Text Data"
-msgstr "Text-Daten"
+#: ../src/backend/filters/spectrumPlot.cpp:592
+msgid "Auto Min/max"
+msgstr "Voiture Min/max. "
 
-#: ../src/backend/filters/dataLoad.cpp:68
-msgid "ATO Data"
+#: ../src/backend/filters/spectrumPlot.cpp:596
+msgid "Automatically compute spectrum upper and lower bound"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:248
-msgid " does not exist"
-msgstr " existiert nicht"
+#: ../src/backend/filters/spectrumPlot.cpp:601
+msgid "Min"
+msgstr "Min"
 
-#: ../src/backend/filters/dataLoad.cpp:275
-msgid "Reading File"
+#: ../src/backend/filters/spectrumPlot.cpp:604
+msgid "Starting position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:290
-#: ../src/backend/filters/dataLoad.cpp:303
-#: ../src/backend/filters/dataLoad.cpp:347
-#: ../src/backend/filters/dataLoad.cpp:358
-#: ../src/backend/filters/dataLoad.cpp:418
-msgid "Error loading file: "
-msgstr "Fehler beim Laden der Datei: "
-
-#: ../src/backend/filters/dataLoad.cpp:320
-msgid "Sampling is active, loaded "
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:609
+msgid "Max"
+msgstr "Max"
 
-#: ../src/backend/filters/dataLoad.cpp:321
-msgid " available."
+#: ../src/backend/filters/spectrumPlot.cpp:612
+msgid "Ending position for spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:329
-msgid "Loaded entire dataset, "
-msgstr ""
+#: ../src/backend/filters/spectrumPlot.cpp:620
+msgid "Logarithmic"
+msgstr "Logarithmique"
 
-#: ../src/backend/filters/dataLoad.cpp:329
-#: ../src/backend/filters/dataLoad.cpp:428
-msgid " points."
+#: ../src/backend/filters/spectrumPlot.cpp:623
+msgid "Convert the plot to logarithmic mode"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:373
-msgid ""
-"Data file contained incorrect number of columns -- should be 3 or 4, was "
+#: ../src/backend/filters/spectrumPlot.cpp:635
+msgid "Normalisation"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:427
-msgid "Loaded dataset, "
+#: ../src/backend/filters/spectrumPlot.cpp:638
+msgid "Rescale the plot height, to make inter-spectrum comparisons easier"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:460
-msgid ""
-"Warning:One or more bounds of the loaded data approaches the limits of "
-"numerical stability for the internal data type(magnitude too large). "
-"Consider rescaling data before loading"
+#: ../src/backend/filters/spectrumPlot.cpp:645
+msgid "Lower Bound"
 msgstr ""
-"Warnung: Eine oder mehrere Grenzen der geladenen Daten erreichen das Limit "
-"der numerischen Stabilität des internen Datentyps (Größenordnung zu groß). "
-"Erwägen Sie die Daten vor dem Laden zu skalieren. "
 
-#: ../src/backend/filters/dataLoad.cpp:485
-msgid "File from which to load data"
+#: ../src/backend/filters/spectrumPlot.cpp:649
+msgid "Do not use data below this x-value for normalisation"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:488
-msgid ""
-"Readable files (*.xml, *.pos, *.txt,*.csv, *.ato)|*.xml;*.pos;*.txt;*.csv;*."
-"ato|All Files|*"
+#: ../src/backend/filters/spectrumPlot.cpp:653
+msgid "Upper Bound"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:498
-msgid "File type"
-msgstr "Dateityp"
-
-#: ../src/backend/filters/dataLoad.cpp:500
-msgid "Type of file to be loaded"
+#: ../src/backend/filters/spectrumPlot.cpp:657
+msgid "Do not use data above this x-value for normalisation"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:515
-msgid "Entries per point"
+#: ../src/backend/filters/spectrumPlot.cpp:675
+msgid "Visual style of plot"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:516
-msgid "Number of decimal values in file per 3D point (normally 4)"
+#: ../src/backend/filters/spectrumPlot.cpp:682
+msgid "Colour of plotted spectrum"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:535
-msgid "File \"Endianness\""
+#: ../src/backend/filters/spectrumPlot.cpp:697
+msgid "Model"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:536
-msgid "On-disk data storage format. If file won't load, just try each"
+#: ../src/backend/filters/spectrumPlot.cpp:700
+msgid "Fitting method to use"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:561
-msgid "Relative offset of each entry in file for point's X position"
+#: ../src/backend/filters/spectrumPlot.cpp:711
+msgid "Fit Start"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:569
-msgid "Relative offset of each entry in file for point's Y position"
+#: ../src/backend/filters/spectrumPlot.cpp:712
+msgid "Start mass value for fitting background"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:577
-msgid "Relative offset of each entry in file for point's Z position"
+#: ../src/backend/filters/spectrumPlot.cpp:718
+msgid "Fit End"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:585
-msgid ""
-"Relative offset of each entry in file to use for scalar value of 3D point"
+#: ../src/backend/filters/spectrumPlot.cpp:719
+msgid "End mass value for fitting background"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:588
-msgid "Value Label"
+#: ../src/backend/filters/spectrumPlot.cpp:732
+msgid "Corr. Only"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:592
-msgid "Name for the scalar value associated with each point"
+#: ../src/backend/filters/spectrumPlot.cpp:733
+msgid "Only show corrected spectrum, not fit"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:595
-msgid "Format params."
+#: ../src/backend/filters/spectrumPlot.cpp:741
+msgid "Background Mode"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:601
-msgid "Enabled"
-msgstr "Aktiviert"
+#: ../src/backend/filters/rangeFile.cpp:121
+#: ../src/backend/filters/rangeFile.h:96
+msgid "Ranging"
+msgstr "en Variant. "
 
-#: ../src/backend/filters/dataLoad.cpp:605
-msgid "Load this file?"
+#: ../src/backend/filters/rangeFile.cpp:564
+msgid "File to use for range data"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:616
-msgid "Sample data"
+#: ../src/backend/filters/rangeFile.cpp:574
+msgid "Drop unranged"
+msgstr "Goutte unranged. "
+
+#: ../src/backend/filters/rangeFile.cpp:576
+msgid "Remove unranged points when generating output"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:619
-msgid ""
-"Perform random selection on file contents, instead of loading entire file"
+#: ../src/backend/filters/rangeFile.cpp:586
+msgid "Legend"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:626
-msgid "Load Limit (MB)"
-msgstr "Ladelimit (MB)"
+#: ../src/backend/filters/rangeFile.cpp:588
+msgid "Display colour legend for enabled ions"
+msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:629
-msgid "Limit for size of data to load"
+#: ../src/backend/filters/rangeFile.cpp:592
+msgid "View"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:636
-msgid "Monitor"
-msgstr "Monitor"
+#: ../src/backend/filters/rangeFile.cpp:608
+msgid "All Ions"
+msgstr "Tous les Ions. "
 
-#: ../src/backend/filters/dataLoad.cpp:640
-msgid ""
-"Watch file timestamp to track changes to file contents from other programs"
+#: ../src/backend/filters/rangeFile.cpp:609
+msgid "Enable/disable all ions at once"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:644
-msgid "Load params."
+#: ../src/backend/filters/rangeFile.cpp:617
+msgid "Species"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:651
-msgid "Default colour "
-msgstr "Bevorzugte Farbe "
+#: ../src/backend/filters/rangeFile.cpp:624
+msgid "IonID "
+msgstr "IonID.  "
 
-#: ../src/backend/filters/dataLoad.cpp:654
-msgid "Default colour for points, if not overridden by other filters"
+#: ../src/backend/filters/rangeFile.cpp:625
+msgid "Enable/disable specified ion"
 msgstr ""
 
-#: ../src/backend/filters/dataLoad.cpp:659
-msgid "Draw Size"
-msgstr "Draw Size"
+#: ../src/backend/filters/rangeFile.cpp:635
+msgid "Active Ion "
+msgstr "Ió actif.  "
 
-#: ../src/backend/filters/dataLoad.cpp:662
-msgid "Default size for points, if not overridden by other filters"
+#: ../src/backend/filters/rangeFile.cpp:637
+msgid "If true, ion is used in output"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:77
-msgid "Maximum"
-msgstr ""
+#: ../src/backend/filters/rangeFile.cpp:647
+msgid "Colour "
+msgstr "Couleurs"
 
-#: ../src/backend/filters/spectrumPlot.cpp:78
-msgid "Max in limit"
+#: ../src/backend/filters/rangeFile.cpp:651
+msgid "Colour used to represent ion"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:79
-msgid "Probability"
-msgstr ""
+#: ../src/backend/filters/rangeFile.cpp:674
+msgid "All Ranges"
+msgstr "Toutes les Gammes. "
 
-#: ../src/backend/filters/spectrumPlot.cpp:170
-msgid "Extrema"
-msgstr "Extrema"
+#: ../src/backend/filters/rangeFile.cpp:675
+msgid "Enable/disable all ranges"
+msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:219
-msgid "count"
-msgstr "Anzahl"
+#: ../src/backend/filters/rangeFile.cpp:690
+msgid "Active Rng "
+msgstr "Actif Rng.  "
 
-#: ../src/backend/filters/spectrumPlot.cpp:304
-msgid "Mixed data"
+#: ../src/backend/filters/rangeFile.cpp:693
+msgid ""
+"Enable/disable specified range (ion must also be enabled to activiate range)"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:445
-msgid "Background:"
+#: ../src/backend/filters/rangeFile.cpp:697
+msgid "Ion "
+msgstr "Ion"
+
+#: ../src/backend/filters/rangeFile.cpp:700
+msgid "Name of ion associate to this range"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:504
-msgid "Relative "
+#: ../src/backend/filters/rangeFile.cpp:709
+msgid "Start rng "
+msgstr "Début rng.  "
+
+#: ../src/backend/filters/rangeFile.cpp:712
+msgid "Start value for range"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:507
-msgid "Probability Density"
+#: ../src/backend/filters/rangeFile.cpp:717
+msgid "End rng "
+msgstr "Fin rng.  "
+
+#: ../src/backend/filters/rangeFile.cpp:720
+msgid "Stopping value for range`"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:584
-msgid "Step size for spectrum"
+#: ../src/backend/state.cpp:165
+msgid ""
+"This file is a \"state\" file for the 3Depict program, and stores "
+"information about a particular analysis session. This file should be a valid "
+"\"XML\" file"
 msgstr ""
+"Ce archives est une information enveloppe une séance d'anàlisi particulière. "
+"Ce archives devrait être un valable.  "
 
-#: ../src/backend/filters/spectrumPlot.cpp:589
-msgid "Auto Min/max"
-msgstr "Auto Min/max"
+#: ../src/backend/state.cpp:337
+msgid "Failed to allocate parser"
+msgstr "Failli à allocate parser. "
 
-#: ../src/backend/filters/spectrumPlot.cpp:593
-msgid "Automatically compute spectrum upper and lower bound"
+#: ../src/backend/state.cpp:372
+msgid ""
+"Unable to retrieve root node in input state file... Is this really a non-"
+"empty XML file?"
 msgstr ""
+"Impossible de récupérer le nœud racine dans le fichier de l'état "
+"d'entrée ... Est-ce vraiment un fichier XML non vide?"
 
-#: ../src/backend/filters/spectrumPlot.cpp:598
-msgid "Min"
-msgstr "Min"
+#: ../src/backend/state.cpp:379
+msgid "Base state node missing. Is this really a state XML file??"
+msgstr "Noeud d'état de base manquant. Est-ce vraiment un fichier d'état XML?"
 
-#: ../src/backend/filters/spectrumPlot.cpp:601
-msgid "Starting position for spectrum"
+#: ../src/backend/state.cpp:408
+msgid "State was created by a newer version of this program.. "
 msgstr ""
+"L'état a été créé pour une version une plus nouvelle de ce programme...  "
 
-#: ../src/backend/filters/spectrumPlot.cpp:606
-msgid "Max"
-msgstr "Max"
+#: ../src/backend/state.cpp:409
+msgid "file reading will continue, but may fail."
+msgstr "Lecture d'archives continuera, mais il peut faillir."
 
-#: ../src/backend/filters/spectrumPlot.cpp:609
-msgid "Ending position for spectrum"
+#: ../src/backend/state.cpp:419
+msgid ""
+"Warning, unparseable version number in state file. File reading will "
+"continue, but may fail"
 msgstr ""
+"Avís, unparseable numéro de version en archives estatal. Lecture d'archives "
+"continuera, mais il peut faillir. "
 
-#: ../src/backend/filters/spectrumPlot.cpp:617
-msgid "Logarithmic"
-msgstr "Logarithmisch"
+#: ../src/backend/state.cpp:428
+msgid "Unable to find the \"writer\" node"
+msgstr "Unable to find the \"writer\" node"
 
-#: ../src/backend/filters/spectrumPlot.cpp:620
-msgid "Convert the plot to logarithmic mode"
-msgstr ""
+#: ../src/backend/state.cpp:438
+msgid "Unable to find the \"backcolour\" node."
+msgstr "Impossible de trouver le \"backcolour\" noeud."
 
-#: ../src/backend/filters/spectrumPlot.cpp:632
-msgid "Normalisation"
+#: ../src/backend/state.cpp:445
+msgid "\"backcolour\" node missing \"r\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:635
-msgid "Rescale the plot height, to make inter-spectrum comparisons easier"
-msgstr ""
+#: ../src/backend/state.cpp:450
+msgid "Unable to interpret \"backColour\" node's \"r\" value."
+msgstr "Impossible d'interpréter \"backColour\" noeud \"r\" de valeur."
 
-#: ../src/backend/filters/spectrumPlot.cpp:642
-msgid "Lower Bound"
+#: ../src/backend/state.cpp:458
+msgid "\"backcolour\" node missing \"g\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:646
-msgid "Do not use data below this x-value for normalisation"
-msgstr ""
+#: ../src/backend/state.cpp:464
+msgid "Unable to interpret \"backColour\" node's \"g\" value."
+msgstr "Impossible d'interpréter \"backColour\" noeud \"g\" de valeur."
 
-#: ../src/backend/filters/spectrumPlot.cpp:650
-msgid "Upper Bound"
+#: ../src/backend/state.cpp:472
+msgid "\"backcolour\" node missing \"b\" value."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:654
-msgid "Do not use data above this x-value for normalisation"
-msgstr ""
+#: ../src/backend/state.cpp:478
+msgid "Unable to interpret \"backColour\" node's \"b\" value."
+msgstr "Impossible d'interpréter \"backColour\" noeud \"b\" de valeur."
 
-#: ../src/backend/filters/spectrumPlot.cpp:672
-msgid "Visual style of plot"
+#: ../src/backend/state.cpp:485
+msgid "\"backcolour\"s rgb values must be in range [0,1]"
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:679
-msgid "Colour of plotted spectrum"
-msgstr ""
+#: ../src/backend/state.cpp:513
+msgid "Unable to find or interpret \"showaxis\" node"
+msgstr "Impossible de trouver ou d'interpréter \"showaxis\" noeud"
 
-#: ../src/backend/filters/spectrumPlot.cpp:694
-msgid "Model"
-msgstr ""
+#: ../src/backend/state.cpp:557
+msgid "Unable to locate \"filtertree\" node."
+msgstr "Incapaç de localitzar.  "
 
-#: ../src/backend/filters/spectrumPlot.cpp:697
-msgid "Fitting method to use"
-msgstr ""
+#: ../src/backend/state.cpp:573
+msgid "Cameras section missing \"active\" node."
+msgstr "Impossible de localiser le \"filtertree\" noeud."
 
-#: ../src/backend/filters/spectrumPlot.cpp:708
-msgid "Fit Start"
+#: ../src/backend/state.cpp:581
+msgid "Unable to find property \"value\"  for \"cameras->active\" node."
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:709
-msgid "Start mass value for fitting background"
+#: ../src/backend/state.cpp:587
+msgid "Unable to interpret property \"value\"  for \"cameras->active\" node."
 msgstr ""
+"Impossible d'interpréter la propriété \"valeur\" pour \"caméras-> active\" "
+"noeud."
 
-#: ../src/backend/filters/spectrumPlot.cpp:715
-msgid "Fit End"
+#: ../src/backend/state.cpp:607
+msgid "Failed to interpret camera state for camera : "
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:716
-msgid "End mass value for fitting background"
+#: ../src/backend/state.cpp:615
+msgid "Unable to interpret the camera type for camera : "
 msgstr ""
 
-#: ../src/backend/filters/spectrumPlot.cpp:729
-msgid "Corr. Only"
-msgstr ""
+#: ../src/backend/state.cpp:671
+msgid "Unable to locate stash name for stash "
+msgstr "Incapaç de localitzar stash nom pour stash.  "
 
-#: ../src/backend/filters/spectrumPlot.cpp:730
-msgid "Only show corrected spectrum, not fit"
-msgstr ""
+#: ../src/backend/state.cpp:678
+msgid "Empty stash name for stash "
+msgstr "Vide stash nom pour stash.  "
 
-#: ../src/backend/filters/spectrumPlot.cpp:738
-msgid "Background Mode"
+#: ../src/backend/state.cpp:687
+msgid "No filter tree for stash:"
 msgstr ""
 
-#: ../src/backend/configFile.cpp:187
-msgid "Config file present, but is not valid (root node test)"
-msgstr "Konfigurationsdatei vorhanden, aber nicht gültig (root node test)"
+#: ../src/backend/state.cpp:693
+msgid "For stash "
+msgstr "Pour stash.  "
 
-#: ../src/backend/configFile.cpp:228
-msgid "Unable to interpret recent file entry"
-msgstr "Kann den letzten Dateieintrag nicht interpretieren"
+#: ../src/backend/state.cpp:725
+msgid "Unrecognised effect :"
+msgstr "Unrecognised Effet :. "
 
-#: ../src/backend/configFile.cpp:268
-msgid "Unable to determine filter type in defaults listing."
-msgstr "Kann den Filtertyp im Defaultslisting nicht bestimmen."
+#: ../src/backend/state.cpp:735
+msgid "Duplicate effect found"
+msgstr "Effet de doublé a trouvé. "
 
-#: ../src/backend/configFile.cpp:605
-msgid "Online access for non win32/apple platforms is intentionally disabled, "
-msgstr ""
-"Onlinezugang für nicht Win32/apple systeme wurde absichtlich deaktiviert."
+#: ../src/backend/state.cpp:735
+msgid " cannot use."
+msgstr " Ne peut pas utiliser."
 
-#: ../src/backend/configFile.cpp:606
-msgid ""
-"regardless of the settings you use here. Use your package manager to keep up-"
-"to-date"
-msgstr ""
-"Nutzen Sie Ihren Paketmanager um up-to-date zu sein unabhängig von den "
-"Einstellungen die Sie hier verwenden"
+#: ../src/backend/state.cpp:745
+msgid "Error reading effect : "
+msgstr "Effet de lecture de l'erreur :.  "
 
-#: ../src/backend/filtertreeAnalyse.cpp:223
+#: ../src/backend/state.cpp:965
+msgid "-merge"
+msgstr "-Fusionner. "
+
+#: ../src/backend/filtertreeAnalyse.cpp:225
 msgid ""
 "Parent filter has no output, but filter requires input -- there is no point "
 "in placing a child filter here."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:224
+#: ../src/backend/filtertreeAnalyse.cpp:226
 msgid "Leaf-only filter with child"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:234
+#: ../src/backend/filtertreeAnalyse.cpp:236
 msgid ""
 "Parent filters' output will be blocked by child, without use. Parent results "
 "will be dropped."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:235
-#: ../src/backend/filtertreeAnalyse.cpp:249
+#: ../src/backend/filtertreeAnalyse.cpp:237
+#: ../src/backend/filtertreeAnalyse.cpp:251
 msgid "Bad parent->child pair"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:248
+#: ../src/backend/filtertreeAnalyse.cpp:250
 msgid ""
 "First filter does not output anything useable by child filter. Child filter "
 "not useful."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:328
+#: ../src/backend/filtertreeAnalyse.cpp:330
 msgid "Spatial results possibly altered"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:329
+#: ../src/backend/filtertreeAnalyse.cpp:331
 msgid ""
 "Filters and settings selected that could alter reported results that depend "
 "upon density. Check to see if spatial sampling may be happening in the "
 "filter tree - this warning is provisional only."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:397
+#: ../src/backend/filtertreeAnalyse.cpp:399
 msgid "Filter needs parent \""
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:398
+#: ../src/backend/filtertreeAnalyse.cpp:400
 msgid ""
 "\" but does not have one. Filter may not function correctly until this "
 "parent is given."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:399
+#: ../src/backend/filtertreeAnalyse.cpp:401
 msgid "Filter missing needed parent"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:430
+#: ../src/backend/filtertreeAnalyse.cpp:432
 msgid "Bad range filter settings"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:431
+#: ../src/backend/filtertreeAnalyse.cpp:433
 msgid ""
 "Rangefile set to drop unranged data, however a child filter requires it."
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:613
+#: ../src/backend/filtertreeAnalyse.cpp:529
+msgid "Filter cannot generate data, but has no input - it is at the tree base."
+msgstr ""
+
+#: ../src/backend/filtertreeAnalyse.cpp:530
+msgid "Non data-generating filter at root"
+msgstr ""
+
+#: ../src/backend/filtertreeAnalyse.cpp:632
 msgid "Composition results possibly altered"
 msgstr ""
 
-#: ../src/backend/filtertreeAnalyse.cpp:614
+#: ../src/backend/filtertreeAnalyse.cpp:633
 msgid ""
 "Filters and settings selected that could bias reported composition. Check to "
 "see if species biasing may occcur in the filter tree - this warning is "
 "provisional only."
 msgstr ""
 
-#: ../src/backend/plot.cpp:29
-msgid "Moving avg."
-msgstr "Gleit.Durchschn."
-
-#: ../src/backend/plot.cpp:33
-msgid "Lines"
-msgstr "Linien"
-
-#: ../src/backend/plot.cpp:34
-msgid "Bars"
-msgstr "Block"
-
-#: ../src/backend/plot.cpp:35
-msgid "Steps"
-msgstr "Stufen"
-
-#: ../src/backend/plot.cpp:36
-msgid "Stem"
-msgstr "Stem"
-
-#: ../src/backend/plot.cpp:37
-msgid "Points"
-msgstr "Punkte"
-
-#: ../src/backend/plot.cpp:39
-msgid "Density"
-msgstr ""
+#: ../src/backend/APT/APTFileIO.cpp:44 ../src/backend/APT/APTFileIO.cpp:79
+#: ../src/backend/APT/APTFileIO.cpp:103 ../src/backend/APT/APTFileIO.cpp:123
+msgid "Error opening file"
+msgstr "Erreur lors de l'ouverture du fichier"
 
-#: ../src/backend/plot.cpp:40
-msgid "Scatter"
+#: ../src/backend/APT/APTFileIO.cpp:45
+msgid "Only found header, no data"
 msgstr ""
 
-#: ../src/backend/plot.cpp:739 ../src/backend/plot.cpp:747
-msgid "Multiple data types"
+#: ../src/backend/APT/APTFileIO.cpp:46
+msgid "Unable to reopen file after first scan"
 msgstr ""
 
-#: ../src/backend/plot.cpp:1581
-msgid "error"
-msgstr "Fehler"
+#: ../src/backend/APT/APTFileIO.cpp:47
+msgid "Error whilst reading file contents"
+msgstr "Erreur whilst en lisant contenus d'archives. "
 
-#: ../src/backend/plot.cpp:1821
-msgid "Amplitude"
+#: ../src/backend/APT/APTFileIO.cpp:48 ../src/backend/APT/APTFileIO.cpp:49
+msgid "Unexpected file format"
 msgstr ""
 
-#: ../src/backend/filtertree.cpp:1151
-msgid "WARNING: Skipping node "
-msgstr "WARNUNG: Skipping node "
-
-#: ../src/backend/filtertree.cpp:1151
-msgid " as it was not recognised"
-msgstr " wurde nicht erkannt."
-
-#: ../src/backend/filtertree.cpp:1189
-msgid "Error processing node: "
-msgstr "Fehler beim Verarbeiten von Node: "
-
-#: ../src/gl/cameras.cpp:596
-msgid "Lock"
-msgstr "Sperren"
-
-#: ../src/gl/cameras.cpp:617
-msgid "Up Dir."
-msgstr "Up Dir."
+#: ../src/backend/APT/APTFileIO.cpp:50
+msgid "Insufficient memory to continue"
+msgstr ""
 
-#: ../src/gl/cameras.cpp:625 ../src/gl/cameras.cpp:728
-msgid "Perspective"
-msgstr "Perspektivisch"
+#: ../src/backend/APT/APTFileIO.cpp:54
+msgid "Memory allocation failure on POS load"
+msgstr "Insuccès d'assignació de la mémoire en POS charge. "
 
-#: ../src/gl/cameras.cpp:631
-msgid "Projection"
-msgstr "Projektion"
+#: ../src/backend/APT/APTFileIO.cpp:55
+msgid "Error opening pos file"
+msgstr "L'Erreur qu'oeuvre pos archives. "
 
-#: ../src/gl/cameras.cpp:640
-msgid "Field of View (deg)"
-msgstr "Bildausschnitt"
+#: ../src/backend/APT/APTFileIO.cpp:56
+msgid "Pos file empty"
+msgstr "Pos Archive vide. "
 
-#: ../src/gl/cameras.cpp:646
-msgid "View size"
-msgstr "Anzeigegröße"
+#: ../src/backend/APT/APTFileIO.cpp:57
+msgid "Pos file size appears to have non-integer number of entries"
+msgstr "Taille du fichier Pos semble avoir non entier nombre d'entrées"
 
-#: ../src/3Depict.cpp:397
-msgid "File : "
-msgstr "Datei : "
+#: ../src/backend/APT/APTFileIO.cpp:58
+msgid "Error reading from pos file (after open)"
+msgstr "Erreur de lecture du fichier pos (après ouverture)"
 
-#: ../src/3Depict.cpp:397
-msgid " does not exist. Skipping"
-msgstr " existiert nicht. Überspringe"
+#: ../src/backend/APT/APTFileIO.cpp:59
+msgid "Error - Found NaN in pos file"
+msgstr "Erreur - Trouvée NaN en pos archives. "
 
-#: ../src/common/constants.cpp:22
-msgid ""
-"Range Files (*.rng; *.env; *.rrng)|*.rng;*.env;*.rrng;*.RRNG;*.RNG;*.ENV|RNG "
-"File (*.rng)|*.rng;*.RNG|Environment File (*.env)|*.env;*.ENV|RRNG Files (*."
-"rrng)|*.rrng;*.RRNG|All Files (*)|*"
+#: ../src/backend/APT/APTFileIO.cpp:60
+msgid "Error - Found Inf in pos file"
 msgstr ""
 
-#: ../src/common/basics.cpp:183
-msgid "in the future?"
-msgstr "in Zukunft?"
-
-#: ../src/common/basics.cpp:234
-msgid "a decade ago"
-msgstr "vor zehn Jahren"
-
-#: ../src/common/basics.cpp:235
-msgid "a year ago"
-msgstr "vor einem Jahr"
-
-#: ../src/common/basics.cpp:236
-msgid "a month ago"
-msgstr "vor einem Monat"
+#: ../src/backend/APT/APTFileIO.cpp:61
+msgid "Pos load aborted by interrupt."
+msgstr "Pos La Charge avortada pour interrompre."
 
-#: ../src/common/basics.cpp:237
-msgid "a week ago"
-msgstr "vor einer Woche"
+#: ../src/backend/APT/APTFileIO.cpp:80
+msgid "No numerical data found"
+msgstr "Ne la donnée numérique a trouvé. "
 
-#: ../src/common/basics.cpp:238
-msgid "a day ago"
-msgstr "gestern"
+#: ../src/backend/APT/APTFileIO.cpp:81
+msgid "Error re-opening file, after first scan"
+msgstr "Erreur re-archives d'ouverture, après que premier scanner. "
 
-#: ../src/common/basics.cpp:239
-msgid "an hour ago"
-msgstr "vor einer Stunde"
+#: ../src/backend/APT/APTFileIO.cpp:82
+msgid "Unable to read file contents after open"
+msgstr "Incapaç de lire contenus d'archives après ouvert. "
 
-#: ../src/common/basics.cpp:240
-msgid "45 minutes ago"
-msgstr "vor 45 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:83
+msgid "Error interpreting field in file"
+msgstr "L'Erreur qu'interprète champ en archives. "
 
-#: ../src/common/basics.cpp:241
-msgid "30 minutes ago"
-msgstr "vor 30 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:84
+msgid "Incorrect number of fields in file"
+msgstr "Incorrect Numéro de champs en archives. "
 
-#: ../src/common/basics.cpp:242
-msgid "20 minutes ago"
-msgstr "vor 20 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:85 ../src/backend/APT/APTFileIO.cpp:107
+msgid "Unable to allocate memory to store data"
+msgstr "Incapaç à allocate mémoire pour stocker donnée. "
 
-#: ../src/common/basics.cpp:243
-msgid "15 minutes ago"
-msgstr "vor 15 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:104
+msgid "File is empty"
+msgstr ""
 
-#: ../src/common/basics.cpp:244
-msgid "10 minutes ago"
-msgstr "vor 10 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:105
+msgid "Filesize does not match expected format"
+msgstr ""
 
-#: ../src/common/basics.cpp:245
-msgid "5 minutes ago"
-msgstr "vor 5 Minuten"
+#: ../src/backend/APT/APTFileIO.cpp:106
+msgid "File version number not <4, as expected"
+msgstr ""
 
-#: ../src/common/basics.cpp:246
-msgid "a minute ago"
-msgstr "vor einer Minute"
+#: ../src/backend/APT/APTFileIO.cpp:108
+msgid "Unable to detect endian-ness in file"
+msgstr ""
 
-#: ../src/common/basics.cpp:247
-msgid "30 seconds ago"
-msgstr "vor 30 Sekunden"
+#: ../src/backend/APT/APTFileIO.cpp:122
+msgid "Error interpreting file contents"
+msgstr ""
 
-#: ../src/common/basics.cpp:248
-msgid "10 seconds ago"
-msgstr "vor 10 Sekunden"
+#: ../src/backend/APT/APTFileIO.cpp:124
+msgid "Aborted opening file"
+msgstr ""
 
-#: ../src/common/basics.cpp:249
-msgid "a second ago"
-msgstr "vor einer Sekunde"
+#: ../src/backend/APT/APTRanges.cpp:48
+msgid "Error opening file, check name and permissions."
+msgstr "Archives d'ouverture de l'erreur, nom de contrôle et permissions."
 
-#: ../src/common/basics.cpp:254
-msgid "a few decades ago"
-msgstr "vor einigen Dekaden"
+#: ../src/backend/APT/APTRanges.cpp:49
+msgid ""
+"Error interpreting range file header, expecting ion count and range count, "
+"respectively."
+msgstr ""
+"L'Erreur qu'interprète encapçalament d'archives de la gamme, en attendant "
+"l'ió compte et la gamme compte, respectivement."
 
-#: ../src/common/basics.cpp:255
-msgid "a few years ago"
-msgstr "vor einigen Jahren"
+#: ../src/backend/APT/APTRanges.cpp:50
+msgid ""
+"Range file appears to be empty, check file is a proper range file and is not "
+"empty."
+msgstr ""
+"Archives de gamme apparaît pour être vide, archives de contrôle est un "
+"archives de gamme approprié et ce ne est pas vide."
 
-#: ../src/common/basics.cpp:256
-msgid "a few months ago"
-msgstr "vor einigen Monaten"
+#: ../src/backend/APT/APTRanges.cpp:51
+msgid "Error reading the long name for ion."
+msgstr "L'Erreur que lit le nom long pour ió."
 
-#: ../src/common/basics.cpp:257
-msgid "a few weeks ago"
-msgstr "vor einigen Wochen"
+#: ../src/backend/APT/APTRanges.cpp:52
+msgid "Error reading the short name for ion."
+msgstr "L'Erreur que lit le nom court pour ió."
 
-#: ../src/common/basics.cpp:258
-msgid "a few days ago"
-msgstr "vor einigen Tagen"
+#: ../src/backend/APT/APTRanges.cpp:53
+msgid ""
+"Error reading colour data in the file, expecting 3 decimal values, space "
+"separated."
+msgstr ""
+"Donnée de couleur de lecture d'erreur en le archives, en attendant 3 valeurs "
+"decimals, l'espace a séparé."
 
-#: ../src/common/basics.cpp:259
-msgid "a few hours ago"
-msgstr "vor einigen Stunden"
+#: ../src/backend/APT/APTRanges.cpp:54
+msgid ""
+"Tried skipping to table separator line (line with dashes), but did not find "
+"it."
+msgstr ""
+"Essayé skipping à table separator ligne (ligne avec dashes), mais ne l'a "
+"trouvé."
 
-#: ../src/common/basics.cpp:266
-msgid "a few minutes ago"
-msgstr "vor einigen Minuten"
+#: ../src/backend/APT/APTRanges.cpp:55
+msgid ""
+"Number of ions in the table header did not match the number specified at the "
+"start of the file"
+msgstr ""
 
-#: ../src/common/basics.cpp:269
-msgid "a few seconds ago"
-msgstr "vor einigen Sekunden"
+#: ../src/backend/APT/APTRanges.cpp:56
+msgid ""
+"Unexpected failure whilst trying to skip over range lead-in data (bit before "
+"range start value)"
+msgstr ""
+"Insuccès inattendu whilst en essayant à skip enveloppe avantage de gamme-en "
+"donnée (bit avant de valeur de début de la gamme). "
 
-#: ../src/common/basics.cpp:296
-msgid "moments ago"
-msgstr "kürzlich"
+#: ../src/backend/APT/APTRanges.cpp:57
+msgid ""
+"Range table had an incorrect number of entries, should be 2 or 3 + number of "
+"ranges"
+msgstr ""
 
-#: ../src/common/colourmap.cpp:242
-msgid "Jet"
-msgstr "Jet"
+#: ../src/backend/APT/APTRanges.cpp:58
+msgid "Unable to read range start and end values"
+msgstr "Incapaç de lire début de gamme et valeurs de fin. "
 
-#: ../src/common/colourmap.cpp:243
-msgid "Hot"
-msgstr "Heiss"
+#: ../src/backend/APT/APTRanges.cpp:59
+msgid "Unable to read range table entry"
+msgstr "Incapaç de lire entrée de table de la gamme. "
 
-#: ../src/common/colourmap.cpp:244
-msgid "Cold"
-msgstr "Kalt"
+#: ../src/backend/APT/APTRanges.cpp:60
+msgid ""
+"Error reading file, unexpected format, are you sure it is a proper range "
+"file?"
+msgstr ""
+"Archives de lecture de l'erreur, format inattendu, t'est sûr est un archives "
+"de gamme approprié?. "
 
-#: ../src/common/colourmap.cpp:245
-msgid "Grey"
-msgstr "Grau"
+#: ../src/backend/APT/APTRanges.cpp:61
+msgid ""
+"Too many ranges appeared to have range entries with no usable data (eg, all "
+"blank)"
+msgstr ""
+"Trop varie apparus pour avoir des entrées de gamme sans donnée utilisable "
+"(eg, tout espace). "
 
-#: ../src/common/colourmap.cpp:246
-msgid "Cyclic"
-msgstr "Cyclic"
+#: ../src/backend/APT/APTRanges.cpp:62
+msgid ""
+"Range file appears to contain malformed data, check things like start and "
+"ends of m/c are not equal or flipped."
+msgstr ""
+"Archives de gamme apparaît pour contenir malformed donnée, choses de "
+"contrôle comme début et fins de m/c n'est pas égal ou flipped."
 
-#: ../src/common/colourmap.cpp:247
-msgid "General"
-msgstr "Allgemein"
+#: ../src/backend/APT/APTRanges.cpp:63
+msgid "Range file appears to be inconsistent (eg, overlapping ranges)"
+msgstr ""
+"Archives de gamme apparaît pour être inconsistent (eg, solapant gammes). "
 
-#: ../src/common/colourmap.cpp:248
-msgid "Blue"
-msgstr "Blau"
+#: ../src/backend/APT/APTRanges.cpp:64
+msgid "No ion name mapping found  for multiple ion."
+msgstr ""
 
-#: ../src/common/colourmap.cpp:249
-msgid "Pseudo-Random"
-msgstr "Pseudo-Random"
+#: ../src/backend/APT/APTRanges.cpp:65
+msgid "Polyatomic extension range matches multiple masses in first section"
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:191
-msgid "Save Data..."
-msgstr "Datei speichern..."
+#: ../src/backend/APT/APTRanges.cpp:66
+msgid "Range file is exceedingly large. Refusing to open"
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:192
-msgid "Text File (*.txt)|*.txt|All Files (*)|*"
-msgstr "Text Datei (*.txt)|*.txt|Alle Dateien (*)|*"
+#: ../src/backend/APT/APTRanges.cpp:1404
+msgid ""
+"Range headings do not match order of the ions listed in the name "
+"specifications. The name specification ordering will be used when reading "
+"the range table, as the range heading section is declared as a comment in "
+"the file-format specifications, and is not to be intepreted by this program. "
+"Check range-species associations actually match what you expect."
+msgstr ""
 
-#: ../src/wx/wxcomponents.cpp:204
-msgid "Error saving file. Check output dir is writable."
+#: ../src/backend/filter.cpp:54
+msgid "2D Plot"
 msgstr ""
-"Fehler beim Schreiben der Datei. Stellen Sie sicher, dass das "
-"Zielverzeichnis nicht schreibgeschüzt ist."
 
-#: ../src/backend/filters/dataLoad.h:135
-msgid "Pos Data"
-msgstr "POS-Daten"
+#: ../src/backend/filter.cpp:56
+msgid "Range"
+msgstr "Plage"
 
-#: ../src/backend/filters/ionInfo.h:103
-msgid "Ion info"
-msgstr "Ioneninfo"
+#: ../src/backend/filter.cpp:57
+msgid "Voxel"
+msgstr "Voxel. "
 
-#: ../src/backend/filters/externalProgram.h:69
-msgid "Ext. Program"
-msgstr "Ext. Programm"
+#: ../src/backend/filters/transform.h:71
+msgid "Ion. Transform"
+msgstr "Ió. Il transforme. "
 
-#: ../src/backend/filters/ionColour.h:63
+#: ../src/backend/filters/ionColour.h:66
 msgid "Spectral Colour"
-msgstr "Spectral Farbe"
+msgstr "Spectre"
 
-#: ../src/backend/filters/profile.h:123
-msgid "Comp. Prof."
-msgstr "Konz. Prof."
+#: ../src/backend/filters/boundingBox.h:76
+msgid "Bound box"
+msgstr "Caisse attachée. "
 
 #: ../src/backend/filters/ionDownsample.h:79
 msgid "Ion Sampler"
-msgstr "Ion Sampler"
+msgstr "Mostrejador d'ió. "
 
-#: ../src/backend/filters/boundingBox.h:76
-msgid "Bound box"
-msgstr "Begrenzungs-Box"
+#: ../src/backend/filters/profile.h:123
+msgid "Comp. Prof."
+msgstr "Comp. Prof."
 
-#: ../src/backend/filters/transform.h:71
-msgid "Ion. Transform"
-msgstr "Ion. Transformieren"
+#: ../src/backend/filters/ionInfo.h:103
+msgid "Ion info"
+msgstr "Ió info. "
 
-#: ../src/wx/wxcomponents.h:82
-msgid "treeCtrl"
-msgstr ""
+#: ../src/backend/filters/dataLoad.h:145
+msgid "Pos Data"
+msgstr "Pos Donnée. "
+
+#: ../src/backend/filters/externalProgram.h:69
+msgid "Ext. Program"
+msgstr "Ext. Programme. "
 
 #: ../data/startup-tips.txt:5
 msgid ""
 "You can reset the main view by tapping the space bar. Hold down modifier "
 "keys like shift,ctrl to change the axis. Double tap to switch which axis to "
-"look down"
+"look the other way (+ve or -ve direction)"
 msgstr ""
 
 #: ../data/startup-tips.txt:6
@@ -5409,7 +5564,8 @@ msgstr ""
 #: ../data/startup-tips.txt:8
 msgid ""
 "Package files can be easily shared to allow others to view your analysis, "
-"using the File->Export->Package menu item"
+"using the File->Export->Package menu item. This will automatically import "
+"all referenced files (eg pos/rng files) into a single shareable folder"
 msgstr ""
 
 #: ../data/startup-tips.txt:9
@@ -5448,12 +5604,13 @@ msgstr ""
 #: ../data/startup-tips.txt:15
 msgid ""
 "That anyone can contribute to improving this program, even without knowing "
-"about computer programming?"
+"about computer programming? Reporting bugs helps us to prioritise our work, "
+"and directs us to fix real problems for all users"
 msgstr ""
 
 #: ../data/startup-tips.txt:16
 msgid ""
-"You can load more than one file at a time, then either operate on the "
+"You can load more than one file at a time, then either operate on them "
 "separately, or together"
 msgstr ""
 
@@ -5493,8 +5650,8 @@ msgstr ""
 
 #: ../data/startup-tips.txt:23
 msgid ""
-"By creating a camera, you can switch between orthographic and perspective "
-"views"
+"By creating a camera, you can switch between orthographic (parallel) and "
+"perspective views"
 msgstr ""
 
 #: ../data/startup-tips.txt:24
@@ -5503,191 +5660,53 @@ msgid ""
 "translating (shifting) one of the datasets to one side"
 msgstr ""
 
-#~ msgid "ORNL format RNG (*.rng)|*.rng|All Files (*)|*"
-#~ msgstr "ORNL Format RNG (*.rng)|*.rng|Alle Dateien (*)|*"
-
-#~ msgid "POS Data (*.pos)|*.pos|All Files (*)|*"
-#~ msgstr "POS-Daten (*.pos)|*.pos|All Files (*)|*"
-
-#~ msgid "Mass-to-Charge (amu/e)"
-#~ msgstr "Masse-zu-Ladung (amu/e)"
-
-#~ msgid "Last Outputs"
-#~ msgstr "Letzte Ausgabe"
-
-#~ msgid "Type"
-#~ msgstr "Type"
-
-#~ msgid "Num"
-#~ msgstr "Num"
-
-#~ msgid "Aborted."
-#~ msgstr "Abgebrochen"
-
-#~ msgid "Gaussian (2𝜎)"
-#~ msgstr "Gauss (2𝜎)"
-
-#~ msgid "Zero"
-#~ msgstr "Null"
-
-#~ msgid "Bounce"
-#~ msgstr "Bounce"
-
-#~ msgid "Kernel Bins"
-#~ msgstr "Kernel Bins"
-
-#~ msgid "Exterior values"
-#~ msgstr "Exterior values"
-
-#~ msgid "Inconsistent number of columns found"
-#~ msgstr "Inkonsistente Anzahl an Spalten gefunden"
-
-#~ msgid "Tile "
-#~ msgstr "Tile "
-
-#~ msgid "Filter Defaults"
-#~ msgstr "Filtervoreinstellungen"
-
-#~ msgid "Notice"
-#~ msgstr "Notiz"
-
-#~ msgid "For security reasons, defaults are not modifiable for this filter"
-#~ msgstr ""
-#~ "Aus Sicherheitsgründen können die Voreinstellungen für diesen Filter "
-#~ "nicht geändert werden."
-
-#~ msgid "Pref"
-#~ msgstr "Pref"
-
-#~ msgid "New stash name...."
-#~ msgstr "Neuer Stashname..."
-
-#~ msgid ""
-#~ "Range Files (*rng; *env; *rrng)|*rng;*env;*rrng|RNG File (*.rng)|*.rng|"
-#~ "Environment File (*.env)|*.env|RRNG Files (*.rrng)|*.rrng|All Files (*)|*"
-#~ msgstr ""
-#~ "Rangedatei (*rng; *env; *rrng)|*rng;*env;*rrng|RNG File (*.rng)|*.rng|"
-#~ "Environment Datei (*.env)|*.env|RRNG Files (*.rrng)|*.rrng|Alle Dateien "
-#~ "(*)|*"
-
-#~ msgid "Next Fullscreen mode: none"
-#~ msgstr "Nächster Vollbildmodus: keiner"
-
-#~ msgid "Next Fullscreen mode: complete"
-#~ msgstr "Nächster Vollbildmodus: vollständig"
-
-#~ msgid "Next Fullscreen mode: with toolbars"
-#~ msgstr "Nächster Vollbildmodus: mit Werkzeugleisten"
-
-#~ msgid "Next Mode: No fullscreen"
-#~ msgstr "Nächster Modus: Kein Vollbild"
-
-#~ msgid "Next Mode: fullscreen w/o toolbar"
-#~ msgstr "Nächster Modus: Vollbild ohne Werkzeugleiste"
-
-#~ msgid "Next Mode: fullscreen with toolbar"
-#~ msgstr "Nächster Modus: Vollbild mit Werkzeugleiste"
-
-#~ msgid "displays this message"
-#~ msgstr "zeigt diese Nachricht"
-
-#~ msgid "inputfile"
-#~ msgstr "Eingabedatei"
-
-#~ msgid "Error processing command line"
-#~ msgstr "Fehler beim Ausführen der Kommandozeile"
-
-#~ msgid "Unable to set working directory"
-#~ msgstr "Kann Arbeitsverzeichnis nicht festlegen"
-
-#~ msgid "Error saving posfile result for external program"
-#~ msgstr "Fehler beim Speichern von Posdateiergebnis für externes Programm"
-
-#~ msgid "Error saving plot result for externalprogram"
-#~ msgstr "Fehler beim Speichern von Posdateiergebnis für externes Programm"
-
-#~ msgid "Error creating temporary directory"
-#~ msgstr "Fehler beim Anlegen des temporären Verzeichnisses"
-
-#~ msgid "Detected unusable number of columns in plot"
-#~ msgstr "Detected unusable number of columns in plot"
-
-#~ msgid "Unable to parse plot result from external program"
-#~ msgstr "Unable to parse plot result from external program"
-
-#~ msgid "Unable to load ions from external program"
-#~ msgstr "Kann Ionen von externem Programm nicht laden"
-
-#~ msgid "Unable to perform commandline substitution"
-#~ msgstr "Unable to perform commandline substitution"
-
-#~ msgid "Error executing external program"
-#~ msgstr "Fehler beim Ausführen von externem Programm"
-
-#~ msgid "Clustering aborted"
-#~ msgstr "Clustering abgebrochen"
-
-#~ msgid "No core ions for cluster"
-#~ msgstr "Keine Kernionen für Cluster"
-
-#~ msgid "No bulk ions for cluster"
-#~ msgstr "Keine Bulkionen für Cluster"
-
-#~ msgid "Voxelisation aborted"
-#~ msgstr "Voxelisation abgebrochen"
-
-#~ msgid "Out of memory"
-#~ msgstr "Zu wenig Speicher"
-
-#~ msgid "Unable to perform filter convolution"
-#~ msgstr "Kann Filter convolution nicht durchführen"
-
-#~ msgid "Voxelisation bounds are invalid"
-#~ msgstr "Voxelisation Grenzen sin ungültig"
-
-#~ msgid "Too many bins in comp. profile."
-#~ msgstr "Zu viele Bins im Konzentrationsprofil."
-
-#~ msgid "Not enough memory for comp. profile."
-#~ msgstr "Nicht genug Speicher für Konz.-Profil."
-
-#~ msgid "Aborted composition prof."
-#~ msgstr "Konzentrationspr. abgebr."
+#: ../data/startup-tips.txt:25
+msgid ""
+"From version 0.0.20, vector values in filter properties (e.g. \"(1,0,0)\") "
+"can be specified using ISO 31-11 spherical coordinates using the following "
+"notation <r,theta,phi>, with angles in degrees"
+msgstr ""
 
-#~ msgid "Insufficient data to complete analysis."
-#~ msgstr "Ungenügend Daten zum Fertigstellen der Analyse."
+#: ../data/startup-tips.txt:26
+msgid ""
+"You can change the behavior of filter dragging by holding Ctrl (mac: cmd) or "
+"Shift whilst dragging? This switches between move, copy and \"splice"
+msgstr ""
 
-#~ msgid "Unable to allocate memory"
-#~ msgstr "Kann Speicher nicht zuweisen"
+#: ../data/startup-tips.txt:27
+msgid ""
+"We like to know where we are being helpful? Please consider writing the "
+"program and version number in any work you might publish - whether in print "
+"or online. Alternatively, link to our website, or write to us to let us know "
+"we helped!"
+msgstr ""
 
-#~ msgid "Downsample Aborted"
-#~ msgstr "Datenreduktion abgebrochen"
+#: ../data/startup-tips.txt:28
+msgid ""
+"You can merge files by placing two \"Pos Data\" filters in series,  then  "
+"saving the result?"
+msgstr ""
 
-#~ msgid "Insuffient memory for downsample"
-#~ msgstr "Nicht genug Speicher zur Datenreduktion"
+#~ msgid "ORNL format RNG (*.rng)|*.rng|All Files (*)|*"
+#~ msgstr "ORNL Formé RNG (*.rng)|*.rng|Toutes les  Archives (*)|*. "
 
-#~ msgid "Insufficient memory for operation"
-#~ msgstr "Nicht genügend Speicher für Operation"
+#~ msgid "POS Data (*.pos)|*.pos|All Files (*)|*"
+#~ msgstr "POS Donnée (*.pos)|*.pos|Toutes les  Archives (*)|*. "
 
-#~ msgid "Bug? Problem with qhull library, cannot run convex hull."
-#~ msgstr ""
-#~ "Bug? Problem mit qhull Bibliothek. Kann convex hull nicht ausführen."
+#~ msgid "Moving - Hold ⌘ (command) to copy"
+#~ msgstr "Mouvant - Contrôle ⌘ (ordre) pour copiar. "
 
-#~ msgid "Insufficient memory for spectrum filter."
-#~ msgstr "Nicht genügend Speicher für Spektrumfilter"
+#~ msgid "Moving - Hold control to copy"
+#~ msgstr "Mouvant - contrôle de Contrôle pour copiar. "
 
-#~ msgid "Bad bincount value in spectrum filter."
-#~ msgstr "Falsche Binanzahl im Spektrumfilter."
+#~ msgid "\\% Done (Esc aborts)"
+#~ msgstr "\\% Fait (Esc avorta). "
 
-#~ msgid "Ranging aborted by user"
-#~ msgstr "Ranging durch User abgebrochen"
+#~ msgid "\\% Done"
+#~ msgstr "\\% Fait. "
 
-#~ msgid "Insufficient memory for range"
-#~ msgstr "Nicht genug Speicher für Range"
+#~ msgid "Mass-to-Charge (amu/e)"
+#~ msgstr "Trop-à-Charge (amu/e). "
 
-#~ msgid ""
-#~ " Unable to merge stashes correctly. This is improbable, so please report "
-#~ "this."
-#~ msgstr ""
-#~ " Kann stashes nicht korrekt zusammenführen. Dies ist nicht möglich bitte "
-#~ "melden Sie das."
+#~ msgid "Pre-Allocate"
+#~ msgstr "Pre-Allocate. "
diff --git a/translations/3depict_fr_FR.mo b/translations/3depict_fr_FR.mo
new file mode 100644
index 0000000..4c73aab
Binary files /dev/null and b/translations/3depict_fr_FR.mo differ
diff --git a/translations/makeTranslations b/translations/makeTranslations
index 93abd38..af639d0 100755
--- a/translations/makeTranslations
+++ b/translations/makeTranslations
@@ -13,7 +13,7 @@ PROGRAM_NAME=`cat ../src/common/constants.cpp | grep PROGRAM_NAME | awk -F= '{pr
 TRANSLATION_INSTALL="/usr/share/locale/"
 
 #Space separated list of maintained locales
-MAINTAINED_LOCALES="de_DE"
+MAINTAINED_LOCALES="de_DE fr_FR es_ES"
 
 echo "Program name is $PROGRAM_NAME"
 
@@ -62,6 +62,13 @@ if [ $# -eq 1 ] ; then
 		for i in $MAINTAINED_LOCALES
 		do
 			msgmerge -N ${PROGRAM_NAME}_${i}.po update.pot > tmp.pot
+			#replace the default headers from msgmerge
+			THISYEAR=`date | awk '{print $6}'`
+			sed -i "s/YEAR THE PACKAGE.*/$THISYEAR/"  tmp.pot
+			sed -i "s/SOME DESCRIPTIVE TITLE.*/Translation file for locale $i/"  tmp.pot
+			sed -i 's/PACKAGE package/3Depict package/' tmp.pot
+
+			#overwrite po
 			mv tmp.pot ${PROGRAM_NAME}_${i}.po
 
 		done

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/3depict.git



More information about the debian-science-commits mailing list