From 44cf8ec67278bd1ab6c7f83a9993f7a5686a9541 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 9 Mar 2024 01:06:44 +0100 Subject: Adding upstream version 0.23.93. Signed-off-by: Daniel Baumann --- .clang-format | 141 + .github/workflows/ci.yml | 238 + .github/workflows/coverity.yml | 51 + .github/workflows/debuilder.sh | 62 + .github/workflows/gen_release.pl | 40 + .github/workflows/on_release.yml | 149 + .github/workflows/on_tag.yml | 31 + .gitignore | 73 + .hgignore | 36 + .hgtags | 29 + COPYING | 27 + ChangeLog | 787 +++ HACKING.md | 96 + INSTALL.md | 199 + LICENSE.md | 503 ++ Makefile.am | 149 + NEWS.md | 157 + README-windows.md | 225 + README.md | 244 + TODO.md | 84 + android/AndroidManifest.xml | 15 + android/ChangeLog | 2 + android/README | 110 + android/ant.properties | 17 + android/build-ndk.xml | 65 + android/build.xml | 86 + android/examples/CameraTest/AndroidManifest.xml | 19 + android/examples/CameraTest/ant.properties | 17 + android/examples/CameraTest/build.xml | 85 + android/examples/CameraTest/proguard.cfg | 40 + android/examples/CameraTest/project.properties | 11 + android/examples/CameraTest/res/layout/main.xml | 28 + android/examples/CameraTest/res/values/strings.xml | 4 + .../zbar/android/CameraTest/CameraPreview.java | 108 + .../android/CameraTest/CameraTestActivity.java | 155 + android/jni/Android.mk | 76 + android/jni/Application.mk | 1 + android/jni/config.h | 238 + android/proguard.cfg | 40 + android/project.properties | 12 + android/res/layout/main.xml | 13 + android/res/values/strings.xml | 4 + config/.keep | 0 config/config.rpath | 684 +++ configure.ac | 927 ++++ dbus/org.linuxtv.Zbar.conf | 15 + doc/Makefile.am.inc | 55 + doc/api/footer.html | 20 + doc/doxygen.conf.in | 39 + doc/manual.xml | 50 + doc/ref/commonoptions.xml | 165 + doc/ref/zbarcam.xml | 207 + doc/ref/zbarimg.xml | 242 + doc/style.xsl | 9 + examples/codabar.png | Bin 0 -> 198 bytes examples/code-128.png | Bin 0 -> 2575 bytes examples/code-39.png | Bin 0 -> 2091 bytes examples/code-93.png | Bin 0 -> 1943 bytes examples/code-upc-a.png | Bin 0 -> 1040 bytes examples/databar-exp.png | Bin 0 -> 199 bytes examples/databar.png | Bin 0 -> 1774 bytes examples/ean-13.png | Bin 0 -> 1041 bytes examples/ean-2.png | Bin 0 -> 132 bytes examples/ean-5.png | Bin 0 -> 179 bytes examples/ean-8.png | Bin 0 -> 1503 bytes examples/i2-5.png | Bin 0 -> 1564 bytes examples/processor.c | 47 + examples/processor.cpp | 44 + examples/qr-code-binary.png | Bin 0 -> 922 bytes examples/qr-code-inverted.png | Bin 0 -> 14309 bytes examples/qr-code.png | Bin 0 -> 210 bytes examples/scan_image.c | 117 + examples/scan_image.cpp | 56 + examples/scan_image.vcproj | 46 + examples/sha1sum | 19 + examples/sqcode1-generated.png | Bin 0 -> 4254 bytes examples/sqcode1-scanned.png | Bin 0 -> 339859 bytes examples/upcrpc.pl | 46 + examples/upcrpc.py | 50 + gtk/Makefile.am | 88 + gtk/zbargtk.c | 908 ++++ gtk/zbargtkprivate.h | 98 + gtk/zbarmarshal.list | 1 + include/Makefile.am.inc | 13 + include/zbar.h | 1587 ++++++ include/zbar/Decoder.h | 203 + include/zbar/Exception.h | 199 + include/zbar/Image.h | 322 ++ include/zbar/ImageScanner.h | 149 + include/zbar/Processor.h | 220 + include/zbar/QZBar.h | 207 + include/zbar/QZBarImage.h | 72 + include/zbar/Scanner.h | 162 + include/zbar/Symbol.h | 532 ++ include/zbar/Video.h | 224 + include/zbar/Window.h | 134 + include/zbar/zbargtk.h | 253 + iphone/ChangeLog | 138 + iphone/README | 66 + iphone/ZBarCVImage.h | 41 + iphone/ZBarCVImage.m | 195 + iphone/ZBarCameraSimulator.m | 120 + iphone/ZBarCaptureReader.m | 370 ++ iphone/ZBarHelpController.m | 305 ++ iphone/ZBarImage.m | 306 ++ iphone/ZBarImageScanner.m | 85 + iphone/ZBarReaderController.m | 747 +++ iphone/ZBarReaderView.m | 596 +++ iphone/ZBarReaderViewController.m | 711 +++ iphone/ZBarReaderViewImpl_Capture.m | 402 ++ iphone/ZBarReaderViewImpl_Simulator.m | 219 + iphone/ZBarSymbol.m | 197 + iphone/bin/BuildUniversal.sh | 23 + iphone/bin/CreateDMG.sh | 44 + iphone/bin/CreateDSStore.pl | 72 + iphone/bin/Mac/Finder/AliasRecord.pm | 169 + iphone/debug.h | 51 + iphone/doc/Documentation.html | 11 + iphone/doc/ZBarImage.rst | 150 + iphone/doc/ZBarImageScanner.rst | 99 + iphone/doc/ZBarReaderController.rst | 156 + iphone/doc/ZBarReaderDelegate.rst | 70 + iphone/doc/ZBarReaderView.rst | 126 + iphone/doc/ZBarReaderViewController.rst | 190 + iphone/doc/ZBarReaderViewDelegate.rst | 26 + iphone/doc/ZBarSymbol.rst | 186 + iphone/doc/ZBarSymbolSet.rst | 43 + iphone/doc/apiref.rst | 16 + iphone/doc/camera.rst | 130 + iphone/doc/compat.rst | 190 + iphone/doc/conf.py | 77 + iphone/doc/custom.rst | 70 + iphone/doc/devguide.rst | 13 + iphone/doc/faq.rst | 101 + iphone/doc/getstarted.rst | 12 + iphone/doc/index.rst | 20 + iphone/doc/install.rst | 141 + iphone/doc/licensing.rst | 187 + iphone/doc/optimizing.rst | 435 ++ iphone/doc/picker.rst | 104 + iphone/doc/static/style.css | 36 + iphone/doc/support.rst | 19 + iphone/doc/tutorial.rst | 228 + .../EmbedReader.xcodeproj/project.pbxproj | 416 ++ .../xcshareddata/xcschemes/EmbedReader.xcscheme | 76 + .../EmbedReader/EmbedReader/EmbedReader-Info.plist | 39 + .../EmbedReader/EmbedReader/EmbedReader-Prefix.pch | 11 + .../EmbedReader/EmbedReaderAppDelegate.h | 19 + .../EmbedReader/EmbedReaderAppDelegate.m | 34 + .../EmbedReader/EmbedReaderViewController.h | 20 + .../EmbedReader/EmbedReaderViewController.m | 101 + .../en.lproj/EmbedReaderViewController.xib | 336 ++ .../EmbedReader/en.lproj/InfoPlist.strings | 2 + .../EmbedReader/en.lproj/MainWindow.xib | 444 ++ iphone/examples/EmbedReader/EmbedReader/main.m | 16 + iphone/examples/EmbedReader/ZBarSDK | 1 + iphone/examples/EmbedReader/build | 1 + .../ReaderSample.xcodeproj/project.pbxproj | 419 ++ .../xcshareddata/xcschemes/ReaderSample.xcscheme | 76 + .../ReaderSample/ReaderSample-Info.plist | 38 + .../ReaderSample/ReaderSample-Prefix.pch | 16 + .../ReaderSample/ReaderSampleAppDelegate.h | 20 + .../ReaderSample/ReaderSampleAppDelegate.m | 67 + .../ReaderSample/ReaderSampleViewController.h | 19 + .../ReaderSample/ReaderSampleViewController.m | 68 + .../ReaderSample/en.lproj/InfoPlist.strings | 2 + .../ReaderSample/en.lproj/MainWindow.xib | 444 ++ .../en.lproj/ReaderSampleViewController.xib | 319 ++ iphone/examples/ReaderSample/ReaderSample/main.m | 16 + iphone/examples/ReaderSample/ZBarSDK | 1 + iphone/examples/ReaderSample/build | 1 + .../TabReader/TabReader.xcodeproj/project.pbxproj | 420 ++ .../xcshareddata/xcschemes/TabReader.xcscheme | 80 + .../TabReader/TabReader/ResultsViewController.h | 16 + .../TabReader/TabReader/ResultsViewController.m | 20 + .../TabReader/TabReader/TabReader-Info.plist | 38 + .../TabReader/TabReader/TabReader-Prefix.pch | 15 + .../TabReader/TabReader/TabReaderAppDelegate.h | 18 + .../TabReader/TabReader/TabReaderAppDelegate.m | 62 + .../TabReader/TabReader/en.lproj/InfoPlist.strings | 2 + .../TabReader/TabReader/en.lproj/MainWindow.xib | 411 ++ .../TabReader/TabReader/en.lproj/ResultsView.xib | 303 ++ iphone/examples/TabReader/TabReader/main.m | 16 + iphone/examples/TabReader/ZBarSDK | 1 + iphone/examples/TabReader/build | 1 + iphone/examples/readertest/ZBarSDK | 1 + iphone/examples/readertest/build | 1 + iphone/examples/readertest/entitlements.plist | 8 + iphone/examples/readertest/prefix.pch | 11 + iphone/examples/readertest/readertest.m | 991 ++++ iphone/examples/readertest/readertest.plist | 28 + .../readertest.xcodeproj/project.pbxproj | 351 ++ .../xcshareddata/xcschemes/readertest.xcscheme | 76 + iphone/include/ZBarSDK/ZBarCameraSimulator.h | 42 + iphone/include/ZBarSDK/ZBarCaptureReader.h | 109 + iphone/include/ZBarSDK/ZBarHelpController.h | 59 + iphone/include/ZBarSDK/ZBarImage.h | 64 + iphone/include/ZBarSDK/ZBarImageScanner.h | 50 + iphone/include/ZBarSDK/ZBarReaderController.h | 139 + iphone/include/ZBarSDK/ZBarReaderView.h | 137 + iphone/include/ZBarSDK/ZBarReaderViewController.h | 132 + iphone/include/ZBarSDK/ZBarSDK.h | 34 + iphone/include/ZBarSDK/ZBarSymbol.h | 67 + iphone/include/config.h | 236 + iphone/include/prefix.pch | 10 + iphone/res/ZBarSDK-Info.plist | 16 + iphone/res/ZBarSDK-bg.svg | 78 + iphone/res/buttondown.svg | 57 + iphone/res/buttonmask.svg | 26 + iphone/res/buttonup.svg | 57 + iphone/res/lightbulb.svg | 108 + iphone/res/shakyhand.svg | 108 + iphone/res/shakyphone.svg | 51 + iphone/res/stopwatch.svg | 88 + iphone/res/zbar-back.png | Bin 0 -> 319 bytes iphone/res/zbar-back.svg | 31 + iphone/res/zbar-help.html | 90 + iphone/res/zbar-helpicons.png | Bin 0 -> 18350 bytes iphone/res/zbar-samples.png | Bin 0 -> 1181 bytes iphone/zbar.xcodeproj/project.pbxproj | 1196 +++++ .../xcshareddata/xcschemes/ZBarSDK.dmg.xcscheme | 62 + .../xcshareddata/xcschemes/ZBarSDK.xcscheme | 62 + .../xcshareddata/xcschemes/libzbar.xcscheme | 58 + .../xcshareddata/xcschemes/readertest.xcscheme | 83 + java/Makefile.am | 59 + java/net/sourceforge/zbar/Config.java | 56 + java/net/sourceforge/zbar/Image.java | 163 + java/net/sourceforge/zbar/ImageScanner.java | 98 + java/net/sourceforge/zbar/Modifier.java | 42 + java/net/sourceforge/zbar/Orientation.java | 42 + java/net/sourceforge/zbar/Symbol.java | 199 + java/net/sourceforge/zbar/SymbolIterator.java | 70 + java/net/sourceforge/zbar/SymbolSet.java | 82 + java/test/TestImage.java | 175 + java/test/TestImageScanner.java | 53 + java/test/TestScanImage.java | 183 + java/zbarjni.c | 618 +++ perl/COPYING.LIB | 504 ++ perl/Changes | 51 + perl/MANIFEST | 26 + perl/MANIFEST.SKIP | 4 + perl/Makefile.PL | 64 + perl/README | 38 + perl/ZBar.pm | 216 + perl/ZBar.xs | 869 ++++ perl/ZBar/Image.pod | 145 + perl/ZBar/ImageScanner.pod | 103 + perl/ZBar/Processor.pod | 157 + perl/ZBar/Symbol.pod | 179 + perl/examples/paginate.pl | 71 + perl/examples/processor.pl | 35 + perl/examples/read_one.pl | 29 + perl/examples/scan_image.pl | 37 + perl/inc/Devel/CheckLib.pm | 350 ++ perl/ppport.h | 5097 ++++++++++++++++++++ perl/t/Decoder.t | 111 + perl/t/Image.t | 186 + perl/t/Processor.t | 140 + perl/t/Scanner.t | 23 + perl/t/ZBar.t | 68 + perl/t/barcode.png | Bin 0 -> 1182 bytes perl/t/pod-coverage.t | 12 + perl/t/pod.t | 12 + perl/typemap | 66 + plugin/Makefile.am.inc | 5 + plugin/plugin.c | 24 + po/LINGUAS | 2 + po/Makevars | 72 + po/POTFILES.in | 5 + po/pt_BR.po | 233 + pygtk/Makefile.am.inc | 24 + pygtk/zbarpygtk.override | 20 + pygtk/zbarpygtkmodule.c | 46 + python/MANIFEST.in | 2 + python/Makefile.am.inc | 13 + python/README | 60 + python/decoder.c | 360 ++ python/enum.c | 259 + python/examples/processor.py | 35 + python/examples/read_one.py | 29 + python/examples/scan_image.py | 31 + python/exception.c | 123 + python/image.c | 482 ++ python/imagescanner.c | 195 + python/processor.c | 456 ++ python/scanner.c | 193 + python/setup.py | 45 + python/symbol.c | 230 + python/symboliter.c | 103 + python/symbolset.c | 85 + python/test/barcode.png | Bin 0 -> 1182 bytes python/test/test_zbar.py | 506 ++ python/zbarmodule.c | 340 ++ python/zbarmodule.h | 164 + qt/Makefile.am.inc | 19 + qt/QZBar.cpp | 364 ++ qt/QZBarThread.cpp | 358 ++ qt/QZBarThread.h | 192 + test/Makefile.am.inc | 162 + test/barcodetest.py | 413 ++ test/check_dbus.sh.in | 39 + test/dbg_scan.cpp | 218 + test/pdf417_encode.h | 4674 ++++++++++++++++++ test/test_convert.c | 60 + test/test_cpp.cpp | 43 + test/test_cpp_img.cpp | 214 + test/test_dbus.c | 254 + test/test_decode.c | 1356 ++++++ test/test_examples.sh.in | 91 + test/test_gi.py | 216 + test/test_images.c | 533 ++ test/test_images.h | 46 + test/test_jpeg.c | 158 + test/test_perl.pl | 47 + test/test_proc.c | 170 + test/test_pygtk.py | 193 + test/test_python.py | 64 + test/test_video.c | 237 + test/test_window.c | 98 + zbar-gtk.pc.in | 12 + zbar-qt5.pc.in | 12 + zbar.ico | Bin 0 -> 6318 bytes zbar.nsi | 289 ++ zbar.pc.in | 11 + zbar.spec.in | 214 + zbar/Makefile.am | 137 + zbar/config.c | 171 + zbar/convert.c | 1229 +++++ zbar/debug.h | 93 + zbar/decoder.c | 592 +++ zbar/decoder.h | 292 ++ zbar/decoder/codabar.c | 397 ++ zbar/decoder/codabar.h | 51 + zbar/decoder/code128.c | 582 +++ zbar/decoder/code128.h | 51 + zbar/decoder/code39.c | 336 ++ zbar/decoder/code39.h | 50 + zbar/decoder/code93.c | 387 ++ zbar/decoder/code93.h | 49 + zbar/decoder/databar.c | 1240 +++++ zbar/decoder/databar.h | 80 + zbar/decoder/ean.c | 735 +++ zbar/decoder/ean.h | 99 + zbar/decoder/i25.c | 265 + zbar/decoder/i25.h | 51 + zbar/decoder/pdf417.c | 224 + zbar/decoder/pdf417.h | 49 + zbar/decoder/pdf417_hash.h | 406 ++ zbar/decoder/qr_finder.c | 105 + zbar/decoder/qr_finder.h | 23 + zbar/decoder/sq_finder.c | 7 + zbar/decoder/sq_finder.h | 9 + zbar/error.c | 175 + zbar/error.h | 236 + zbar/event.h | 60 + zbar/image.c | 342 ++ zbar/image.h | 177 + zbar/img_scanner.c | 1174 +++++ zbar/img_scanner.h | 37 + zbar/jpeg.c | 245 + zbar/libzbar.rc | 31 + zbar/misc.c | 105 + zbar/misc.h | 54 + zbar/mutex.h | 160 + zbar/processor.c | 727 +++ zbar/processor.h | 128 + zbar/processor/lock.c | 228 + zbar/processor/null.c | 57 + zbar/processor/posix.c | 325 ++ zbar/processor/posix.h | 132 + zbar/processor/win.c | 332 ++ zbar/processor/x.c | 266 + zbar/qrcode.h | 64 + zbar/qrcode/bch15_5.c | 207 + zbar/qrcode/bch15_5.h | 20 + zbar/qrcode/binarize.c | 646 +++ zbar/qrcode/binarize.h | 17 + zbar/qrcode/isaac.c | 145 + zbar/qrcode/isaac.h | 34 + zbar/qrcode/qrdec.c | 4395 +++++++++++++++++ zbar/qrcode/qrdec.h | 171 + zbar/qrcode/qrdectxt.c | 573 +++ zbar/qrcode/rs.c | 907 ++++ zbar/qrcode/rs.h | 66 + zbar/qrcode/util.c | 144 + zbar/qrcode/util.h | 56 + zbar/refcnt.c | 47 + zbar/refcnt.h | 90 + zbar/scanner.c | 311 ++ zbar/sqcode.c | 578 +++ zbar/sqcode.h | 21 + zbar/svg.c | 187 + zbar/svg.h | 68 + zbar/symbol.c | 520 ++ zbar/symbol.h | 96 + zbar/thread.h | 123 + zbar/timer.h | 146 + zbar/video.c | 452 ++ zbar/video.h | 183 + zbar/video/dshow.c | 1334 +++++ zbar/video/null.c | 35 + zbar/video/v4l.c | 73 + zbar/video/v4l1.c | 404 ++ zbar/video/v4l2.c | 1237 +++++ zbar/video/vfw.c | 511 ++ zbar/window.c | 305 ++ zbar/window.h | 142 + zbar/window/dib.c | 69 + zbar/window/null.c | 88 + zbar/window/vfw.c | 96 + zbar/window/win.c | 321 ++ zbar/window/win.h | 45 + zbar/window/x.c | 338 ++ zbar/window/x.h | 74 + zbar/window/ximage.c | 201 + zbar/window/xv.c | 264 + zbarcam/Makefile.am.inc | 44 + zbarcam/scan_video.c | 227 + zbarcam/zbarcam-gtk.c | 231 + zbarcam/zbarcam-qt.cpp | 1050 ++++ zbarcam/zbarcam.c | 375 ++ zbarcam/zbarcam.rc | 30 + zbarimg/Makefile.am.inc | 13 + zbarimg/zbarimg.c | 555 +++ zbarimg/zbarimg.rc | 30 + 425 files changed, 85904 insertions(+) create mode 100644 .clang-format create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/coverity.yml create mode 100755 .github/workflows/debuilder.sh create mode 100755 .github/workflows/gen_release.pl create mode 100644 .github/workflows/on_release.yml create mode 100644 .github/workflows/on_tag.yml create mode 100644 .gitignore create mode 100644 .hgignore create mode 100644 .hgtags create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 HACKING.md create mode 100644 INSTALL.md create mode 100644 LICENSE.md create mode 100644 Makefile.am create mode 100644 NEWS.md create mode 100644 README-windows.md create mode 100644 README.md create mode 100644 TODO.md create mode 100644 android/AndroidManifest.xml create mode 100644 android/ChangeLog create mode 100644 android/README create mode 100644 android/ant.properties create mode 100644 android/build-ndk.xml create mode 100644 android/build.xml create mode 100644 android/examples/CameraTest/AndroidManifest.xml create mode 100644 android/examples/CameraTest/ant.properties create mode 100644 android/examples/CameraTest/build.xml create mode 100644 android/examples/CameraTest/proguard.cfg create mode 100644 android/examples/CameraTest/project.properties create mode 100644 android/examples/CameraTest/res/layout/main.xml create mode 100644 android/examples/CameraTest/res/values/strings.xml create mode 100644 android/examples/CameraTest/src/net/sourceforge/zbar/android/CameraTest/CameraPreview.java create mode 100644 android/examples/CameraTest/src/net/sourceforge/zbar/android/CameraTest/CameraTestActivity.java create mode 100644 android/jni/Android.mk create mode 100644 android/jni/Application.mk create mode 100644 android/jni/config.h create mode 100644 android/proguard.cfg create mode 100644 android/project.properties create mode 100644 android/res/layout/main.xml create mode 100644 android/res/values/strings.xml create mode 100644 config/.keep create mode 100755 config/config.rpath create mode 100644 configure.ac create mode 100644 dbus/org.linuxtv.Zbar.conf create mode 100644 doc/Makefile.am.inc create mode 100644 doc/api/footer.html create mode 100644 doc/doxygen.conf.in create mode 100644 doc/manual.xml create mode 100644 doc/ref/commonoptions.xml create mode 100644 doc/ref/zbarcam.xml create mode 100644 doc/ref/zbarimg.xml create mode 100644 doc/style.xsl create mode 100644 examples/codabar.png create mode 100644 examples/code-128.png create mode 100644 examples/code-39.png create mode 100644 examples/code-93.png create mode 100644 examples/code-upc-a.png create mode 100644 examples/databar-exp.png create mode 100644 examples/databar.png create mode 100644 examples/ean-13.png create mode 100644 examples/ean-2.png create mode 100644 examples/ean-5.png create mode 100644 examples/ean-8.png create mode 100644 examples/i2-5.png create mode 100644 examples/processor.c create mode 100644 examples/processor.cpp create mode 100644 examples/qr-code-binary.png create mode 100644 examples/qr-code-inverted.png create mode 100644 examples/qr-code.png create mode 100644 examples/scan_image.c create mode 100644 examples/scan_image.cpp create mode 100644 examples/scan_image.vcproj create mode 100644 examples/sha1sum create mode 100644 examples/sqcode1-generated.png create mode 100644 examples/sqcode1-scanned.png create mode 100755 examples/upcrpc.pl create mode 100755 examples/upcrpc.py create mode 100644 gtk/Makefile.am create mode 100644 gtk/zbargtk.c create mode 100644 gtk/zbargtkprivate.h create mode 100644 gtk/zbarmarshal.list create mode 100644 include/Makefile.am.inc create mode 100644 include/zbar.h create mode 100644 include/zbar/Decoder.h create mode 100644 include/zbar/Exception.h create mode 100644 include/zbar/Image.h create mode 100644 include/zbar/ImageScanner.h create mode 100644 include/zbar/Processor.h create mode 100644 include/zbar/QZBar.h create mode 100644 include/zbar/QZBarImage.h create mode 100644 include/zbar/Scanner.h create mode 100644 include/zbar/Symbol.h create mode 100644 include/zbar/Video.h create mode 100644 include/zbar/Window.h create mode 100644 include/zbar/zbargtk.h create mode 100644 iphone/ChangeLog create mode 100644 iphone/README create mode 100644 iphone/ZBarCVImage.h create mode 100644 iphone/ZBarCVImage.m create mode 100644 iphone/ZBarCameraSimulator.m create mode 100644 iphone/ZBarCaptureReader.m create mode 100644 iphone/ZBarHelpController.m create mode 100644 iphone/ZBarImage.m create mode 100644 iphone/ZBarImageScanner.m create mode 100644 iphone/ZBarReaderController.m create mode 100644 iphone/ZBarReaderView.m create mode 100644 iphone/ZBarReaderViewController.m create mode 100644 iphone/ZBarReaderViewImpl_Capture.m create mode 100644 iphone/ZBarReaderViewImpl_Simulator.m create mode 100644 iphone/ZBarSymbol.m create mode 100755 iphone/bin/BuildUniversal.sh create mode 100755 iphone/bin/CreateDMG.sh create mode 100755 iphone/bin/CreateDSStore.pl create mode 100755 iphone/bin/Mac/Finder/AliasRecord.pm create mode 100644 iphone/debug.h create mode 100644 iphone/doc/Documentation.html create mode 100644 iphone/doc/ZBarImage.rst create mode 100644 iphone/doc/ZBarImageScanner.rst create mode 100644 iphone/doc/ZBarReaderController.rst create mode 100644 iphone/doc/ZBarReaderDelegate.rst create mode 100644 iphone/doc/ZBarReaderView.rst create mode 100644 iphone/doc/ZBarReaderViewController.rst create mode 100644 iphone/doc/ZBarReaderViewDelegate.rst create mode 100644 iphone/doc/ZBarSymbol.rst create mode 100644 iphone/doc/ZBarSymbolSet.rst create mode 100644 iphone/doc/apiref.rst create mode 100644 iphone/doc/camera.rst create mode 100644 iphone/doc/compat.rst create mode 100644 iphone/doc/conf.py create mode 100644 iphone/doc/custom.rst create mode 100644 iphone/doc/devguide.rst create mode 100644 iphone/doc/faq.rst create mode 100644 iphone/doc/getstarted.rst create mode 100644 iphone/doc/index.rst create mode 100644 iphone/doc/install.rst create mode 100644 iphone/doc/licensing.rst create mode 100644 iphone/doc/optimizing.rst create mode 100644 iphone/doc/picker.rst create mode 100644 iphone/doc/static/style.css create mode 100644 iphone/doc/support.rst create mode 100644 iphone/doc/tutorial.rst create mode 100644 iphone/examples/EmbedReader/EmbedReader.xcodeproj/project.pbxproj create mode 100644 iphone/examples/EmbedReader/EmbedReader.xcodeproj/xcshareddata/xcschemes/EmbedReader.xcscheme create mode 100644 iphone/examples/EmbedReader/EmbedReader/EmbedReader-Info.plist create mode 100644 iphone/examples/EmbedReader/EmbedReader/EmbedReader-Prefix.pch create mode 100644 iphone/examples/EmbedReader/EmbedReader/EmbedReaderAppDelegate.h create mode 100644 iphone/examples/EmbedReader/EmbedReader/EmbedReaderAppDelegate.m create mode 100644 iphone/examples/EmbedReader/EmbedReader/EmbedReaderViewController.h create mode 100644 iphone/examples/EmbedReader/EmbedReader/EmbedReaderViewController.m create mode 100644 iphone/examples/EmbedReader/EmbedReader/en.lproj/EmbedReaderViewController.xib create mode 100644 iphone/examples/EmbedReader/EmbedReader/en.lproj/InfoPlist.strings create mode 100644 iphone/examples/EmbedReader/EmbedReader/en.lproj/MainWindow.xib create mode 100644 iphone/examples/EmbedReader/EmbedReader/main.m create mode 100644 iphone/examples/EmbedReader/ZBarSDK create mode 100644 iphone/examples/EmbedReader/build create mode 100644 iphone/examples/ReaderSample/ReaderSample.xcodeproj/project.pbxproj create mode 100644 iphone/examples/ReaderSample/ReaderSample.xcodeproj/xcshareddata/xcschemes/ReaderSample.xcscheme create mode 100644 iphone/examples/ReaderSample/ReaderSample/ReaderSample-Info.plist create mode 100644 iphone/examples/ReaderSample/ReaderSample/ReaderSample-Prefix.pch create mode 100644 iphone/examples/ReaderSample/ReaderSample/ReaderSampleAppDelegate.h create mode 100644 iphone/examples/ReaderSample/ReaderSample/ReaderSampleAppDelegate.m create mode 100644 iphone/examples/ReaderSample/ReaderSample/ReaderSampleViewController.h create mode 100644 iphone/examples/ReaderSample/ReaderSample/ReaderSampleViewController.m create mode 100644 iphone/examples/ReaderSample/ReaderSample/en.lproj/InfoPlist.strings create mode 100644 iphone/examples/ReaderSample/ReaderSample/en.lproj/MainWindow.xib create mode 100644 iphone/examples/ReaderSample/ReaderSample/en.lproj/ReaderSampleViewController.xib create mode 100644 iphone/examples/ReaderSample/ReaderSample/main.m create mode 100644 iphone/examples/ReaderSample/ZBarSDK create mode 100644 iphone/examples/ReaderSample/build create mode 100644 iphone/examples/TabReader/TabReader.xcodeproj/project.pbxproj create mode 100644 iphone/examples/TabReader/TabReader.xcodeproj/xcshareddata/xcschemes/TabReader.xcscheme create mode 100644 iphone/examples/TabReader/TabReader/ResultsViewController.h create mode 100644 iphone/examples/TabReader/TabReader/ResultsViewController.m create mode 100644 iphone/examples/TabReader/TabReader/TabReader-Info.plist create mode 100644 iphone/examples/TabReader/TabReader/TabReader-Prefix.pch create mode 100644 iphone/examples/TabReader/TabReader/TabReaderAppDelegate.h create mode 100644 iphone/examples/TabReader/TabReader/TabReaderAppDelegate.m create mode 100644 iphone/examples/TabReader/TabReader/en.lproj/InfoPlist.strings create mode 100644 iphone/examples/TabReader/TabReader/en.lproj/MainWindow.xib create mode 100644 iphone/examples/TabReader/TabReader/en.lproj/ResultsView.xib create mode 100644 iphone/examples/TabReader/TabReader/main.m create mode 100644 iphone/examples/TabReader/ZBarSDK create mode 100644 iphone/examples/TabReader/build create mode 100644 iphone/examples/readertest/ZBarSDK create mode 100644 iphone/examples/readertest/build create mode 100644 iphone/examples/readertest/entitlements.plist create mode 100644 iphone/examples/readertest/prefix.pch create mode 100644 iphone/examples/readertest/readertest.m create mode 100644 iphone/examples/readertest/readertest.plist create mode 100644 iphone/examples/readertest/readertest.xcodeproj/project.pbxproj create mode 100644 iphone/examples/readertest/readertest.xcodeproj/xcshareddata/xcschemes/readertest.xcscheme create mode 100644 iphone/include/ZBarSDK/ZBarCameraSimulator.h create mode 100644 iphone/include/ZBarSDK/ZBarCaptureReader.h create mode 100644 iphone/include/ZBarSDK/ZBarHelpController.h create mode 100644 iphone/include/ZBarSDK/ZBarImage.h create mode 100644 iphone/include/ZBarSDK/ZBarImageScanner.h create mode 100644 iphone/include/ZBarSDK/ZBarReaderController.h create mode 100644 iphone/include/ZBarSDK/ZBarReaderView.h create mode 100644 iphone/include/ZBarSDK/ZBarReaderViewController.h create mode 100644 iphone/include/ZBarSDK/ZBarSDK.h create mode 100644 iphone/include/ZBarSDK/ZBarSymbol.h create mode 100644 iphone/include/config.h create mode 100644 iphone/include/prefix.pch create mode 100644 iphone/res/ZBarSDK-Info.plist create mode 100644 iphone/res/ZBarSDK-bg.svg create mode 100644 iphone/res/buttondown.svg create mode 100644 iphone/res/buttonmask.svg create mode 100644 iphone/res/buttonup.svg create mode 100644 iphone/res/lightbulb.svg create mode 100644 iphone/res/shakyhand.svg create mode 100644 iphone/res/shakyphone.svg create mode 100644 iphone/res/stopwatch.svg create mode 100644 iphone/res/zbar-back.png create mode 100644 iphone/res/zbar-back.svg create mode 100644 iphone/res/zbar-help.html create mode 100644 iphone/res/zbar-helpicons.png create mode 100644 iphone/res/zbar-samples.png create mode 100644 iphone/zbar.xcodeproj/project.pbxproj create mode 100644 iphone/zbar.xcodeproj/xcshareddata/xcschemes/ZBarSDK.dmg.xcscheme create mode 100644 iphone/zbar.xcodeproj/xcshareddata/xcschemes/ZBarSDK.xcscheme create mode 100644 iphone/zbar.xcodeproj/xcshareddata/xcschemes/libzbar.xcscheme create mode 100644 iphone/zbar.xcodeproj/xcshareddata/xcschemes/readertest.xcscheme create mode 100644 java/Makefile.am create mode 100644 java/net/sourceforge/zbar/Config.java create mode 100644 java/net/sourceforge/zbar/Image.java create mode 100644 java/net/sourceforge/zbar/ImageScanner.java create mode 100644 java/net/sourceforge/zbar/Modifier.java create mode 100644 java/net/sourceforge/zbar/Orientation.java create mode 100644 java/net/sourceforge/zbar/Symbol.java create mode 100644 java/net/sourceforge/zbar/SymbolIterator.java create mode 100644 java/net/sourceforge/zbar/SymbolSet.java create mode 100644 java/test/TestImage.java create mode 100644 java/test/TestImageScanner.java create mode 100644 java/test/TestScanImage.java create mode 100644 java/zbarjni.c create mode 100644 perl/COPYING.LIB create mode 100644 perl/Changes create mode 100644 perl/MANIFEST create mode 100644 perl/MANIFEST.SKIP create mode 100644 perl/Makefile.PL create mode 100644 perl/README create mode 100644 perl/ZBar.pm create mode 100644 perl/ZBar.xs create mode 100644 perl/ZBar/Image.pod create mode 100644 perl/ZBar/ImageScanner.pod create mode 100644 perl/ZBar/Processor.pod create mode 100644 perl/ZBar/Symbol.pod create mode 100755 perl/examples/paginate.pl create mode 100755 perl/examples/processor.pl create mode 100755 perl/examples/read_one.pl create mode 100755 perl/examples/scan_image.pl create mode 100644 perl/inc/Devel/CheckLib.pm create mode 100644 perl/ppport.h create mode 100755 perl/t/Decoder.t create mode 100755 perl/t/Image.t create mode 100755 perl/t/Processor.t create mode 100755 perl/t/Scanner.t create mode 100755 perl/t/ZBar.t create mode 100644 perl/t/barcode.png create mode 100644 perl/t/pod-coverage.t create mode 100644 perl/t/pod.t create mode 100644 perl/typemap create mode 100644 plugin/Makefile.am.inc create mode 100644 plugin/plugin.c create mode 100644 po/LINGUAS create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/pt_BR.po create mode 100644 pygtk/Makefile.am.inc create mode 100644 pygtk/zbarpygtk.override create mode 100644 pygtk/zbarpygtkmodule.c create mode 100644 python/MANIFEST.in create mode 100644 python/Makefile.am.inc create mode 100644 python/README create mode 100644 python/decoder.c create mode 100644 python/enum.c create mode 100644 python/examples/processor.py create mode 100644 python/examples/read_one.py create mode 100644 python/examples/scan_image.py create mode 100644 python/exception.c create mode 100644 python/image.c create mode 100644 python/imagescanner.c create mode 100644 python/processor.c create mode 100644 python/scanner.c create mode 100644 python/setup.py create mode 100644 python/symbol.c create mode 100644 python/symboliter.c create mode 100644 python/symbolset.c create mode 100644 python/test/barcode.png create mode 100755 python/test/test_zbar.py create mode 100644 python/zbarmodule.c create mode 100644 python/zbarmodule.h create mode 100644 qt/Makefile.am.inc create mode 100644 qt/QZBar.cpp create mode 100644 qt/QZBarThread.cpp create mode 100644 qt/QZBarThread.h create mode 100644 test/Makefile.am.inc create mode 100755 test/barcodetest.py create mode 100644 test/check_dbus.sh.in create mode 100644 test/dbg_scan.cpp create mode 100644 test/pdf417_encode.h create mode 100644 test/test_convert.c create mode 100644 test/test_cpp.cpp create mode 100644 test/test_cpp_img.cpp create mode 100644 test/test_dbus.c create mode 100644 test/test_decode.c create mode 100644 test/test_examples.sh.in create mode 100755 test/test_gi.py create mode 100644 test/test_images.c create mode 100644 test/test_images.h create mode 100644 test/test_jpeg.c create mode 100755 test/test_perl.pl create mode 100644 test/test_proc.c create mode 100755 test/test_pygtk.py create mode 100755 test/test_python.py create mode 100644 test/test_video.c create mode 100644 test/test_window.c create mode 100644 zbar-gtk.pc.in create mode 100644 zbar-qt5.pc.in create mode 100644 zbar.ico create mode 100644 zbar.nsi create mode 100644 zbar.pc.in create mode 100644 zbar.spec.in create mode 100644 zbar/Makefile.am create mode 100644 zbar/config.c create mode 100644 zbar/convert.c create mode 100644 zbar/debug.h create mode 100644 zbar/decoder.c create mode 100644 zbar/decoder.h create mode 100644 zbar/decoder/codabar.c create mode 100644 zbar/decoder/codabar.h create mode 100644 zbar/decoder/code128.c create mode 100644 zbar/decoder/code128.h create mode 100644 zbar/decoder/code39.c create mode 100644 zbar/decoder/code39.h create mode 100644 zbar/decoder/code93.c create mode 100644 zbar/decoder/code93.h create mode 100644 zbar/decoder/databar.c create mode 100644 zbar/decoder/databar.h create mode 100644 zbar/decoder/ean.c create mode 100644 zbar/decoder/ean.h create mode 100644 zbar/decoder/i25.c create mode 100644 zbar/decoder/i25.h create mode 100644 zbar/decoder/pdf417.c create mode 100644 zbar/decoder/pdf417.h create mode 100644 zbar/decoder/pdf417_hash.h create mode 100644 zbar/decoder/qr_finder.c create mode 100644 zbar/decoder/qr_finder.h create mode 100644 zbar/decoder/sq_finder.c create mode 100644 zbar/decoder/sq_finder.h create mode 100644 zbar/error.c create mode 100644 zbar/error.h create mode 100644 zbar/event.h create mode 100644 zbar/image.c create mode 100644 zbar/image.h create mode 100644 zbar/img_scanner.c create mode 100644 zbar/img_scanner.h create mode 100644 zbar/jpeg.c create mode 100644 zbar/libzbar.rc create mode 100644 zbar/misc.c create mode 100644 zbar/misc.h create mode 100644 zbar/mutex.h create mode 100644 zbar/processor.c create mode 100644 zbar/processor.h create mode 100644 zbar/processor/lock.c create mode 100644 zbar/processor/null.c create mode 100644 zbar/processor/posix.c create mode 100644 zbar/processor/posix.h create mode 100644 zbar/processor/win.c create mode 100644 zbar/processor/x.c create mode 100644 zbar/qrcode.h create mode 100644 zbar/qrcode/bch15_5.c create mode 100644 zbar/qrcode/bch15_5.h create mode 100644 zbar/qrcode/binarize.c create mode 100644 zbar/qrcode/binarize.h create mode 100644 zbar/qrcode/isaac.c create mode 100644 zbar/qrcode/isaac.h create mode 100644 zbar/qrcode/qrdec.c create mode 100644 zbar/qrcode/qrdec.h create mode 100644 zbar/qrcode/qrdectxt.c create mode 100644 zbar/qrcode/rs.c create mode 100644 zbar/qrcode/rs.h create mode 100644 zbar/qrcode/util.c create mode 100644 zbar/qrcode/util.h create mode 100644 zbar/refcnt.c create mode 100644 zbar/refcnt.h create mode 100644 zbar/scanner.c create mode 100644 zbar/sqcode.c create mode 100644 zbar/sqcode.h create mode 100644 zbar/svg.c create mode 100644 zbar/svg.h create mode 100644 zbar/symbol.c create mode 100644 zbar/symbol.h create mode 100644 zbar/thread.h create mode 100644 zbar/timer.h create mode 100644 zbar/video.c create mode 100644 zbar/video.h create mode 100644 zbar/video/dshow.c create mode 100644 zbar/video/null.c create mode 100644 zbar/video/v4l.c create mode 100644 zbar/video/v4l1.c create mode 100644 zbar/video/v4l2.c create mode 100644 zbar/video/vfw.c create mode 100644 zbar/window.c create mode 100644 zbar/window.h create mode 100644 zbar/window/dib.c create mode 100644 zbar/window/null.c create mode 100644 zbar/window/vfw.c create mode 100644 zbar/window/win.c create mode 100644 zbar/window/win.h create mode 100644 zbar/window/x.c create mode 100644 zbar/window/x.h create mode 100644 zbar/window/ximage.c create mode 100644 zbar/window/xv.c create mode 100644 zbarcam/Makefile.am.inc create mode 100644 zbarcam/scan_video.c create mode 100644 zbarcam/zbarcam-gtk.c create mode 100644 zbarcam/zbarcam-qt.cpp create mode 100644 zbarcam/zbarcam.c create mode 100644 zbarcam/zbarcam.rc create mode 100644 zbarimg/Makefile.am.inc create mode 100644 zbarimg/zbarimg.c create mode 100644 zbarimg/zbarimg.rc diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..77bae36 --- /dev/null +++ b/.clang-format @@ -0,0 +1,141 @@ +--- +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveBitFields: true +AlignConsecutiveDeclarations: false +AlignConsecutiveMacros: true +AlignEscapedNewlines: true +AlignOperands: true +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AllowShortBlocksOnASingleLine: true +AllowShortIfStatementsOnASingleLine: false +AllowShortLambdasOnASingleLine: true +AllowShortLoopsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true + +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: false + AfterClass: true + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true + +BreakBeforeBinaryOperators: None +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: false +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: false +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false + +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '"config\.h"' + Priority: 1 + SortPriority: 1 + - Regex: '<^(glib).*>' + Priority: 2 + SortPriority: 2 + - Regex: '' + Priority: 3 + SortPriority: 3 + - Regex: '' + Priority: 4 + SortPriority: 4 + - Regex: '[\<\"]zbar\.h[\>\"]' + Priority: 5 + SortPriority: 6 + - Regex: '[\<\"]zbar.*' + Priority: 6 + SortPriority: 7 + - Regex: '<.*>' + Priority: 7 + SortPriority: 5 + - Regex: '.*' + Priority: 8 + SortPriority: 8 +SortIncludes: true + +IndentCaseLabels: false +IndentPPDirectives: None +IndentWidth: 4 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true + +PenaltyBreakAssignment: 10 +PenaltyBreakBeforeFirstCallParameter: 50 +PenaltyBreakComment: 10 +PenaltyBreakFirstLessLess: 0 +PenaltyBreakString: 10 +PenaltyExcessCharacter: 100 +PenaltyReturnTypeOnItsOwnLine: 60 + +PointerAlignment: Right +ReflowComments: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp03 +TabWidth: 8 +UseTab: Always +... diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..12033db --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,238 @@ +name: CI + +# Should run only on branches and PR, as "on_tag.yml" will handle tags +on: + push: + branches: master test + 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-18.04 + 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 diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml new file mode 100644 index 0000000..e99308d --- /dev/null +++ b/.github/workflows/coverity.yml @@ -0,0 +1,51 @@ +name: Run coverity scan +on: + workflow_dispatch: + + schedule: + - cron: '3 8 * * *' # Daily at 08:03 UTC + +jobs: + Coverity: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install packages + run: | + sudo apt-get 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: Download Coverity Build Tool + env: + TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} + run: | + wget -q https://scan.coverity.com/download/cxx/linux64 \ + --post-data "token=$TOKEN&project=ZBar" \ + -O cov-analysis-linux64.tar.gz + mkdir cov-analysis-linux64 + tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64 + - name: Fixed world writable dirs + run: | + chmod go-w $HOME + sudo chmod -R go-w /usr/share + - name: Prepare Coverity + run: | + autoreconf -vfi + ./configure + export PATH=${PWD}/cov-analysis-linux64/bin:$PATH + cov-build --dir cov-int make + - name: Submit the result to Coverity Scan + env: + TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} + run: | + tar czvf zbar.tgz cov-int + curl --form token=$TOKEN \ + --form email=mchehab@kernel.org \ + --form file=@zbar.tgz \ + --form version=trunk \ + --form description="Zbar-git-$(git log -1 --pretty='%h')" \ + https://scan.coverity.com/builds?project=ZBar diff --git a/.github/workflows/debuilder.sh b/.github/workflows/debuilder.sh new file mode 100755 index 0000000..9c3958a --- /dev/null +++ b/.github/workflows/debuilder.sh @@ -0,0 +1,62 @@ +#!/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 diff --git a/.github/workflows/gen_release.pl b/.github/workflows/gen_release.pl new file mode 100755 index 0000000..9a108ce --- /dev/null +++ b/.github/workflows/gen_release.pl @@ -0,0 +1,40 @@ +#!/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 ""); diff --git a/.github/workflows/on_release.yml b/.github/workflows/on_release.yml new file mode 100644 index 0000000..218119c --- /dev/null +++ b/.github/workflows/on_release.yml @@ -0,0 +1,149 @@ +name: Upload binaries to release + +on: + release: + types: + - created + - published + - edited + + workflow_dispatch: + +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: | + (cd ..; tar cvfz zbar-ubuntu-20.04.tar.gz *deb) + + - name: upload + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: mchehab/upload-release-asset@v1.0.3 + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ../zbar-ubuntu-20.04.tar.gz + asset_name: zbar-ubuntu-20.04.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: mchehab/upload-release-asset@v1.0.3 + 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: mchehab/upload-release-asset@v1.0.3 + 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 diff --git a/.github/workflows/on_tag.yml b/.github/workflows/on_tag.yml new file mode 100644 index 0000000..b1d48fe --- /dev/null +++ b/.github/workflows/on_tag.yml @@ -0,0 +1,31 @@ +name: 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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51276f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,73 @@ +*.la +*.lo +*.o +*~ + +.deps/ +.dirstamp +.libs/ +build/ + +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 diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000..f8b9026 --- /dev/null +++ b/.hgignore @@ -0,0 +1,36 @@ +syntax: 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 diff --git a/.hgtags b/.hgtags new file mode 100644 index 0000000..6c2f490 --- /dev/null +++ b/.hgtags @@ -0,0 +1,29 @@ +20d75a548cf6daee2e590683ee2166d6af24e94f 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 diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..15fe8ed --- /dev/null +++ b/COPYING @@ -0,0 +1,27 @@ +The 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. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..1ecbdee --- /dev/null +++ b/ChangeLog @@ -0,0 +1,787 @@ +0.23.93: + * Set a better dpi resolution when parsing PDF files + * Fix memory recycle bug of empty symbols + * Fix compilation with python 3.11 and 3.12 + * CVE-2023-40889: Fix array out-of-bounds access + * Stop ignoring non-binary entries that follow binary ones + * Increase allocated buffer memory for symbols + * barcodetest.py: fix error code print logic + * convert: Crash fixing while using camera + * Add some pod information for additional functions + * perl skip more tests if DISPLAY not set and set prereqs in Makefile.PL + * Fixes rt.cpan.org 122061 - test fails when DISPLAY not set + * Update Barcode::ZBar + * isaac: ensure proper order of parsing expression + * Enforce x11 backend even on wayland + * zbarimg: add the --polygon option + * xml output: Add polygon containing code bar. + * configure.ac: drop support for Qt4 and prepare for Qt6 support + * win: fix compiling error in Visual studio + * Enforce a coding style + * configure.ac: fix some issues with gtk parameter + * zbargtk: fix version check macros + * zbar: Address some header issues + * zbar, test: fix compilation issues with FreeBSD + * zbar: Function stdcall declaration issue. + * symbol: make it compatible with MSC + * zbar: change the code to make it c90 standard compatible + * test: fix decode test + +0.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 diff --git a/HACKING.md b/HACKING.md new file mode 100644 index 0000000..67d7f9f --- /dev/null +++ b/HACKING.md @@ -0,0 +1,96 @@ +Downloading 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 (e.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 patches. + +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. + +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 diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..84eee00 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,199 @@ +Basic 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 diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..ec032ef --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,503 @@ +### 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! \ No newline at end of file diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..cb3c0f9 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,149 @@ +ACLOCAL_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 \ + 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 diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..36e21b4 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,157 @@ +ZBar 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; existing 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 diff --git a/README-windows.md b/README-windows.md new file mode 100644 index 0000000..04e2987 --- /dev/null +++ b/README-windows.md @@ -0,0 +1,225 @@ +ZBAR 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 +(e.g. 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 autopoint + +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 autopoint gettext-devel + +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 e.g.: + + 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: + + * diff --git a/README.md b/README.md new file mode 100644 index 0000000..0214cfd --- /dev/null +++ b/README.md @@ -0,0 +1,244 @@ +ZBAR 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 (e.g. 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: + +- diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..c8e4396 --- /dev/null +++ b/TODO.md @@ -0,0 +1,84 @@ +general +======= + + * 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?) diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml new file mode 100644 index 0000000..f497968 --- /dev/null +++ b/android/AndroidManifest.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/android/ChangeLog b/android/ChangeLog new file mode 100644 index 0000000..25ef5c5 --- /dev/null +++ b/android/ChangeLog @@ -0,0 +1,2 @@ +version 0.1: + * Add initial support for Android platform diff --git a/android/README b/android/README new file mode 100644 index 0000000..c253110 --- /dev/null +++ b/android/README @@ -0,0 +1,110 @@ +ZBar 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 libraries, 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 automatically 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. diff --git a/android/ant.properties b/android/ant.properties new file mode 100644 index 0000000..ee52d86 --- /dev/null +++ b/android/ant.properties @@ -0,0 +1,17 @@ +# 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. + diff --git a/android/build-ndk.xml b/android/build-ndk.xml new file mode 100644 index 0000000..938afa4 --- /dev/null +++ b/android/build-ndk.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/build.xml b/android/build.xml new file mode 100644 index 0000000..e7b93ac --- /dev/null +++ b/android/build.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/examples/CameraTest/AndroidManifest.xml b/android/examples/CameraTest/AndroidManifest.xml new file mode 100644 index 0000000..2bc2ae7 --- /dev/null +++ b/android/examples/CameraTest/AndroidManifest.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + diff --git a/android/examples/CameraTest/ant.properties b/android/examples/CameraTest/ant.properties new file mode 100644 index 0000000..ee52d86 --- /dev/null +++ b/android/examples/CameraTest/ant.properties @@ -0,0 +1,17 @@ +# 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. + diff --git a/android/examples/CameraTest/build.xml b/android/examples/CameraTest/build.xml new file mode 100644 index 0000000..df1f293 --- /dev/null +++ b/android/examples/CameraTest/build.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/examples/CameraTest/proguard.cfg b/android/examples/CameraTest/proguard.cfg new file mode 100644 index 0000000..b1cdf17 --- /dev/null +++ b/android/examples/CameraTest/proguard.cfg @@ -0,0 +1,40 @@ +-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 *; +} diff --git a/android/examples/CameraTest/project.properties b/android/examples/CameraTest/project.properties new file mode 100644 index 0000000..8da376a --- /dev/null +++ b/android/examples/CameraTest/project.properties @@ -0,0 +1,11 @@ +# 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 diff --git a/android/examples/CameraTest/res/layout/main.xml b/android/examples/CameraTest/res/layout/main.xml new file mode 100644 index 0000000..36279a1 --- /dev/null +++ b/android/examples/CameraTest/res/layout/main.xml @@ -0,0 +1,28 @@ + + + + + + + +