cordova-plugin-cszbar-jsg/ios/ZBarSDK/ZBarReaderController.h

143 lines
5.1 KiB
Objective-C

//------------------------------------------------------------------------
// Copyright 2009-2010 (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
//------------------------------------------------------------------------
#import <UIKit/UIKit.h>
#import "ZBarImageScanner.h"
#ifdef __cplusplus
using namespace zbar;
#endif
typedef enum {
// default interface provided by UIImagePickerController - user manually
// captures an image by pressing a button
ZBarReaderControllerCameraModeDefault = 0,
// automatically scan by taking screenshots with UIGetScreenImage().
// resolution is limited by the screen, so this is inappropriate for
// longer codes
ZBarReaderControllerCameraModeSampling,
// automatically scan by rapidly taking pictures with takePicture.
// tradeoff resolution with frame rate by adjusting the crop, and size
// properties of the reader along with the density configs of the image
// scanner
ZBarReaderControllerCameraModeSequence,
} ZBarReaderControllerCameraMode;
@class ZBarReaderController, ZBarHelpController;
@protocol ZBarReaderDelegate <UIImagePickerControllerDelegate>
@optional
// called when no barcode is found in an image selected by the user.
// if retry is NO, the delegate *must* dismiss the controller
- (void) readerControllerDidFailToRead: (ZBarReaderController*) reader
withRetry: (BOOL) retry;
@end
@interface ZBarReaderController
: UIImagePickerController
< UINavigationControllerDelegate,
UIImagePickerControllerDelegate >
{
ZBarImageScanner *scanner;
ZBarHelpController *help;
UIView *overlay, *boxView;
CALayer *boxLayer;
UIToolbar *toolbar;
UIBarButtonItem *cancelBtn, *scanBtn, *space[3];
UIButton *infoBtn;
id <ZBarReaderDelegate> readerDelegate;
BOOL showsZBarControls, showsHelpOnFail, takesPicture, enableCache;
ZBarReaderControllerCameraMode cameraMode;
CGRect scanCrop;
NSInteger maxScanDimension;
BOOL hasOverlay, sampling;
uint64_t t_frame;
double dt_frame;
ZBarSymbol *symbol;
}
// access to configure image scanner
@property (readonly, nonatomic) ZBarImageScanner *scanner;
// barcode result recipient (NB don't use delegate)
@property (nonatomic, assign) id <ZBarReaderDelegate> readerDelegate;
// whether to use alternate control set
@property (nonatomic) BOOL showsZBarControls;
// whether to display helpful information when decoding fails
@property (nonatomic) BOOL showsHelpOnFail;
// how to use the camera (when sourceType == Camera)
@property (nonatomic) ZBarReaderControllerCameraMode cameraMode;
// whether to outline symbols with the green tracking box.
@property (nonatomic) BOOL tracksSymbols;
// whether to automatically take a full picture when a barcode is detected
// (when cameraMode == Sampling)
@property (nonatomic) BOOL takesPicture;
// whether to use the "cache" for realtime modes (default YES). this can be
// used to safely disable the inter-frame consistency and duplicate checks,
// speeding up recognition, iff:
// 1. the controller is dismissed when a barcode is read and
// 2. unreliable symbologies are disabled (all EAN/UPC variants and I2/5)
@property (nonatomic) BOOL enableCache;
// crop images for scanning. the original image will be cropped to this
// rectangle before scanning. the rectangle is normalized to the image size
// and aspect ratio; useful values will place the rectangle between 0 and 1
// on each axis, where the x-axis corresponds to the image major axis.
// defaults to the full image (0, 0, 1, 1).
@property (nonatomic) CGRect scanCrop;
// scale image to scan. after cropping, the image will be scaled if
// necessary, such that neither of its dimensions exceed this value.
// defaults to 640.
@property (nonatomic) NSInteger maxScanDimension;
// display the built-in help browser. for use with custom overlays if
// you don't also want to create your own help view. only send this
// message when the reader is displayed. the argument will be passed
// to the onZBarHelp() javascript function.
- (void) showHelpWithReason: (NSString*) reason;
// direct scanner interface - scan UIImage and return something enumerable
- (id <NSFastEnumeration>) scanImage: (CGImageRef) image;
@end
extern NSString* const ZBarReaderControllerResults;