diff options
| author | Alexander Blair <snipa@jagtech.io> | 2021-01-03 18:45:13 -0800 |
|---|---|---|
| committer | Alexander Blair <snipa@jagtech.io> | 2021-01-03 18:45:26 -0800 |
| commit | bbe371654258c25d034c07783e5ae776c2f60d90 (patch) | |
| tree | 51e2161b29317061a4ae2f02cee4d70c9071a81c /src/QR-Code-scanner/QrScanThread.cpp | |
| parent | 8e6a2cde0fd0e8c2a71456ea8bb36db49116d705 (diff) | |
| parent | 8d4cda030e445d2b64cc327af125b538e014ecb0 (diff) | |
| download | monzero-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.cpp | 55 |
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(); |
