[zbar-commits] push rev [306]: iPhone: add embedded reader sample
Status: Beta
Brought to you by:
spadix
|
From: <sp...@us...> - 2011-05-03 15:34:07
|
changeset: 306:6127bda302f8 user: sp...@us... date: Tue May 03 08:33:37 2011 -0700 details: http://zbar.hg.sourceforge.net:8000/hgroot/zbar/zbarzbar/rev/6127bda302f8 description: iPhone: add embedded reader sample - factor out camera simulation logic diffstat: iphone/ChangeLog | 2 + iphone/ZBarCameraSimulator.m | 114 ++ iphone/ZBarReaderViewController.m | 22 +- iphone/ZBarReaderViewImpl_Capture.m | 1 + iphone/ZBarReaderViewImpl_Simulator.m | 73 - iphone/bin/CreateDMG.sh | 2 +- iphone/examples/EmbedReader/EmbedReader.xcodeproj/project.pbxproj | 411 +++++++++ iphone/examples/EmbedReader/EmbedReader/EmbedReader-Info.plist | 38 + iphone/examples/EmbedReader/EmbedReader/EmbedReader-Prefix.pch | 11 + iphone/examples/EmbedReader/EmbedReader/EmbedReaderAppDelegate.h | 21 + iphone/examples/EmbedReader/EmbedReader/EmbedReaderAppDelegate.m | 34 + iphone/examples/EmbedReader/EmbedReader/EmbedReaderViewController.h | 22 + iphone/examples/EmbedReader/EmbedReader/EmbedReaderViewController.m | 88 + iphone/examples/EmbedReader/EmbedReader/en.lproj/EmbedReaderViewController.xib | 336 +++++++ iphone/examples/EmbedReader/EmbedReader/en.lproj/InfoPlist.strings | 2 + iphone/examples/EmbedReader/EmbedReader/en.lproj/MainWindow.xib | 444 +++++++++ iphone/examples/EmbedReader/EmbedReader/main.m | 16 + iphone/examples/EmbedReader/ZBarSDK | 1 + iphone/include/ZBarSDK/ZBarCameraSimulator.h | 45 + iphone/include/ZBarSDK/ZBarReaderViewController.h | 4 +- iphone/include/ZBarSDK/ZBarSDK.h | 1 + iphone/zbar.xcodeproj/project.pbxproj | 8 + 22 files changed, 1613 insertions(+), 83 deletions(-) diffs (truncated from 1898 to 300 lines): diff -r 97445b5d3600 -r 6127bda302f8 iphone/ChangeLog --- a/iphone/ChangeLog Mon May 02 15:48:06 2011 -0700 +++ b/iphone/ChangeLog Tue May 03 08:33:37 2011 -0700 @@ -1,4 +1,6 @@ current: + * add embedded reader sample + - factor out camera simulation logic * fix readertest max quality result filtering - thanks to John Boydon for finding this! * improve support for resizing, rotating and embedding the reader diff -r 97445b5d3600 -r 6127bda302f8 iphone/ZBarCameraSimulator.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iphone/ZBarCameraSimulator.m Tue May 03 08:33:37 2011 -0700 @@ -0,0 +1,114 @@ +//------------------------------------------------------------------------ +// Copyright 2010-2011 (c) Jeff Brown <sp...@us...> +// +// 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 <ZBarSDK/ZBarCameraSimulator.h> +#import <ZBarSDK/ZBarReaderView.h> + +// hack around missing simulator support for AVCapture interfaces + +@implementation ZBarCameraSimulator + +@synthesize readerView; + +- (id) initWithViewController: (UIViewController*) vc +{ + if(!TARGET_IPHONE_SIMULATOR) { + [self release]; + return(nil); + } + self = [super init]; + if(!self) + return(nil); + + viewController = vc; + + return(self); +} + +- (void) dealloc +{ + viewController = nil; + readerView = nil; + [picker release]; + picker = nil; + [pickerPopover release]; + pickerPopover = nil; + [super dealloc]; +} + +- (void) setReaderView: (ZBarReaderView*) view +{ + ZBarReaderView *oldView = readerView; + readerView = [view retain]; + [oldView release]; + + UILongPressGestureRecognizer *gesture = + [[UILongPressGestureRecognizer alloc] + initWithTarget: self + action: @selector(takePicture)]; + gesture.numberOfTouchesRequired = 2; + [view addGestureRecognizer: gesture]; + [gesture release]; +} + +- (void) takePicture +{ + if(!picker) { + picker = [UIImagePickerController new]; + picker.delegate = self; + } + if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { + if(!pickerPopover) + pickerPopover = [[UIPopoverController alloc] + initWithContentViewController: picker]; + [pickerPopover presentPopoverFromRect: CGRectZero + inView: readerView + permittedArrowDirections: UIPopoverArrowDirectionAny + animated: YES]; + } + else + [viewController presentModalViewController: picker + animated: YES]; +} + +- (void) imagePickerController: (UIImagePickerController*) _picker + didFinishPickingMediaWithInfo: (NSDictionary*) info +{ + UIImage *image = [info objectForKey: UIImagePickerControllerOriginalImage]; + + if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + [pickerPopover dismissPopoverAnimated: YES]; + else + [_picker dismissModalViewControllerAnimated: YES]; + + [readerView performSelector: @selector(scanImage:) + withObject: image + afterDelay: .1]; +} + +- (void) imagePickerControllerDidCancel: (UIImagePickerController*) _picker +{ + [_picker dismissModalViewControllerAnimated: YES]; +} + +@end diff -r 97445b5d3600 -r 6127bda302f8 iphone/ZBarReaderViewController.m --- a/iphone/ZBarReaderViewController.m Mon May 02 15:48:06 2011 -0700 +++ b/iphone/ZBarReaderViewController.m Tue May 03 08:33:37 2011 -0700 @@ -25,6 +25,7 @@ #import <ZBarSDK/ZBarReaderView.h> #import <ZBarSDK/ZBarCaptureReader.h> #import <ZBarSDK/ZBarHelpController.h> +#import <ZBarSDK/ZBarCameraSimulator.h> #define MODULE ZBarReaderViewController #import "debug.h" @@ -82,6 +83,9 @@ - (void) cleanup { + cameraSim.readerView = nil; + [cameraSim release]; + cameraSim = nil; readerView.readerDelegate = nil; [readerView release]; readerView = nil; @@ -164,11 +168,6 @@ [view addSubview: controls]; } -- (void) initSimulator -{ - // simulator specific hooks -} - - (void) loadView { self.view = [[UIView alloc] @@ -209,7 +208,12 @@ } [self initControls]; - [self initSimulator]; + + if(TARGET_IPHONE_SIMULATOR) { + cameraSim = [[ZBarCameraSimulator alloc] + initWithViewController: self]; + cameraSim.readerView = readerView; + } } - (void) viewDidUnload @@ -366,7 +370,11 @@ - (void) takePicture { - if(readerView) + if(TARGET_IPHONE_SIMULATOR) { + [cameraSim takePicture]; + // FIXME return selected image + } + else if(readerView) [readerView.captureReader captureFrame]; } diff -r 97445b5d3600 -r 6127bda302f8 iphone/ZBarReaderViewImpl_Capture.m --- a/iphone/ZBarReaderViewImpl_Capture.m Mon May 02 15:48:06 2011 -0700 +++ b/iphone/ZBarReaderViewImpl_Capture.m Tue May 03 08:33:37 2011 -0700 @@ -244,6 +244,7 @@ [captureReader flushCache]; } + // AVCaptureSession notifications - (void) onVideoStart: (NSNotification*) note diff -r 97445b5d3600 -r 6127bda302f8 iphone/ZBarReaderViewImpl_Simulator.m --- a/iphone/ZBarReaderViewImpl_Simulator.m Mon May 02 15:48:06 2011 -0700 +++ b/iphone/ZBarReaderViewImpl_Simulator.m Tue May 03 08:33:37 2011 -0700 @@ -29,79 +29,6 @@ // hack around missing simulator support for AVCapture interfaces -@interface ZBarReaderViewController(Simulator) -@end - -@implementation ZBarReaderViewController(Simulator) - -- (void) initSimulator -{ - UILongPressGestureRecognizer *press = - [[UILongPressGestureRecognizer alloc] - initWithTarget: self - action: @selector(didLongPress:)]; - [self.view addGestureRecognizer: press]; - press.numberOfTouchesRequired = 2; - [press release]; -} - -- (void) takePicture -{ - UIImagePickerController *picker = - [UIImagePickerController new]; - picker.delegate = (id<UINavigationControllerDelegate, - UIImagePickerControllerDelegate>)self; - if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { - simPopover = [[UIPopoverController alloc] - initWithContentViewController: picker]; - [simPopover presentPopoverFromRect: CGRectZero - inView: self.view - permittedArrowDirections: UIPopoverArrowDirectionAny - animated: YES]; - } - else - [self presentModalViewController: picker - animated: YES]; - [picker release]; -} - -- (void) didLongPress: (UIGestureRecognizer*) press -{ - if(press.state == UIGestureRecognizerStateBegan) - [self takePicture]; -} - -- (void) imagePickerController: (UIImagePickerController*) picker - didFinishPickingMediaWithInfo: (NSDictionary*) info -{ - UIImage *image = [info objectForKey: UIImagePickerControllerOriginalImage]; - - if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { - [simPopover dismissPopoverAnimated: YES]; - [simPopover release]; - simPopover = nil; - } - else - [picker dismissModalViewControllerAnimated: YES]; - - [readerView performSelector: @selector(scanImage:) - withObject: image - afterDelay: .1]; -} - -- (void) imagePickerControllerDidCancel: (UIImagePickerController*) picker -{ - [picker dismissModalViewControllerAnimated: YES]; -} - -- (void) popoverControllerDidDismissPopover: (UIPopoverController*) popover -{ - [simPopover release]; - simPopover = nil; -} - -@end - // protected APIs @interface ZBarReaderView() - (void) _initWithImageScanner: (ZBarImageScanner*) _scanner; diff -r 97445b5d3600 -r 6127bda302f8 iphone/bin/CreateDMG.sh --- a/iphone/bin/CreateDMG.sh Mon May 02 15:48:06 2011 -0700 +++ b/iphone/bin/CreateDMG.sh Tue May 03 08:33:37 2011 -0700 @@ -24,7 +24,7 @@ # prepare examples for distribution for example in $(find $TARGET_BUILD_DIR/Examples -depth 1) do - rm -rf $example/{*.xcodeproj/*.{mode1v3,pbxuser},ZBarSDK} + rm -rf $example/{build,*.xcodeproj/{*.{mode1v3,pbxuser},project.xcworkspace,xcuserdata},ZBarSDK} cp -af $BUILT_PRODUCTS_DIR/ZBarSDK $example/ done diff -r 97445b5d3600 -r 6127bda302f8 iphone/examples/EmbedReader/EmbedReader.xcodeproj/project.pbxproj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iphone/examples/EmbedReader/EmbedReader.xcodeproj/project.pbxproj Tue May 03 08:33:37 2011 -0700 @@ -0,0 +1,411 @@ +// !$*UTF8*$! +{ |