zxing/cpp
smparkes@smparkes.net 2c787d8440 Port r1623 changes to C++
This provide C++ support for Hanzi from issue 582. With it the C++
qrcode blackbox test results again match the Java results.

The changes are mostly a re-port of various pieces of the Java code
for supporting modes and bit stream parsing in QR codes. It expands
the modes/parsing including ECI and FNC, refactors StringUtils as was
done in Java, and makes DecoderResult include the fields that the Java
code has.

Although the non-qrcode blackbox tests don't all match the Java code
(a known issue) the entire blackbox suite was run under valgrind and
has no errors, including invalid memory references and leaks.

This commit also includes a few cleanups for things like files that
had mixed line endings, i.e., a combination of LF and CR-LF.

git-svn-id: https://zxing.googlecode.com/svn/trunk@1966 59b500cc-1b3d-0410-9834-0bbf25fbcc57
2011-10-13 15:21:13 +00:00
..
core Port r1623 changes to C++ 2011-10-13 15:21:13 +00:00
ios.xcodeproj tweak target sdk and force llvm-gcc 2011-10-09 18:55:33 +00:00
magick/src Port r1623 changes to C++ 2011-10-13 15:21:13 +00:00
osx.xcodeproj objective c port for iOS and OS X 2011-05-17 02:07:56 +00:00
scons Tweak svn/git ignores 2010-08-20 00:41:26 +00:00
.gitignore objective c port for iOS and OS X 2011-05-17 02:07:56 +00:00
.svnignore C++ port: 2009-12-08 21:16:43 +00:00
.valgrind.supp Port r1623 changes to C++ 2011-10-13 15:21:13 +00:00
.valgrindrc Port r1623 changes to C++ 2011-10-13 15:21:13 +00:00
astyle-options Many changes to the C++ port. 2009-11-01 17:30:30 +00:00
blackboxtest.sh C++: binarizer updates 2010-07-19 20:56:17 +00:00
format Many changes to the C++ port. 2009-11-01 17:30:30 +00:00
ios_Prefix.pch objective c port for iOS and OS X 2011-05-17 02:07:56 +00:00
README Tweak svn/git ignores 2010-08-20 00:41:26 +00:00
SConscript Port r1623 changes to C++ 2011-10-13 15:21:13 +00:00
SConstruct Many changes to the C++ port. 2009-11-01 17:30:30 +00:00

This is only tested on Linux. With some trouble, it might work on Windows as well.

The build process uses scons, a build tool written in python. You'll
need to have python installed, but scons installation is optional: a
runtime copy of scons (called scons-local) is included with zxing. To
use the included copy of scons-local, where the instructons says enter
"scons", enter "python scons/scons.py" instead. For example, to build
the library only, you'd use "python scons/scons.py lib" instead of
"scons lib".

To build the library only:
- Run "scons lib" in this folder (cpp)

To build the unit tests:
- Install cppunit (libcppunit-dev on Ubuntu)
- Run "scons tests"
- Run "testrunner" in the build folder

To build the test utility:
- Install Magick++ (libmagick++-dev on Ubuntu)
- Run "scons zxing"

An simple example application is now also included, but no compilation instructions yet.

To clean:
- Run "scons -c all"

To use the test utility:
- Basic usage:
  - "mkdir testout"
  - "zxing testout *.jpg > report.html"
- With the zxing test data, from the cpp folder:
  - "mkdir testout"
  - "build/zxing testout ../core/test/data/blackbox/qrcode-*/* > report.html"

To format the code:
 - Install astyle
 - Run ./format

To profile the code (very useful to optimize the code):
 - Install valgrind
 - "valgrind --tool=callgrind build/zxing - path/to/test/data/*.jpg > report.html"
 - kcachegrind is a very nice tool to analize the output