aboutsummaryrefslogtreecommitdiff
path: root/src/QR-Code-scanner/QrScanThread.cpp
diff options
context:
space:
mode:
authorAlexander Blair <snipa@jagtech.io>2021-01-03 18:45:13 -0800
committerAlexander Blair <snipa@jagtech.io>2021-01-03 18:45:26 -0800
commitbbe371654258c25d034c07783e5ae776c2f60d90 (patch)
tree51e2161b29317061a4ae2f02cee4d70c9071a81c /src/QR-Code-scanner/QrScanThread.cpp
parent8e6a2cde0fd0e8c2a71456ea8bb36db49116d705 (diff)
parent8d4cda030e445d2b64cc327af125b538e014ecb0 (diff)
downloadmonzero-gui-bbe371654258c25d034c07783e5ae776c2f60d90.tar.gz
monzero-gui-bbe371654258c25d034c07783e5ae776c2f60d90.tar.xz
monzero-gui-bbe371654258c25d034c07783e5ae776c2f60d90.zip
Merge pull request #3277
8d4cda03 QR-Code-scanner: integrate QUIRC library, implement QrDecoder, drop ZBar (xiphon)
Diffstat (limited to 'src/QR-Code-scanner/QrScanThread.cpp')
-rw-r--r--src/QR-Code-scanner/QrScanThread.cpp55
1 files changed, 4 insertions, 51 deletions
diff --git a/src/QR-Code-scanner/QrScanThread.cpp b/src/QR-Code-scanner/QrScanThread.cpp
index 15f4c030..6421321e 100644
--- a/src/QR-Code-scanner/QrScanThread.cpp
+++ b/src/QR-Code-scanner/QrScanThread.cpp
@@ -38,62 +38,15 @@ QrScanThread::QrScanThread(QObject *parent)
: QThread(parent)
,m_running(true)
{
- m_scanner.set_handler(*this);
}
-void QrScanThread::image_callback(zbar::Image &image)
-{
- qDebug() << "image_callback : Found Code ! " ;
- for(zbar::Image::SymbolIterator sym = image.symbol_begin();
- sym != image.symbol_end();
- ++sym)
- if(!sym->get_count()) {
- QString data = QString::fromStdString(sym->get_data());
- emit decoded(sym->get_type(), data);
- }
-}
-
-void QrScanThread::processZImage(zbar::Image &image)
-{
- m_scanner.recycle_image(image);
- zbar::Image tmp = image.convert(*(long*)"Y800");
- m_scanner.scan(tmp);
- image.set_symbols(tmp.get_symbols());
-}
-
-bool QrScanThread::zimageFromQImage(const QImage &qimg, zbar::Image &dst)
-{
- switch( qimg.format() ){
- case QImage::Format_RGB32 :
- case QImage::Format_ARGB32 :
- case QImage::Format_ARGB32_Premultiplied :
- break;
- default :
- emit notifyError(QString("Invalid QImage Format !"));
- return false;
- }
- unsigned int bpl( qimg.bytesPerLine() ), width( bpl / 4), height( qimg.height());
- dst.set_size(width, height);
- dst.set_format("BGR4");
-#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
- unsigned long datalen = qimg.sizeInBytes();
-#else
- unsigned long datalen = qimg.byteCount();
-#endif
- dst.set_data(qimg.bits(), datalen);
- if((width * 4 != bpl) || (width * height * 4 > datalen)){
- emit notifyError(QString("QImage to Zbar::Image failed !"));
- return false;
- }
- return true;
-}
void QrScanThread::processQImage(const QImage &qimg)
{
try {
- m_image = QSharedPointer<zbar::Image>(new zbar::Image());
- if( ! zimageFromQImage(qimg, *m_image) )
- return;
- processZImage(*m_image);
+ for (const std::string &code : m_decoder.decode(qimg))
+ {
+ emit decoded(QString::fromStdString(code));
+ }
}
catch(std::exception &e) {
qDebug() << "ERROR: " << e.what();