Added iOS implementation (tested on iOS7, iPhone 4S...)
This commit is contained in:
162
ios/ZBarSDK/zbar/Scanner.h
Normal file
162
ios/ZBarSDK/zbar/Scanner.h
Normal file
@@ -0,0 +1,162 @@
|
||||
//------------------------------------------------------------------------
|
||||
// Copyright 2007-2009 (c) Jeff Brown <spadix@users.sourceforge.net>
|
||||
//
|
||||
// This file is part of the ZBar Bar Code Reader.
|
||||
//
|
||||
// The ZBar Bar Code Reader is free software; you can redistribute it
|
||||
// and/or modify it under the terms of the GNU Lesser Public License as
|
||||
// published by the Free Software Foundation; either version 2.1 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// The ZBar Bar Code Reader 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 Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser Public License
|
||||
// along with the ZBar Bar Code Reader; if not, write to the Free
|
||||
// Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
// Boston, MA 02110-1301 USA
|
||||
//
|
||||
// http://sourceforge.net/projects/zbar
|
||||
//------------------------------------------------------------------------
|
||||
#ifndef _ZBAR_SCANNER_H_
|
||||
#define _ZBAR_SCANNER_H_
|
||||
|
||||
/// @file
|
||||
/// Scanner C++ wrapper
|
||||
|
||||
#ifndef _ZBAR_H_
|
||||
# error "include zbar.h in your application, **not** zbar/Scanner.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
namespace zbar {
|
||||
|
||||
/// low-level linear intensity sample stream scanner interface.
|
||||
/// identifies "bar" edges and measures width between them.
|
||||
/// optionally passes to bar width Decoder
|
||||
|
||||
class Scanner {
|
||||
public:
|
||||
|
||||
/// constructor.
|
||||
/// @param decoder reference to a Decoder instance which will
|
||||
/// be passed scan results automatically
|
||||
Scanner (Decoder& decoder)
|
||||
{
|
||||
_scanner = zbar_scanner_create(decoder._decoder);
|
||||
}
|
||||
|
||||
/// constructor.
|
||||
/// @param decoder pointer to a Decoder instance which will
|
||||
/// be passed scan results automatically
|
||||
Scanner (Decoder* decoder = NULL)
|
||||
{
|
||||
zbar_decoder_t *zdcode = NULL;
|
||||
if(decoder)
|
||||
zdcode = decoder->_decoder;
|
||||
_scanner = zbar_scanner_create(zdcode);
|
||||
}
|
||||
|
||||
~Scanner ()
|
||||
{
|
||||
zbar_scanner_destroy(_scanner);
|
||||
}
|
||||
|
||||
/// clear all scanner state.
|
||||
/// see zbar_scanner_reset()
|
||||
void reset ()
|
||||
{
|
||||
zbar_scanner_reset(_scanner);
|
||||
}
|
||||
|
||||
/// mark start of a new scan pass.
|
||||
/// see zbar_scanner_new_scan()
|
||||
zbar_symbol_type_t new_scan ()
|
||||
{
|
||||
_type = zbar_scanner_new_scan(_scanner);
|
||||
return(_type);
|
||||
}
|
||||
|
||||
/// flush scanner pipeline.
|
||||
/// see zbar_scanner_flush()
|
||||
zbar_symbol_type_t flush ()
|
||||
{
|
||||
_type = zbar_scanner_flush(_scanner);
|
||||
return(_type);
|
||||
}
|
||||
|
||||
/// process next sample intensity value.
|
||||
/// see zbar_scan_y()
|
||||
zbar_symbol_type_t scan_y (int y)
|
||||
{
|
||||
_type = zbar_scan_y(_scanner, y);
|
||||
return(_type);
|
||||
}
|
||||
|
||||
/// process next sample intensity value.
|
||||
/// see zbar_scan_y()
|
||||
Scanner& operator<< (int y)
|
||||
{
|
||||
_type = zbar_scan_y(_scanner, y);
|
||||
return(*this);
|
||||
}
|
||||
|
||||
/// process next sample from RGB (or BGR) triple.
|
||||
/// see zbar_scan_rgb24()
|
||||
zbar_symbol_type_t scan_rgb24 (unsigned char *rgb)
|
||||
{
|
||||
_type = zbar_scan_rgb24(_scanner, rgb);
|
||||
return(_type);
|
||||
}
|
||||
|
||||
/// process next sample from RGB (or BGR) triple.
|
||||
/// see zbar_scan_rgb24()
|
||||
Scanner& operator<< (unsigned char *rgb)
|
||||
{
|
||||
_type = zbar_scan_rgb24(_scanner, rgb);
|
||||
return(*this);
|
||||
}
|
||||
|
||||
/// retrieve last scanned width.
|
||||
/// see zbar_scanner_get_width()
|
||||
unsigned get_width () const
|
||||
{
|
||||
return(zbar_scanner_get_width(_scanner));
|
||||
}
|
||||
|
||||
/// retrieve last scanned color.
|
||||
/// see zbar_scanner_get_color()
|
||||
zbar_color_t get_color () const
|
||||
{
|
||||
return(zbar_scanner_get_color(_scanner));
|
||||
}
|
||||
|
||||
/// retrieve last scan result.
|
||||
zbar_symbol_type_t get_type () const
|
||||
{
|
||||
return(_type);
|
||||
}
|
||||
|
||||
/// cast to C scanner
|
||||
operator zbar_scanner_t* () const
|
||||
{
|
||||
return(_scanner);
|
||||
}
|
||||
|
||||
/// retrieve C scanner
|
||||
const zbar_scanner_t *get_c_scanner () const
|
||||
{
|
||||
return(_scanner);
|
||||
}
|
||||
|
||||
private:
|
||||
zbar_scanner_t *_scanner;
|
||||
zbar_symbol_type_t _type;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user