diff -Nru engauge-digitizer-5.0/.gitignore engauge-digitizer-5.2/.gitignore
--- engauge-digitizer-5.0/.gitignore 1970-01-01 00:00:00.000000000 +0000
+++ engauge-digitizer-5.2/.gitignore 2013-10-10 18:55:48.000000000 +0000
@@ -0,0 +1,7 @@
+Makefile
+src/.objs
+bin/engauge
+moc_*
+.bookmarks
+.history
+digitizer.pro.user
diff -Nru engauge-digitizer-5.0/INSTALL engauge-digitizer-5.2/INSTALL
--- engauge-digitizer-5.0/INSTALL 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/INSTALL 2013-10-10 18:55:48.000000000 +0000
@@ -6,17 +6,11 @@
1. REQUIREMENTS
1.1 Before installing a binary release
1.2 Before installing a source code release
- 2. USER INSTALL - Linux Executable Release
- 3. USER INSTALL - Mac OSX Executable Release
- 4. USER INSTALL - MS Windows Executable Release
- 5. USER INSTALL - Sun Forte Compiler
- 6. USER INSTALL - Source Release
- 7. DEVELOPER INSTALL - Linux Using Makefile
- 8. DEVELOPER INSTALL - Mac OSX Using Makefile
- 9. DEVELOPER INSTALL - MS Windows With Visual C++ 6.0 Using Makefile
- 10. DEVELOPER INSTALL - MS Windows With Visual C++ 6.0 Using IDE
- 11. DEVELOPER INSTALL - Linking problems
- 12. INTERNATIONALIZATION
+ 2. USER INSTALL - Mac OSX Executable Release
+ 3. USER INSTALL - MS Windows Executable Release
+ 4. USER INSTALL - Source Release
+ 5. DEVELOPER INSTALL - Using Makefile
+ 6. INTERNATIONALIZATION
1. REQUIREMENTS
---------------
@@ -32,11 +26,11 @@
If you are compiling Engauge Digitizer from source code, the following two packages
must first be installed:
- 1. Version 3 of Qt from www.trolltech.com
+ 1. Version 4 of Qt from qt.nokia.com
*******************************************************************
* Comments and warnings: *
- * 1. Do NOT install Version 4! You must install version 3 *
+ * 1. Do NOT install Version 3! You must install version 4 *
* 2. You may download the open source version for free, although *
* purchasing a commercial version entitles you to customer *
* support from the wonderful staff at Trolltech, and to *
@@ -44,7 +38,13 @@
* 3. The QTDIR environment variable must point to the Qt *
* installation directory *
* 4. The PATH environment variable must point to the qmake tool *
- * of Qt *
+ * of Qt. Hint - if you have compilation problems on a computer *
+ * with multiple versions of Qt, then try 'qmake -v' to see if *
+ * you are using the wrong version of Qt. If so, then adjust *
+ * your PATH variable to use Qt version 4 *
+ * 5. In Microsoft Windows the preferred setup is using QtSDK from *
+ * qt.nokia.com with the optional MinGW package installed *
+ * during the QtSDK installation. Details are given below. *
*******************************************************************
2. Version 3.1.2 of FFTW from www.fftw.org
@@ -53,22 +53,21 @@
* Comments and warnings: *
* 1. Version 3.1.2 is guaranteed to work, although other versions *
* will probably also work *
- * 2. You may download the open source version for free, although *
- * purchasing a commercial version allows you to include *
- * Qt in commercial products *
- * 3. The 'make install' installation step must be performed so *
- * the FFTW include files and library are available to Engauge *
+ * 2. Linux users may be able to install a package for their *
+ * distribution using their standard package installer. This is *
+ * the preferred method. *
+ * 3. The FFTW source may be downloaded from www.fftw.org and *
+ * installed manually. In this case, the standard instalation *
+ * steps are followed: *
+ * 3a) ./configure *
+ * 3b) make *
+ * 3c) make install *
*******************************************************************
Note that open source versions of both Qt and FFTW are freely available.
-2. USER INSTALL - Linux Executable Release
-------------------------------------------
-
-Untar the executable release package. The executable name is digitizer.
-The samples directory contains some sample image and document files
-3. USER INSTALL - Mac OSX Executable Release
+2. USER INSTALL - Mac OSX Executable Release
--------------------------------------------
Untar the executable release package. The executable name is Engauge.app.
@@ -77,36 +76,16 @@
open the bundle using 'Show contents', then click on the Contents
directory, and then copy the samples directory.
-4. USER INSTALL - MS Windows Executable Release
+
+3. USER INSTALL - MS Windows Executable Release
-----------------------------------------------
Unzip the executable release package. The executable name is
digitizer.exe. The samples directory contains some sample image and
document files.
-5. USER INSTALL - Sun Forte Compiler
------------------------------------------
-
-1. Install Qt (see http://www.trolltech.com/developer/platforms/index.html)
-2. Get a copy of the source code using anonymous cvs access by running
- 'cvs -z3 -d:pserver:anonymous@digitizer.cvs.sourceforge.net:/cvsroot/digitizer
- checkout -P digitizer'
- -OR-
- by downloading the source tarball from digitizer.sourceforge.net and running
- 'tar xvfz digit-src-X_Y.tar.gz'
- -OR-
- by downloading the source zip file from digitizer.sourceforge.net and running
- 'unzip digit-src-X_Y.zip'
-3. 'cd digitizer/digitizer'
-4. 'qmake digitizer.pro'
-5. 'make'
-6. If you have linking problems, see "DEVELOPER INSTALL - Linking problems"
-7. You can now run the digitizer executable
-
-Comments for OSX:
--Compiler macro __SUNPRO_CC should be set to get around 'const' problems
-6. USER INSTALL - Source Release
+4. USER INSTALL - Source Release
--------------------------------
This installation method is much harder than installing one of the
@@ -114,7 +93,7 @@
operating systems.
Building your own executable is not too much of a problem if you have
-already installed Qt from Trolltech (www.trolltech.com) installed, but
+already installed Qt from Trolltech (qt.nokia.com) installed, but
if you have yet to install the Qt toolkit, you may have much work
ahead of you.
@@ -122,226 +101,27 @@
the same contents, and both work under MS Windows, Mac OSX, Linux, and
a wide variety of other platforms.
-7. DEVELOPER INSTALL - Linux Using Makefile
+
+5. DEVELOPER INSTALL - Using Makefile
-------------------------------------------
1. See if Qt is installed. Some tricks are to try running 'qmake -v' and to
look in '/usr/lib' for a directory like 'qt-3.3.3'
2. If Qt from Trolltech is not already installed, then
- install Qt/X11 (see http://www.trolltech.com/developer/platforms/index.html)
- with the following environment variables:
- QTDIR=$HOME/qt-3.X.X
- and the following command line options for "configure":
- -no-xkb
- -no-xshape
- -no-sm
- -no-xinerama
- -no-xrandr
- -no-xcursor
- -qt-gif
- -thread
- -static
- -xft
- -xrender
- where the last two are included so the best fonts are sharp, and
- must agree with the options in digitizer.pro
-3. Get a copy of the source code using anonymous cvs access by running
- 'cvs -z3 -d:pserver:anonymous@digitizer.cvs.sourceforge.net:/cvsroot/digitizer
- checkout -P digitizer'
+ install Qt/X11 (see http://qt.nokia.com/developer/platforms/index.html)
+3. Get a copy of the source code using anonymous git
+ git clone http://git.code.sf.net/p/digitizer/code digitizer-code
-OR-
by downloading the source tarball from digitizer.sourceforge.net and running
'tar xvfz digit-src-X_Y.tar.gz'
- -OR-
- by downloading the source zip file from digitizer.sourceforge.net and running
- 'unzip digit-src-X_Y.zip'
4. 'cd digitizer'
5. 'qmake -unix digitizer.pro'
6. 'make'
7. You can now run the digitizer executable
-Comments for Linux:
--The settings in digitizer.pro must agree with the Qt build settings
--Kdevelop 3 works smoothly with the Makefile to compile and test Engauge
--Use other command line options for "configure" at your own risk
-
-8. DEVELOPER INSTALL - Mac OSX Using Makefile
----------------------------------------------
-1. See if Qt is installed. Some tricks are to try running 'qmake -v' and to
- look in '/usr/lib' for a directory like 'qt-3.3.3'
-2. If Qt from Trolltech is not already installed, then
- install Qt/Mac (see http://www.trolltech.com/developer/platforms/index.html)
- with the following environment variables:
- QTDIR=$HOME/qt-mac-free-3.X.X
- QMAKESPEC=$QTDIR/mkspecs/macx-g++
- and the following command line options for "configure":
- -fast
- -platform macx-g++
- -shared
- -qt-imgfmt-jpeg
- -qt-imgfmt-mng
- -qt-libpng
- -qt-gif
- -qt-zlib
- -thread
-3. Get a copy of the source code using anonymous cvs access by running
- 'cvs -z3 -d:pserver:anonymous@digitizer.cvs.sourceforge.net:/cvsroot/digitizer
- checkout -P digitizer'
- -OR-
- by downloading the source tarball from digitizer.sourceforge.net and running
- 'tar xvfz digit-src-X_Y.tar.gz'
- -OR-
- by downloading the source zip file from digitizer.sourceforge.net and running
- 'unzip digit-src-X_Y.zip'
-4. 'cd digitizer'
-5. 'qmake -macx digitizer.pro'
-6. 'make'
-7. If you have linking problems, see "DEVELOPER INSTALL - Linking problems"
-8. You can now run the digitizer executable
-
-Comments for OSX:
--The settings in digitizer.pro must agree with the Qt build settings
--Mac version of Qt library (rather than the x11 version) is used, and
- it is built using the threaded and shared options
--Fink is not used so users do not need to install it first
--ssh keys for sourceforge compile farm use rsa1 keys rather than dsa keys
--Use other command line options for "configure" at your own risk
-
-9. DEVELOPER INSTALL - MS Windows With Visual C++ 6.0 Using Makefile
---------------------------------------------------------------------
-
-1. Install Qt/Windows 3 Enterprise since the open source Windows package
- is incompatible because it is an ancient version, and the Professional
- edition lacks Canvas support (see
- http://www.trolltech.com/developer/platforms/index.html)
- with the following environment variables:
- QMAKESPEC=win32-msvc
- and the following build options selected:
- thread
- release
- gif
- jpeg
- mng
- png
- zlib
-2. Set QTDIR environment variable to the qt directory (typically c:\qt)
-3. Extract, but do not build, the complete source code package of FFTW 3.X.X from
- http://www.fftw.org into its own directory. Only the header files from this
- package will be used so no compilation is needed
-4. Set the FFTW_HOME environment variable in Control Panel / System /
- Environment Variables to point to the main FFTW source code directory
-5. Get a copy of the source code using anonymous cvs access by running
- 'cvs -z3 -d:pserver:anonymous@digitizer.cvs.sourceforge.net:/cvsroot/digitizer
- checkout -P digitizer'
- -OR-
- by downloading the source tarball from digitizer.sourceforge.net and running
- 'tar xvfz digit-src-X_Y.tar.gz'
- -OR-
- by downloading the source zip file from digitizer.sourceforge.net and running
- 'unzip digit-src-X_Y.zip'
-6. Extract the two files libfftw3-3.def and libfftw3-3.dll from the version 3.X.X
- dll package at http://www.fftw.org/install/windows, into the digitizer/bin
- directory created in the previous step
-7. According to the directions at http://www.fftw.org/install/windows, create the
- library file libfftw3-3.lib by running the Visual Studio 6 'lib' utility in the
- digitizer/bin using
- 'lib /machine:i386 /def:libfftw3-3.def'
-8. Run the Qt makefile utility qmake as
- 'qmake digitizer.pro'
-9. Run MS make utility as 'nmake'
-10. If you have linking problems, see "DEVELOPER INSTALL - Linking problems"
-11. You can now run the digitizer.exe executable
-
-Comments for Windows:
--The settings in digitizer.pro must agree with the Qt build settings
--Use other build options at your own risk
-
-10. DEVELOPER INSTALL - MS Windows With Visual C++ 6.0 Using IDE
-----------------------------------------------------------------
-
-1. Install noncommercial Qt 3 using the settings from the same step in the previous
- section. See http://www.trolltech.com/developer/platforms/index.html
-2. Set QTDIR environment variable to the qt directory (typically c:\qt)
-3. Extract, but do not build, the complete source code package of FFTW 3.X.X from
- http://www.fftw.org into its own directory. Only the header files from this
- package will be used so no compilation is needed
-4. Set the FFTW_HOME environment variable in Control Panel / System /
- Environment Variables to point to the main FFTW source code directory
-6. Run 'cvs checkout digitizer'
-7. Open project file digitizer.dsw (which refers to file digitizer.dsp)
-8. Select the build type as either Release or Debug, using
- 'Set Active Configuration'
-9. Optionally add a console window for debugging, by changing the
- "/subsystem:windows" linker option to "/subsystem:console"
-10. Extract the two files libfftw3-3.def and libfftw3-3.dll from the version 3.X.X
- dll package at http://www.fftw.org/install/windows, into the digitizer/bin
- directory created in the previous step
-11. According to the directions at http://www.fftw.org/install/windows, create the
- library file libfftw3-3.lib by running the Visual Studio 6 'lib' utility in the
- digitizer/bin using
- 'lib /machine:i386 /def:libfftw3-3.def'
-12. Run 'Project/Build'
-13. If the moc files are not automatically built, see the next section for
- an explanation and workaround
-14. If you have linking problems, see "DEVELOPER INSTALL - Linking problems"
-15. You can now run the digitizer.exe executable
-
-Comments for Windows:
--The settings in digitizer.pro must agree with the Qt build settings
--You may have problems building in Visual Studio:
-
- Symptom 1 - You check out the source files onto a Microsoft Windows
- system, and then try to build the project. However, the moc files
- are not generated so the build fails.
-
- Symptom 2 - The digitizer.dsp project file looks fine when you first
- open it within an editor, but after saving the file with any changes
- you notice the file has been condensed into a single, very long, line.
-
- Reason - The digitizer.dsp project file is corrupted. This file
- is autogenerated by the VC++ IDE. Before it was committed to cvs,
- it probably was copied to a Linux system, which changed the formatting.
- Even though you probably cannot see the difference in an editor, the
- formatting change confuses the VC++ IDE, which prevents the moc
- files from getting generated.
-
- Good Solution - In Windows, open the file, before it is corrupted, in
- Word, and then save it as a text file in MSDOS format with CR/LFs. This
- solution is temporary.
-
- Better Solution - In Linux, make sure the file has only a NL (newline)
- at the end of each line, rather than CR/NL, using
- "od -a digitizer.dsp | more". If there are carriage returns, remove
- them using "tr digitizer.fixed -d '\r';
- mv digitizer.fixed digitizer.dsp". Then immediately commit into cvs.
-
- Best Solution - Everybody stops using Windows.
-
-11. DEVELOPER INSTALL - Linking problems
-----------------------------------------
-
-Usually a problem linking involves a missing 'qt' or 'qt-mt' library.
-If you have installed Qt, then make sure the QTDIR environment variable
-is pointing to the Qt directory. Then, look at the 'lib' subdirectory
-under the main Qt directory. In that subdirectory you will find
-the Qt library.
-
-If Qt was built with multithreading (since the 'thread' option was chosen)
-then the Qt library has 'qt-mt' in its name, otherwise that library
-has just 'qt' in its name.
-
-By adding or removing 'thread' from the CONFIG line of digitizer.pro,
-you can build Engauge Digitizer with or without, respectively,
-multithreading so that it can link correctly.
-
-Another source of linking problems is the failure to link with
-the Xft and Xrender libraries, on a system where the Qt library was
-built with Xft and Xrender support so fonts would look professional.
-To fix these linking problems, either rebuild Qt without that
-support (and settle for ugly fonts), or add "-lXft -lfreetype" to
-LIBS in digitizer.pro and then rebuilt Engauge.
-12. INTERNATIONALIZATION
+6. INTERNATIONALIZATION
------------------------
The following steps will create a translation file:
diff -Nru engauge-digitizer-5.0/RELEASE engauge-digitizer-5.2/RELEASE
--- engauge-digitizer-5.0/RELEASE 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/RELEASE 2013-10-10 18:55:48.000000000 +0000
@@ -6,10 +6,9 @@
to Sourceforge. See file INSTALL for instructions on installing
a release package.
-RELEASE - Linux
+RELEASE - Source / Linux
---------------
-This assumes Qt 3.x is already installed on the computer. For now,
-the 'release' build will actually be a debug release
+This assumes Qt 4.x is already installed on the computer.
1. Change the version number in digitdef.cpp and rebuild the executable
@@ -22,120 +21,13 @@
2. Run test cases using valgrind (http://valgrind.kde.org) to check
for uninitialized variables and memory leaks
- valgrind --leak-check=yes digitizer
+ valgrind --leak-check=yes engauge
-3. Commit the current files into cvs
+3. Create source tarball
+ git archive master --prefix engauge-VERSION/ -o /tmp/engauge_VERSION.tgz
- cd ~
- cvs commit -m 'Official release...' digitizer
+4. Test compilation and installation from source
-4. Remove any existing digitizer directories
-
- rm -rf ~/digitizer
-
-5. Extract the sources, minus the CVS directories, using
-
- cvs export -kv -d '' digitizer
-
- Hint - to see what tag should be selected here, run
-
- cvs log digitizer/README
-
-6. Tar up the development directory and its subdirectories into the
- platform-independent source release tarball package
-
- tar cvfz digit-src-1_0.tar.gz digitizer
-
-7. Perform the steps of the 'DEVELOPER INSTALL - Linux'
-
-8. run the release_linux.pl script to create the tarball
- digit-exe-linux-X_Y.tar.gz
-
-9. Upload the two tarballs according to
- http://sourceforge.net/docman/display_doc.php?docid=6445&group_id=1.
- be sure to send out a notification to users who have subscribed
- to this Engauge Digitizer
-
-RELEASE - Mac OSX 10.2
-----------------------
-1. Copy the source tarball to the Mac OSX 10.2 SourceForge compile farm.
-
-2. Perform the steps of the 'DEVELOPER INSTALL - Mac OSX'
-
-3. Run the release_linux.pl script to create the tarball
- digit-exe-osx-X_Y.tar.gz
-
-4. Upload the tarball according to
- http://sourceforge.net/docman/display_doc.php?docid=6445&group_id=1.
-
-RELEASE - MS Windows With Visual C++ 6.0 Using Makefile
--------------------------------------------------------
-
-1. Use Windows Explorer to remove c:\digitizer
-
-2. Obtain the newest source code by downloading from Sourceforge. Alternately,
- use
-
- cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/digitizer export -kv digitizer
-
-3 Zip up the development directory and its subdirectories
- (c:\digitizer) into the platform-independent source release zip
- package. The development directory must be recursively copied into
- another directory that is otherwise empty, so the zip file will unzip
- nicely into the "digitizer" subdirectory.
-
- mkdir c:\tmp
- (use Windows Explorer to copy c:\digitizer into c:\tmp)
- (winzip c:\tmp into c:\digit-src-1_0.zip using 'add with wildcards'
- and 'recursive')
- (delete c:\tmp directory)
-
-4. Perform the steps of the 'DEVELOPER INSTALL - MS Windows With Visual C++
- 6.0 Using IDE' install, being sure to specify a Release build.
- The IDE build is required rather than the qmake build, since the linking
- is done statically so the dll files need not be included in the release,
- and also because the IDE build adds a nice icon into the executable.
-
-5. Make sure all of the sample files in the samples directory
- can be imported or opened. if not, quit this build and go back
- to the linux system and run 'cvs admin -kb ' on all of
- binary files so they can be correctly opened in windows
-
-6. Go up to your home directory
-
-7. Run the release_windows.bat command file to create the zip file
- digit-exe-windows-X_Y.zip
-
-8. Zip up the install subdirectories into the executable release
- package, from the directory above the install directory. The executable
- directory must be recursively copied into another directory that is
- otherwise empty, so the zip file will unzip nicely into the "digitizer"
- subdirectory.
-
- mkdir c:\tmp
- (use Windows Explorer to copy c:\engauge into c:\tmp)
- (winzip c:\tmp into c:\digit-exe-windows-X_Y.zip using
- 'add with wildcards' and 'recursive')
- (delete c:\tmp directory)
-
-9. Upload the two zip files according to
- http://sourceforge.net/docman/display_doc.php?docid=6445&group_id=1
-
-RELEASE - Finishing up
-----------------------
-1. Download the new release and test.
-
-2. Go to the project download page and get the release id of the
- newest release. Log into digitizer.sourceforge.net and upload
- newer versions of the following files:
-
- 1) /home/groups/d/di/digitizer/htdocs/index.php to replace the
- previous release id by the new release id. This will point
- web surfers to the newest release when they try to download.
- 2) /home/groups/d/di/digitizer/htdocs/content1.php should have
- an entry in the status section added for the new release
-
-3. Send out a release notification to subscribers at the sourceforge website
-
-4. If this is a big release, send a notification out at freshmeat.net
+5. Tag git version
+6. Upload the tarball to sourceforge
diff -Nru engauge-digitizer-5.0/bin/README engauge-digitizer-5.2/bin/README
--- engauge-digitizer-5.0/bin/README 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/bin/README 2013-10-10 18:55:48.000000000 +0000
@@ -3,12 +3,6 @@
This bin directory contains the executable that is built by successfully compiling
and linking Engauge Digitizer (http://digitizer.sourceforge.net).
-Engauge.exe.local
--------------------
-This file is a hack for Microsoft Windows 2000. As long as this file is in the same
-directory as engauge.exe, the Windows 2000 operating system will use the local dll files
-rather than the dll files that belong to the operating system.
-
Licensing
---------
All of the files in this directory were created by an Engauge Digitizer developer, and
diff -Nru engauge-digitizer-5.0/bin/engauge.exe.local engauge-digitizer-5.2/bin/engauge.exe.local
--- engauge-digitizer-5.0/bin/engauge.exe.local 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/bin/engauge.exe.local 1970-01-01 00:00:00.000000000 +0000
@@ -1,8 +0,0 @@
-This file is a patch for Microsoft Windows 2000.
-
-As long as this file is in the same directory as
-Digitizer.exe, the operating system will use the
-local dll files rather than the dll files that
-belong to the operating system.
-
-The contents of this file are unimportant.
diff -Nru engauge-digitizer-5.0/debian/changelog engauge-digitizer-5.2/debian/changelog
--- engauge-digitizer-5.0/debian/changelog 2012-05-17 09:47:36.000000000 +0000
+++ engauge-digitizer-5.2/debian/changelog 2013-11-12 20:47:51.000000000 +0000
@@ -1,3 +1,21 @@
+engauge-digitizer (5.2-1) unstable; urgency=low
+
+ * New upstream release (Closes: #716732)
+ - Makes patch Added-missing-include-fix-FTBFS-on-gcc-4.7 obsolete
+ - Makes patch fix_qreal_vs_double.patch obsolete
+ - Fixes segmentation fault in point match (Closes: #695858)
+ - Fixes segmentation fault when exporting certain curves (Closes: #725165)
+ * Minimum debian/rules files now using dh
+ * Updated to standards version 3.9.5
+ * Updated to debhelper 9
+ * Added patch from upstream allowing strict aliasing
+ * Fixed lintian warnings in dep-5 copyright formatting
+ * Added keywords to desktop file
+ * Added Vcs-git and Vcs-Browser fields to debian/control
+ * removed shlibs:Depends dependency for engauge-doc
+
+ -- Tobias Winchen Thu, 10 Oct 2013 20:21:57 +0200
+
engauge-digitizer (5.0-3) unstable; urgency=low
* Added patch including mising header. Closes: #672068 (FTBFS with gcc-4.7)
diff -Nru engauge-digitizer-5.0/debian/compat engauge-digitizer-5.2/debian/compat
--- engauge-digitizer-5.0/debian/compat 2012-01-01 16:45:13.000000000 +0000
+++ engauge-digitizer-5.2/debian/compat 2013-11-12 20:12:26.000000000 +0000
@@ -1 +1 @@
-7
+9
diff -Nru engauge-digitizer-5.0/debian/control engauge-digitizer-5.2/debian/control
--- engauge-digitizer-5.0/debian/control 2012-03-19 13:10:08.000000000 +0000
+++ engauge-digitizer-5.2/debian/control 2013-11-12 21:06:06.000000000 +0000
@@ -2,8 +2,10 @@
Section: science
Priority: optional
Maintainer: Tobias Winchen
-Build-Depends: debhelper (>= 7), libqt4-dev, libfftw3-dev
-Standards-Version: 3.9.3
+Build-Depends: dpkg-dev (>= 1.16.1~), debhelper (>= 9), libqt4-dev, libfftw3-dev
+Standards-Version: 3.9.5
+Vcs-git: git://github.com/winchen/engauge_debian.git
+Vcs-Browser: https://github.com/winchen/engauge_debian
Homepage: http://digitizer.sourceforge.net/
Package: engauge-digitizer
@@ -28,7 +30,7 @@
Package: engauge-digitizer-doc
Section: doc
Architecture: all
-Depends: ${shlibs:Depends}, ${misc:Depends}
+Depends: ${misc:Depends}
Recommends: engauge-digitizer
Description: engauge-digitizer user manual and tutorial
engauge-digitizer converts an image file showing a graph or map into numbers.
diff -Nru engauge-digitizer-5.0/debian/copyright engauge-digitizer-5.2/debian/copyright
--- engauge-digitizer-5.0/debian/copyright 2012-03-19 13:03:13.000000000 +0000
+++ engauge-digitizer-5.2/debian/copyright 2013-11-09 09:29:57.000000000 +0000
@@ -3,17 +3,20 @@
Upstream-Contact: Mark Mitchell
Source: http://sf.net/digitizer/
+Files: *
Copyright: 2002-2012, Mark Mitchell
- 2011-2012, Tobias Richter
- 2011-2012, Tobias Winchen
+ 2011-2012, Tobias Richter
+ 2011-2012, Tobias Winchen
License: GPL-2+
- On Debian systems, the complete text of the GNU General
- Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'.
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'.
Files: debian/*
Copyright: 2006-2011 Tobias Stefan Richter
- 2011-2012, Tobias Winchen
+ 2011-2012, Tobias Winchen
License: GPL-2+
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'.
Files: src/helpwindow.h src/helpwindow.cpp
Copyright: 1992-2000 Trolltech AS
diff -Nru engauge-digitizer-5.0/debian/engauge-digitizer-doc.install engauge-digitizer-5.2/debian/engauge-digitizer-doc.install
--- engauge-digitizer-5.0/debian/engauge-digitizer-doc.install 1970-01-01 00:00:00.000000000 +0000
+++ engauge-digitizer-5.2/debian/engauge-digitizer-doc.install 2013-10-10 19:48:10.000000000 +0000
@@ -0,0 +1 @@
+usermanual/* usr/share/doc/engauge-digitizer-doc/html/
diff -Nru engauge-digitizer-5.0/debian/engauge-digitizer.desktop engauge-digitizer-5.2/debian/engauge-digitizer.desktop
--- engauge-digitizer-5.0/debian/engauge-digitizer.desktop 2012-01-29 12:35:54.000000000 +0000
+++ engauge-digitizer-5.2/debian/engauge-digitizer.desktop 2013-10-10 20:40:22.000000000 +0000
@@ -7,3 +7,4 @@
MimeType=text/plain
Categories=Education;Science;DataVisualization
Icon=/usr/share/pixmaps/engauge-digitizer.xpm
+Keywords=Analog-Digital Converter;
diff -Nru engauge-digitizer-5.0/debian/patches/Added-missing-include-fix-FTBFS-on-gcc-4.7.patch engauge-digitizer-5.2/debian/patches/Added-missing-include-fix-FTBFS-on-gcc-4.7.patch
--- engauge-digitizer-5.0/debian/patches/Added-missing-include-fix-FTBFS-on-gcc-4.7.patch 2012-05-17 10:19:22.000000000 +0000
+++ engauge-digitizer-5.2/debian/patches/Added-missing-include-fix-FTBFS-on-gcc-4.7.patch 1970-01-01 00:00:00.000000000 +0000
@@ -1,19 +0,0 @@
-Description: Add missing header include
- In gcc 4.7, many of the standard C++ library include files have been
- edited to no longer include to remove namespace pollution.
- The missing include is added to fix FTBFS with gcc 4.7.
-Author: Tobias Winchen
-Last-Update: 2012-05-17
-
-
---- a/src/pointmatch.cpp
-+++ b/src/pointmatch.cpp
-@@ -25,6 +25,7 @@
-
- #include
- #include
-+#include
-
- #include "main.h"
- #include "mmsubs.h"
-
diff -Nru engauge-digitizer-5.0/debian/patches/Use-buffer-variable-to-allow-strict-aliasing.patch engauge-digitizer-5.2/debian/patches/Use-buffer-variable-to-allow-strict-aliasing.patch
--- engauge-digitizer-5.0/debian/patches/Use-buffer-variable-to-allow-strict-aliasing.patch 1970-01-01 00:00:00.000000000 +0000
+++ engauge-digitizer-5.2/debian/patches/Use-buffer-variable-to-allow-strict-aliasing.patch 2013-11-12 21:24:58.000000000 +0000
@@ -0,0 +1,487 @@
+Description: Use buffer variable to allow strict aliasing
+ The compiler warned "dereferencing type-punned pointer will break
+ strict- aliasing rules" as at several points in the (de)serialization
+ data was streamed into variables via casting to reference. Now a buffer
+ variable is used instead. The patch is only part of the upstream
+ commit listed as origin.
+Origin: http://sourceforge.net/p/digitizer/code/ci/463a89ff29bff06bd2e2349cc3964e261846864d/
+Reviewed-By: Tobias Winchen , Mark Mitchell
+Last-Update: 2013-11-12
+
+diff --git a/src/digitdoc.cpp b/src/digitdoc.cpp
+index 20d9f5b..97ee1c6 100644
+--- a/src/digitdoc.cpp
++++ b/src/digitdoc.cpp
+@@ -349,6 +349,8 @@ bool DigitDoc::supportedVersionNumber(QString versionNumber)
+
+ bool DigitDoc::openDocument(const QString &filename)
+ {
++ Q_INT32 extractionQInt32; // temp value
++
+ QFile f(filename);
+ if (!f.open (QIODevice::ReadOnly))
+ return false;
+@@ -356,7 +358,8 @@ bool DigitDoc::openDocument(const QString &filename)
+ QDataStream str (&f);
+
+ Q_INT32 magicNumber;
+- str >> (Q_INT32 &) magicNumber;
++ str >> extractionQInt32;
++ magicNumber = extractionQInt32;
+
+ if (magicNumber != MagicNumber)
+ {
+@@ -382,7 +385,8 @@ bool DigitDoc::openDocument(const QString &filename)
+ return false;
+ }
+
+- str >> (Q_INT32 &) m_backgroundSelection;
++ str >> extractionQInt32;
++ m_backgroundSelection = (BackgroundSelection) extractionQInt32;
+ str >> m_originalPixmap;
+
+ str >> m_title;
+@@ -390,32 +394,47 @@ bool DigitDoc::openDocument(const QString &filename)
+ str >> m_curveCmbText;
+ str >> m_measureCmbText;
+
+- str >> (Q_INT32 &) m_coordSettings.frame;
++ str >> extractionQInt32;
++ m_coordSettings.frame = (ReferenceFrame) extractionQInt32;
+ if (versionNumber < 3)
+ m_coordSettings.originRadius = 0.0;
+ else
+ str >> (double &) m_coordSettings.originRadius;
+- str >> (Q_INT32 &) m_coordSettings.thetaUnits;
+- str >> (Q_INT32 &) m_coordSettings.xThetaScale;
+- str >> (Q_INT32 &) m_coordSettings.yRScale;
+-
+- str >> (Q_INT32 &) m_exportSettings.delimiters;
+- str >> (Q_INT32 &) m_exportSettings.layout;
+- str >> (Q_INT32 &) m_exportSettings.pointsSelection;
+- str >> (Q_INT32 &) m_exportSettings.header;
++ str >> extractionQInt32;
++ m_coordSettings.thetaUnits = (ThetaUnits) extractionQInt32;
++ str >> extractionQInt32;
++ m_coordSettings.xThetaScale = (Scale) extractionQInt32;
++ str >> extractionQInt32;
++ m_coordSettings.yRScale = (Scale) extractionQInt32;
++
++ str >> extractionQInt32;
++ m_exportSettings.delimiters = (ExportDelimiters) extractionQInt32;
++ str >> extractionQInt32;
++ m_exportSettings.layout = (ExportLayout) extractionQInt32;
++ str >> extractionQInt32;
++ m_exportSettings.pointsSelection = (ExportPointsSelection) extractionQInt32;
++ str >> extractionQInt32;
++ m_exportSettings.header = (ExportHeader) extractionQInt32;
+ if (versionNumber >= 5.2) {
+ str >> m_exportSettings.xLabel;
+ str >> m_exportSettings.thetaLabel;
+ }
+
+- str >> (Q_INT32 &) m_gridRemovalSettings.removeThinLines;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.removeThinLines = extractionQInt32;
+ str >> (double &) m_gridRemovalSettings.thinThickness;
+- str >> (Q_INT32 &) m_gridRemovalSettings.removeGridlines;
+- str >> (Q_INT32 &) m_gridRemovalSettings.gridMesh.initialized;
+- str >> (Q_INT32 &) m_gridRemovalSettings.gridMesh.countX;
+- str >> (Q_INT32 &) m_gridRemovalSettings.gridMesh.countY;
+- str >> (Q_INT32 &) m_gridRemovalSettings.gridMesh.gridSetX;
+- str >> (Q_INT32 &) m_gridRemovalSettings.gridMesh.gridSetY;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.removeGridlines = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.gridMesh.initialized = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.gridMesh.countX = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.gridMesh.countY = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.gridMesh.gridSetX = (GridSet) extractionQInt32;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.gridMesh.gridSetY = (GridSet) extractionQInt32;
+ str >> (double &) m_gridRemovalSettings.gridMesh.startX;
+ str >> (double &) m_gridRemovalSettings.gridMesh.startY;
+ str >> (double &) m_gridRemovalSettings.gridMesh.stepX;
+@@ -423,7 +442,8 @@ bool DigitDoc::openDocument(const QString &filename)
+ str >> (double &) m_gridRemovalSettings.gridMesh.stopX;
+ str >> (double &) m_gridRemovalSettings.gridMesh.stopY;
+ str >> (double &) m_gridRemovalSettings.gridDistance;
+- str >> (Q_INT32 &) m_gridRemovalSettings.removeColor;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.removeColor = extractionQInt32;
+
+ if (versionNumber >= 5)
+ {
+@@ -436,15 +456,22 @@ bool DigitDoc::openDocument(const QString &filename)
+ m_gridRemovalSettings.color.setRgb( p );
+ }
+
+- str >> (Q_INT32 &) m_gridRemovalSettings.foregroundThresholdLow;
+- str >> (Q_INT32 &) m_gridRemovalSettings.foregroundThresholdHigh;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.foregroundThresholdLow = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridRemovalSettings.foregroundThresholdHigh = extractionQInt32;
+ str >> (double &) m_gridRemovalSettings.gapSeparation;
+
+- str >> (Q_INT32 &) m_gridDisplaySettings.initialized;
+- str >> (Q_INT32 &) m_gridDisplaySettings.countX;
+- str >> (Q_INT32 &) m_gridDisplaySettings.countY;
+- str >> (Q_INT32 &) m_gridDisplaySettings.gridSetX;
+- str >> (Q_INT32 &) m_gridDisplaySettings.gridSetY;
++ str >> extractionQInt32;
++ m_gridDisplaySettings.initialized = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridDisplaySettings.countX = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridDisplaySettings.countY = extractionQInt32;
++ str >> extractionQInt32;
++ m_gridDisplaySettings.gridSetX = (GridSet) extractionQInt32;
++ str >> extractionQInt32;
++ m_gridDisplaySettings.gridSetY = (GridSet) extractionQInt32;
+ str >> (double &) m_gridDisplaySettings.startX;
+ str >> (double &) m_gridDisplaySettings.startY;
+ str >> (double &) m_gridDisplaySettings.stepX;
+@@ -452,39 +479,62 @@ bool DigitDoc::openDocument(const QString &filename)
+ str >> (double &) m_gridDisplaySettings.stopX;
+ str >> (double &) m_gridDisplaySettings.stopY;
+
+- str >> (Q_INT32 &) m_segmentSettings.minPoints;
+- str >> (Q_INT32 &) m_segmentSettings.pointSeparation;
+- str >> (Q_INT32 &) m_segmentSettings.lineSize;
+- str >> (Q_INT32 &) m_segmentSettings.lineColor;
+-
+- str >> (Q_INT32 &) m_pointMatchSettings.pointSeparation;
+- str >> (Q_INT32 &) m_pointMatchSettings.pointSize;
+- str >> (Q_INT32 &) m_pointMatchSettings.acceptedColor;
+- str >> (Q_INT32 &) m_pointMatchSettings.rejectedColor;
++ str >> extractionQInt32;
++ m_segmentSettings.minPoints = extractionQInt32;
++ str >> extractionQInt32;
++ m_segmentSettings.pointSeparation = extractionQInt32;
++ str >> extractionQInt32;
++ m_segmentSettings.lineSize = (LineSize) extractionQInt32;
++ str >> extractionQInt32;
++ m_segmentSettings.lineColor = (Color) extractionQInt32;
++
++ str >> extractionQInt32;
++ m_pointMatchSettings.pointSeparation = extractionQInt32;
++ str >> extractionQInt32;
++ m_pointMatchSettings.pointSize = extractionQInt32;
++ str >> extractionQInt32;
++ m_pointMatchSettings.acceptedColor = (Color) extractionQInt32;
++ str >> extractionQInt32;
++ m_pointMatchSettings.rejectedColor = (Color) extractionQInt32;
+ if (versionNumber < 4)
+ {
+ // synchronize with DefaultSettings::initializeSettingsToFactoryDefaults
+ m_pointMatchSettings.candidateColor = DigitBlue;
+ }
+ else
+- str >> (Q_INT32 &) m_pointMatchSettings.candidateColor;
+-
+- str >> (Q_INT32 &) m_discretizeSettings.discretizeMethod;
+- str >> (Q_INT32 &) m_discretizeSettings.intensityThresholdLow;
+- str >> (Q_INT32 &) m_discretizeSettings.intensityThresholdHigh;
+- str >> (Q_INT32 &) m_discretizeSettings.foregroundThresholdLow;
+- str >> (Q_INT32 &) m_discretizeSettings.foregroundThresholdHigh;
+- str >> (Q_INT32 &) m_discretizeSettings.hueThresholdLow;
+- str >> (Q_INT32 &) m_discretizeSettings.hueThresholdHigh;
+- str >> (Q_INT32 &) m_discretizeSettings.saturationThresholdLow;
+- str >> (Q_INT32 &) m_discretizeSettings.saturationThresholdHigh;
+- str >> (Q_INT32 &) m_discretizeSettings.valueThresholdLow;
+- str >> (Q_INT32 &) m_discretizeSettings.valueThresholdHigh;
++ {
++ str >> extractionQInt32;
++ m_pointMatchSettings.candidateColor = (Color) extractionQInt32;
++ }
++
++ str >> extractionQInt32;
++ m_discretizeSettings.discretizeMethod = (DiscretizeMethod) extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.intensityThresholdLow = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.intensityThresholdHigh = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.foregroundThresholdLow = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.foregroundThresholdHigh = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.hueThresholdLow = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.hueThresholdHigh = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.saturationThresholdLow = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.saturationThresholdHigh = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.valueThresholdLow = extractionQInt32;
++ str >> extractionQInt32;
++ m_discretizeSettings.valueThresholdHigh = extractionQInt32;
+
+ ASSERT_ENGAUGE(m_pointSets != 0);
+ m_pointSets->serializeRead(str, canvas());
+
+- str >> (Q_INT32 &) magicNumber;
++ str >> extractionQInt32;
++ magicNumber = extractionQInt32;
+
+ if (magicNumber != MagicNumber)
+ {
+@@ -523,15 +573,15 @@ bool DigitDoc::saveDocument(const QString &filename)
+ QDataStream str (&f);
+
+ #ifdef __SUNPRO_CC
+- str << (Q_INT32 &) MagicNumber;
++ str << (Q_INT32) MagicNumber;
+ #else
+- str << (const Q_INT32 &) MagicNumber;
++ str << (const Q_INT32) MagicNumber;
+ #endif
+
+ str << VersionNumber.toDouble(); // numeric value is ambiguous (2.1 or 2.10?)
+ str << VersionNumber;
+
+- str << (Q_INT32 &) m_backgroundSelection;
++ str << (Q_INT32) m_backgroundSelection;
+ str << m_originalPixmap;
+
+ str << m_title;
+@@ -539,82 +589,82 @@ bool DigitDoc::saveDocument(const QString &filename)
+ str << m_curveCmbText;
+ str << m_measureCmbText;
+
+- str << (Q_INT32 &) m_coordSettings.frame;
+- str << (double &) m_coordSettings.originRadius;
+- str << (Q_INT32 &) m_coordSettings.thetaUnits;
+- str << (Q_INT32 &) m_coordSettings.xThetaScale;
+- str << (Q_INT32 &) m_coordSettings.yRScale;
++ str << (Q_INT32) m_coordSettings.frame;
++ str << (double) m_coordSettings.originRadius;
++ str << (Q_INT32) m_coordSettings.thetaUnits;
++ str << (Q_INT32) m_coordSettings.xThetaScale;
++ str << (Q_INT32) m_coordSettings.yRScale;
+
+- str << (Q_INT32 &) m_exportSettings.delimiters;
+- str << (Q_INT32 &) m_exportSettings.layout;
+- str << (Q_INT32 &) m_exportSettings.pointsSelection;
+- str << (Q_INT32 &) m_exportSettings.header;
++ str << (Q_INT32) m_exportSettings.delimiters;
++ str << (Q_INT32) m_exportSettings.layout;
++ str << (Q_INT32) m_exportSettings.pointsSelection;
++ str << (Q_INT32) m_exportSettings.header;
+ str << m_exportSettings.xLabel;
+ str << m_exportSettings.thetaLabel;
+
+- str << (Q_INT32 &) m_gridRemovalSettings.removeThinLines;
+- str << (double &) m_gridRemovalSettings.thinThickness;
+- str << (Q_INT32 &) m_gridRemovalSettings.removeGridlines;
+- str << (Q_INT32 &) m_gridRemovalSettings.gridMesh.initialized;
+- str << (Q_INT32 &) m_gridRemovalSettings.gridMesh.countX;
+- str << (Q_INT32 &) m_gridRemovalSettings.gridMesh.countY;
+- str << (Q_INT32 &) m_gridRemovalSettings.gridMesh.gridSetX;
+- str << (Q_INT32 &) m_gridRemovalSettings.gridMesh.gridSetY;
+- str << (double &) m_gridRemovalSettings.gridMesh.startX;
+- str << (double &) m_gridRemovalSettings.gridMesh.startY;
+- str << (double &) m_gridRemovalSettings.gridMesh.stepX;
+- str << (double &) m_gridRemovalSettings.gridMesh.stepY;
+- str << (double &) m_gridRemovalSettings.gridMesh.stopX;
+- str << (double &) m_gridRemovalSettings.gridMesh.stopY;
+- str << (double &) m_gridRemovalSettings.gridDistance;
+- str << (Q_INT32 &) m_gridRemovalSettings.removeColor;
++ str << (Q_INT32) m_gridRemovalSettings.removeThinLines;
++ str << (double) m_gridRemovalSettings.thinThickness;
++ str << (Q_INT32) m_gridRemovalSettings.removeGridlines;
++ str << (Q_INT32) m_gridRemovalSettings.gridMesh.initialized;
++ str << (Q_INT32) m_gridRemovalSettings.gridMesh.countX;
++ str << (Q_INT32) m_gridRemovalSettings.gridMesh.countY;
++ str << (Q_INT32) m_gridRemovalSettings.gridMesh.gridSetX;
++ str << (Q_INT32) m_gridRemovalSettings.gridMesh.gridSetY;
++ str << (double) m_gridRemovalSettings.gridMesh.startX;
++ str << (double) m_gridRemovalSettings.gridMesh.startY;
++ str << (double) m_gridRemovalSettings.gridMesh.stepX;
++ str << (double) m_gridRemovalSettings.gridMesh.stepY;
++ str << (double) m_gridRemovalSettings.gridMesh.stopX;
++ str << (double) m_gridRemovalSettings.gridMesh.stopY;
++ str << (double) m_gridRemovalSettings.gridDistance;
++ str << (Q_INT32) m_gridRemovalSettings.removeColor;
+ str << m_gridRemovalSettings.color;
+- str << (Q_INT32 &) m_gridRemovalSettings.foregroundThresholdLow;
+- str << (Q_INT32 &) m_gridRemovalSettings.foregroundThresholdHigh;
+- str << (double &) m_gridRemovalSettings.gapSeparation;
+-
+- str << (Q_INT32 &) m_gridDisplaySettings.initialized;
+- str << (Q_INT32 &) m_gridDisplaySettings.countX;
+- str << (Q_INT32 &) m_gridDisplaySettings.countY;
+- str << (Q_INT32 &) m_gridDisplaySettings.gridSetX;
+- str << (Q_INT32 &) m_gridDisplaySettings.gridSetY;
+- str << (double &) m_gridDisplaySettings.startX;
+- str << (double &) m_gridDisplaySettings.startY;
+- str << (double &) m_gridDisplaySettings.stepX;
+- str << (double &) m_gridDisplaySettings.stepY;
+- str << (double &) m_gridDisplaySettings.stopX;
+- str << (double &) m_gridDisplaySettings.stopY;
+-
+- str << (Q_INT32 &) m_segmentSettings.minPoints;
+- str << (Q_INT32 &) m_segmentSettings.pointSeparation;
+- str << (Q_INT32 &) m_segmentSettings.lineSize;
+- str << (Q_INT32 &) m_segmentSettings.lineColor;
+-
+- str << (Q_INT32 &) m_pointMatchSettings.pointSeparation;
+- str << (Q_INT32 &) m_pointMatchSettings.pointSize;
+- str << (Q_INT32 &) m_pointMatchSettings.acceptedColor;
+- str << (Q_INT32 &) m_pointMatchSettings.rejectedColor;
+- str << (Q_INT32 &) m_pointMatchSettings.candidateColor;
++ str << (Q_INT32) m_gridRemovalSettings.foregroundThresholdLow;
++ str << (Q_INT32) m_gridRemovalSettings.foregroundThresholdHigh;
++ str << (double) m_gridRemovalSettings.gapSeparation;
++
++ str << (Q_INT32) m_gridDisplaySettings.initialized;
++ str << (Q_INT32) m_gridDisplaySettings.countX;
++ str << (Q_INT32) m_gridDisplaySettings.countY;
++ str << (Q_INT32) m_gridDisplaySettings.gridSetX;
++ str << (Q_INT32) m_gridDisplaySettings.gridSetY;
++ str << (double) m_gridDisplaySettings.startX;
++ str << (double) m_gridDisplaySettings.startY;
++ str << (double) m_gridDisplaySettings.stepX;
++ str << (double) m_gridDisplaySettings.stepY;
++ str << (double) m_gridDisplaySettings.stopX;
++ str << (double) m_gridDisplaySettings.stopY;
++
++ str << (Q_INT32) m_segmentSettings.minPoints;
++ str << (Q_INT32) m_segmentSettings.pointSeparation;
++ str << (Q_INT32) m_segmentSettings.lineSize;
++ str << (Q_INT32) m_segmentSettings.lineColor;
++
++ str << (Q_INT32) m_pointMatchSettings.pointSeparation;
++ str << (Q_INT32) m_pointMatchSettings.pointSize;
++ str << (Q_INT32) m_pointMatchSettings.acceptedColor;
++ str << (Q_INT32) m_pointMatchSettings.rejectedColor;
++ str << (Q_INT32) m_pointMatchSettings.candidateColor;
+
+- str << (Q_INT32 &) m_discretizeSettings.discretizeMethod;
+- str << (Q_INT32 &) m_discretizeSettings.intensityThresholdLow;
+- str << (Q_INT32 &) m_discretizeSettings.intensityThresholdHigh;
+- str << (Q_INT32 &) m_discretizeSettings.foregroundThresholdLow;
+- str << (Q_INT32 &) m_discretizeSettings.foregroundThresholdHigh;
+- str << (Q_INT32 &) m_discretizeSettings.hueThresholdLow;
+- str << (Q_INT32 &) m_discretizeSettings.hueThresholdHigh;
+- str << (Q_INT32 &) m_discretizeSettings.saturationThresholdLow;
+- str << (Q_INT32 &) m_discretizeSettings.saturationThresholdHigh;
+- str << (Q_INT32 &) m_discretizeSettings.valueThresholdLow;
+- str << (Q_INT32 &) m_discretizeSettings.valueThresholdHigh;
++ str << (Q_INT32) m_discretizeSettings.discretizeMethod;
++ str << (Q_INT32) m_discretizeSettings.intensityThresholdLow;
++ str << (Q_INT32) m_discretizeSettings.intensityThresholdHigh;
++ str << (Q_INT32) m_discretizeSettings.foregroundThresholdLow;
++ str << (Q_INT32) m_discretizeSettings.foregroundThresholdHigh;
++ str << (Q_INT32) m_discretizeSettings.hueThresholdLow;
++ str << (Q_INT32) m_discretizeSettings.hueThresholdHigh;
++ str << (Q_INT32) m_discretizeSettings.saturationThresholdLow;
++ str << (Q_INT32) m_discretizeSettings.saturationThresholdHigh;
++ str << (Q_INT32) m_discretizeSettings.valueThresholdLow;
++ str << (Q_INT32) m_discretizeSettings.valueThresholdHigh;
+
+ ASSERT_ENGAUGE(m_pointSets != 0);
+ m_pointSets->serializeWrite(str);
+
+ #ifdef __SUNPRO_CC
+- str << (Q_INT32 &) MagicNumber;
++ str << (Q_INT32) MagicNumber;
+ #else
+- str << (const Q_INT32 &) MagicNumber;
++ str << (const Q_INT32) MagicNumber;
+ #endif
+
+ f.close();
+diff --git a/src/pointset.cpp b/src/pointset.cpp
+index 66f38f9..5a5a1c6 100644
+--- a/src/pointset.cpp
++++ b/src/pointset.cpp
+@@ -25,6 +25,7 @@
+ #include
+ #include
+
++#include
+ #include
+
+ #include "pointset.h"
+@@ -536,7 +537,7 @@ bool PointSet::pointSetScreenLimits(double *xMin, double *xMax, double *yMin, do
+ }
+
+ void PointSet::mergeUniqueXValues(QList* list,
+- int xPrecision)
++ int /* xPrecision */)
+ {
+ ASSERT_ENGAUGE(list != 0);
+
+@@ -694,16 +695,16 @@ bool PointSet::adjustForLogScale(Scale scale, double* pointXY)
+ void PointSet::serializeWrite(QDataStream &s) const
+ {
+ s << m_name;
+- s << (Q_INT32 &) m_style.pointShape;
+- s << (Q_INT32 &) m_style.pointSize;
+- s << (Q_INT32 &) m_style.pointLineSize;
+- s << (Q_INT32 &) m_style.pointLineColor;
+- s << (Q_INT32 &) m_style.pointInColor;
+- s << (Q_INT32 &) m_style.lineSize;
+- s << (Q_INT32 &) m_style.lineColor;
+- s << (Q_INT32 &) m_style.lineConnectAs;
+-
+- s << (const Q_INT32 &) m_points.count();
++ s << (Q_INT32) m_style.pointShape;
++ s << (Q_INT32) m_style.pointSize;
++ s << (Q_INT32) m_style.pointLineSize;
++ s << (Q_INT32) m_style.pointLineColor;
++ s << (Q_INT32) m_style.pointInColor;
++ s << (Q_INT32) m_style.lineSize;
++ s << (Q_INT32) m_style.lineColor;
++ s << (Q_INT32) m_style.lineConnectAs;
++
++ s << (Q_INT32) m_points.count();
+ PointListIterator itr(m_points);
+ Point* point;
+ while ((point = itr.current()) != 0)
+@@ -720,18 +721,28 @@ void PointSet::serializeRead(QDataStream &s, Q3Canvas* canvas)
+ {
+ ASSERT_ENGAUGE(canvas != 0);
+
++ Q_INT32 extractionQInt32;
++
+ s >> m_name;
+- s >> (Q_INT32 &) m_style.pointShape;
+- s >> (Q_INT32 &) m_style.pointSize;
+- s >> (Q_INT32 &) m_style.pointLineSize;
+- s >> (Q_INT32 &) m_style.pointLineColor;
+- s >> (Q_INT32 &) m_style.pointInColor;
+- s >> (Q_INT32 &) m_style.lineSize;
+- s >> (Q_INT32 &) m_style.lineColor;
+- s >> (Q_INT32 &) m_style.lineConnectAs;
+-
+- int count;
+- s >> (Q_INT32 &) count;
++ s >> extractionQInt32;
++ m_style.pointShape = (PointShape) extractionQInt32;
++ s >> extractionQInt32;
++ m_style.pointSize = (PointSize) extractionQInt32;
++ s >> extractionQInt32;
++ m_style.pointLineSize = (PointLineSize) extractionQInt32;
++ s >> extractionQInt32;
++ m_style.pointLineColor = (Color) extractionQInt32;
++ s >> extractionQInt32;
++ m_style.pointInColor = (Color) extractionQInt32;
++ s >> extractionQInt32;
++ m_style.lineSize = (LineSize) extractionQInt32;
++ s >> extractionQInt32;
++ m_style.lineColor = (Color) extractionQInt32;
++ s >> extractionQInt32;
++ m_style.lineConnectAs = (LineConnectAs) extractionQInt32;
++
++ s >> extractionQInt32;
++ int count = extractionQInt32;
+ QList updateRectList;
+ for (int i = 0; i < count; i++)
+ {
diff -Nru engauge-digitizer-5.0/debian/patches/fix_qreal_vs_double.patch engauge-digitizer-5.2/debian/patches/fix_qreal_vs_double.patch
--- engauge-digitizer-5.0/debian/patches/fix_qreal_vs_double.patch 2012-05-17 09:40:34.000000000 +0000
+++ engauge-digitizer-5.2/debian/patches/fix_qreal_vs_double.patch 1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-Description: Fix issues with double VS qreal
- The code was attempting to pass double* to a function expecting qreal*
- resulting in compile errors on arm (where qreal is defined as float)
- this patch changes a couple of variable definitions so the types match
- up.
-Origin: http://bugs.debian.org/656943
-Author: Peter Green
-Reviewed-By: Tobias Winchen
-Last-Update: 2012-03-21
-
-
---- engauge-digitizer-5.0.orig/src/digitview.cpp
-+++ engauge-digitizer-5.0/src/digitview.cpp
-@@ -288,7 +288,7 @@ void DigitView::keyReleaseEvent(QKeyEven
-
- QPoint DigitView::convertZoom(QPoint p, bool to)
- {
-- double x, y;
-+ qreal x, y;
- if (to)
- worldMatrix().map((double) p.x(), (double) p.y(), &x, &y);
- else
-@@ -299,7 +299,7 @@ QPoint DigitView::convertZoom(QPoint p,
-
- QRect DigitView::convertZoom(QRect r, bool to)
- {
-- double xTL, yTL, xBR, yBR;
-+ qreal xTL, yTL, xBR, yBR;
- if (to)
- {
- worldMatrix().map((double) r.left(), (double) r.top(), &xTL, &yTL);
diff -Nru engauge-digitizer-5.0/debian/patches/series engauge-digitizer-5.2/debian/patches/series
--- engauge-digitizer-5.0/debian/patches/series 2012-05-17 09:46:04.000000000 +0000
+++ engauge-digitizer-5.2/debian/patches/series 2013-11-12 20:42:22.000000000 +0000
@@ -1,2 +1 @@
-fix_qreal_vs_double.patch
-Added-missing-include-fix-FTBFS-on-gcc-4.7.patch
+Use-buffer-variable-to-allow-strict-aliasing.patch
diff -Nru engauge-digitizer-5.0/debian/rules engauge-digitizer-5.2/debian/rules
--- engauge-digitizer-5.0/debian/rules 2012-01-01 16:45:13.000000000 +0000
+++ engauge-digitizer-5.2/debian/rules 2013-11-10 12:08:23.000000000 +0000
@@ -1,84 +1,13 @@
#!/usr/bin/make -f
# -*- makefile -*-
+DPKG_EXPORT_BUILDFLAGS = 1
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-export DH_ALWAYS_EXCLUDE=CVS:.git:.swp
+%:
+ dh $@ --parallel
-CFLAGS = -Wall -g
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
- CFLAGS += -O0
-else
- CFLAGS += -O2
-endif
-
-configure: configure-stamp
-configure-stamp:
- dh_testdir
- qmake 'DEFINES+=DEBIAN_PACKAGE' digitizer.pro
- touch configure-stamp
-
-build: build-arch build-indep
-build-arch: build-stamp
-build-indep: build-stamp
-
-build-stamp: configure-stamp
- dh_testdir
- $(MAKE)
- touch $@
-
-clean: configure-stamp
- dh_testdir
- dh_testroot
- rm -f build-stamp configure-stamp
- $(MAKE) clean
- -rm Makefile
- -rm bin/engauge
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_prep
- dh_installdirs
+override_dh_install:
+ mkdir -p debian/engauge-digitizer/usr/share/pixmaps/
+ install -m644 src/img/bannerapp.xpm debian/engauge-digitizer/usr/share/pixmaps/engauge-digitizer.xpm
dh_install
-# Build architecture-independent files here.
-binary-indep: build install
- dh_testdir -i
- dh_testroot -i
- dh_installchangelogs -i
- dh_installdocs -i
- dh_installdirs -i usr/share/doc/engauge-digitizer-doc/html
- install -m644 $$( find usermanual/* -prune -type f -print ) debian/engauge-digitizer-doc/usr/share/doc/engauge-digitizer-doc/html
- dh_link -i
- dh_compress -i -X.js
- dh_fixperms -i
- dh_installdeb -i
- dh_gencontrol -i
- dh_md5sums -i
- dh_builddeb -i
-
-# Build architecture-dependent files here.
-binary-arch: build install
- dh_testdir -a
- dh_testroot -a
- dh_installchangelogs -a
- dh_installdocs -a
- dh_installdirs -a usr/share/pixmaps
- install -m644 src/img/bannerapp.xpm debian/engauge-digitizer/usr/share/pixmaps/engauge-digitizer.xpm
- dh_installmenu -a
- dh_installman -a
- dh_link -a
- dh_strip -a
- dh_compress -a
- dh_fixperms -a
- dh_installdeb -a
- dh_shlibdeps -a
- dh_gencontrol -a
- dh_md5sums -a
- dh_builddeb -a
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
diff -Nru engauge-digitizer-5.0/digitizer.pro engauge-digitizer-5.2/digitizer.pro
--- engauge-digitizer-5.0/digitizer.pro 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/digitizer.pro 2013-10-10 18:55:48.000000000 +0000
@@ -20,8 +20,8 @@
}
win32 {
DEFINES += WIN32
-INCLUDEPATH = $$(FFTW_HOME)/api
-LIBS = -Lbin -llibfftw3-3
+INCLUDEPATH = $$(FFTW_HOME)/include
+LIBS += -L$$(FFTW_HOME)/lib -lfftw3
OBJECTS_DIR = src/.objs
}
HEADERS = src/axispointdlg.h \
@@ -127,5 +127,6 @@
# tr is turkish
TRANSLATIONS = engauge_pt_br.ts \
engauge_tr.ts
+MOC_DIR = src/.moc
#qt3support was inserted by qt3to4. qt3support in turn requires network
QT += qt3support network
diff -Nru engauge-digitizer-5.0/release_linux.pl engauge-digitizer-5.2/release_linux.pl
--- engauge-digitizer-5.0/release_linux.pl 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/release_linux.pl 1970-01-01 00:00:00.000000000 +0000
@@ -1,101 +0,0 @@
-#!/usr/bin/perl
-
-# this script builds Engauge Digitizer binary release for linux platforms
-# usage: release_linux.pl version_number [build_directory]
-# author: mark mitchell
-
-my($versionPrefix);
-my($versionSuffix);
-# release directory $releaseDir must in current directory so the release
-# directory ends up in the user's current directory when he/she untars.
-# this means no '..' or slashes!
-my($releaseDir) = "engauge";
-my($tarball);
-
-# parse optional command line argument to override directory defaults
-my($numArgs) = $#ARGV + 1;
-my($okLine) = ((1 <= $numArgs) && ($numArgs <= 3));
-if ($okLine) {
- @fields = split(/\./, $ARGV[0]);
- $versionPrefix = $fields [0];
- $versionSuffix = $fields [1];
- $tarball = "../digit-exe-linux-$versionPrefix\_$versionSuffix.tar.gz";
-
- $okLine = ((isNumber($versionPrefix) == 1) &&
- (isNumber($versionSuffix) == 1));
-
- if ($numArgs > 1) {
- $releaseDir = $ARGV[1];
- }
-}
-if ((index($releaseDir, '..') >=0) || (index($releaseDir, '/') >= 0)) {
- print "Release directory must be in the local directory!\n";
- exit;
-}
-if (! $okLine) {
- print "Usage: release_linux.pl version_number [build_directory]\n";
- exit;
-}
-print "\nVersion number: $versionPrefix.$versionSuffix\n";
-print "Building binary release in directory: $releaseDir\n";
-print "Writing to tarball: $tarball\n\n";
-
-# clean up release directory
-print "Deleting existing release directory...\n";
-if (-d $releaseDir) {
- use File::Find;
- finddepth (sub {
- if (-f $_) {
- unlink $_;
- } else {
- rmdir $_;
- }
- }, $releaseDir);
-}
-
-# make directory tree
-print "Recreating binary release directory...\n";
-mkdir "$releaseDir";
-mkdir "$releaseDir/samples";
-mkdir "$releaseDir/usermanual";
-
-# copy files. note that all wildcard copies are performed with file suffixes
-# so the CVS subdirectory is not copied, which fails and causes the script to die
-print "Copying files...\n";
-system("cp -v bin/engauge $releaseDir") == 0 or
- die "Failed to copy: $?";
-system("cp -v src/img/lo32-app-digitizer.png $releaseDir") == 0 or
- die "Failed to copy: $?";
-system("cp -v LICENSE $releaseDir") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.bmp $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.gif $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.jpg $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.png $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.gif $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.html $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.jpg $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.png $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-
-# we made it this far, so finish up by tarring up the binary release
-print "Writing binary tarball...\n";
-system("tar cvfz $tarball --exclude='*CVS*' --exclude='*cvs*' --exclude='*debian*' $releaseDir") == 0 or
- die "Failed to create tarball: $?";
-
-sub isNumber {
- # return 1 if input is a number, else return 0
- my $n = shift;
- local $noError = 1;
- local $^W = 1;
- local $SIG{__WARN__} = sub { $noError = undef };
- eval { my $x = $n + 0 };
- return ($noError);
-}
diff -Nru engauge-digitizer-5.0/release_linux_src.pl engauge-digitizer-5.2/release_linux_src.pl
--- engauge-digitizer-5.0/release_linux_src.pl 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/release_linux_src.pl 1970-01-01 00:00:00.000000000 +0000
@@ -1,78 +0,0 @@
-#!/usr/bin/perl
-
-# this script builds Engauge Digitizer source release for linux platforms
-# usage: release_linux_src.pl version_number [build_directory]
-# author: mark mitchell
-
-my($versionPrefix);
-my($versionSuffix);
-# release directory $releaseDir must in current directory so the release
-# directory ends up in the user's current directory when he/she untars.
-# this means no '..' or slashes!
-my($releaseDir) = "engauge";
-my($tarball);
-
-# parse optional command line argument to override directory defaults
-my($numArgs) = $#ARGV + 1;
-my($okLine) = ((1 <= $numArgs) && ($numArgs <= 3));
-if ($okLine) {
- @fields = split(/\./, $ARGV[0]);
- $versionPrefix = $fields [0];
- $versionSuffix = $fields [1];
- $tarball = "../digit-src-$versionPrefix\_$versionSuffix.tar.gz";
-
- $okLine = ((isNumber($versionPrefix) == 1) &&
- (isNumber($versionSuffix) == 1));
-
- if ($numArgs > 1) {
- $releaseDir = $ARGV[1];
- }
-}
-if ((index($releaseDir, '..') >=0) || (index($releaseDir, '/') >= 0)) {
- print "Release directory must be in the local directory!\n";
- exit;
-}
-if (! $okLine) {
- print "Usage: release_linux_src.pl version_number [build_directory]\n";
- exit;
-}
-print "\nVersion number: $versionPrefix.$versionSuffix\n";
-print "Building binary release in directory: $releaseDir\n";
-print "Writing to tarball: $tarball\n\n";
-
-# clean up release directory
-print "Deleting existing release directory...\n";
-if (-d $releaseDir) {
- use File::Find;
- finddepth (sub {
- if (-f $_) {
- unlink $_;
- } else {
- rmdir $_;
- }
- }, $releaseDir);
-}
-
-# make directory tree
-print "Recreating source release directory...\n";
-mkdir "$releaseDir";
-
-# copy files. do not add die to the copy since a warning is produced when recursive copy is
-# attempted
-print "Copying files...\n";
-system("cp -r * $releaseDir 2>/dev/null");
-
-# we made it this far, so finish up by tarring up the source release
-print "Writing source tarball...\n";
-system("tar cvfz $tarball --exclude='*CVS*' --exclude='*cvs*' --exclude='*debian*' $releaseDir") == 0 or
- die "Failed to create tarball: $?";
-
-sub isNumber {
- # return 1 if input is a number, else return 0
- my $n = shift;
- local $noError = 1;
- local $^W = 1;
- local $SIG{__WARN__} = sub { $noError = undef };
- eval { my $x = $n + 0 };
- return ($noError);
-}
diff -Nru engauge-digitizer-5.0/release_osx.pl engauge-digitizer-5.2/release_osx.pl
--- engauge-digitizer-5.0/release_osx.pl 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/release_osx.pl 1970-01-01 00:00:00.000000000 +0000
@@ -1,124 +0,0 @@
-#!/usr/bin/perl
-
-# this script builds Engauge Digitizer for osx platforms
-# usage: release_osx.pl version_number [build_directory] [qt_library_directory]
-# author: mark mitchell
-
-my($versionPrefix);
-my($versionSuffix);
-# release directory $releaseDir must in current directory so the release
-# directory ends up in the user's current directory when he/she untars.
-# this means no '..' or slashes!
-my($releaseDir) = "Engauge.app";
-my($qtLibDir) = "$ENV{QTDIR}/lib";
-my($tarball);
-
-# parse optional command line argument to override directory defaults
-my($numArgs) = $#ARGV + 1;
-my($okLine) = ((1 <= $numArgs) && ($numArgs <= 3));
-if ($okLine) {
- @fields = split(/\./, $ARGV[0]);
- $versionPrefix = $fields [0];
- $versionSuffix = $fields [1];
- $tarball = "../digit-exe-osx-$versionPrefix\_$versionSuffix.tar.gz";
-
- $okLine = ((isNumber($versionPrefix) == 1) &&
- (isNumber($versionSuffix) == 1));
-
- if ($numArgs > 1) {
- $releaseDir = $ARGV[1];
- if ($numArgs > 2) {
- $qtLibDir = $ARGV[2];
- }
- }
-}
-if ((index($releaseDir, '..') >=0) || (index($releaseDir, '/') >= 0)) {
- print "Release directory must be in the local directory!\n";
- exit;
-}
-if (! $okLine) {
- print "Usage: release_osx.pl version_number [build_directory] [qt_library_directory]\n";
- exit;
-}
-print "\nVersion number: $versionPrefix.$versionSuffix\n";
-print "Building release in directory: $releaseDir\n";
-print "Using Qt library directory: $qtLibDir\n";
-print "Writing to tarball: $tarball\n\n";
-
-# clean up release directory
-print "Deleting existing release directory...\n";
-if (-d $releaseDir) {
- use File::Find;
- finddepth (sub {
- if (-f $_) {
- unlink $_;
- } else {
- rmdir $_;
- }
- }, $releaseDir);
-}
-
-# make directory tree
-print "Recreating release directory...\n";
-mkdir "$releaseDir";
-mkdir "$releaseDir/Contents";
-mkdir "$releaseDir/Contents/Frameworks";
-mkdir "$releaseDir/Contents/MacOS";
-mkdir "$releaseDir/Contents/Resources";
-mkdir "$releaseDir/Contents/Resources/samples";
-mkdir "$releaseDir/Contents/Resources/usermanual";
-
-# copy files. note that all wildcard copies are performed with file suffixes
-# so the CVS subdirectory is not copied, which fails and causes the script to die
-print "Copying files...\n";
-system("cp -v osx/Info.plist $releaseDir/Contents") == 0 or
- die "Failed to copy: $?";
-system("cp -v osx/PkgInfo $releaseDir/Contents") == 0 or
- die "Failed to copy: $?";
-system("cp -v $qtLibDir/libqt-mt.3.dylib $releaseDir/Contents/Frameworks") == 0 or
- die "Failed to copy: $?";
-system("cp -v bin/engauge $releaseDir/Contents/MacOS") == 0 or
- die "Failed to copy: $?";
-system("cp -v LICENSE $releaseDir/Contents/Resources") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.bmp $releaseDir/Contents/Resources/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.gif $releaseDir/Contents/Resources/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.jpg $releaseDir/Contents/Resources/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.png $releaseDir/Contents/Resources/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.gif $releaseDir/Contents/Resources/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.html $releaseDir/Contents/Resources/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.jpg $releaseDir/Contents/Resources/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.png $releaseDir/Contents/Resources/usermanual") == 0 or
- die "Failed to copy: $?";
-
-# osx requires that executable be told where library is found. to see
-# where the executable believes the library is found use
-# "otool -L Engauge.app/Contents/MacOS/digitizer"
-# as documented at http://doc.trolltech.com/qq/qq09-mac-deployment.html
-print "Connecting bundled Qt libraries...\n";
-system("install_name_tool -id \@executable_path/../Frameworks/libqt-mt.3.dylib Engauge.app/Contents/Frameworks/libqt-mt.3.dylib") == 0 or
- die "Failed to change identification name: $?";
-system("install_name_tool -change libqt-mt.3.dylib \@executable_path/../Frameworks/libqt-mt.3.dylib Engauge.app/Contents/MacOS/engauge") == 0 or
- die "Failed to attach executable to library: $?";
-
-# we made it this far, so finish up by tarring up the release
-print "Writing tarball...\n";
-system("tar cvfz $tarball $releaseDir") == 0 or
- die "Failed to create tarball: $?";
-
-sub isNumber {
- # return 1 if input is a number, else return 0
- my $n = shift;
- local $noError = 1;
- local $^W = 1;
- local $SIG{__WARN__} = sub { $noError = undef };
- eval { my $x = $n + 0 };
- return ($noError);
-}
diff -Nru engauge-digitizer-5.0/release_solaris.pl engauge-digitizer-5.2/release_solaris.pl
--- engauge-digitizer-5.0/release_solaris.pl 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/release_solaris.pl 1970-01-01 00:00:00.000000000 +0000
@@ -1,103 +0,0 @@
-#!/usr/bin/perl
-
-# this script builds Engauge Digitizer for solaris x386 platforms
-# usage: release_solaris.pl version_number [build_directory]
-# author: mark mitchell
-
-my($versionPrefix);
-my($versionSuffix);
-# release directory $releaseDir must in current directory so the release
-# directory ends up in the user's current directory when he/she untars.
-# this means no '..' or slashes!
-my($releaseDir) = "engauge";
-my($tarball);
-
-# parse optional command line argument to override directory defaults
-my($numArgs) = $#ARGV + 1;
-my($okLine) = ((1 <= $numArgs) && ($numArgs <= 3));
-if ($okLine) {
- @fields = split(/\./, $ARGV[0]);
- $versionPrefix = $fields [0];
- $versionSuffix = $fields [1];
- $tarball = "../digit-exe-solaris-x386-$versionPrefix\_$versionSuffix.tar";
-
- $okLine = ((isNumber($versionPrefix) == 1) &&
- (isNumber($versionSuffix) == 1));
-
- if ($numArgs > 1) {
- $releaseDir = $ARGV[1];
- }
-}
-if ((index($releaseDir, '..') >=0) || (index($releaseDir, '/') >= 0)) {
- print "Release directory must be in the local directory!\n";
- exit;
-}
-if (! $okLine) {
- print "Usage: release_solaris.pl version_number [build_directory]\n";
- exit;
-}
-print "\nVersion number: $versionPrefix.$versionSuffix\n";
-print "Building release in directory: $releaseDir\n";
-print "Writing to compressed file: $tarball.bz2\n\n";
-
-# clean up release directory
-print "Deleting existing release directory...\n";
-if (-d $releaseDir) {
- use File::Find;
- finddepth (sub {
- if (-f $_) {
- unlink $_;
- } else {
- rmdir $_;
- }
- }, $releaseDir);
-}
-
-# make directory tree
-print "Recreating release directory...\n";
-mkdir "$releaseDir";
-mkdir "$releaseDir/samples";
-mkdir "$releaseDir/usermanual";
-
-# copy files. note that all wildcard copies are performed with file suffixes
-# so the CVS subdirectory is not copied, which fails and causes the script to die
-print "Copying files...\n";
-system("cp -v bin/engauge $releaseDir") == 0 or
- die "Failed to copy: $?";
-system("cp -v src/img/lo32-app-digitizer.png $releaseDir") == 0 or
- die "Failed to copy: $?";
-system("cp -v LICENSE $releaseDir") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.bmp $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.gif $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.jpg $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v samples/*.png $releaseDir/samples") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.gif $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.html $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.jpg $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-system("cp -v usermanual/*.png $releaseDir/usermanual") == 0 or
- die "Failed to copy: $?";
-
-# we made it this far, so finish up by tarring up the release
-print "Writing tarball...\n";
-system("tar cvf $tarball $releaseDir") == 0 or
- die "Failed to create tarball: $?";
-system("bzip2 -f $tarball") == 0 or
- die "Failed to perform bzip2 compression: $?";
-
-sub isNumber {
- # return 1 if input is a number, else return 0
- my $n = shift;
- local $noError = 1;
- local $^W = 1;
- local $SIG{__WARN__} = sub { $noError = undef };
- eval { my $x = $n + 0 };
- return ($noError);
-}
diff -Nru engauge-digitizer-5.0/release_windows.bat engauge-digitizer-5.2/release_windows.bat
--- engauge-digitizer-5.0/release_windows.bat 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/release_windows.bat 2013-10-10 18:55:48.000000000 +0000
@@ -1,75 +1,68 @@
-@echo off
-
-rem this script builds Engauge Digitizer for MS Windows platforms
-rem usage: release_windows.bat version_number_prefix version_number_suffix [build_directory]
-rem author: mark mitchell
-
-rem release directory %releaseDir% is one level below the %releaseRootDir% directory, to be
-rem consistent with the linux and osx environments where the release directory ends up in
-rem the user's current directory when he/she untars!
-set releaseRootDir=releaseRoot
-
-rem parse optional command line argument to override directory defaults
-if "%1" == "" goto usage
-if "%2" == "" goto usage
-set version=%1_%2
-if "%3" == "" goto noDirectory
- set releaseRootDir=%3%
-:noDirectory
-set releaseDir=%releaseRootDir%\engauge
-
-rem make sure executable and fftw dll both exist in bin directory
-if not exist bin\engauge.exe goto missingExe
-if not exist bin\libfftw3-3.dll goto missingDll
-
-set zipFile=..\digit-exe-windows-%version%.zip
-
-echo
-echo Version number: %version%
-echo Building release in directory: %releaseDir%
-echo Writing to zip file: %zipFile%
-
-rem clean up release directory. use prompt since empty entry would delete drive
-del /s /q %releaseDir%
-
-rem make directory tree
-echo Recreating release directory...
-mkdir %releaseDir%
-mkdir %releaseDir%\samples
-mkdir %releaseDir%\usermanual
-
-rem copy files. note that all wildcard copies are performed with file suffixes
-rem so the CVS subdirectory is not copied
-echo Copying files...
-copy bin\engauge.exe %releaseDir%
-copy bin\engauge.exe.local %releaseDir%
-copy bin\libfftw3-3.dll %releaseDir%
-copy LICENSE %releaseDir%
-copy samples\*.bmp %releaseDir%\samples
-copy samples\*.gif %releaseDir%\samples
-copy samples\*.jpg %releaseDir%\samples
-copy samples\*.png %releaseDir%\samples
-copy usermanual\*.gif %releaseDir%\usermanual
-copy usermanual\*.html %releaseDir%\usermanual
-copy usermanual\*.jpg %releaseDir%\usermanual
-copy usermanual\*.png %releaseDir%\usermanual
-
-rem we made it this far, so finish up by zipping up the release
-echo Writing zip file...
-"\program files\winzip\winzip32.exe" -a -r %zipFile% %releaseRootDir%
-
-goto end
-
-:usage
-echo Usage: release_windows.bat version_number_prefix version_number_suffix [build_directory]
-goto end
-
-:missingExe
-echo executable has not been created. see RELEASE file
-goto end
-
-:missingDll
-echo fftw dll has not been copied to the bin directory. see INSTALL file
-goto end
-
-:end
+@echo off
+
+rem this script builds Engauge Digitizer for MS Windows platforms
+rem usage: release_windows.bat version_number_prefix version_number_suffix [build_directory]
+rem author: mark mitchell
+
+rem release directory %releaseDir% is one level below the %releaseRootDir% directory, to be
+rem consistent with the linux and osx environments where the release directory ends up in
+rem the user's current directory when he/she untars!
+set releaseRootDir=releaseRoot
+
+rem parse optional command line argument to override directory defaults
+if "%1" == "" goto usage
+if "%2" == "" goto usage
+set version=%1_%2
+if "%3" == "" goto noDirectory
+ set releaseRootDir=%3%
+:noDirectory
+set releaseDir=%releaseRootDir%\engauge
+
+rem make sure executable exists in bin directory
+if not exist bin\engauge.exe goto missingExe
+
+set zipFile=..\digit-exe-windows-%version%.zip
+
+echo
+echo Version number: %version%
+echo Building release in directory: %releaseDir%
+echo Writing to zip file: %zipFile%
+
+rem clean up release directory. use prompt since empty entry would delete drive
+del /s /q %releaseDir%
+
+rem make directory tree
+echo Recreating release directory...
+mkdir %releaseDir%
+mkdir %releaseDir%\samples
+mkdir %releaseDir%\usermanual
+
+rem copy files. note that all wildcard copies are performed with file suffixes
+rem so the CVS subdirectory is not copied
+echo Copying files...
+copy bin\engauge.exe %releaseDir%
+copy LICENSE %releaseDir%
+copy samples\*.bmp %releaseDir%\samples
+copy samples\*.gif %releaseDir%\samples
+copy samples\*.jpg %releaseDir%\samples
+copy samples\*.png %releaseDir%\samples
+copy usermanual\*.gif %releaseDir%\usermanual
+copy usermanual\*.html %releaseDir%\usermanual
+copy usermanual\*.jpg %releaseDir%\usermanual
+copy usermanual\*.png %releaseDir%\usermanual
+
+rem we made it this far, so finish up by zipping up the release
+echo Writing zip file...
+"\program files\winzip\winzip64.exe" -a -r %zipFile% %releaseRootDir%
+
+goto end
+
+:usage
+echo Usage: release_windows.bat version_number_prefix version_number_suffix [build_directory]
+goto end
+
+:missingExe
+echo executable has not been created. see RELEASE file
+goto end
+
+:end
diff -Nru engauge-digitizer-5.0/src/axispointdlg.cpp engauge-digitizer-5.2/src/axispointdlg.cpp
--- engauge-digitizer-5.0/src/axispointdlg.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/axispointdlg.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -83,14 +83,22 @@
double AxisPointDlg::x(void)
{
double value;
+#ifdef VISUALSTUDIO
+ sscanf_s(editX->text(), "%lg", &value);
+#else
sscanf(editX->text(), "%lg", &value);
+#endif
return value;
}
double AxisPointDlg::y(void)
{
double value;
+#ifdef VISUALSTUDIO
+ sscanf_s(editY->text(), "%lg", &value);
+#else
sscanf(editY->text(), "%lg", &value);
+#endif
return value;
}
diff -Nru engauge-digitizer-5.0/src/colorchooser.cpp engauge-digitizer-5.2/src/colorchooser.cpp
--- engauge-digitizer-5.0/src/colorchooser.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/colorchooser.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -301,7 +301,7 @@
int binCount = bins [i];
if (binCount < 1)
binCount = 1;
- yNew = (int) ((m_chooserHeight - 1.0) * (1.0 - log(binCount) / log(pixelCount)) + 0.5);
+ yNew = (int) ((m_chooserHeight - 1.0) * (1.0 - log((double) binCount) / log(pixelCount)) + 0.5);
if (yNew < 0)
yNew = 0;
diff -Nru engauge-digitizer-5.0/src/defaultsettings.cpp engauge-digitizer-5.2/src/defaultsettings.cpp
--- engauge-digitizer-5.0/src/defaultsettings.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/defaultsettings.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -57,6 +57,8 @@
const QString EXPORT_LAYOUT(EXPORT_GROUP + "/layout");
const QString EXPORT_DELIMITERS(EXPORT_GROUP + "/delimiters");
const QString EXPORT_HEADER(EXPORT_GROUP + "/header");
+const QString EXPORT_XLABEL(EXPORT_GROUP + "/xlabel");
+const QString EXPORT_THETALABEL(EXPORT_GROUP + "/thetalabel");
const QString VIEW_GROUP(ENGAUGE_GROUP_PREFIX + "/view"); // group prefix for view selections
const QString VIEW_TOOLBARS(VIEW_GROUP + "/toolbars"); // subgroup prefix for view toolbars selections
@@ -235,7 +237,8 @@
// windows any calls to insertSearchPath or setPath either cancel cmdSettingsText,
// or they cause multiple files to be written out (one per group)
//QSettings archiver(cmdSettingsText ? QSettings::Ini : QSettings::Native);
- QSettings archiver;
+ QString organization ("engauge"); // in linux systems a .ini file with this prefix is put into home directory
+ QSettings archiver (organization);
archiver.writeEntry(SESSIONS_SESSIONS, m_sessionsSettings.sessions);
archiver.writeEntry(SESSIONS_COORDINATES, m_sessionsSettings.coordinates);
@@ -262,6 +265,8 @@
archiver.writeEntry(EXPORT_LAYOUT, m_exportSettings.layout);
archiver.writeEntry(EXPORT_DELIMITERS, m_exportSettings.delimiters);
archiver.writeEntry(EXPORT_HEADER, m_exportSettings.header);
+ archiver.writeEntry(EXPORT_XLABEL, m_exportSettings.xLabel);
+ archiver.writeEntry(EXPORT_THETALABEL, m_exportSettings.thetaLabel);
archiver.writeEntry(VIEW_FILETOOLBAR, m_viewFileToolbar);
archiver.writeEntry(VIEW_SELECTTOOLBAR, m_viewSelectToolbar);
@@ -741,6 +746,8 @@
m_exportSettings.layout = AllCurvesOnEachLine;
m_exportSettings.delimiters = Commas;
m_exportSettings.header = HeaderSimple;
+ m_exportSettings.xLabel = "x";
+ m_exportSettings.thetaLabel = "theta";
m_viewFileToolbar = true;
m_viewSelectToolbar = true;
@@ -939,6 +946,10 @@
m_exportSettings.delimiters);
m_exportSettings.header = (ExportHeader) archiver.readNumEntry(EXPORT_HEADER,
m_exportSettings.header);
+ m_exportSettings.xLabel = archiver.readEntry(EXPORT_XLABEL,
+ m_exportSettings.xLabel);
+ m_exportSettings.thetaLabel = archiver.readEntry(EXPORT_THETALABEL,
+ m_exportSettings.thetaLabel);
}
if (m_sessionsSettings.sessions && m_sessionsSettings.viewSelections)
@@ -1316,6 +1327,8 @@
m_exportSettings.layout = exportSettings.layout;
m_exportSettings.delimiters = exportSettings.delimiters;
m_exportSettings.header = exportSettings.header;
+ m_exportSettings.xLabel = exportSettings.xLabel;
+ m_exportSettings.thetaLabel = exportSettings.thetaLabel;
}
void DefaultSettings::setGridRemovalSettings(GridRemovalSettings grid)
diff -Nru engauge-digitizer-5.0/src/digitdef.cpp engauge-digitizer-5.2/src/digitdef.cpp
--- engauge-digitizer-5.0/src/digitdef.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/digitdef.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -62,12 +62,12 @@
ASSERT_ENGAUGE(GridSetStrings.findIndex("Step") == AllButStep);
ASSERT_ENGAUGE(GridSetStrings.findIndex("Stop") == AllButStop);
- VersionNumber = QString("5.0");
+ VersionNumber = QString("5.2");
VersionNumbersSupported <<
"2.0" << "2.1" << "2.2" << "2.3" << "2.4" << "2.5" << "2.6" << "2.7" << "2.8" <<
"2.9" << "2.10" << "2.11" << "2.12" << "2.13" << "2.14" << "2.15" << "3.0" <<
"4.0" << "4.1" <<
- "5.0";
+ "5.0" << "5.1" << "5.2";
}
mmUnits mmUnitize(CoordSettings coord)
diff -Nru engauge-digitizer-5.0/src/digitdef.h engauge-digitizer-5.2/src/digitdef.h
--- engauge-digitizer-5.0/src/digitdef.h 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/digitdef.h 2013-10-10 18:55:48.000000000 +0000
@@ -258,6 +258,8 @@
ExportLayout layout;
ExportDelimiters delimiters;
ExportHeader header;
+ QString xLabel;
+ QString thetaLabel;
};
// of the four grid mesh parameters (count, increment, start, stop), only
diff -Nru engauge-digitizer-5.0/src/digitdoc.cpp engauge-digitizer-5.2/src/digitdoc.cpp
--- engauge-digitizer-5.0/src/digitdoc.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/digitdoc.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -403,6 +403,10 @@
str >> (Q_INT32 &) m_exportSettings.layout;
str >> (Q_INT32 &) m_exportSettings.pointsSelection;
str >> (Q_INT32 &) m_exportSettings.header;
+ if (versionNumber >= 5.2) {
+ str >> m_exportSettings.xLabel;
+ str >> m_exportSettings.thetaLabel;
+ }
str >> (Q_INT32 &) m_gridRemovalSettings.removeThinLines;
str >> (double &) m_gridRemovalSettings.thinThickness;
@@ -420,7 +424,18 @@
str >> (double &) m_gridRemovalSettings.gridMesh.stopY;
str >> (double &) m_gridRemovalSettings.gridDistance;
str >> (Q_INT32 &) m_gridRemovalSettings.removeColor;
- str >> m_gridRemovalSettings.color;
+
+ if (versionNumber >= 5)
+ {
+ str >> m_gridRemovalSettings.color;
+ }
+ else
+ {
+ Q_UINT32 p;
+ str >> p;
+ m_gridRemovalSettings.color.setRgb( p );
+ }
+
str >> (Q_INT32 &) m_gridRemovalSettings.foregroundThresholdLow;
str >> (Q_INT32 &) m_gridRemovalSettings.foregroundThresholdHigh;
str >> (double &) m_gridRemovalSettings.gapSeparation;
@@ -534,6 +549,8 @@
str << (Q_INT32 &) m_exportSettings.layout;
str << (Q_INT32 &) m_exportSettings.pointsSelection;
str << (Q_INT32 &) m_exportSettings.header;
+ str << m_exportSettings.xLabel;
+ str << m_exportSettings.thetaLabel;
str << (Q_INT32 &) m_gridRemovalSettings.removeThinLines;
str << (double &) m_gridRemovalSettings.thinThickness;
@@ -612,7 +629,7 @@
{
QFile file(filename);
- if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
return false;
Q3TextStream str(&file);
@@ -873,7 +890,7 @@
(DefaultSettings::instance().getPowerMostSigMin() > powerMostSigX))
{
ASSERT_ENGAUGE(m_canvas.width() > 1);
- precisionX = (int) (1 + log10(m_canvas.width()));
+ precisionX = (int) (1 + log10((double) m_canvas.width()));
roundedX = xTheta;
roundedXRes = xThetaRes;
xFormat = "%.*e"; // use e since g does not have trailing zeros, causing flicker during mouse moves
@@ -882,7 +899,7 @@
(DefaultSettings::instance().getPowerMostSigMin() > powerMostSigY))
{
ASSERT_ENGAUGE(m_canvas.height() > 1);
- precisionY = (int) (1 + log10(m_canvas.height()));
+ precisionY = (int) (1 + log10((double) m_canvas.height()));
roundedY = yR;
roundedYRes = yRRes;
yFormat = "%.*e"; // use e since g does not have trailing zeros, causing flicker during mouse moves
@@ -1389,7 +1406,7 @@
QString DigitDoc::filterImport()
{
- QString filter(tr("Images (*.bmp *.gif *.jpg *.png *.pnm *.pbm *.xpm);;All Files (*.*)"));
+ QString filter(tr("Images (*.bmp *.gif *.jpg *.jpeg *.png *.pnm *.pbm *.xpm);;All Files (*.*)"));
if (cmdOnlyBmp)
filter = tr("Images (*.bmp);;All Files (*.*)");
@@ -1620,7 +1637,7 @@
PointMatch pointMatch;
pointMatch.isolateSampleMatchPoint(&m_samplePointPixels,
m_processedImage, m_pointMatchSettings,
- p.x(), p.y(), p.x(), p.y());
+ p.x(), p.y());
addSampleMatchPointToViews();
QApplication::restoreOverrideCursor();
diff -Nru engauge-digitizer-5.0/src/digitmain.cpp engauge-digitizer-5.2/src/digitmain.cpp
--- engauge-digitizer-5.0/src/digitmain.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/digitmain.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -92,7 +92,7 @@
QAction *f = new QAction(name, parent);
return f;
}
-QAction* createAction(const QString & menuText, QKeySequence accel, QObject * parent, const char * name = 0 )
+QAction* createAction(const QString & menuText, QKeySequence accel, QObject * parent, const char * )
{
QAction *f = createAction(parent, menuText);
f->setShortcut(accel);
@@ -220,7 +220,7 @@
fileImport->setWhatsThis(tr("New File\n\nCreates a new document by importing an image"));
connect(fileImport, SIGNAL(activated()), this, SLOT(slotFileImport()));
- fileOpen = createAction(tr("&Open Document"), openIcon, tr("&Open..."), 0, this);
+ fileOpen = createAction(tr("&Open Document"), openIcon, tr("&Open..."), tr("Ctrl+O"), this);
CHECK_PTR_ENGAUGE(fileOpen);
fileOpen->setStatusTip(tr("Opens an existing document"));
fileOpen->setWhatsThis(tr("Open Document\n\nOpens an existing document"));
@@ -438,13 +438,13 @@
"information window. Lengths and areas of the active measure are displayed"));
connect(viewMeasureGeometry, SIGNAL(toggled(bool)), this, SLOT(slotViewMeasureGeometry(bool)));
- digitizeSelect = createAction(tr("&Select"), selectIcons, tr("&Select"), tr("Ctrl+S"), this, 0, true);
+ digitizeSelect = createAction(tr("Selec&t"), selectIcons, tr("Select"), tr("Ctrl+T"), this, 0, true);
CHECK_PTR_ENGAUGE(digitizeSelect);
digitizeSelect->setStatusTip(tr("Select one or more points on screen"));
digitizeSelect->setWhatsThis(tr("Select\n\nSelect one or more points on screen"));
connect(digitizeSelect, SIGNAL(toggled(bool)), this, SLOT(slotDigitizeSelect(bool)));
- digitizeAxis = createAction(tr("&Axis Point"), axisIcons, tr("&Axis Point"), 0, this, 0, true);
+ digitizeAxis = createAction(tr("&Axis Point"), axisIcons, tr("Axis Point"), 0, this, 0, true);
CHECK_PTR_ENGAUGE(digitizeAxis);
digitizeAxis->setStatusTip(tr("Digitizes an axis point"));
digitizeAxis->setWhatsThis(tr("Digitize Axis Point\n\nDigitizes an axis point by placing a new point "
@@ -452,7 +452,7 @@
"required to define the coordinates"));
connect(digitizeAxis, SIGNAL(toggled(bool)), this, SLOT(slotDigitizeAxis(bool)));
- digitizeScale = createAction(tr("&Scale Bar"), scaleIcons, tr("&Scale Bar"), 0, this, 0, true);
+ digitizeScale = createAction(tr("Scale &Bar"), scaleIcons, tr("Scale Bar"), 0, this, 0, true);
CHECK_PTR_ENGAUGE(digitizeScale);
digitizeScale->setStatusTip(tr("Digitizes a scale bar"));
digitizeScale->setWhatsThis(tr("Digitize Scale Bar\n\nDigitizes a scale bar by placing a new point "
@@ -461,14 +461,14 @@
"will be unavailable if log and/or polar coordinates have been selected"));
connect(digitizeScale, SIGNAL(toggled(bool)), this, SLOT(slotDigitizeScale(bool)));
- digitizeCurve = createAction(tr("&Curve Point"), curveIcons, tr("&Curve Point"), 0, this, 0, true);
+ digitizeCurve = createAction(tr("Cu&rve Point"), curveIcons, tr("Curve Point"), tr("Ctrl+R"), this, 0, true);
CHECK_PTR_ENGAUGE(digitizeCurve);
digitizeCurve->setStatusTip(tr("Digitizes a curve point"));
digitizeCurve->setWhatsThis(tr("Digitize Curve Point\n\nDigitizes a single curve point under the cursor\n\n"
"New points will be assigned to the currently active curve"));
connect(digitizeCurve, SIGNAL(toggled(bool)), this, SLOT(slotDigitizeCurve(bool)));
- digitizeSegment = createAction(tr("&Segment Fill"), segmentIcons, tr("&Segment Fill"), 0, this, 0, true);
+ digitizeSegment = createAction(tr("Se&gment Fill"), segmentIcons, tr("Segment Fill"), tr("Ctrl+G"), this, 0, true);
CHECK_PTR_ENGAUGE(digitizeSegment);
digitizeSegment->setStatusTip(tr("Digitizes curve points along a curve segment"));
digitizeSegment->setWhatsThis(tr("Digitize Segment Fill\n\nDigitizes a curve segment by placing curve points "
@@ -476,7 +476,7 @@
"New points will be assigned to the currently active curve"));
connect(digitizeSegment, SIGNAL(toggled(bool)), this, SLOT(slotDigitizeSegment(bool)));
- digitizePointMatch = createAction(tr("&Point Match"), matchIcons, tr("&Point Match"), 0, this, 0, true);
+ digitizePointMatch = createAction(tr("Point Matc&h"), matchIcons, tr("Point Match"), tr("Ctrl+H"), this, 0, true);
CHECK_PTR_ENGAUGE(digitizePointMatch);
digitizePointMatch->setStatusTip(tr("Digitizes curve points in a point plot by matching a point"));
digitizePointMatch->setWhatsThis(tr("Digitize Curve Points by Point Matching\n\nDigitizes curve points in a "
@@ -484,7 +484,7 @@
"New points will be assigned to the currently active curve"));
connect(digitizePointMatch, SIGNAL(toggled(bool)), this, SLOT(slotDigitizePointMatch(bool)));
- digitizeMeasure = createAction(tr("&Measure Point"), measureIcons, tr("&Measure Point"), 0, this, 0, true);
+ digitizeMeasure = createAction(tr("&Measure Point"), measureIcons, tr("Measure Point"), tr("Ctrl+M"), this, 0, true);
CHECK_PTR_ENGAUGE(digitizeMeasure);
digitizeMeasure->setStatusTip(tr("Digitizes a measure point for measuring length and area"));
digitizeMeasure->setWhatsThis(tr("Digitize Measure Point\n\nDigitizes a measure point by placing a new point "
@@ -1976,7 +1976,8 @@
if (doc)
{
QString filename = QFileDialog::getSaveFileName(this, tr("Save"),
- doc->savePath(), DigitDoc::filterOpenSave());
+ doc->savePath(), DigitDoc::filterOpenSave(),
+ 0, QFileDialog::DontConfirmOverwrite);
if (!filename.isEmpty())
{
bool save = true;
@@ -2133,8 +2134,9 @@
DigitDoc* doc = activeDocument();
if (doc)
{
- QString filename = QFileDialog::getSaveFileName(doc->exportPath(), 0, this, "export as",
- QString(tr("Export")));
+ QString filename = QFileDialog::getSaveFileName (this, QString(tr("Export")), doc->exportPath (),
+ tr("Excel (*.csv *.tsv *.txt);; All files (*.*)"),
+ 0, QFileDialog::DontConfirmOverwrite);
if (!filename.isEmpty())
{
bool save = true;
@@ -2896,8 +2898,9 @@
.arg(tr("\n(c) 2002 by Tobias Winchen, Tobias Richter, Mark Mitchell\n"
"Engauge Digitizer comes with ABSOLUTELY NO WARRANTY.\n\n"
"This is free software, and you are welcome to redistribute it under\n"
- "certain conditions according to the GNU General Public License Version 2;\n"
- "read the included LICENSE file for details.\n\n"
+ "certain conditions according to the GNU General Public License Version 2,"
+ "or (at your option) any later version.\n"
+ "Read the included LICENSE file for details.\n\n"
"Author\nContact: mmdigitizer@gmail.com\n"
"(All messages are welcome, and your privacy will be respected)\n\n"
"Engauge Digitizer\n"
diff -Nru engauge-digitizer-5.0/src/digitview.cpp engauge-digitizer-5.2/src/digitview.cpp
--- engauge-digitizer-5.0/src/digitview.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/digitview.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -288,7 +288,7 @@
QPoint DigitView::convertZoom(QPoint p, bool to)
{
- double x, y;
+ qreal x, y;
if (to)
worldMatrix().map((double) p.x(), (double) p.y(), &x, &y);
else
@@ -299,7 +299,7 @@
QRect DigitView::convertZoom(QRect r, bool to)
{
- double xTL, yTL, xBR, yBR;
+ qreal xTL, yTL, xBR, yBR;
if (to)
{
worldMatrix().map((double) r.left(), (double) r.top(), &xTL, &yTL);
diff -Nru engauge-digitizer-5.0/src/discretize.cpp engauge-digitizer-5.2/src/discretize.cpp
--- engauge-digitizer-5.0/src/discretize.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/discretize.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -152,8 +152,8 @@
int r, g, b;
double distance;
color.rgb(&r, &g, &b);
- distance = sqrt ((r - rBg) * (r - rBg) + (g - gBg) * (g - gBg) + (b - bBg) * (b - bBg));
- int value = (int) (distance * DiscretizeForegroundMax / sqrt(255 * 255 + 255 * 255 + 255 * 255) + 0.5);
+ distance = sqrt ((double) ((r - rBg) * (r - rBg) + (g - gBg) * (g - gBg) + (b - bBg) * (b - bBg)));
+ int value = (int) (distance * DiscretizeForegroundMax / sqrt((double) (255 * 255 + 255 * 255 + 255 * 255)) + 0.5);
if (value < 0)
value = 0;
@@ -182,8 +182,8 @@
break;
case DiscretizeIntensity:
color.rgb(&r, &g, &b);
- intensity = sqrt (r * r + g * g + b * b);
- value = (int) (intensity * DiscretizeIntensityMax / sqrt(255 * 255 + 255 * 255 + 255 * 255) + 0.5);
+ intensity = sqrt ((double) (r * r + g * g + b * b));
+ value = (int) (intensity * DiscretizeIntensityMax / sqrt((double) (255 * 255 + 255 * 255 + 255 * 255)) + 0.5);
break;
case DiscretizeForeground:
break;
diff -Nru engauge-digitizer-5.0/src/exportdlg.cpp engauge-digitizer-5.2/src/exportdlg.cpp
--- engauge-digitizer-5.0/src/exportdlg.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/exportdlg.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -141,7 +141,7 @@
// delimiters
groupDelimiters = new Q3ButtonGroup(QString(tr("Delimiters")), this);
CHECK_PTR_ENGAUGE(groupDelimiters);
- groupDelimiters->setGeometry(10, 370, 175, 90);
+ groupDelimiters->setGeometry(10, 370, 113, 90);
buttonCommas = new QRadioButton(QString(tr("Commas")), groupDelimiters);
CHECK_PTR_ENGAUGE(buttonCommas);
@@ -164,7 +164,7 @@
// header
groupHeader = new Q3ButtonGroup(QString(tr("Header")), this);
CHECK_PTR_ENGAUGE(groupHeader);
- groupHeader->setGeometry(195, 370, 175, 90);
+ groupHeader->setGeometry(133, 370, 113, 90);
buttonNone = new QRadioButton(QString(tr("None")), groupHeader);
CHECK_PTR_ENGAUGE(buttonNone);
@@ -184,6 +184,23 @@
QWhatsThis::add(buttonGnuplot, QString(tr("Exported file will have gnuplot header line")));
connect(buttonGnuplot, SIGNAL(toggled(bool)), this, SLOT(slotGnuplot(bool)));
+ // x label for header
+ if (coord->frame == Cartesian)
+ labelXThetaLabel = new QLabel(QString(tr("Header X Label")), this);
+ else
+ labelXThetaLabel = new QLabel(QString(tr("Header Theta Label")), this);
+ CHECK_PTR_ENGAUGE(labelXThetaLabel);
+ labelXThetaLabel->setGeometry(256, 390, 114, 20);
+
+ editXThetaLabel = new QLineEdit(this);
+ CHECK_PTR_ENGAUGE(editXThetaLabel);
+ editXThetaLabel->setGeometry(256, 410, 110, 20);
+ if (coord->frame == Cartesian)
+ QWhatsThis::add(editXThetaLabel, QString(tr("Label in the header for x values")));
+ else
+ QWhatsThis::add(editXThetaLabel, QString(tr("Label in the header for theta values")));
+ connect(editXThetaLabel, SIGNAL(textEdited(const QString&)), this, SLOT(slotXThetaLabel(const QString&)));
+
// preview
labelPreview = new QLabel(QString(tr("Preview")), this);
CHECK_PTR_ENGAUGE(labelPreview);
@@ -297,14 +314,22 @@
{
case HeaderNone:
buttonNone->setChecked(true);
+ editXThetaLabel->setEnabled(false);
break;
case HeaderSimple:
buttonSimple->setChecked(true);
+ editXThetaLabel->setEnabled(true);
break;
case HeaderGnuplot:
buttonGnuplot->setChecked(true);
+ editXThetaLabel->setEnabled(true);
break;
}
+
+ if (coord->frame == Cartesian)
+ editXThetaLabel->setText(xport->xLabel);
+ else
+ editXThetaLabel->setText(xport->thetaLabel);
}
void ExportDlg::updatePreview()
@@ -507,3 +532,12 @@
{
QWhatsThis::enterWhatsThisMode();
}
+
+void ExportDlg::slotXThetaLabel (const QString &text)
+{
+ ASSERT_ENGAUGE(xport != 0);
+ if (coord->frame == Cartesian)
+ xport->xLabel = text;
+ else
+ xport->thetaLabel = text;
+}
diff -Nru engauge-digitizer-5.0/src/exportdlg.h engauge-digitizer-5.2/src/exportdlg.h
--- engauge-digitizer-5.0/src/exportdlg.h 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/exportdlg.h 2013-10-10 18:55:48.000000000 +0000
@@ -20,6 +20,7 @@
#define EXPORTDLG_H
#include
+#include
#include
#include
#include
@@ -61,6 +62,7 @@
void slotNone(bool toggle);
void slotSimple(bool toggle);
void slotGnuplot(bool toggle);
+ void slotXThetaLabel(const QString& xThetaLabel);
void slotWhat(void);
private:
@@ -104,6 +106,9 @@
QRadioButton* buttonSimple;
QRadioButton* buttonGnuplot;
+ QLabel* labelXThetaLabel;
+ QLineEdit* editXThetaLabel;
+
// immediately update the preview screen after each setting change, so user can
// see the effects. if it turns out the user is blocked for an unacceptably long
// time, then the update calculations should have processEvents calls inserted. if
diff -Nru engauge-digitizer-5.0/src/gridremoval.cpp engauge-digitizer-5.2/src/gridremoval.cpp
--- engauge-digitizer-5.0/src/gridremoval.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/gridremoval.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -217,7 +217,7 @@
if (distancetoline(x, y, 0.0, 0.0, xBasis, yBasis) <= 0.5)
{
// add new search point
- SearchPoint *p = new SearchPoint(i, j, sqrt(i * i + j * j));
+ SearchPoint *p = new SearchPoint(i, j, sqrt((double) (i * i + j * j)));
CHECK_PTR_ENGAUGE(p);
searchPattern->append(p);
@@ -291,8 +291,8 @@
Synapse *s = m_synapseDict [i];
int xDestination = s->xCenterOfMass();
int yDestination = s->yCenterOfMass();
- double separation = sqrt((xDestination - xSource) * (xDestination - xSource) +
- (yDestination - ySource) * (yDestination - ySource));
+ double separation = sqrt((double) ((xDestination - xSource) * (xDestination - xSource) +
+ (yDestination - ySource) * (yDestination - ySource)));
if (separation <= gapSeparation)
{
// draw a line from the source to the destination. we sacrifice efficiency for
diff -Nru engauge-digitizer-5.0/src/mrudocuments.cpp engauge-digitizer-5.2/src/mrudocuments.cpp
--- engauge-digitizer-5.0/src/mrudocuments.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/mrudocuments.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -77,8 +77,6 @@
void MruDocuments::mergeDocument(QString doc)
{
- bool success = true;
-
// if this document is already the first in the list, then nothing needs to be done
if (!m_mruDocuments.isEmpty())
if (doc == m_mruDocuments.first()->text())
@@ -88,13 +86,13 @@
// first and there is no way to move entries around in the popup menu
QAction* pAction;
for (pAction = m_mruDocuments.first(); pAction; pAction = m_mruDocuments.next())
- success = pAction->removeFrom(m_pPopup);
+ pAction->removeFrom(m_pPopup);
// remove duplicate entry from list if it exists
for (pAction = m_mruDocuments.first(); pAction; pAction = m_mruDocuments.next())
if (doc == pAction->text())
{
- success = m_mruDocuments.remove(pAction); // autodelete is off
+ m_mruDocuments.remove(pAction); // autodelete is off
delete pAction;
break;
}
diff -Nru engauge-digitizer-5.0/src/pointmatch.cpp engauge-digitizer-5.2/src/pointmatch.cpp
--- engauge-digitizer-5.0/src/pointmatch.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/pointmatch.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -21,10 +21,17 @@
#include
#include
//Added by qt3to4:
+#include
#include
+#include
#include
#include
+#include
+
+#ifdef WIN32
+#include
+#endif
#include "main.h"
#include "mmsubs.h"
@@ -33,6 +40,20 @@
#include "pointmatch.h"
#include "pointmatchthread.h"
+// Directions for isolateSampleMatchPoint. Since that algorithm goes in a counterclockwise pattern these
+// are in clockwise order
+enum Direction {
+ DIR_LEFT, // First try going right up (which is to the back right in the reference frame of a left vector)
+ DIR_LEFT_DOWN, // First try going up (which is to the back right in the reference frame of a left/down vector)
+ DIR_DOWN, // First try going left up (which is to the back right in the reference frame of a down vector)
+ DIR_RIGHT_DOWN,// First try going left (which is to the back right in the reference frame of a right/down vector)
+ DIR_RIGHT, // First try going left down (which is to the back right in the reference frame of a right vector)
+ DIR_RIGHT_UP, // First try going down (which is to the back right in the reference frame of a right/up vector)
+ DIR_UP, // First try going right down (which is to the back right in the reference frame of a up vector)
+ DIR_LEFT_UP, // First try going right (which is to the back right in the reference frame of a left/right vector)
+ NUMBER_DIRECTIONS
+};
+
PointMatch::PointMatch()
{
DigitDebug::ctor(QString("pointmatch ") + QString::number((ulong) this, 16));
@@ -45,8 +66,25 @@
bool PointMatch::isolateSampleMatchPoint(QPolygon* samplePointPixels,
const QImage &image, PointMatchSettings settings,
- int xStart, int yStart, int x, int y)
+ int x, int y)
{
+#ifdef LOG_MATCH_POINT
+ QFile data ("dbg.log");
+ QTextStream *out;
+ if (data.open (QFile::WriteOnly | QFile::Truncate)) {
+ out = new QTextStream (&data);
+ }
+ const char *directions [] = {
+ "left ",
+ "left/down ",
+ "down ",
+ "right/down",
+ "right ",
+ "right/up ",
+ "up ",
+ "left/up "};
+#endif
+
if ((x < 0) || (y < 0) || (image.width() <= x) || (image.height() <= y))
return false; // out of bounds
@@ -54,44 +92,99 @@
if (!discretize.processedPixelIsOn(image, x, y))
return false; // pixel is off
- if (dabs (x - xStart) > settings.pointSize / 2)
- return false; // point is too far from start
- if (dabs (y - yStart) > settings.pointSize / 2)
- return false; // point is too far from start
+ int xCenter = x, yCenter = y;
+ int xLeft = xCenter - settings.pointSize / 2;
+ int yTop = yCenter - settings.pointSize / 2;
+ int xRight = xCenter + settings.pointSize / 2;
+ int yBottom = yCenter + settings.pointSize / 2;
+ int xMin = (xLeft > 0 ) ? xLeft : 0;
+ int yMin = (yTop > 0 ) ? yTop : 0;
+ int xMax = (xRight < image.width () ) ? xRight : image.width ();
+ int yMax = (yBottom < image.height ()) ? yBottom : image.height ();
+
+ // Go to the right until just after edge or the right side, whichever comes first
+ do {
+ if (discretize.processedPixelIsOn(image, x, y)) {
+ ++x;
+ } else {
+ break;
+ }
+ } while (x < xMax);
+ --x; // Now jump from the outside back to the inside of the right side
+
+ int xStart = x, yStart = y;
+ // Go counterclockwise around (xCenter,yCenter), along the edge of the selected points or the
+ // settings.pointSize boundary, until we reach (xStart,yStart) again
ASSERT_ENGAUGE(samplePointPixels != 0);
- bool found = (samplePointPixels->size() > 0);
- if (found)
- found = samplePointPixels->containsPoint(QPoint(x, y), Qt::OddEvenFill);
- //(samplePointPixels->find(QPoint(x, y)) >= 0); // n-squared search happening here
- if (found)
- return true; // already in list
-
- // add this point
- int newSize = samplePointPixels->size() + 1;
- //bool resized = samplePointPixels->resize(newSize);
- samplePointPixels->resize(newSize);
- //ASSERT_ENGAUGE(resized);
- samplePointPixels->setPoint(newSize - 1, x, y);
-
- // recurse. diagonal points are included so single-pixel wide polygonal outlines will be traversed,
- // but for a 2x speed increase we only go diagonal if the adjacent nondiagonal pixels are off
- bool right =
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x + 1, y);
- bool up =
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x, y + 1);
- bool left =
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x - 1, y);
- bool down =
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x, y - 1);
- if (!right && !up)
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x + 1, y + 1);
- if (!up && !left)
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x - 1, y + 1);
- if (!left && !down)
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x - 1, y - 1);
- if (!down && !right)
- isolateSampleMatchPoint(samplePointPixels, image, settings, xStart, yStart, x + 1, y - 1);
+ Direction previousDirection = DIR_LEFT; // Start with this to get first try going up right
+ while ((samplePointPixels->size () == 0) ||(x != xStart) || (y != yStart)) {
+
+#ifdef LOG_MATCH_POINT
+ *out << " direction=" << directions [previousDirection] << " x=" << x << " y=" << y << endl;
+#endif
+
+ // Try the directions other than previousDirection until we find the first that has an on-pixel
+ for (int directionOffset = 5; directionOffset < 5 + NUMBER_DIRECTIONS; directionOffset++) {
+
+ // Compute next direction from previous direction and offset
+ Direction nextDirection = (Direction) ((previousDirection + directionOffset) % NUMBER_DIRECTIONS);
+
+ int xNext = x, yNext = y;
+ switch (nextDirection) {
+ case DIR_LEFT:
+ xNext = x - 1;
+ break;
+ case DIR_LEFT_DOWN:
+ xNext = x - 1;
+ yNext = y + 1;
+ break;
+ case DIR_DOWN:
+ yNext = y + 1;
+ break;
+ case DIR_RIGHT_DOWN:
+ xNext = x + 1;
+ yNext = y + 1;
+ break;
+ case DIR_RIGHT:
+ xNext = x + 1;
+ break;
+ case DIR_RIGHT_UP:
+ xNext = x + 1;
+ yNext = y - 1;
+ break;
+ case DIR_UP:
+ yNext = y - 1;
+ break;
+ case DIR_LEFT_UP:
+ xNext = x - 1;
+ yNext = y - 1;
+ break;
+ case NUMBER_DIRECTIONS:
+ break;
+ }
+
+ if ((xMin <= xNext) && (xNext < xMax) &&
+ (yMin <= yNext) && (yNext < yMax)) {
+
+ if (discretize.processedPixelIsOn(image, xNext, yNext)) {
+
+ // We just found the first on-pixel. Save it and exit the inner loop
+ int newSize = samplePointPixels->size() + 1;
+ samplePointPixels->resize(newSize);
+ samplePointPixels->setPoint(newSize - 1, xNext, yNext);
+ x = xNext;
+ y = yNext;
+ previousDirection = nextDirection;
+ break;
+ }
+ }
+ }
+ }
+
+#ifdef LOG_MATCH_POINT
+ data.close ();
+#endif
return true;
}
@@ -125,7 +218,8 @@
qApp->processEvents();
#ifdef WIN32
- _sleep(SLEEP_IN_SECONDS);
+// _sleep(SLEEP_IN_SECONDS);
+ Sleep(SLEEP_IN_SECONDS);
#else
sleep(SLEEP_IN_SECONDS);
#endif
diff -Nru engauge-digitizer-5.0/src/pointmatch.h engauge-digitizer-5.2/src/pointmatch.h
--- engauge-digitizer-5.0/src/pointmatch.h 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/pointmatch.h 2013-10-10 18:55:48.000000000 +0000
@@ -74,7 +74,7 @@
// recursively isolate the "on" pixels around (x,y). return true if pixel at (x,y) was on
bool isolateSampleMatchPoint(QPolygon * samplePointPixels,
const QImage &image, PointMatchSettings settings,
- int xStart, int yStart, int x, int y);
+ int x, int y);
// create document points that match the sample point under the cursor
static void matchSamplePoint(const QImage &imageProcessed,
diff -Nru engauge-digitizer-5.0/src/pointmatchthread.cpp engauge-digitizer-5.2/src/pointmatchthread.cpp
--- engauge-digitizer-5.0/src/pointmatchthread.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/pointmatchthread.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -431,7 +431,7 @@
int radical = pointSeparation * pointSeparation - (y - yPoint) * (y - yPoint);
if (0 < radical)
{
- int xMin = (int) (xPoint - sqrt(radical));
+ int xMin = (int) (xPoint - sqrt((double) radical));
if (xMin < 0)
xMin = 0;
int xMax = xPoint + (xPoint - xMin);
diff -Nru engauge-digitizer-5.0/src/pointset.cpp engauge-digitizer-5.2/src/pointset.cpp
--- engauge-digitizer-5.0/src/pointset.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/pointset.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -555,16 +555,9 @@
// remove duplicate entries caused by two or more curves having points with identical
// exported x coordinates, since these duplicates are useless and cause problems (i.e. sql
// insert will crash)
- QString xLast, xNew;
- for (itr = list->begin(); itr != list->end(); ++itr)
- {
- xNew.setNum(*itr, 'g', xPrecision);
-
- if (xLast == xNew)
- itr = list->remove(itr);
-
- xLast = xNew;
- }
+ qSort(list->begin(), list->end());
+ itr = std::unique (list->begin(), list->end());
+ list->erase(itr, list->end());
}
QString PointSet::exportCurveAll(ExportSettings xport, int xPrecision, int yPrecision)
diff -Nru engauge-digitizer-5.0/src/pointsets.cpp engauge-digitizer-5.2/src/pointsets.cpp
--- engauge-digitizer-5.0/src/pointsets.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/pointsets.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -709,9 +709,9 @@
prefix += "#";
if (coord.frame == Cartesian)
- prefix += "x";
+ prefix += xport.xLabel;
else
- prefix += "theta";
+ prefix += xport.thetaLabel;
return prefix;
}
diff -Nru engauge-digitizer-5.0/src/zoomcmb.cpp engauge-digitizer-5.2/src/zoomcmb.cpp
--- engauge-digitizer-5.0/src/zoomcmb.cpp 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/src/zoomcmb.cpp 2013-10-10 18:55:48.000000000 +0000
@@ -26,7 +26,7 @@
#include "main.h"
// default zoom settings as percentages
-static int zoomDefaults [] = {500, 400, 300, 200, 100, 75, 50, 33, 25, 10};
+static int zoomDefaults [] = {2000, 1000, 500, 400, 300, 200, 100, 75, 50, 33, 25, 10};
ZoomCmb::ZoomCmb(QWidget* parent) :
QComboBox(true, parent, "zoom factor")
diff -Nru engauge-digitizer-5.0/usermanual/betteraccuracy.html engauge-digitizer-5.2/usermanual/betteraccuracy.html
--- engauge-digitizer-5.0/usermanual/betteraccuracy.html 1970-01-01 00:00:00.000000000 +0000
+++ engauge-digitizer-5.2/usermanual/betteraccuracy.html 2013-10-10 18:55:48.000000000 +0000
@@ -0,0 +1,36 @@
+
+
+
+Engauge Digitizer - Better Accuracy
+
+
+
+
+
+
+
+ Engauge Digitizer - Better Accuracy
+
+
+To get better accuracy in the digitized output data exported from Engauge Digitizer, it is helpful to understand
+that all points are only as accurate as the pixel size (you can see that accuracy in the status bar). If the
+distance in graph units from one pixel to the next is D, then theoretically the best possible accuracy is also D.
+
+
+It is not possible to define points that are 'between' pixels, even by zooming in closer. That is a constraint
+imposed by the graphics library that is used in Engauge Digitizer.
+
+
+Fortunately, there are some tricks to improve the accuracy. In order of increasing difficulty:
+
+
+- If the axis points are not correctly defined then fix them
+- Turn on the grid lines by selecting View/Gridlines Display and compare them to grid lines in the
+original image to see if the axis points can be slightly adjusted so the grid lines better match each other.
+- Use a graphics application like Microsoft Paint (Windows) or GIMP (Linux) to scale the original up in size
+so each pixel is smaller, and therefore the accuracy of each point is correspondingly better. The larger image
+is then imported into Engauge Digitizer. This step can be performed using just the command line using the
+powerful ImageMagick tool.
+
+
+
diff -Nru engauge-digitizer-5.0/usermanual/contextmenukonqueror.html engauge-digitizer-5.2/usermanual/contextmenukonqueror.html
--- engauge-digitizer-5.0/usermanual/contextmenukonqueror.html 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/usermanual/contextmenukonqueror.html 1970-01-01 00:00:00.000000000 +0000
@@ -1,47 +0,0 @@
-
-
-
-Engauge Digitizer - Adding To Konqueror Service Menu
-
-
-
-
-
-
-
- Engauge Digitizer - Adding To Konqueror Service Menu
-
-Introduction
-In Konqueror a simple right-click on an image file will bring up
- a service (or context) menu that lists some software applications. Clicking on one
- of those applications starts that application, and loads the image
- file.
-Engauge Digitizer can be inserted into that service menu, where it
- is easily available for processing image file formats such as BMP,
- GIF, JPEG, PNG and XPM.
-Frequent users of Engauge Digitizer will appreciate the speed of
- service menus.
-Steps
-Follow these three steps to add Engauge Digitizer to the Konqueror
- service menu:
-
-- Determine where the service menu should be created by running
- 'kde-config --localprefix'. Typically, this directory is $HOME/.kde
-- Go to the share/apps/konqueror/servicemenus subdirectory
- underneath the directory found in the previous step. You will have to
- create this subdirectory if it does not already exist
-- Create a text file named 'engauge.desktop', with the following lines:
-
-
-[Desktop Entry]
-ServiceTypes=image/png,image/jpeg,image/gif,image/bmp
-Actions=engauge
-
-[Desktop Action engauge]
-Name=Engauge Digitizer
-Icon=/home/mark/engauge/lo32-app-digitizer.png
-Exec=/home/mark/engauge/digitizer -import %u
-
- |
-
-
diff -Nru engauge-digitizer-5.0/usermanual/dlgcoordsys.html engauge-digitizer-5.2/usermanual/dlgcoordsys.html
--- engauge-digitizer-5.0/usermanual/dlgcoordsys.html 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/usermanual/dlgcoordsys.html 2013-10-10 18:55:48.000000000 +0000
@@ -44,9 +44,7 @@
Normally, the radius at the origin of a polar plot is zero. However, a nonzero value may be
-applied if the radial units are decibels. Warning - in version 2 of
-Engauge Digitizer, the origin radius value is not saved into the document file, so the value will be
-changed to zero when the document is read later (but you can reset the value).
+appropriate if the radial units are decibels, and in some other cases.
Dialog
diff -Nru engauge-digitizer-5.0/usermanual/fixingaxispoints.html engauge-digitizer-5.2/usermanual/fixingaxispoints.html
--- engauge-digitizer-5.0/usermanual/fixingaxispoints.html 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/usermanual/fixingaxispoints.html 2013-10-10 18:55:48.000000000 +0000
@@ -17,7 +17,8 @@
- An axis point was placed at the wrong location on the graph
- The X or Y coordinate of an axis point was entered incorrectly
-- In a polar plot, the origin has a nonzero radius
+- In a polar plot, the origin has a nonzero radius (so the default value of zero
+in the Coordinates Dialog does not apply)
The trick for identifying the problem
is to turn on Grid Display (in the View menu). Once
diff -Nru engauge-digitizer-5.0/usermanual/index.html engauge-digitizer-5.2/usermanual/index.html
--- engauge-digitizer-5.0/usermanual/index.html 2012-01-01 14:06:48.000000000 +0000
+++ engauge-digitizer-5.2/usermanual/index.html 2013-10-10 18:55:48.000000000 +0000
@@ -36,8 +36,8 @@
How do I measure angles, distances and areas?
How do I use the date/time converter to work with dates and times?
How do I get information out of Engauge Digitizer?
+How do I get better accuracy in the numbers coming out of Engauge Digitizer?>
How do I add Engauge Digitizer to the Windows Explorer context menu?
-How do I add Engauge Digitizer to the Konqueror service menu?
What are the command line options?
What other help options are available?