mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
git-svn-id: https://zxing.googlecode.com/svn/trunk@1481 59b500cc-1b3d-0410-9834-0bbf25fbcc57
101 lines
2.4 KiB
C++
101 lines
2.4 KiB
C++
#include "ZXingBarcodeReaderAppView.h"
|
|
#include <e32std.h>
|
|
|
|
#include <zxing/qrcode/QRCodeReader.h>
|
|
#include <zxing/MultiFormatReader.h>
|
|
|
|
#include <zxing/common/GlobalHistogramBinarizer.h>
|
|
#include <zxing/Binarizer.h>
|
|
#include <zxing/BinaryBitmap.h>
|
|
#include <CameraImage.h>
|
|
#include <string>
|
|
#include <aknmessagequerydialog.h>
|
|
#include "ZXingBarcodeReader_0xEF24C10A.rsg"
|
|
|
|
using namespace zxing;
|
|
using namespace zxing::qrcode;
|
|
|
|
void CZXingBarcodeReaderAppView::StartTimer()
|
|
{
|
|
const TInt tickInterval=2000000;
|
|
iPeriodic=CPeriodic::NewL(0); // neutral priority
|
|
|
|
//CleanupStack::PushL(iPeriodic);
|
|
|
|
iPeriodic->Start(tickInterval,tickInterval,TCallBack(&CZXingBarcodeReaderAppView::Tick, this));
|
|
|
|
// CleanupStack::PopAndDestroy(iPeriodic);
|
|
}
|
|
|
|
TInt CZXingBarcodeReaderAppView::Tick(TAny* aObject)
|
|
{
|
|
// cast, and call non-static function
|
|
((CZXingBarcodeReaderAppView*)aObject)->decodeBackbufferImage();
|
|
return 1;
|
|
}
|
|
|
|
void CZXingBarcodeReaderAppView::decodeBackbufferImage()
|
|
{
|
|
MultiFormatReader decoder;
|
|
|
|
CameraImage image;
|
|
image.setImage(iBackBuffer);
|
|
|
|
|
|
Ref<Result> res;
|
|
|
|
try
|
|
{
|
|
Ref<LuminanceSource> imageRef(new CameraImage(image));
|
|
GlobalHistogramBinarizer* binz = new GlobalHistogramBinarizer(imageRef);
|
|
|
|
Ref<Binarizer> bz (binz);
|
|
BinaryBitmap* bb = new BinaryBitmap(bz);
|
|
|
|
Ref<BinaryBitmap> ref(bb);
|
|
|
|
res = decoder.decode(ref);
|
|
|
|
string string = res->getText()->getText();
|
|
HBufC8 *pHeap8 = HBufC8::NewMaxLC(string.size());
|
|
pHeap8->Des().Copy((const TUint8 *)string.c_str());
|
|
|
|
HBufC *pHeap16 = HBufC::NewMaxLC(pHeap8->Length());
|
|
pHeap16->Des().Copy(*pHeap8);
|
|
|
|
ShowResultL(*pHeap16);
|
|
}
|
|
catch(zxing::Exception& e)
|
|
{
|
|
/*string string = "Error...retrying...";
|
|
HBufC8 *pHeap8 = HBufC8::NewMaxLC(string.size());
|
|
pHeap8->Des().Copy((const TUint8 *)string.c_str());
|
|
|
|
HBufC *pHeap16 = HBufC::NewMaxLC(pHeap8->Length());
|
|
pHeap16->Des().Copy(*pHeap8);
|
|
|
|
ShowResultL(*pHeap16);*/
|
|
}
|
|
}
|
|
|
|
void CZXingBarcodeReaderAppView::ShowResultL(TDesC16& message)
|
|
{
|
|
StopTimer();
|
|
|
|
CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog ();
|
|
|
|
dlg->PrepareLC(R_TEXT_QUERY_DIALOG );
|
|
|
|
//HBufC* title = NULL;
|
|
//title = iEikonEnv->AllocReadResourceLC ( TEXT_DIALOG_TITLE );
|
|
dlg->QueryHeading ()->SetTextL (_L("Information") );
|
|
|
|
dlg->SetMessageTextL ( message );
|
|
|
|
dlg->RunLD();
|
|
|
|
CleanupStack::PopAndDestroy();
|
|
|
|
StartTimer();
|
|
}
|