pax_global_header00006660000000000000000000000064140127315760014520gustar00rootroot0000000000000052 comment=aac86d5f08d64ab4c3da78188eb622fa3cb07182 zbar-0.23.92/000077500000000000000000000000001401273157600126335ustar00rootroot00000000000000zbar-0.23.92/.github/000077500000000000000000000000001401273157600141735ustar00rootroot00000000000000zbar-0.23.92/.github/workflows/000077500000000000000000000000001401273157600162305ustar00rootroot00000000000000zbar-0.23.92/.github/workflows/ci.yml000066400000000000000000000143711401273157600173540ustar00rootroot00000000000000name: CI # Should run only on branches and PR, as "on_tag.yml" will handle tags on: push: branches: master pull_request: branches: master jobs: # # Linux # Ubuntu: name: Ubuntu debuild runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: prepare run: | sudo apt-get update sudo apt-get install -y autoconf automake autopoint autotools-dev \ gettext libdbus-1-dev pkg-config xmlto \ devscripts build-essential lintian \ debhelper-compat \ dh-exec libdbus-1-dev \ libmagick++-dev libv4l-dev python3-dev \ libgtk-3-dev lftp \ dh-sequence-python3 libgtk2.0-dev \ libqt5x11extras5-dev qtbase5-dev - name: build run: | .github/workflows/debuilder.sh Ubuntu_Gtk2: name: Ubuntu with Gtk2 runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: prepare run: | sudo apt update sudo apt-get install -y autoconf automake autopoint autotools-dev \ gettext libdbus-1-dev libgtk2.0-dev libmagick++-dev \ libqt5x11extras5-dev libv4l-dev libx11-dev openjdk-8-jdk-headless \ perl pkg-config python-all-dev python-all-dbg python-gtk2-dev \ qt5-default xmlto - name: configure run: | autoreconf -vfi export QT_SELECT=5 ./configure - name: build run: make - name: check run: make check-local - name: install run: sudo make install Ubuntu_Gtk3: name: Ubuntu with Gtk3 runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: prepare run: | sudo apt update sudo apt-get install -y autoconf automake autopoint autotools-dev \ gettext libdbus-1-dev gir1.2-gtk-3.0 libgtk-3-dev \ libgirepository1.0-dev libmagick++-dev libqt5x11extras5-dev \ libv4l-dev libx11-dev openjdk-8-jdk-headless perl \ pkg-config python3-minimal python3-dev python3 python3-gi \ qt5-default xmlto - name: configure run: | autoreconf -vfi # Let configure get this unset PYTHON_CFLAGS PYTHON export QT_SELECT=5 ./configure --with-gtk=gtk3 --with-python=python3 - name: build run: make - name: check run: make check-local - name: install run: sudo make install Mingw_w64_VfW: name: Mingw-w64 VfW runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: prepare run: | sudo apt update sudo apt-get install -y autoconf automake autopoint autotools-dev \ gettext libdbus-1-dev pkg-config win-iconv-mingw-w64-dev \ binutils-mingw-w64-i686 gcc-mingw-w64 mingw-w64-i686-dev \ mingw-w64-common xmlto - name: configure run: | export PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig autoreconf -vfi CC=i686-w64-mingw32-gcc ./configure \ --host=i686-w64-mingw32 --prefix=/usr/local/win32 \ --without-gtk --without-python --without-qt --without-java \ --without-imagemagick --enable-pthread - name: build run: make - name: install run: sudo make install Mingw_w64_DShow: name: Mingw-w64 DShow runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: prepare run: | sudo apt update sudo apt-get install -y autoconf automake autopoint autotools-dev \ gettext libdbus-1-dev pkg-config win-iconv-mingw-w64-dev \ binutils-mingw-w64-i686 gcc-mingw-w64 mingw-w64-i686-dev \ mingw-w64-common xmlto - name: configure run: | export PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig autoreconf -vfi CC=i686-w64-mingw32-gcc ./configure \ --host=i686-w64-mingw32 --prefix=/usr/local/win32 \ --without-gtk --without-python --without-qt --without-java \ --without-imagemagick --enable-pthread \ --with-directshow - name: build run: make - name: install run: sudo make install # # Mac OS # Mac_OS: name: Mac OS runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: prepare run: | brew install gettext autoconf automake libiconv libtool \ gs graphicsmagick python xmlto pkg-config ccache brew unlink libtool && brew link libtool brew unlink gettext && brew link gettext - name: configure run: autoreconf -vfi ./configure --disable-video --disable-nls --with-python=python3 - name: build run: | make sudo make install # # Windows # Windows: name: Windows runs-on: windows-latest strategy: matrix: arch: [x86_64, i686] video: [VfW, DShow] include: - arch: x86_64 msystem: MINGW64 grep: x86-64 - arch: i686 msystem: MINGW32 grep: 386 - video: DShow extra: --with-directshow - video: VfW extra: defaults: run: shell: msys2 {0} env: CPPFLAGS: -D__USE_MINGW_ANSI_STDIO=1 steps: - uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} update: false install: >- mingw-w64-${{ matrix.arch }}-gcc mingw-w64-${{ matrix.arch }}-iconv mingw-w64-${{ matrix.arch }}-imagemagick mingw-w64-${{ matrix.arch }}-python base-devel git xmlto autoconf libtool automake gettext make autoconf-archive pkg-config - uses: actions/checkout@v2 - name: configure shell: msys2 {0} run: | autoreconf -vfi ./configure LDFLAGS="-static" \ --enable-pthread --disable-dependency-tracking \ ${{ matrix.extra }} - name: build shell: msys2 {0} run: make - name: install shell: msys2 {0} run: make install zbar-0.23.92/.github/workflows/debuilder.sh000077500000000000000000000033001401273157600205220ustar00rootroot00000000000000#!/bin/bash set -e # A debian ruleset file which runs on Github's distro DEB_FNAME="zbar_0.23.90-*.debian.tar.xz" DEB_URL="http://deb.debian.org/debian/pool/main/z/zbar/" # Should be the same version as provided by the host OS COMPAT=12 # Set directories used during the build ZBARDIR=${PWD} BUILDDIR=${ZBARDIR}/../build echo "Generating an origin tarball" cd ${ZBARDIR} VER=$(cat ${ZBARDIR}/configure.ac|grep AC_INIT|perl -ne 'print $1 if /(\d+[.\d]+)/') TAR=${ZBARDIR}/../zbar_${VER}.orig.tar.gz git archive --format tgz -o ${TAR} HEAD echo "Retrieving Debian ruleset" lftp -e "mget -c ${DEB_FNAME}; exit" ${DEB_URL} # Ensure to use just one version, in case multiple ones were downloaded DEB_FNAME=$(ls -1 ${DEB_FNAME}|tail -1) echo "Preparing build environment" rm -rf ${BUILDDIR}/ | true mkdir -p ${BUILDDIR} cd ${BUILDDIR} tar xf ${TAR} tar xf ${ZBARDIR}/${DEB_FNAME} # Ensure that debhelper-compat will use the one expected by the build distro sed -E "s#debhelper-compat.*,#debhelper-compat (= $COMPAT),#" -i debian/control # Ignore missing SONAME for libs, if any, as it is not a build robot's task # to update ${DEB_FNAME} ruleset echo -e "\noverride_dh_shlibdeps:" >> debian/rules echo -e "\tdh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info" >> debian/rules # We want it to build cleanly - so drop all patches from it rm -rf debian/patches # Override the changelog to ensure that it will contain the current version cat << EOF > debian/changelog zbar (${VER}) unstable; urgency=medium * Upstream version -- LinuxTV bot $(date -R) EOF OS_VERSION=$(. /etc/os-release && echo $ID-$VERSION_ID) echo "Building ZBar packages for ${OS_VERSION}" debuild -us -uc zbar-0.23.92/.github/workflows/gen_release.pl000077500000000000000000000013661401273157600210470ustar00rootroot00000000000000#!/usr/bin/perl my $body_path = shift or die "Need a file name to store the release body"; my $ver; open IN, "configure.ac" or die; while () { if (m/^[^\#]*AC_INIT\s*\(\s*\[\s*zbar\s*\]\s*,\s*\[(\d+[\.\d]+)/) { $ver=$1; last; } } close IN or die; die if (!$ver); sub gen_version() { print "Generating release for version $ver\n"; open IN, "ChangeLog" or return "error opening ChangeLog"; open OUT, ">$body_path" or return "error creating $body_path"; my $start=1; while () { if ($start) { print OUT $_; $start = 0; next; } last if (m/^\S/); print OUT $_ or return "error writing to $body_path"; } close OUT or return "error closing $body_path"; return ""; } my $ret = gen_version(); die($ret) if ($ret ne ""); zbar-0.23.92/.github/workflows/on_release.yml000066400000000000000000000106101401273157600210650ustar00rootroot00000000000000name: Upload binaries to release on: release: types: - created - published - edited jobs: Ubuntu: name: Build for Ubuntu 20.04 runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: prepare run: | sudo apt-get update sudo apt-get install -y autoconf automake autopoint autotools-dev \ gettext libdbus-1-dev pkg-config xmlto \ devscripts build-essential lintian \ debhelper-compat \ dh-exec libdbus-1-dev \ libmagick++-dev libv4l-dev python3-dev \ libgtk-3-dev lftp \ dh-sequence-python3 libgtk2.0-dev \ libqt5x11extras5-dev qtbase5-dev - name: build run: | .github/workflows/debuilder.sh - name: generating tarball run: | OS_VERSION=$(. /etc/os-release && echo $ID-$VERSION_ID) tar cvfz ${DIR}/zbar-${OS_VERSION}.tar.gz *.deb echo "OS_VERSION=$OS_VERSION" >> $GITHUB_ENV - name: upload env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} uses: actions/upload-release-asset@v1 with: upload_url: ${{ github.event.release.upload_url }} asset_path: ./zbar-${OS_VERSION}.tar.gz asset_name: zbar-${OS_VERSION}.tar.gz asset_content_type: application/gzip Mac_OS: name: Build for Mac OS runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: prepare run: | brew install gettext autoconf automake libiconv libtool \ gs graphicsmagick python xmlto pkg-config ccache brew unlink libtool && brew link libtool brew unlink gettext && brew link gettext - name: configure run: autoreconf -vfi ./configure --disable-video --disable-nls --with-python=python3 - name: build run: | make DESTDIR=${PWD}/macos make install - name: generating tarball run: | DIR="$PWD" tar c -C ${PWD}/macos -f ${DIR}/zbar-macos.tar.gz -z . - name: upload env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} uses: actions/upload-release-asset@v1 with: upload_url: ${{ github.event.release.upload_url }} asset_path: ./zbar-macos.tar.gz asset_name: zbar-macos.tar.gz asset_content_type: application/gzip Windows: name: Build for Windows runs-on: windows-latest strategy: matrix: arch: [x86_64, i686] video: [VfW, DShow] include: - arch: x86_64 msystem: MINGW64 grep: x86-64 - arch: i686 msystem: MINGW32 grep: 386 - video: DShow extra: --with-directshow - video: VfW extra: defaults: run: shell: msys2 {0} env: CPPFLAGS: -D__USE_MINGW_ANSI_STDIO=1 steps: - uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} update: false install: >- mingw-w64-${{ matrix.arch }}-gcc mingw-w64-${{ matrix.arch }}-iconv mingw-w64-${{ matrix.arch }}-imagemagick mingw-w64-${{ matrix.arch }}-python base-devel git xmlto zip autoconf libtool automake gettext make autoconf-archive pkg-config - uses: actions/checkout@v2 - name: configure shell: msys2 {0} run: | autoreconf -vfi ./configure LDFLAGS="-static" \ --enable-pthread --disable-dependency-tracking \ ${{ matrix.extra }} - name: build shell: msys2 {0} run: make - name: generating zip shell: msys2 {0} run: | DESTDIR=${PWD}/win_${{ matrix.arch }}-${{ matrix.video }} make install (cd ${PWD}/win_${{ matrix.arch }}-${{ matrix.video }}; zip -r ../zbar-win_${{ matrix.arch }}-${{ matrix.video }}.zip .) - name: upload env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} uses: actions/upload-release-asset@v1 with: upload_url: ${{ github.event.release.upload_url }} asset_path: ./zbar-win_${{ matrix.arch }}-${{ matrix.video }}.zip asset_name: zbar-win_${{ matrix.arch }}-${{ matrix.video }}.zip asset_content_type: application/gzip zbar-0.23.92/.github/workflows/on_tag.yml000066400000000000000000000014111401273157600202170ustar00rootroot00000000000000name: Create release on tag on: workflow_dispatch: push: # Sequence of patterns matched against refs/tags tags: - '[0-9]+*' jobs: release: name: Create Release runs-on: ubuntu-latest outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - uses: actions/checkout@v2 - name: Release changelog run: .github/workflows/gen_release.pl body_file.tmp - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} body_path: body_file.tmp draft: false prerelease: true zbar-0.23.92/.github/workflows/update_release.yml000066400000000000000000000030661401273157600217420ustar00rootroot00000000000000name: Trigger upload binaries on: workflow_dispatch: jobs: Windows: name: Build for Windows runs-on: windows-latest strategy: matrix: arch: [x86_64] video: [DShow] include: - arch: x86_64 msystem: MINGW64 grep: x86-64 - video: DShow extra: --with-directshow defaults: run: shell: msys2 {0} env: CPPFLAGS: -D__USE_MINGW_ANSI_STDIO=1 steps: - name: install cli env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | choco install gh gh release list - uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} update: false install: >- mingw-w64-${{ matrix.arch }}-gcc mingw-w64-${{ matrix.arch }}-iconv mingw-w64-${{ matrix.arch }}-imagemagick mingw-w64-${{ matrix.arch }}-python base-devel git xmlto zip autoconf libtool automake gettext make autoconf-archive pkg-config - uses: actions/checkout@v2 - name: configure shell: msys2 {0} run: | autoreconf -vfi ./configure --enable-pthread --disable-dependency-tracking ${{ matrix.extra }} - name: build shell: msys2 {0} run: make - name: generating zip shell: msys2 {0} run: | DESTDIR=${PWD}/win_${{ matrix.arch }}-${{ matrix.video }} make install (cd ${PWD}/win_${{ matrix.arch }}-${{ matrix.video }}; zip -r ../zbar-win_${{ matrix.arch }}-${{ matrix.video }}.zip .) zbar-0.23.92/.gitignore000066400000000000000000000020641401273157600146250ustar00rootroot00000000000000*.la *.lo *.o *~ .deps/ .dirstamp .libs/ ABOUT-NLS aclocal.m4 autom4te.cache/ config/ config.log config.status configure doc/doxygen.conf doc/man/ doc/reldate.xml doc/version.xml gtk/zbarmarshal.c gtk/zbarmarshal.h gtk/ZBar-1.0.gir gtk/ZBar-1.0.typelib include/config.h include/config.h.in include/stamp-h1 iphone/build iphone/zbar.xcodeproj/project.xcworkspace iphone/zbar.xcodeproj/xcuserdata java/net/sourceforge/zbar/*.class java/zbar.jar java/zbarjni.h libtool Makefile Makefile.in po/*.gmo po/*.mo po/Makefile.in.in po/Makevars.template po/POTFILES po/Rules-quot po/boldquot.sed po/en@boldquot.header po/en@quot.header po/insert-header.sin po/quot.sed po/remove-potcdate.sed po/remove-potcdate.sin po/stamp-po po/zbar.pot pygtk/zbarpygtk.c pygtk/zbarpygtk.defs qt/moc_*.cpp test/check_dbus.sh test/test_examples.sh test/test_convert test/test_cpp test/test_cpp_img test/test_dbus test/test_decode test/test_jpeg test/test_proc test/test_video zbarcam/moc_*.h zbarcam/zbarcam zbarcam/zbarcam-gtk zbarcam/zbarcam-qt zbarimg/zbarimg zbar*.pc zbar-*.tar.bz2 zbar-*.tar.gz zbar-0.23.92/.hgignore000066400000000000000000000007151401273157600144410ustar00rootroot00000000000000syntax: glob *~ Makefile Makefile.in aclocal.m4 configure config config.guess config/config.h config.h.in config.log config.status config.sub depcomp compile install-sh libtool ltmain.sh autom4te.cache missing python/MANIFEST build *.xcodeproj/*.mode1v3 *.xcodeproj/*.pbxuser xcuserdata contents.xcworkspacedata .DS_Store android/obj *.class *.dex android/libs android/examples/*/libs android/*.zip android/local.properties android/examples/*/local.properties zbar-0.23.92/.hgtags000066400000000000000000000027231401273157600141150ustar00rootroot0000000000000020d75a548cf6daee2e590683ee2166d6af24e94f 0.5 590b1d022f92b67f1bcd52b3c2810682285a5f6b 0.7 6cdb3f2ec455b6abb747adfe236c619c6c0ee1ef 0.2 c6178a9dde5527c0ff59e8e7e3e04f9057e0c3a2 0.3 c7ff4e3a6f6d8e9ccdebece0ff276db5cecf34fd 0.6 f68c5b088507f424840f8efa4077aac37c5390cd 0.4 fe6f4843de209522918690dc741fd7fff442ef6d 0.1 f0aa6bf0cab7fda8725ce0da35d3e69473269c71 0.8 38265c7b4ad4dfafe7b5e9eae4bb0d43d68b4143 0.9 2dc2d73c468a032edc68a127e9ddbbfe5f520777 0.9 f3670ba47f2e070f4c43e97f4de3200903720e73 0.10 f3670ba47f2e070f4c43e97f4de3200903720e73 0.10 563557a923d0e23e36c81878d660aefc1c0fe3e7 0.10 b21098d27ff88c4f1a529fe0762f1cb307e04399 iPhoneSDK-0.1 b0bda6247b2fe4ffb52db89a776f91244f25d897 iPhoneSDK-0.1.1 d1655a680c3df68b3466d3b2c714f30af7223ec6 iPhoneSDK-0.1.2 4556c996acaaa6fcd5e8e9879f410f8120746e2b iPhoneSDK-1.0 12de07e51dce0d1cfc3e9699bbf9d5c8774a5371 iPhoneSDK-1.0.1 12de07e51dce0d1cfc3e9699bbf9d5c8774a5371 iPhoneSDK-1.0.1 2541a66ae7d64fbd923168ae677abb156021e88d iPhoneSDK-1.0.1 5e5060b563a1878ea297af5a50261d14cf1cb449 iPhoneSDK-1.1 f9e46865dbcebd04683ca7592ab32aeda615e772 iPhoneSDK-1.1.1 801318a6195060c31259da1f076ecc9a609616cc iPhoneSDK-1.1.2 4bbb4e2bdba8c41a282df7e65a02797250f44daa iPhoneSDK-1.1.3 1ad84c3c03252c366a82552fa952674ec593c73f iPhoneSDK-1.2 9e7bad13ae6a4b65e0f0964512f96284d37f0dc8 iPhoneSDK-1.2.1 146b857ff41ae462cc52f8dddf46d867763433a1 iPhoneSDK-1.2.2 9b946a7ead73ac99e121de2e7f495213cda88e6f AndroidSDK-0.1 5eb3c8786845fe3ad2c74f6a660e70176b88347f iPhoneSDK-1.3.1 zbar-0.23.92/COPYING000066400000000000000000000023771401273157600136770ustar00rootroot00000000000000The ZBar Bar Code Reader is Copyright (C) 2007-2011 Jeff Brown The QR Code reader is Copyright (C) 1999-2009 Timothy B. Terriberry You can redistribute this library and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ISAAC is based on the public domain implementation by Robert J. Jenkins Jr., and is itself public domain. Portions of the bit stream reader are copyright (C) The Xiph.Org Foundation 1994-2008, and are licensed under a BSD-style license. The Reed-Solomon decoder is derived from an implementation (C) 1991-1995 Henry Minsky (hqm@ua.com, hqm@ai.mit.edu), and is licensed under the LGPL with permission. zbar-0.23.92/ChangeLog000066400000000000000000001051221401273157600144060ustar00rootroot000000000000000.23.92: * Added a --enable-static option to make easier to distribute Windows binaries 0.23.90: * Started using github actions for CI and binary releases * Fixed several issues with configure.ac, making it auto-detect most things, when possible * README.md now shows the absolute minimum requirement for building ZBar on Ubuntu * Fixed some build issues * Make it compatible with Python 3.9 * Fixed some Python 3.9 and Qt5 warnings * Typo fixes * Several fixes at zbarcam * zbarimg: fix stderr output when symbols are found 0.23.1: * Add i18n translation support and add a pt_BR translation * Change default to autodetect python and gtk versions * Improve tests and builds on travisCI * Some documentation updates * Add support for binary data extraction * Add support for raw decoding without charset conversions * Add one shot scanning mode * Improved OSX and iphone support * Fix help messages * Fix some makefile issues * Fix error detection in video4linux read * Fix pkgconfig for zbar-qt5 * Fix a double-free condition 0.23: * Windows: added support for DirectShow * Text files at main dir converted to Markdown notation * HACKING.md text now reflects the procedures we use since 0.20 * ZBar's URL locations updated on several places * Added support for using Gtk3 with zbarcam-gtk * Added support for using GObject Integration (GIR) with pygobject-3.0 * Added support for Python3 bindings * Python scripts now runs with either python2 or python3 * added Travis checks for Gtk3 with Python3 and GIR * added Travis builds for cross-compilation with winGW * added Travis builds for Windows native build * added a test script for checking python bindings * Added a test script for Python with Gtk support via GIR * Suppressed gcc warnings when building with Gtk3 * Got rid of gdk_threads for good at zbarcam-gtk, using an idle hook to handle async messages * The debian/ and travis/ directories were removed from distribution files * Java sources added to the distribution tarball 0.22.2: * Improve some pkg check logic, in order to solve some ./configure issues * Fix logic that allows disabling Qt support * Add support for Java 11 detection * Fix Java detection logic * Fix Travis CI breakages due to the usage of Java 11 on Debian Sid * Fix some issues with MinGW Windows build * Search for new ImageMagick 7 header location 0.22.1: * Ensure that version.xml and reldate.xml will be placed at the source dir * Make use of glib thread names * Windows: Make zbargtk build * Windows: Use -no-undefined for libzbargtk * Windows: Disable zbarcam-gtk * Windows: Check for clock_gettime on pthread library as well * Windows: Specify correct path to barcode.png * Windows: Include windows.h for vfw * Makefile.am: Add missing extra-dist-file * configure.ac: allow building libzbar-qt as a static library 0.22: * zbarcam-qt: allow changing resolutions in real time * zbarcam-qt: better support ZBar options * zbarcam-qt: do several visual improvements * zbarcam-qt: make it remember the geometry * zbarcam-qt: allow show/hide control and options bars * zbarcam-qt: remember lastly used settings and camera controls * zbarcam-qt: allow changing ZBar decode options via GUI * Add API to allow get/set resolutions * img_scanner: add handler for color-inverted codes * img_scanner: fix get_config parameter validation * scan_video: improve logic to remove duplicated/invalid devnodes * symbol.c: fix symbol hash logic (prevents crash with QR options) * configure.ac: fix an error at libv4l2 package check * fix some typos * exit gracefully when decoding split QR codes 0.21: * zbarcam-qt: allow selecting codes via GUI interface * When both enabled, ISBN-13 has precedence over ISBN-10 * ZBar is now using Travis CI for continuous integration tests * Convert INSTALL and README to markdown and update them * Improve ZBar testing code and make easier to run the tests * Fix build with Clang * Add simple dbus IPC API to zbarcam. * zbarimg: display only the compiled symbologies * v4l2: make ZBar build and run on Kernels < 3.16 * configure.ac: The pdf417 code is incomplete. Warn about that * Add Debian packaging and Travis CI configuration * Add barcode examples for different supported symbologies * Several improvements at the building system * Add support for SQ code symbology * v4l2: add fallback for systems without v4l2_ext_controls which field * v4l2: use device_caps instead of capabilities * v4l2: make v4l2_request_buffers() more generic * release video buffers after probing and request them again when needed * Ignore ENOTTY errors when calling VIDIOC_S_CROP * doc/Makefile.am.inc: clean html generated files * Add --disable-doc configure option to disable building docs * Fix function prototype to be compatible with recent libjpeg * Wrap logical not operations into parentheses * INSTALL: warn that autoconf should be called before configure * code128: fix error logic * convert: ensure that it will not use a freed value * zbar: use g_thread_new() instead of g_tread_create() * zbargtk: add a missing break * gtk/zbargtk: add a missing check if zbar->window is not null 0.20.1: * Be sure to use python2, as /usr/bin/python is being removed (or made non-functional) on some distributions * Prefer using pygobject-codegen-2.0 instead of pygtk-codegen-2.0 * Make it work with modern versions of python 2 0.20: * As upstream became abandoned, created a ZBar fork at linuxtv.org * Use libv4l2 for V4L2 support, using emulated formats as last resort * Add support for Qt5 * Add zbarcam-qt and zbarcam-gtk (from the example codes) * Add support for v4l2 controls * Add the needed GUI bits for zbarcam-qt to work with controls * Fix compilation issues with newer automake versions 0.11: * Codabar reliability enhancements - fix missing check - require minimum quality - bump default uncertainty * tweak Codabar bar/space ratio validation * finish Codabar support for python, perl, java and iPhone interfaces - reduce Codabar uncertainty to minimum * add core support for Codabar symbology - TBD: python, perl, java and iPhone interfaces * fix v4l config and build variations (bug #3348888) - thanks to jarekczek for reporting this! - NB v4l1 removed from kernel as of 2.6.38 * fix missing python thread initialization (bug #3349199) - thanks to jarekczek for reporting this problem! * fix missing configure check for Python.h (bug #3092663) - thanks to Zoltan Kovacs for reporting this problem! * fix C++ wrapper missing Symbol.quality (bug #3076524) - thanks to Rudy Melli for pointing this out! * fix C++ wrapper bugs (bug #3396068) - thanks to anotheruser1 for reporting this! - add new C++ wrapper test * fix avoid compositing ISBN10 data * add support for GraphicsMagick as ImageMagick alternative * mention xmlto in HACKING (patch #3297039) - thanks to jarekczek for the patch! * disable addons by default until synchronization with main symbol is working * fix image scanner min quality filtering * fix i25 buffer overrun corner case * fix EAN addon enables * fix zbarimg to accept autodetected stdin (lone dash) * fix Qt 4.6.3 compilation error (patch #3178244) - thanks to hrhristov for the patch! * add Python Processor support for request_size interface * fix Python Processor support for GIL, allowing asynchronous scanning * fix jpeg decoder skip handling - thanks to jarekczek for the patch! * rename dprintf macro to avoid conflicts (patch #3128538) - thanks to maurochehab for the patch! * add support for EAN/UPC 2 and 5 digit add-on symbols - deprecate original, unfinished add-on APIs - add self-checking to test_decode * fix support for GS1 AIs - thanks to jockusch for a patch! - add decoder/symbol "modifier" flags and config read access - set flags or emit GS appropriately for Code 128 FNC1 - add iphone, java, perl, python bindings for modifiers and configs * add support for Code 93 symbology * add video size request to (Py)GTK widget (req #3034522) - thanks to Jerome Charaoui for the patch! * add support for GS1 DataBar Expanded (RSS Expanded) symbology * add language bindings for DataBar * add preliminary support for GS1 DataBar (RSS-14) symbology * enhance decoder reliability (EAN, Code 39, Code 128) - enhance decoder test * fix documentation of command exit codes (bug #3017322) * fix C++ video callback bug - add C and C++ processor examples * add per-symbology cache consistency - reliable symbologies decode immediately by default - no more need to disable cache with video - also fix crop bugs w/video scanning * add support for scanning partial images (cropping) - update c++, python, perl, java bindings and tests * fix couple of leaks * remove doc hints about GFDL (bug #3004411) - apply LGPL to API docs * relax Code 39 width ratio checks * core library portability improvements - remove some unnecessary C99 syntax - add configure checks for errno - enhance C++ Symbol interface * adjust Python module README (add examples and note DLL in path) * fix QR Code missing from man pages (bug #2969857) * cleanup decoder assertions and locking (bug #2966916) * add Java interface to library via JNI - add Java tools and JNI build tests to configure - fix compiler warnings from binary output changes * fix output of binary data in zbarimg and zbarcam - thanks to fukuchi for a patch! - add base64 format for binary xml output * add coarse symbol orientation information (patch #2913094) - thanks to Anssi for a patch! - add decode direction feedback to decoder - update C++, Python, Perl and ObjC wrappers - add orientation to test suites * fix inconsistent fourcc endian handling bugs (bug #2918994) - thanks to jdccdevel for a patch! - add fourcc conversion and parse interfaces to zbar.h * report QR immediately for video (no inter-frame consistency check) * add python distutils build infrastructure version 0.10: * hotfix add MinGW import lib to Windows installer * attempt fix for Qt4 < 4.4 * release updates - fix perl Processor init without video * fix window closed notification during events - add read_one example, fix xs compiler warnings, update perl docs * add result query interfaces to image scanner and processor - move result filtering into image scanner (from user) - abort output blockers when window closed * Windows updates - update installer and README for distribution of dependency libraries - fix applications to use binary output for xml and raw modes * add regression tests to makefile * cleanup warnings from newer gcc versions * fix excessive i25 QZ checks * add regression script - add zbarimg xml output for every source (even empty) - add edge detection to svg debug overlay * image scanner cleanup and minor performance enhancements * bug hunt and stability improvements - fix broken processor locks - fix X connection polling, revert previous separate thread workaround - refuse to resize windows larger than screen size - fix window output scaling - preserve image aspect ratio, adjust overlay - fix window redraw - fix crash on Xv image creation failure (still need XImage fallback) - clean up zbarimg exit cases (last image window close, missing decodes) * always use separate video thread when threads enabled (even v4l2) * add configure check for features.h * overlay enhancements - add fps to overlay - add overlay control to processor - add windows overlay drawing * tweak linear code position info * trim deep qrcode hierarchy * fix zero length symbol data * fix QR structured append result handling * cleanup SVG debug dump (partial) - some QR integration API cleanup * extract explicit result container, separate from image - remove (broken/tmp) converted image result sharing - add explicit symbol recycle API, update processor/widgets to use - cleanup and update C++ API - update Python/Perl APIs - fix broken and add new Python/Perl tests * cleanup QR result integration - add hierarchy to symbol results - extract symbols during text decode, preserving position and structure - outline QR symbols in window overlay - tmp fix converted image result propagation * factor image scanner cache and apply to QR - fix image scanner handler called once per-image (vs every decode) * QZ and clustering fixes to QR integration - remove qr_finder QZ checks - decrease center clustering threshold from 1/3 to 1/5 of length - add img_scanner svg debug output - manually add config.rpath to workaround broken autofoo * finish initial integration of QR Code reader from maemo-barcode project * zbar-side updates for QR Code integration - add linear scanner position interface - add QR finder position feedback - integrate QR Code reader with img_scanner - refactor some symbol/image interaction - change default scanner density to 1 - add iconv to build infrastructure * initial hooks for QR Code, first pass at finder * fix broken builds with --disable-pthread version 0.9: * hotfix configure check for Wand as well as MagickWand (bug #2848437) * hotfix trim extraneous MagickWand calls (bug #2848445) * release updates * fix uninitialized member in Qt widget (bug #2844846) * move image conversion out of image scanner up to higher levels (preparation for library split) * add symbol quality metric and image scanner position config - update python, perl and docs * compatibility fixes - work around ImageMagick API breakages - fix some OS X compile issues * Qt widget cleanup - handle video device set before window attached - prevent exceptions from escaping event handlers * more Qt window creation hook fixes - NB may still cause problems if video is opened before window is visible * finish fix for Qt init ordering (bug #2844846) * potential fix for display init ordering (bug #2844846) - new workaround for filtering bad EAN results in the image scanner * more testing, fixes and cleanup - fix v4l1 - fix/add null processor interface * change default image scanner density to 1x1 - random cleanup, vfw hang, quit key - fix scan_image example MSVC project - windows installer tweaks * add zbarcam to windows installer * major restructuring to improve platform abstraction - add lock, thread and timer abstractions - migrate specific notification locks to platform independent layer - fixes to vfw capture interface - fix window format conversion issues - fix some broken configure checks - zbarcam working in windows! * fix symbol leaks (bug #2820658) - add symbol reference counting * add support for binary symbol data * initial VFW video support - mostly working with uvc driver, broken for others - factor out common video buffer handling - fix processor to destroy window *before* video (ref TODO) - use /dev/video* VFW pseudo-devices - windows configure skip non-windows checks - prep for platform refactoring * fix zbarimg b&w format handling * fix scan (image) boundary QZ handling (bug #2807538) - add linear scanner manual flush API - linear scanner always starts/ends w/a space of width 0 - remove artificial image scanner border - decoders special case 0 width space for QZ checks - add missing Code 128 leading QZ check * fix Code39 max ICS checks (bug #2807447) - add decoder lock owner tracking (debug) - update dbg_scan to match img_scanner * first pass installer - add version and icon resources for libzbar, zbarimg * zbarimg working in windows - switch to StretchDIBits over DrawDib - refactor some window drawing code to remove redundancies - make refcounts thread safe - clean up alloc/free bugs * convert zbarimg to C (cross compiled C++ cannot run w/native libraries) - fix DrawDib image width granularity - fix window resize dimensions to include decorations - images still inverted, otherwise zbarimg now "working" in windows * refactor processor implementation to support cross-platform - first pass windows processor (before debugging) - make processor locks reentrant (call APIs from callback) * initial Windows support for window interface - currently supports VFW DrawDib interface for image display (DirectDraw and others TBD) - also basic processor window creation/manipulation - Windows configure tests version 0.8: * release updates * add "raw" output option (without symbology prefix) to apps (req #2671863) * fix Code 39 min length and document min/max configs (bug #2787925) * fix zbar_image_free_data windows recursion loop (bug #2796277) * fix uninitialized decoder configs (bug #2800163) * switchover from subversion to mercurial version 0.7: * fix perl MANIFEST * release updates (version, NEWS, packaging) * adjust [py]gtk distributed files * draw new logo (rough, no Xrender yet) * fix Makefile.am syntax error * fixup some perl distribution details * project name change: everything "zebra" becomes "zbar" * remove old logo * add first pass python bindings! * fix perl mortality bug * add new cfg constants to perl * fix perl doc handler ref * fix processor set_active error propagation * add wiki examples (scan_image.*, processor.*) * add missing trailing quiet zone checks for ean and code39 * add min/max code length cfg/check for i25,code128,code39,pdf417 * add image scan density API/option * tweak option parser to be more strict/correct about abbreviations * add API to force specific video io modes (req #2293955) * apply patches for more broken driver workarounds (req #2293955) * fix(?) C++ string to fourcc conversion * add missing C++ wrappers * add additional examples to man pages (symbology enable/disable) * add missing options to man page synopsis * add missing --xml option to man pages version 0.6: * hotfix broken perl install (name change) * add missing files to distribution * release updates (version, NEWS, pacakging) * rename perl module to Barcode::Zebra (fit with existing cpan namespace) * add perl documentation and example * add v4l version debug/test override * add docs for new zebracam prescale option * add video pre-scaling API/option to video/processor/zebracam (req #2277340) * add few missing APIs to perl xs wrapper * fix missing libjpeg #ifdef in convert * initial support for decoding jpeg images using libjpeg! * workaround broken v4l2 drivers in USERPTR mode * have configure double check Magick++ install (bug #2582232) * update README dependency list * fix C++ warnings in Processor * fixes for building DLLs with libtool under MinGW * automatically remove "processor" layer if poll.h is unavailable * test_decode portability workarounds * add config/compile time symbology enables * add low-level PDF417 decode stage - converts widths to codewords * add XML output option to zebracam and zebraimg * add sequence number image attribute, set to frame number by video * change v4l2 interlaced only drivers to warning instead of hard fail * workaround broken drivers that return error for V4L2_FIELD_NONE request * add some initial PDF417 hooks * first pass perl bindings for Processor, Scanner and Decoder * fix error propagation double free bug * add missing APIs: processor userdata and image data length * fix configure check for v4l2 - thanks to Simon Matter for the patch! * finish support for UPC-E * fix zebraimg to scan all pages/frames of a multi-frame input * fix debian packaging dependencies (bug #2070164) * *remove* debian directory from distribution (bug #2070164) * fix inappropriately installed headers and man pages (bug #2055133) * fix pygtk multiple definition link errors on darwin (bug #2052681) * fixes to configure for detecting python settings (bug #2052663) * remove zebrapygtk module link against libpython (bug #2052663) * add drag and drop support for *images* to Qt widget...unfortunately not very useful; every application i tried drops uri-refs rather than images * minor reference documentation updates version 0.5: * release updates (version, NEWS, packaging) * add pkg-config files * update to latest libtool and new autoconf macros * cleanup library symbol exports * remove test programs using internal hooks * improve portability of some format specifiers * fix missing stub for --without-x - thanks to Simon Schmeisser for a patch! * fix --disable-pthread compile errors and warnings * fix XImage size mismatch background artifacts * fix new generated file distribution errors * switch Qt headers to old-style names (investigate possible Qt3 support?) * add independent ABI versioning for GTK and Qt widget libraries * reimplement widget internals to support image scanning and improve locking efficiency * add image scanning to widgets. including builtin conversions from toolkit image types: GtkPixbuf and QImage * add video opened hooks to widgets (improved use model) * add logo, used when there is nothing better to draw * add userdata to image object * fix image reuse cleanup bug * fix format specifiers in some error messages * enhance widget tests to support enable/disable and scan from image * fix broken deallocation assumptions in test_qt * widget API documentation (still need to hookup gtkdoc, and PyGtk docs) * API documentation toplevel overview * update configure summary for new features * replace all decoder assertions w/non-fatal debug spew (bug #1986478) * fix glib-genmarshal check * add first pass of Qt widget! - test/example in test/test_qt.cpp - factor video device scan to share among tests * more C++ integration fixes - additional Image ref tweaks - add Video.close() and Window.clear() APIs * fix missing image scanner handler call * add dereference operator to C++ Symbol * add count attribute to C++ Symbol * fix broken C++ header definitions * fix broken C++ Image references * expose internal reference counting interface * fix window locking bug * cleanup some minor memory leaks * convert Code 128 assertions to non-fatal warning spew * fix single buffer video hang (bug #1984543) * replace inferred video size assertion with warning message (bug #1984543) * add first pass of GTK widget! * add PyGTK widget wrapper * API change: modify window draw/redraw interface to improve interoperability with toolkits - add window locking for thread safety - zebra_window_draw() no longer actually "draws" anything => use window.draw to update the image from video thread then schedule window.redraw from toolkit GUI thread * fix missing C++ std lib dependencies * fix uninitialized handler/userdata bug in decoder * fix broken Code 128 checksum assertion * fix video destructor segfault * fix window destructor Xvideo errors (XID is unsigned...) * switch configure to use pkg-config to find most dependencies * API documentation updates version 0.4: * release updates (version, NEWS, packaging, examples) * couple of portability tweaks * finish format conversion resize cases * add missing conversions * fix some broken conversions * fix some broken redraw and Xv checks * add decoder configuration API - only boolean configs currently implemented - integrate config option parsing w/zebracam and zebraimg - add config to enable/disable each symbology type - add optional conversions from EAN-13 to UPC-A, ISBN-10 and ISBN-13 (disabled by default) - add config to emit/suppress check digit NB behavior change! check digit is now emitted by default * related documentation updates - split common options to a separate entity * fallback to gettimeofday when POSIX timers are not available * image format conversion fixes - fix format size roundoff (NB now rounds *down*) - add convert and resize API to pad/crop image to specific size (eg, to handle Xv min/max image size) NB this is still not implemented for many conversions * fix window deletion visibility inconsistency * add couple processor commands - 'q' to delete window - 'd' to dump displayed image for debug * remove problematic includes used for v4l2 configure test * address compiler portability concerns w/debug print vararg macro * workaround v4l1_set_format() failed consistency check for broken drivers - change from error to warning w/more useful message - calc expected image size using expected value instead of driver value * add missing example scripts to distribution * add missing files for Interleaved 2 of 5 * add support for Interleaved 2 of 5 symbology! - again no check digit option yet * increase decode window from 8 to 16 bars - remove Code 39 "extra bar" hack - add Code 39 quiet zone check - facilitate Interleaved 2 of 5 * optimize character width calculations for all symbologies * fix image scanner bug w/lost symbols at end of scan passes * fix EAN-8 buffer overrun case * add API doc footer * add API documentation generated by Doxygen - markup, cleanup and finish writing header comments - setup Doxygen config file * add/fix window GC * add base support for Code 39 (no check digit or full ASCII options yet) * cleanup decoder locking * add support for EAN-8! version 0.3: * add interface stub files * fix wait timeouts * fix XImage format filtering * fix several error handling corner cases * fix c++ error handling * add missing Window.h * add better hierarchy to library sources * build configuration fixes * portability fixes * packaging updates * fix zebracam beeps * fix some RGB component ordering and XImage format problems * fix window resize and redraw state problems * fix EAN testcase in test_decode - thanks to Steffen Kube for the patch! * add APIs and (hidden) zebracam options to force specific formats for debug * add example scripts * documentation updates * remove implementation of deprecated img_walker * add XImage formats - basic support for 16-bit depths * add some missing rgb format conversions * add basic overlay - currently only markers at detected scan locations (needs improved) * fix memory leak for converted images w/new cleanup semantics * migrate inter-frame consistency check from old zebracam into image_scanner - add API to enable/disable/flush result cache - add API to retrieve cache status from returned symbol * cleanup user_wait blocking semantics for various state combinations * fix bug w/v4l1 not unlinking dequeued image * major restructuring for improved modularity NB not all changes are are backward compatible! - modular support for v4l2 falling back to v4l1 - flexible support for more varied image formats (incomplete) - added reusable abstractions for: an "image" object and associated metadata, a "video" input object and a "window" output object - added new "processor" API to wrap everything together, simplifying trivial application usage (including zebracam and zebraimg) - removed deprecated "img_walker" interface, completely replaced by more integrated "image_scanner" (moving toward more image processing) - updated/added c++ APIs, including improved iterator interfaces * removed SDL dependency due to various usage incompatibilities (most notably the inability to embed video window into a widget) * cleaned up zebracam and zebraimg command line processing (bug #1838535) * many useful enhancements thanks to proposal by mhirsch45 (req #1759923) including: - v4l2 support - support for UYVY image format - zebracam cursor hiding - zebracam audio mute - command line video device specification, * significant error handling and debug improvements * some associated documentation updates * various new test programs (slowly working toward more formal test suite) * add missing xlink namespace to dbg_scan generated output (bug #1764188) * qualify char types as [un]signed to avoid non-portable C ambiguity - thanks to mhirsch45@users.sf.net and Colin Leroy for the patches! (bug #1759914) * add integrated 2D image scanning API - automatically ties to internal scanner and decoder - results reported via new symbol API - deprecated previous, cumbersome img_walker interface - uses new simpler/faster and denser grid pattern (FIXME add 45 and 135) - first step toward more sophisticated image processing * updated zebraimg to use new ImageScanner API - add initial decode location tracking * updated zebracam to use new img_scanner API - extended cache to track multiple symbols per-image - add initial decode location tracking - removed scan grid overlay * add configure check for ImageMagick version >= 6.3.0 * configure dumps ImageMagick, SDL and firefox versions for debug * add NPAPI plugin stub and build infrastructure * flush zebracam output after each scanned symbol * integrate RPM packaging spec file - thanks to V�t Hrachov� for the draft! (patch #1723536) * finally add HACKING to distribution/install (bug #1698202) * add extra documentation files to install (README NEWS INSTALL, etc) * Debian package patch for 0.2 - thanks to V�t Hrachov�: - add libsdl1.2-dev as a build dependency - update automake (>= 1:1.10) as a build dependency - new package version 0.2: * update distribution to include debian packaging * add consistency checking to zebracam * add redundant output suppression to zebraimg * fix couple of Code 128 decode table bugs * fix reversed Code 128 decode * add outstanding scanner edge flush to new_scan() - API change: scanner reset/new_scan() now return scan/decode status - update zebracam and zebraimg to call this between each walker pass (interface still needs improvement...) => improves in scan results for many cases * fix dbg_scan filename generation so results go in local directory * continue Code 128 refinement - finish character set C decode/expansion - add per-character validation - resolve scan direction in separate postprocessing pass before handling ASCII conversion - add several img_walker passes parallel to major axis (for long symbols) - add simple character set C example to test_decode * promote zebraimg images to TrueColor so colored scan pattern always shows * more dbg_scan tweaks * significant scanner improvements - changed "classic" [-1 0 1] first differential kernel to [-1 1] to improve minimum edge resolution to single pixel elements => still need to do some more research and validate assumptions - adaptive thresholding fixes - adjusted filtering for better edge detection - separate constants out to defines (FIXME add config API?) * fix EAN-13 secondary determinant decoding * dbg_scan tweaks to make annotations smaller/more usable * add get_color() interface to decoder * annotated zebraimg scan pattern for marginally useful high-level debug * random include cleanup * cleanup 64-bit compile warnings in zebraimg (bug #1712504) * add first-pass partial support for Code 128 - separate out more EAN state from shared state - internal interface changes - finish dynamic buffer management - add shared resource locking - add Code 128 to test_decode program => still needs additional functionality and plenty of debug => reading both Code 128 *and* EAN still destabilized * add diagnostic program test_video to dump more verbose video debug * incorporate documentation into Debian package - thanks to V�t Hrachov� for the patch! * fix VPATH doc builds (requires automake-1.10 and autoconf-2.61) * build and dist fixes - suppress documentation rebuilds in distributed sources * add Debian packaging sources - thanks to V�t Hrachov� for the patch! * add DocBook template and build infrastructure * add manpages for zebracam and zebraimg * add GNU standard options to zebracam and zebraimg * internal decoder restructuring to support additional symbologies - separated out 1-D decoder infrastructure into generic internal API - moved EAN/UPC specific decoding into it's own module * fix confusing configure behavior which quietly avoided building targets with missing dependencies(?!) configure will now fail with a descriptive error message if you do not have Magick++ and fail to specify --without-imagemagick or do not have SDL and fail to specify --without-sdl * add configure summary describing what will be built (req #1698196) * fix parity encoding in test_decode and add decoded symbol output * introduce Code 128 symbol type * increase width of zebra_symbol_type_t to 16 bits * add HACKING (bug #1698202) version 0.1: * add NEWS and ChangeLog * fix some config/build issues found on other boxes * add missing ImageWalker install * fix scanner runaway threshold calculation bug * fix zebracam/zebraimg bugs overwriting currently scanning image w/scan pattern * add c++ interface to img_walker * apply ImageWalker to zebraimg * add decoder soft reset on partial mismatch * finish basic decoder symbol assembly/reporting * add decoder symbol checksum verification * add callback API option to decoder for "async" symbol processing * add "image walker" library API to trace scan pattern over 2D images * apply image walker to zebracam (C++/zebraimg scan pattern still TBD) * add audio feedback to zebracam (still has long latency) * add zebracam key cmd to dump frame to file (for debugging) * fixes for decoder/scanner reset/new_scan * fixes to scanner initialization and algorithm tweaks * made decoder less sensitive to violated quiet-zone * apply zebraimg workaround for imagemagick image display bug * add string names for symbol types to library and API to access them * add dbg_scan test program for visually debugging image scanner (and decoder) * add test_walk for basic image walker sanity/debug * removed recursive makes in favor of monolithic build * renamed some makefiles accordingly * finished some final symbol data construction * added result callbacks to decoder APIs for data reporting * zebraimg hooks into callback * zebracam still seems to "hang" in undecodeable state? * populate svn with current sources. * most of the basic functionality is included and working. * still need to combine final decode data, finish addons, etc (see TODO). * c++ wrappers are included and tested, but API may need tweaked. * zebraimg and zebracam basically working but need cleanup/polish. * need to create some basic documentation... * initial repository layout zbar-0.23.92/HACKING.md000066400000000000000000000056031401273157600142250ustar00rootroot00000000000000Downloading ZBar source code ============================ When hacking at ZBar, PLEASE send patches against the latest Git tree! There are currently 3 mirrors with ZBar: LinuxTV: Cgit GUI interface: https://git.linuxtv.org/zbar.git/ Git tree: git://linuxtv.org/zbar.git https://git.linuxtv.org/cgit.cgi/zbar.git http://git.linuxtv.org/cgit.cgi/zbar.git Github: https://github.com/mchehab/zbar.git Gitlab: https://github.com/mchehab/zbar You can use git clone to get the latest version from any of the above repositories. if you haven't already, grab the ZBar git repository. For example, to get it from Github, use: git clone https://github.com/mchehab/zbar.git cd zbar autoreconf -vfi This will generate ./configure and all that other foo you usually get with a release. you will need to have recent versions of some basic "developer tools" installed in order for this to work, particularly GNU autotools. these versions of autotools are known to work (newer versions should also be fine): GNU autoconf 2.61 GNU automake 1.10.1 GNU libtool 2.2.6 GNU gettext 0.18.1.1 GNU pkg-config 0.25 xmlto 0.0.20-5 (for docs building) all above mentioned tools (except xmlto) must be installed in the same prefix. mixing prefixes (i.g. /usr/bin and /usr/local/bin) may lead to errors in configuration stages Writing descriptions for your patches ===================================== Please add a good description to your patch adding why it is needed, what the patch does and how. This helps us when reviewing your work when you submit upstream. We use a process similar to the Linux Kernel for patch submissions. In particular, submitted patches should have a developer's certificate of origin, as described at: https://linuxtv.org/wiki/index.php/Development:_Submitting_Patches#Developer.27s_Certificate_of_Origin_1.1 In practice, please add: Signed-off-by: your name on your pathes. Submitting patches ================== When you're done hacking, please submit your work back upstream. If you use Github or Gitlab, you can fork ZBar from it, develop your patches and then push again to your clone, asking the patch merge using the GUI. Although we prefer if you submit patches via either Github or Gitlab, you can also submit them via e-mail to: linux-media@vger.kernel.org If you opt to do so, please place [PATCH ZBar] at the subject of your e-mails for us to not mix them with patches for the Kernel or for other media tools. and want to make your patch, run: git diff > hacked.patch Other things for you to read, in order to know more about how to submit your work for upstreaming processes in general, that could be useful for you to prepare yourself on submitting patches to ZBar: - https://linuxtv.org/wiki/index.php/Development:_Submitting_Patches - http://www.faqs.org/docs/artu/ch19s02.html - http://www.catb.org/~esr/faqs/smart-questions.html zbar-0.23.92/INSTALL.md000066400000000000000000000202341401273157600142640ustar00rootroot00000000000000Basic Installation ================== These are generic installation instructions. The `configure` shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile` in each directory of the package. It may also create one or more `.h` files containing system-dependent definitions. Finally, it creates a shell script `config.status` that you can run in the future to recreate the current configuration, a file `config.cache` that saves the results of its tests to speed up reconfiguring, and a file `config.log` containing compiler output (useful mainly for debugging `configure`). If you need to do unusual things to compile the package, please try to figure out how `configure` could check whether to do them, and mail diffs or instructions to the address given in the `README` so they can be considered for the next release. If at some point `config.cache` contains results you don't want to keep, you may remove or edit it. The file `configure.in` is used to create `configure` by a program called `autoconf`. You only need `configure.in` if you want to change it or regenerate `configure` using a newer version of `autoconf`. The simplest way to compile this package is: 1. `cd` to the directory containing the package's source code and type `autoreconf -vfi && ./configure` to configure the package for your system. If you're using `csh` on an old version of System V, you might need to type `sh ./configure` instead to prevent `csh` from trying to execute `configure` itself. Running `configure` takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make` to compile the package. 3. Optionally, type `make check` to run any self-tests that come with the package. 4. Type `make install` to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean`. To also remove the files that `configure` created (so you can compile the package for a different kind of computer), type `make distclean`. There is also a `make maintainer-clean` target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure` script does not know about. You can give `configure` initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env` program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make` that supports the `VPATH` variable, such as GNU `make`. `cd` to the directory where you want the object files and executables to go and run the `configure` script. `configure` automatically checks for the source code in the directory that `configure` is in and in `../`. If you have to use a `make` that does not supports the `VPATH` variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean` before reconfiguring for another architecture. Installation Names ================== By default, `make install` will install the package's files in `/usr/local/bin`, `/usr/local/man`, etc. You can specify an installation prefix other than `/usr/local` by giving `configure` the option `--prefix=PATH`. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure` the option `--exec-prefix=PATH`, the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH` to specify different values for particular kinds of files. Run `configure --help` for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure` the option `--program-prefix=PREFIX` or `--program-suffix=SUFFIX`. Optional Features ================= Some packages pay attention to `--enable-FEATURE` options to `configure`, where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE` options, where PACKAGE is something like `gnu-as` or `x` (for the X Window System). The `README` should mention any `--enable-` and `--with-` options that the package recognizes. For packages that use the X Window System, `configure` can usually find the X include and library files automatically, but if it doesn't, you can use the `configure` options `--x-includes=DIR` and `--x-libraries=DIR` to specify their locations. Specifying the System Type ========================== There may be some features `configure` can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure` can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE` option. TYPE can either be a short name for the system type, such as `sun4`, or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub` for the possible values of each field. If `config.sub` isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE` option to select the type of system they will produce code for and the `--build=TYPE` option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure` scripts to share, you can create a site shell script called `config.site` that gives default values for variables like `CC`, `cache_file`, and `prefix`. `configure` looks for `PREFIX/share/config.site` if it exists, then `PREFIX/etc/config.site` if it exists. Or, you can set the `CONFIG_SITE` environment variable to the location of the site script. A warning: not all `configure` scripts look for a site script. Operation Controls ================== `configure` recognizes the following options to control how it operates. `--cache-file=FILE` Use and save the results of the tests in FILE instead of `./config.cache`. Set FILE to `/dev/null` to disable caching, for debugging `configure`. `--help` Print a summary of the options to `configure`, and exit. `--quiet` `--silent` `-q` Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null` (any error messages will still be shown). `--srcdir=DIR` Look for the package's source code in directory DIR. Usually `configure` can determine that directory automatically. `--version` Print the version of Autoconf used to generate the `configure` script, and exit. `configure` also accepts some other, not widely useful, options. Debian/Ubuntu package build =========================== For Debian/Ubuntu, one alternative way to build ZBar is by using pbuilder. In order to install pbuilder, see, for example: https://wiki.ubuntu.com/PbuilderHowto Once you have pbuilder installed and configured, you can build a ZBar package, running the following commands as root: # pbuilder create --basetgz /var/cache/pbuilder/base-test.tgz # pbuilder build --basetgz /var/cache/pbuilder/base-test.tgz ../zbar_0.20.2.dsc zbar-0.23.92/LICENSE.md000066400000000000000000000633361401273157600142520ustar00rootroot00000000000000### GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] ### Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. ### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION **0.** This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. **1.** You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. **2.** You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - **a)** The modified work must itself be a software library. - **b)** You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. - **c)** You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. - **d)** If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. **3.** You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. **4.** You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. **5.** A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. **6.** As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: - **a)** Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) - **b)** Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. - **c)** Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - **d)** If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - **e)** Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. **7.** You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: - **a)** Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. - **b)** Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. **8.** You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. **9.** You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. **10.** Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. **11.** If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. **12.** If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. **13.** The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. **14.** If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. **NO WARRANTY** **15.** BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. **16.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ### END OF TERMS AND CONDITIONS ### How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice That's all there is to it!zbar-0.23.92/Makefile.am000066400000000000000000000074431401273157600146770ustar00rootroot00000000000000ACLOCAL_AMFLAGS = -I config AM_CFLAGS += -DLOCALEDIR=\"$(localedir)\" AM_CXXFLAGS += -DLOCALEDIR=\"$(localedir)\" bin_PROGRAMS = check_PROGRAMS = EXTRA_PROGRAMS = lib_LTLIBRARIES = pyexec_LTLIBRARIES = CLEANFILES = DISTCLEANFILES = \ ABOUT-NLS \ po/*.gmo \ po/*.mo \ po/Makefile.in.in \ po/Makevars.template \ po/POTFILES \ po/Rules-quot \ po/boldquot.sed \ po/en@boldquot.header \ po/en@quot.header \ po/insert-header.sin \ po/quot.sed \ po/remove-potcdate.sed \ po/remove-potcdate.sin \ po/stamp-po \ po/zbar.pot MAINTAINERCLEANFILES = BUILT_SOURCES = EXTRA_DIST = PHONY = $(SUBDIRS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = zbar.pc dist_doc_DATA = COPYING HACKING.md INSTALL.md LICENSE.md NEWS.md README.md TODO.md include $(srcdir)/include/Makefile.am.inc SUBDIRS = zbar if USE_NLS SUBDIRS += po dist_doc_DATA += ABOUT-NLS endif zbar/libzbar.la: $(MAKE) -C @builddir@/zbar libzbar.la if HAVE_MAGICK include $(srcdir)/zbarimg/Makefile.am.inc endif if HAVE_VIDEO include $(srcdir)/zbarcam/Makefile.am.inc endif if HAVE_PYTHON include $(srcdir)/python/Makefile.am.inc endif if HAVE_GTK SUBDIRS += gtk pkgconfig_DATA += zbar-gtk.pc gtk/libzbargtk.la: $(MAKE) -C @builddir@/gtk libzbargtk.la gtk/zbarmarshal.h: $(MAKE) -C @builddir@/gtk zbarmarshal.h gtk/ZBar-1.0.typelib: $(MAKE) -C $(srcdir)/gtk ZBar-1.0.typelib if HAVE_PYGTK2 include $(srcdir)/pygtk/Makefile.am.inc endif endif if HAVE_QT include $(srcdir)/qt/Makefile.am.inc pkgconfig_DATA += zbar-qt.pc endif if HAVE_JAVA SUBDIRS += java endif if HAVE_NPAPI include $(srcdir)/plugin/Makefile.am.inc endif include $(srcdir)/test/Makefile.am.inc if HAVE_DOC include $(srcdir)/doc/Makefile.am.inc endif if HAVE_DBUS dbusconfdir = @DBUS_CONFDIR@ dbusconf_DATA = $(srcdir)/dbus/org.linuxtv.Zbar.conf endif EXTRA_DIST += zbar.ico zbar.nsi zbar-qt5.pc.in zbar-qt.pc.in \ dbus/org.linuxtv.Zbar.conf EXTRA_DIST += examples/*.png examples/sha1sum \ examples/upcrpc.py examples/upcrpc.pl \ examples/scan_image.c examples/scan_image.cpp examples/scan_image.vcproj EXTRA_DIST += perl/MANIFEST perl/README perl/Changes perl/COPYING.LIB \ perl/Makefile.PL perl/typemap perl/ZBar.xs perl/ppport.h \ perl/ZBar.pm perl/inc/Devel/CheckLib.pm perl/ZBar/Image.pod \ perl/ZBar/ImageScanner.pod perl/ZBar/Processor.pod perl/ZBar/Symbol.pod \ perl/examples/paginate.pl perl/examples/processor.pl \ perl/examples/read_one.pl perl/examples/scan_image.pl \ perl/t/barcode.png perl/t/ZBar.t perl/t/Decoder.t perl/t/Image.t \ perl/t/Processor.t perl/t/Scanner.t perl/t/pod.t perl/t/pod-coverage.t if WIN32 dist_doc_DATA += README-windows.md pkgdata_DATA = $(srcdir)/python/test/barcode.png \ $(srcdir)/examples/scan_image.cpp $(srcdir)/examples/scan_image.vcproj %-rc.o: %.rc $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) -o $@ $< %-rc.lo: %.rc $(LIBTOOL) --tag=RC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) -o $@ $< # install to tmp dest and run NSIS to generate installer dist-nsis: html-local test ! -e _nsis || test -d _nsis && rm -rf _nsis mkdir _nsis tmpinst=`cd _nsis && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR=$$tmpinst prefix=/ install cp zbar/.libs/libzbar-0.dll.def _nsis/lib/libzbar-0.def cp -r doc/html _nsis/share/doc/zbar/ $(WINEXEC) lib.exe /machine:x86 /def:_nsis/lib/libzbar-0.def /out:_nsis/lib/libzbar-0.lib cd _nsis && \ makensis -NOCD -V2 -DVERSION=$(VERSION) $(builddir)/zbar.nsi @ls -l _nsis/zbar-$(VERSION)-setup.exe PHONY += dist-nsis endif SUBDIRS += . archive: git archive --format=tar --prefix=zbar-$(VERSION)/ -o zbar-$(VERSION).tar $(VERSION) bzip2 zbar-$(VERSION).tar .PHONY : $(PHONY) archive dist-hook: rm -f $(distdir)/debian $(distdir)/travis zbar-0.23.92/NEWS.md000066400000000000000000000140251401273157600137330ustar00rootroot00000000000000ZBar Barcode Reader News ======================== Version 0.23 ============ Update ZBar for it to work with updated library versions, making it compatible with either Gtk2 or Gtk3 and either Python2 or Python3. As part of the new port, it is now possible to use ZBar Gtk bindings not only with python2/python3, but also on other languages, as it now uses GObject Introspection- GIR, with is a method to allow using libraries developed on one language on others. Several languages support it. On Windows side, support for DirectShow was added. Version 0.22.2 (2019-04-29) =========================== Some fixes to another set of Windows issues and to support Java 11. Version 0.22.1 (2019-04-25) =========================== Some fixes to allow building ZBar on Windows with MinGw. Version 0.22 (2019-02-20) ========================= Lots of improvements at zbarcam-qt, allowing it to fully configure the decoders that will be used, and the options that will be used at the decoders. Some improvements at the image scanner logic and plugin selection. Version 0.21 (2019-02-12) ========================= Added support for SQ code, and the ability of compiling ZBar with the LLVM/Clang compiler. Several bugs fixes and enhancements are also found in this release; qexisting users are encouraged to upgrade. Version 0.20.1 (2018-08-08) =========================== Minor changes at ZBar, in order to adapt to modern distributions with are removing /usr/bin/python in favor of just using python2. Also, updated some python2 scripts to work with modern distros, where the Image module is now inside PIL. Version 0.20 (2017-04-11) ========================= As upstream didn't have any version since 2009, created a ZBar fork at linuxtv.org. This release improves a lot V4L2 support, by using libv4l2 to handle formats that are alien to ZBar, making it compatible with a lot more webcam models. Qt support was also updated, making it compatible with Qt5. ZBar now have two other GUI applications (zbarcam-qt and zbarcam-gtk). With zbarcam-qt, it is now possible to adjust the camera controls, making easier to read barcodes using a camera. Version 0.10 (2009-10-23) ========================= ZBar goes 2D! This release introduces support for QR Code, developed by our new project member, Timothy Terriberry. Timothy is an image processing master, providing this sophisticated functionality using only integer arithmetic and maintaining an extremely small image size. Feel free to drop in on #zbar over at freenode to welcome Timothy (aka derf) to the project and congratulate him on his awesome work. Several bugs fixes and enhancements are also found in this release; existing users are encouraged to upgrade. Version 0.9 (2009-08-31) ======================== Introducing ZBar for Windows! So far we only have straight ports of the command line applications, but work on a cross-platform GUI has already begun. This release also has a few scanner/decoder enhancements and fixes several bugs. Many internal changes are represented, so please open a support request if you experience any problems. Version 0.8 (2009-06-05) ======================== This is a bugfix release just to clean up a few issues found in the last release. Existing users are encouraged to upgrade to pick up these fixes. Version 0.7 (2009-04-21) ======================== Welcome to ZBar! In addition to finalizing the project name change, this release adds new bindings for Python and fixes a few bugs with the Perl interface. The decoder also has several new features and addresses missing checks that will improve reliability with excessively noisy images. Version 0.6 (2009-02-28) ======================== This release fixes many bugs and adds several improvements suggested by users: support for decoding UPC-E is finished. zebraimg is now able to scan all pages of a document (such as PDF or TIFF) and the new XML output includes the page where each barcode is found. Camera support has been significantly improved, including the addition of JPEG image formats. Perl bindings make it even easier to write a document or video scanning application. Finally, we are now able to offer initial support for building the base library for Windows! Version 0.5 (2008-07-25) ======================== Introducing zebra widgets! Prioritized by popular demand, this release includes fully functional barcode scanning widgets for GTK, PyGTK, and Qt. Application developers may now seamlessly integrate barcode reader support with their user interface. This release also fixes many bugs; existing users are encouraged to upgrade. Version 0.4 (2008-05-31) ======================== new support for EAN-8, Code 39 and Interleaved 2 of 5! this release also introduces the long awaited decoder configuration options and fixes several bugs Version 0.3 (2008-02-25) ======================== this is a beta release of the enhanced internal architecture. support has been added for version 2 of the video4linux API and many more image formats. several other feature enhancements and bug fixes are also included. image scanning is slightly improved for some images, but the base scan/decode function is relatively untouched. significant new code is represented in this release - all bug reports are welcome and will be addressed promptly! Version 0.2 (2007-05-16) ======================== this release introduces significant enhancements, bug fixes and new features! basic EAN-13/UPC-A reading has been improved and should now be much more reliable. by popular request, new support has been added for decoding Code 128. additionally, the build process was improved and there is even basic documentation for the application commands Version 0.1 (2007-03-24) ======================== first official Zebra release! supports basic scanning and decoding of EAN-13 and UPC-A symbols using a webcam (zebracam) or from stored image files (zebraimg). still need to add support for addons and EAN-8/UPC-E zbar-0.23.92/README-windows.md000066400000000000000000000141151401273157600156040ustar00rootroot00000000000000ZBAR BAR CODE READER ==================== ZBar Bar Code Reader is an open source software suite for reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 93, Code 39, Codabar, Interleaved 2 of 5 and QR Code. Included with the library are basic applications for decoding captured bar code images and using a video device (eg, webcam) as a bar code scanner. For application developers, language bindings are included for C, C++, Python and Perl as well as GUI widgets for Qt, GTK and PyGTK. Check the ZBar home page for the latest release, mailing lists, etc. * License information can be found in 'COPYING'. Once built, the Windows binaries will use binaries of several supporting libraries, each one with its own copyright, license and source code locations. It follows a non-exhaustive list of those components: * The GNU libiconv character set conversion library Copyright (C) since 1999 Free Software Foundation, Inc. Licensed under LGPL. The source code is available from * * The ImageMagick software imaging library Copyright since 1999 ImageMagick Studio LLC Licensed under a derived Apache 2.0 license: * https://imagemagick.org/script/license.php The source code is available from * * The libxml2 XML C parser and toolkit Copyright (C) since 1998 Daniel Veillard. Licensed under the MIT license. The source code is available from: * * JPEG library The Independent JPEG Group's software's version is: Copyright (C) since 1991 Thomas G. Lane, Guido Vollbeding. Libjpeg-turbo has additional copyrights: Copyright (C) since 2009 D. R. Commander. Copyright (C) since 2015 Google, Inc. Licensed under BSD-style licenses with their own terms: * https://www.ijg.org/files/README * https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/LICENSE.md The source code is available from: * * libtiff, a library for reading and writing TIFF Copyright (c) since 1988 Sam Leffler Copyright (c) since 1991 Silicon Graphics, Inc. Licensed under a BSD-style license. The source code is available from * * libpng, the official PNG reference library Copyright (c) since 1998 Glenn Randers-Pehrson Licensed under a BSD-style license. The source code is available from * * The zlib general purpose compression library Copyright (C) since 1995 Jean-loup Gailly and Mark Adler. Licensed under a BSD-style license. The source code is available from * * The bzip2 compression library Copyright (C) since 1996 Julian Seward. Licensed under a BSD-style license. The source code is available from * * Depending on how this is packaged, other licenses may apply BUILDING ======== NOTE: this is a simplified version of what it was done in order to do the Travis CI builds. You may use this as a guide, but the instructions here may be incomplete. If you find inconsistencies, feel free to submit patches improving the building steps. Also, please notice that the instructions here is for a minimal version, without any bindings nor ImageMagick. Building on Ubuntu Bionic ------------------------- You need to install the following packages: sudo apt-get install -y \ autoconf automake autotools-dev libdbus-1-dev \ pkg-config binutils-mingw-w64-i686 gcc-mingw-w64 \ mingw-w64-i686-dev mingw-w64-common win-iconv-mingw-w64-dev \ xmlto Then, build Zbar with: export PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig autoreconf -vfi CC=i686-w64-mingw32-gcc ./configure --host=i686-w64-mingw32 \ --prefix=/usr/local/win32 --with-directshow \ --without-gtk --without-python --without-qt --without-java \ --without-imagemagick --enable-pthread make Building natively on Windows ---------------------------- It is possible to build it natively on Windows too. You need first to setup a building environment with minGw. One way would be to use Chocolatey to download what's needed: * https://chocolatey.org/ With Cocolatey installed, ensure that you have minGw and needed deps with: choco install -r --no-progress -y msys2 make Then use pacman to install the needed packages: pacman -Syu --noconfirm autoconf libtool automake make \ autoconf-archive pkg-config Once you have everything needed and set the PATH to the places where the building environment is, you can build ZBar with: autoreconf -vfi ./configure \ --host=i686-w64-mingw32 --prefix=/usr/local/win32 \ --without-gtk --without-python --without-qt --without-java \ --without-imagemagick --enable-pthread \ --with-directshow --disable-dependency-tracking make RUNNING ======= This version of the package includes *only command line programs*. (The graphical interface is scheduled for a future release) Invoke Start -> Programs -> ZBar Bar Code Reader -> Start ZBar Command Prompt to open a shell that has the zbarimg and zbarcam commands available (in the PATH). To start the webcam reader using the default camera, type: zbarcam To decode an image file, type eg: zbarimg -d examples\barcode.png For basic command instructions, type: zbarimg --help zbarcam --help Check the manual for more details. REPORTING BUGS ============== Bugs can be reported at the GitHub project page * Please include the ZBar version number and a detailed description of the problem. You'll probably have better luck if you're also familiar with the concepts from: * zbar-0.23.92/README.md000066400000000000000000000163231401273157600141170ustar00rootroot00000000000000ZBAR BAR CODE READER ==================== ZBar Bar Code Reader is an open source software suite for reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 93, Code 39, Codabar, Interleaved 2 of 5, QR Code and SQ Code. Included with the library are basic applications for decoding captured bar code images and using a video device (eg, webcam) as a bar code scanner. For application developers, language bindings are included for C, C++, Python 2 and Perl as well as GUI widgets for Qt, GTK and PyGTK 2.0. Zbar also supports sending the scanned codes via dbus, allowing its integration with other applications. Check the ZBar home page for the latest release, mailing lists, etc.: - Tarballs with ZBar can be obtained from: - Since ZBar version 0.23.90, binaries auto-generated from Github's Actions workflows are auto-generated for each release: - They contain binaries for: - Ubuntu SID, generated via pbuilder; - Mac OS; - Windows, for 4 different configurations: - 32 bits/64 bits; - Video for Windows (VfW) or DirectShow (DShow). License information can be found in `COPYING`. You may find some outdated documentation at the original ZBar's site at Sourceforge, but please notice that the content there is not updated for ages: http://zbar.sourceforge.net/ BUILDING ======== See `INSTALL.md` for generic configuration and build instructions. Please notice that at least autotools related packages and a C compiler are needed, in order to generate the configure script. So, on Debian, at least those packages are needed: autoconf autopoint pkg-config libtool gcc make If you have installed all needed dependencies, all you need to do is to run: ``` autoreconf -vfi ./configure make ``` * NOTES 1) Currently, we maintain a Continuous Integration build test at TravisCI: Due to that, there are scripts meant to test ZBar build on Linux, Windows and MacOS, that could be helpful. Please see the `.travis.yml` file, and the corresponding scripts under `travis/`. 2) On version 0.23, since the support for gtk3 and python3 are new, the default is to use gtk2 and python2. If you want to use gtk3 and python3, you should have the development packages for them, and run: ``` autoreconf -vfi ./configure --with-gtk=auto --with-python=auto make ``` This will make the building system to seek for the latest versions for gtk and python. The scanner/decoder library itself only requires a few standard library functions which should be available almost anywhere. The zbarcam program uses the video4linux API (v4l1 or v4l2) to access the video device. This interface is part of the linux kernel, a 3.16 kernel or upper is recommended for full support. More information is available at: - `pkg-config` is used to locate installed libraries. You should have installed `pkg-config` if you need any of the remaining components. pkg-config may be obtained from: - The `zbarimg` program uses `ImageMagick` to read image files in many different formats. You will need at least `ImageMagick` version 6.2.6 if you want to scan image files. You may also use `GraphicsMagick` package instead. `ImageMagick` may be obtained from: - Qt Widget --------- The Qt widget requires Qt4 or Qt5. You will need Qt if you would like to use or develop a Qt GUI application with an integrated bar code scanning widget. Qt4 may be obtained from: - Gtk Widget ---------- The GTK+ widget requires GTK+-2.x or GTK+3.x. You will need GTK+ if you would like to use or develop a GTK+ GUI application with an integrated bar code scanning widget. GTK+ may be obtained from: - Python widgets -------------- **Python 2 legacy Gtk widget** The PyGTK 2.0/pygobject 2.0 wrapper for the GTK+ 2.x widget requires Python 2, PyGTK. You will need to enable both pygtk2 and gtk2 if you would like to use or develop a Python 2 GUI application with an integrated bar code scanning widget. PyGTK may be obtained from: - **Python 2 or 3 GIR Gtk widget** The GObject Introspection (GIR) wrapper for GTK+ widget is compatible with PyGObject, with works with either Python version 2 or 3. You will need to enable both Gtk and Python in order to use or develop a Python application with an integrated bar code scanning and webcam support. In order to build it, you need the required dependencies for GIR development. The actual package depends on the distribution. On Fedora, it is `pygobject3-devel`. On Debian/Ubuntu, it is `libgirepository1.0-dev` and `gir1.2-gtk-3.0`. While GIR builds with Gtk2, It is strongly recommended to use GTK+ version 3.x, as there are known issues with version 2.x and GIR, with will likely make it to fail. A test script can be built and run with: `make check-gi`. Instructions about how to use are GIR on Python are available at: - **Python bindings** The Python bindings require Python 2 or 3 and provide only non-GUI functions. You will need Python and PIL or Pillow if you would like to scan images or video directly using Python. Python is available from: - Perl Widget ----------- The Perl bindings require Perl (version 5). You will need Perl if you would like to scan images or video directly using Perl. Perl is available from: - If required libraries are not available you may disable building for the corresponding component using configure (see configure --help). The Perl bindings must be built separately after installing the library. see: - `perl/README` Java Widget ----------- The Java ZBar widget uses Java Native Interface (JNI), meaning that the widget will contain machine-dependent code. It works with Java version 7 and above. Java open JDK is available from: - RUNNING ======= `make install` will install the library and application programs. Run `zbarcam-qt` or `zbarcam` to start the video scanner. Use `zbarimg ` to decode a saved image file. Check the manual to find specific options for each program. DBUS TESTING ============ In order to test if dbus is working, you could use: $ dbus-monitor --system interface=org.linuxtv.Zbar1.Code or build the test programs with: $ make test_progs And run: $ ./test/test_dbus With that, running this command on a separate shell: $ ./zbarimg/zbarimg examples/code-128.png CODE-128:https://github.com/mchehab/zbar scanned 1 barcode symbols from 1 images in 0.01 seconds Will produce this output at test_dbus shell window: Waiting for Zbar events Type = CODE-128 Value = https://github.com/mchehab/zbar REPORTING BUGS ============== Bugs can be reported on the project page: - Please include the ZBar version number and a detailed description of the problem. You'll probably have better luck if you're also familiar with the concepts from: - zbar-0.23.92/TODO.md000066400000000000000000000041441401273157600137250ustar00rootroot00000000000000general ======= * finish error handling * handle video destroyed w/images outstanding * dbg_scan background image stretched (still...) * profile and weed out obvious oversights * example using SANE to scan symbol(s) windows port ============ * libzbar-0.dll should be zbar-0.dll wrappers ======== * build API docs for zbargtk, zbarpygtk * is zbargtk/QZBar BGR4 alpha swapped? * widget config APIs * drag-and-drop for widgets (configurable...) * Perl build support integration? * GTK and Qt perl bindings * C++ global wrappers symbologies =========== * PDF417 * extract/resolve symbol matrix parameters (NB multiple symbols) * error detection/correction * high-level decode * Code 39, i25 optional features (check digit and ASCII escapes) * handle Code 128 function characters (FNC1-4) * Code 128 trailing quiet zone checks decoder ======= * start/stop/abort and location detail APIs (PDF417, OMR) * more configuration options * disable for at least UPC-E (maybe UPC-A?) * Code-39/i25 check digit (after implementation) * Code-39 full ASCII (after implementation) * standard symbology identifiers (which standard?) * set consistency requirements * set scanner filter params * fix max length check during decode * revisit noise and resolution independence image scanner ============= * extract and track symbol polygons * dynamic scan density (PDF417, OMR) * add multi-sample array interface to linear scanner image formats ============= * fix image data inheritance * de-interlacing * add color support to conversions (also jpeg) * add support for scanline pad throughout * factor conversion redundancy window ====== * add XShm support * X protocol error handling * Direct2D * API to query used interface (video, window?) (/format?) * simple image manipulations scale(xv?)/mirror * maintain aspect ratio * more overlay details * decoded result(?) * stats zbarcam/zbarimg =============== * zbarimg multi-frame duplicate suppression * stats/fps at zbarcam exit * decode hook (program/script)? (also zbarimg?) zbar-0.23.92/android/000077500000000000000000000000001401273157600142535ustar00rootroot00000000000000zbar-0.23.92/android/AndroidManifest.xml000066400000000000000000000011641401273157600200460ustar00rootroot00000000000000 zbar-0.23.92/android/ChangeLog000066400000000000000000000000721401273157600160240ustar00rootroot00000000000000version 0.1: * Add initial support for Android platform zbar-0.23.92/android/README000066400000000000000000000070701401273157600151370ustar00rootroot00000000000000ZBar Android SDK ================ ZBar Bar Code Reader is an open source software suite for reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 93, Code 39, Codabar, Interleaved 2 of 5, QR Code and DataBar. These are the JNI wrappers for developing the library on Android platform. Check the ZBar home page for the latest release, mailing lists, etc. https://github.com/mchehab/zbar Copyright and License --------------------- Licensed under the GNU Lesser General Public License, version 2.1. http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt Copyright 2008-2012 Jeff Brown et al The Android distribution also includes pre-compiled binaries of supporting libaries, for which copyright, license and source code locations are as follows: * The GNU libiconv character set conversion library Copyright (C) 1999-2011 Free Software Foundation, Inc. This distribution includes GNU libiconv version 1.14, licensed under the LGPL version 2. The source code is available from http://www.gnu.org/software/libiconv See included files COPYING and LICENSE.md for details. Installation ------------ After downloading the ZBar-Android-Lib-.zip file, you need to unzip the file and add it to your Android project. Unzip the file using your favorite method (ie: command-line, finder, windows explorer...) Follow one of the two options. Option 1 - via command line cd cp -r ZBar-Android-SDK-/libs . Option 2 - via Eclipse Right click on Android Project Select "Import" -> "File System" Select "Browse" (next to "From directory File" and select the ZBar-Android-SDK-/libs directory and click "Open". Click the check box next to "libs" and the "Options" "Create top-level folder" check box (below). Then click "Finish". You should then see a "libs" folder under your project. Building -------- Via Eclipse You have to add the zbar.jar file to your build path 1) select zbar.jar under libs 2) right-click, select "Build Path" -> "Add to Build Path" Via command-line You are all set; ant will automatcially find jar files under the "libs" subdirectory. Documentation ------------- TDB Examples -------- You should be able to open and build the examples directly from the unzipped directory. You will need to run the android tools to setup the local.properties file which sets sdk.dir. 1) cd /examples/CameraTest 2) android update project --path . 3) ant debug install If you have problems with this, please create a new Android project and copy the necessary files from the examples. examples/CameraTest is a simple demonstration of how to integrate the ZBar image scanner with the camera. Manually building ZBar JNI library ---------------------------------- First download and unzip the iconv library source from http://www.gnu.org/software/libiconv/ Then kick off the build from the ZBar android directory. You will need to run the android tools to setup the local.properties file which setups sdk.dir. 1) cd /android 2) android update project --path . 3) ant -Dndk.dir= -Diconv.src= zbar-all This will rebuild all source files, create zbar.jar and ZBarAndroidSDK.zip file (which bundles the jar and shared libraries). From here, you can follow the steps for "Integrating ZBar JNI library in Android project". To clean run: ant -Dndk.dir= zbar-clean See build-ndk.xml for additional target options. zbar-0.23.92/android/ant.properties000066400000000000000000000012701401273157600171530ustar00rootroot00000000000000# This file is used to override default values used by the Ant build system. # # This file must be checked in Version Control Systems, as it is # integral to the build system of your project. # This file is only used by the Ant script. # You can use this to override default values such as # 'source.dir' for the location of your java source folder and # 'out.dir' for the location of your output folder. # You can also use it define how the release builds are signed by declaring # the following properties: # 'key.store' for the location of your keystore and # 'key.alias' for the name of the key to use. # The password will be asked during the build when you use the 'release' target. zbar-0.23.92/android/build-ndk.xml000066400000000000000000000054061401273157600166530ustar00rootroot00000000000000 zbar-0.23.92/android/build.xml000066400000000000000000000066461401273157600161100ustar00rootroot00000000000000 zbar-0.23.92/android/examples/000077500000000000000000000000001401273157600160715ustar00rootroot00000000000000zbar-0.23.92/android/examples/CameraTest/000077500000000000000000000000001401273157600201215ustar00rootroot00000000000000zbar-0.23.92/android/examples/CameraTest/AndroidManifest.xml000066400000000000000000000015541401273157600237170ustar00rootroot00000000000000 zbar-0.23.92/android/examples/CameraTest/ant.properties000066400000000000000000000012701401273157600230210ustar00rootroot00000000000000# This file is used to override default values used by the Ant build system. # # This file must be checked in Version Control Systems, as it is # integral to the build system of your project. # This file is only used by the Ant script. # You can use this to override default values such as # 'source.dir' for the location of your java source folder and # 'out.dir' for the location of your output folder. # You can also use it define how the release builds are signed by declaring # the following properties: # 'key.store' for the location of your keystore and # 'key.alias' for the name of the key to use. # The password will be asked during the build when you use the 'release' target. zbar-0.23.92/android/examples/CameraTest/build.xml000066400000000000000000000064371401273157600217540ustar00rootroot00000000000000 zbar-0.23.92/android/examples/CameraTest/proguard.cfg000066400000000000000000000023401401273157600224240ustar00rootroot00000000000000-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native ; } -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } zbar-0.23.92/android/examples/CameraTest/project.properties000066400000000000000000000005511401273157600237060ustar00rootroot00000000000000# This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file must be checked in Version Control Systems. # # To customize properties used by the Ant build system use, # "ant.properties", and override values to adapt the script to your # project structure. # Project target. target=android-15 zbar-0.23.92/android/examples/CameraTest/res/000077500000000000000000000000001401273157600207125ustar00rootroot00000000000000zbar-0.23.92/android/examples/CameraTest/res/layout/000077500000000000000000000000001401273157600222275ustar00rootroot00000000000000zbar-0.23.92/android/examples/CameraTest/res/layout/main.xml000066400000000000000000000014021401273157600236720ustar00rootroot00000000000000