diff --git a/iphone/ZXingWidget/AddContactAction.h b/iphone/ZXingWidget/AddContactAction.h new file mode 100644 index 000000000..ac6af6f8e --- /dev/null +++ b/iphone/ZXingWidget/AddContactAction.h @@ -0,0 +1,51 @@ +// +// AddContactAction.h +// ZXing +// +// Created by Christian Brunschen on 29/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultAction.h" +#import "AddressBookUI/AddressBookUI.h" + +@interface AddContactAction : ResultAction { + NSString *name; + NSArray *phoneNumbers; + NSString *note; + NSString *email; + NSString *urlString; + NSString *address; + + UIViewController *viewController; +} + +@property (nonatomic, copy) NSString *name; +@property (nonatomic, retain) NSArray *phoneNumbers; +@property (nonatomic, copy) NSString *note; +@property (nonatomic, copy) NSString *email; +@property (nonatomic, copy) NSString *urlString; +@property (nonatomic, copy) NSString *address; + ++ (id)actionWithName:(NSString *)n + phoneNumbers:(NSArray *)nums + email:(NSString *)em + url:(NSString *)us + address:(NSString *)ad + note:(NSString *)nt; + +@end diff --git a/iphone/ZXingWidget/AddContactAction.m b/iphone/ZXingWidget/AddContactAction.m new file mode 100644 index 000000000..393091384 --- /dev/null +++ b/iphone/ZXingWidget/AddContactAction.m @@ -0,0 +1,224 @@ +// +// AddContactAction.m +// ZXing +// +// Created by Christian Brunschen on 29/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "AddContactAction.h" +#import "AddressBook/AddressBook.h" + + +@implementation AddContactAction + +@synthesize name; +@synthesize phoneNumbers; +@synthesize note; +@synthesize email; +@synthesize urlString; +@synthesize address; + ++ (id)actionWithName:(NSString *)n + phoneNumbers:(NSArray *)nums + email:(NSString *)em + url:(NSString *)us + address:(NSString *)ad + note:(NSString *)nt { + AddContactAction *aca = [[[self alloc] init] autorelease]; + aca.name = n; + aca.phoneNumbers = nums; + aca.email = em; + aca.urlString = us; + aca.address = ad; + aca.note = nt; + return aca; +} + +- (NSString *)title { + return NSLocalizedString(@"AddContactAction title", @"Add Contact"); +} + +- (void) addContactWithController:(UIViewController *)controller { + CFErrorRef *error = NULL; + NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet]; + + ABRecordRef person = ABPersonCreate(); + + NSRange commaRange = [name rangeOfString:@","]; + if (commaRange.location != NSNotFound) { + NSString *lastName = [[name substringToIndex:commaRange.location] + stringByTrimmingCharactersInSet:whitespaceSet]; + ABRecordSetValue(person, kABPersonLastNameProperty, lastName, error); + NSArray *firstNames = [[[name substringFromIndex:commaRange.location + commaRange.length] + stringByTrimmingCharactersInSet:whitespaceSet] + componentsSeparatedByCharactersInSet:whitespaceSet]; + ABRecordSetValue(person, kABPersonFirstNameProperty, [firstNames objectAtIndex:0], error); + for (int i = 1; i < [firstNames count]; i++) { + ABRecordSetValue(person, kABPersonMiddleNameProperty, [firstNames objectAtIndex:1], error); + } + } else { + NSArray *nameParts = [name componentsSeparatedByCharactersInSet:whitespaceSet]; + int nParts = nameParts.count; + if (nParts == 1) { + ABRecordSetValue(person, kABPersonFirstNameProperty, name, error); + } else if (nParts >= 2) { + int lastPart = nParts - 1; + ABRecordSetValue(person, kABPersonFirstNameProperty, [nameParts objectAtIndex:0], error); + for (int i = 1; i < lastPart; i++) { + ABRecordSetValue(person, kABPersonMiddleNameProperty, [nameParts objectAtIndex:i], error); + } + ABRecordSetValue(person, kABPersonLastNameProperty, [nameParts objectAtIndex:lastPart], error); + } + } + + if (self.note) { + ABRecordSetValue(person, kABPersonNoteProperty, self.note, error); + } + + if (self.phoneNumbers && self.phoneNumbers.count > 0) { + // multi-values: nultiple phone numbers + ABMutableMultiValueRef phoneNumberMultiValue = + ABMultiValueCreateMutable(kABStringPropertyType); + for (NSString *number in self.phoneNumbers) { + ABMultiValueAddValueAndLabel(phoneNumberMultiValue, number, + kABPersonPhoneMainLabel, NULL); + } + ABRecordSetValue(person, kABPersonPhoneProperty, + phoneNumberMultiValue, error); + CFRelease(phoneNumberMultiValue); + } + + if (self.email) { + // a single email address + ABMutableMultiValueRef emailMultiValue = + ABMultiValueCreateMutable(kABStringPropertyType); + ABMultiValueAddValueAndLabel(emailMultiValue, self.email, + kABHomeLabel, NULL); + ABRecordSetValue(person, kABPersonEmailProperty, emailMultiValue, error); + CFRelease(emailMultiValue); + } + + if (self.urlString) { + // a single url as the home page + ABMutableMultiValueRef urlMultiValue = + ABMultiValueCreateMutable(kABStringPropertyType); + ABMultiValueAddValueAndLabel(urlMultiValue, self.urlString, + kABPersonHomePageLabel, NULL); + ABRecordSetValue(person, kABPersonURLProperty, urlMultiValue, error); + CFRelease(urlMultiValue); + } + + if (self.address) { + // we can't parse all the possible address formats, alas, so we punt by putting + // the entire thing into a multi-line 'street' address. + // This won't look great on the phone, but at least the info will be there, + // and can be syned to a desktop computer, adjusted as necessary, and so on. + + // split the address into parts at each comma or return + NSArray *parts = + [self.address componentsSeparatedByCharactersInSet: + [NSCharacterSet characterSetWithCharactersInString:@",;\r\n"]]; + NSMutableArray *strippedParts = [NSMutableArray arrayWithCapacity:[parts count]]; + // for each part: + for (NSString *part in parts) { + // strip the part of whitespace + NSString *strippedPart = + [part stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + if ([strippedPart length] > 0) { + // if there is anything in this address part, add it to the list of stripped parts + [strippedParts addObject:strippedPart]; + } + } + // finally, create a 'street' address by concatenating all the stripped parts, separated by linefeeds + NSString *street = [strippedParts componentsJoinedByString:@"\n"]; + + CFMutableDictionaryRef addressDict = + CFDictionaryCreateMutable(NULL, + 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); + CFDictionarySetValue(addressDict, kABPersonAddressStreetKey, street); + + ABMutableMultiValueRef addressMultiValue = + ABMultiValueCreateMutable(kABStringPropertyType); + ABMultiValueAddValueAndLabel(addressMultiValue, + addressDict, + kABHomeLabel, + NULL); + ABRecordSetValue(person, kABPersonAddressProperty, addressMultiValue, error); + CFRelease(addressMultiValue); + CFRelease(addressDict); + } + + ABUnknownPersonViewController *unknownPersonViewController = + [[ABUnknownPersonViewController alloc] init]; + unknownPersonViewController.displayedPerson = person; + unknownPersonViewController.allowsActions = true; + unknownPersonViewController.allowsAddingToAddressBook = true; + unknownPersonViewController.unknownPersonViewDelegate = self; + CFRelease(person); + + viewController = [controller retain]; + [[viewController navigationController] pushViewController:unknownPersonViewController animated:YES]; + [unknownPersonViewController release]; +} + +- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { + if (buttonIndex != [alertView cancelButtonIndex]) { + // perform the action + [self addContactWithController:viewController]; + } +} + +#ifdef CONFIRM_ADDING_CONTACT +#undef CONFIRM_ADDING_CONTACT +#endif +- (void)performActionWithController:(UIViewController *)controller + shouldConfirm:(bool)confirm { +#ifdef CONFIRM_ADDING_CONTACT + if (confirm) { + viewController = controller; + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil + message:NSLocalizedString(@"AddContactAction alert message", @"Add Contact?") + delegate:self + cancelButtonTitle:NSLocalizedString(@"AddContactAction cancel button title", @"Cancel") + otherButtonTitles:NSLocalizedString(@"AddContactAction confirm button title", @"Add Contact"), nil]; + [alertView show]; + [alertView release]; + } else { +#endif + [self addContactWithController:controller]; +#ifdef CONFIRM_ADDING_CONTACT + } +#endif +} + +- (void)dismissUnknownPersonViewController:(ABUnknownPersonViewController *)unknownPersonViewController { + [[viewController navigationController] popToViewController:viewController animated:YES]; + [viewController release]; + viewController = nil; +} + +// ABUnknownPersonViewControllerDelegate + +- (void)unknownPersonViewController:(ABUnknownPersonViewController *)unknownPersonViewController + didResolveToPerson:(ABRecordRef)person { + if (person) { + [self performSelector:@selector(dismissUnknownPersonViewController:) withObject:unknownPersonViewController afterDelay:0.0]; + } +} +@end diff --git a/iphone/ZXingWidget/BookmarkDoCoMoResultParser.h b/iphone/ZXingWidget/BookmarkDoCoMoResultParser.h new file mode 100644 index 000000000..08582e6e5 --- /dev/null +++ b/iphone/ZXingWidget/BookmarkDoCoMoResultParser.h @@ -0,0 +1,29 @@ +// +// BookmarkDoCoMoResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "DoCoMoResultParser.h" + +@interface BookmarkDoCoMoResultParser : DoCoMoResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/BookmarkDoCoMoResultParser.m b/iphone/ZXingWidget/BookmarkDoCoMoResultParser.m new file mode 100644 index 000000000..7c5f47d4c --- /dev/null +++ b/iphone/ZXingWidget/BookmarkDoCoMoResultParser.m @@ -0,0 +1,49 @@ +// +// BookmarkDoCoMoResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BookmarkDoCoMoResultParser.h" +#import "URIParsedResult.h" + +@implementation BookmarkDoCoMoResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange foundRange = [s rangeOfString:@"MEBKM:"]; + if (foundRange.location == NSNotFound) { + return nil; + } + + NSString *urlString = [s fieldWithPrefix:@"URL:"]; + if (urlString == nil) { + return nil; + } + + NSString *title = [s fieldWithPrefix:@"TITLE:"]; + + return [[[URIParsedResult alloc] initWithURLString:urlString + title:title] autorelease]; +} + + +@end diff --git a/iphone/ZXingWidget/BusinessCardParsedResult.h b/iphone/ZXingWidget/BusinessCardParsedResult.h new file mode 100644 index 000000000..8e7482e4c --- /dev/null +++ b/iphone/ZXingWidget/BusinessCardParsedResult.h @@ -0,0 +1,41 @@ +// +// AddressBookDoCoMoParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 29/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ParsedResult.h" + +@interface BusinessCardParsedResult : ParsedResult { + NSString *name; + NSArray *phoneNumbers; + NSString *note; + NSString *email; + NSString *urlString; + NSString *address; +} + +@property (nonatomic, copy) NSString *name; +@property (nonatomic, retain) NSArray *phoneNumbers; +@property (nonatomic, copy) NSString *note; +@property (nonatomic, copy) NSString *email; +@property (nonatomic, copy) NSString *urlString; +@property (nonatomic, copy) NSString *address; + +@end diff --git a/iphone/ZXingWidget/BusinessCardParsedResult.m b/iphone/ZXingWidget/BusinessCardParsedResult.m new file mode 100644 index 000000000..ce018df0e --- /dev/null +++ b/iphone/ZXingWidget/BusinessCardParsedResult.m @@ -0,0 +1,84 @@ +// +// AddressBookDoCoMoParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 29/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "BusinessCardParsedResult.h" +#import "AddContactAction.h" + +@implementation BusinessCardParsedResult + +@synthesize name; +@synthesize phoneNumbers; +@synthesize note; +@synthesize email; +@synthesize urlString; +@synthesize address; + +- (NSString *)stringForDisplay { + NSMutableString *result = [NSMutableString stringWithString:self.name]; + if (self.phoneNumbers) { + for (NSString *number in self.phoneNumbers) { + [result appendFormat:@"\n%@", number]; + } + } + + if (self.email) { + [result appendFormat:@"\n%@", self.email]; + } + if (self.urlString) { + [result appendFormat:@"\n%@", self.urlString]; + } + if (self.note) { + [result appendFormat:@"\n%@", self.note]; + } + if (self.address) { + [result appendFormat:@"\n%@", self.address]; + } + return [NSString stringWithString:result]; +} + +- (void)populateActions { + [actions addObject:[AddContactAction actionWithName:self.name + phoneNumbers:self.phoneNumbers + email:self.email + url:self.urlString + address:self.address + note:self.note]]; +} + +- (void) dealloc { + [name release]; + [phoneNumbers release]; + [email release]; + [urlString release]; + [address release]; + [note release]; + [super dealloc]; +} + ++ (NSString *)typeName { + return NSLocalizedString(@"Contact Result Type Name", @"Contact"); +} + +- (UIImage *)icon { + return [UIImage imageNamed:@"business-card.png"]; +} + +@end diff --git a/iphone/ZXingWidget/CallAction.h b/iphone/ZXingWidget/CallAction.h new file mode 100644 index 000000000..becd8683b --- /dev/null +++ b/iphone/ZXingWidget/CallAction.h @@ -0,0 +1,36 @@ +// +// CallAction.h +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "OpenUrlAction.h" + +@interface CallAction : OpenUrlAction { + NSString *number; +} + +@property (nonatomic, copy) NSString *number; + ++ (NSURL *)urlForNumber:(NSString *)number; + +- (id)initWithNumber:(NSString *)number; ++ (id)actionWithNumber:(NSString *)number; + +@end diff --git a/iphone/ZXingWidget/CallAction.m b/iphone/ZXingWidget/CallAction.m new file mode 100644 index 000000000..e6acc789e --- /dev/null +++ b/iphone/ZXingWidget/CallAction.m @@ -0,0 +1,67 @@ +// +// CallAction.m +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "CallAction.h" + + +@implementation CallAction + +@synthesize number; + ++ (NSURL *)urlForNumber:(NSString *)number { + NSString *urlString = [NSString stringWithFormat:@"tel:%@", number]; + return [NSURL URLWithString:urlString]; +} + +- (id)initWithNumber:(NSString *)n { + if ((self = [super initWithURL:[[self class] urlForNumber:n]]) != nil) { + self.number = n; + } + return self; +} + ++ (id)actionWithNumber:(NSString *)number { + return [[[self alloc] initWithNumber:number] autorelease]; +} + +- (NSString *)title { + return [NSString localizedStringWithFormat:NSLocalizedString(@"CallAction action title", @"Call %@"), self.number]; +} + +- (NSString *)alertTitle { + return NSLocalizedString(@"CallAction alert title", @"Call"); +} + +- (NSString *)alertMessage { + return [NSString localizedStringWithFormat:NSLocalizedString(@"CallAction alert message", @"Call %@?"), self.number]; +} + +- (NSString *)alertButtonTitle { + return NSLocalizedString(@"CallAction alert button title", @"Call"); +} + + +- (void) dealloc { + [number release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/Decoder.h b/iphone/ZXingWidget/Decoder.h new file mode 100644 index 000000000..4b28141f8 --- /dev/null +++ b/iphone/ZXingWidget/Decoder.h @@ -0,0 +1,49 @@ +// +// Decoder.h +// ZXing +// +// Created by Christian Brunschen on 31/03/2008. +// +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "DecoderDelegate.h" + +@interface Decoder : NSObject { + UIImage *image; + CGRect cropRect; + UIImage *subsetImage; + unsigned char *subsetData; + size_t subsetWidth; + size_t subsetHeight; + size_t subsetBytesPerRow; + id delegate; +} + +@property(nonatomic, retain) UIImage *image; +@property(nonatomic, assign) CGRect cropRect; +@property(nonatomic, retain) UIImage *subsetImage; +@property(nonatomic, assign) unsigned char *subsetData; +@property(assign) size_t subsetWidth; +@property(assign) size_t subsetHeight; +@property(assign) size_t subsetBytesPerRow; +@property(nonatomic, assign) id delegate; + +- (void) decodeImage:(UIImage *)image; +- (void) decodeImage:(UIImage *)image cropRect:(CGRect)cropRect; + +@end diff --git a/iphone/ZXingWidget/Decoder.mm b/iphone/ZXingWidget/Decoder.mm new file mode 100644 index 000000000..e70a685ae --- /dev/null +++ b/iphone/ZXingWidget/Decoder.mm @@ -0,0 +1,267 @@ +// +// Decoder.m +// ZXing +// +// Created by Christian Brunschen on 31/03/2008. +// +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "Decoder.h" +#import "TwoDDecoderResult.h" +#import "FormatReader.h" + +#include +#include +#include +#include +#include "GrayBytesMonochromeBitmapSource.h" + +using namespace zxing; + +@implementation Decoder + +@synthesize image; +@synthesize cropRect; +@synthesize subsetImage; +@synthesize subsetData; +@synthesize subsetWidth; +@synthesize subsetHeight; +@synthesize subsetBytesPerRow; +@synthesize delegate; + +- (void)willDecodeImage { + if ([self.delegate respondsToSelector:@selector(decoder:willDecodeImage:usingSubset:)]) { + [self.delegate decoder:self willDecodeImage:self.image usingSubset:self.subsetImage]; + } +} + +- (void)progressDecodingImage:(NSString *)progress { + if ([self.delegate respondsToSelector:@selector(decoder:decodingImage:usingSubset:progress:)]) { + [self.delegate decoder:self decodingImage:self.image usingSubset:self.subsetImage progress:progress]; + } +} + +- (void)didDecodeImage:(TwoDDecoderResult *)result { + if ([self.delegate respondsToSelector:@selector(decoder:didDecodeImage:usingSubset:withResult:)]) { + [self.delegate decoder:self didDecodeImage:self.image usingSubset:self.subsetImage withResult:result]; + } +} + +- (void)failedToDecodeImage:(NSString *)reason { + if ([self.delegate respondsToSelector:@selector(decoder:failedToDecodeImage:usingSubset:reason:)]) { + [self.delegate decoder:self failedToDecodeImage:self.image usingSubset:self.subsetImage reason:reason]; + } +} + +#define SUBSET_SIZE 320.0 +- (void) prepareSubset { + CGSize size = [image size]; +#ifdef DEBUG + NSLog(@"decoding: image is (%.1f x %.1f), cropRect is (%.1f,%.1f)x(%.1f,%.1f)", size.width, size.height, + cropRect.origin.x, cropRect.origin.y, cropRect.size.width, cropRect.size.height); +#endif + float scale = fminf(1.0f, fmaxf(SUBSET_SIZE / cropRect.size.width, SUBSET_SIZE / cropRect.size.height)); + CGPoint offset = CGPointMake(-cropRect.origin.x, -cropRect.origin.y); +#ifdef DEBUG + NSLog(@" offset = (%.1f, %.1f), scale = %.3f", offset.x, offset.y, scale); +#endif + + subsetWidth = cropRect.size.width * scale; + subsetHeight = cropRect.size.height * scale; + + subsetBytesPerRow = ((subsetWidth + 0xf) >> 4) << 4; +#ifdef DEBUG + NSLog(@"decoding: image to decode is (%d x %d) (%d bytes/row)", subsetWidth, subsetHeight, subsetBytesPerRow); +#endif + + subsetData = (unsigned char *)malloc(subsetBytesPerRow * subsetHeight); +#ifdef DEBUG + NSLog(@"allocated %d bytes of memory", subsetBytesPerRow * subsetHeight); +#endif + + CGColorSpaceRef grayColorSpace = CGColorSpaceCreateDeviceGray(); + + CGContextRef ctx = + CGBitmapContextCreate(subsetData, subsetWidth, subsetHeight, + 8, subsetBytesPerRow, grayColorSpace, + kCGImageAlphaNone); + CGColorSpaceRelease(grayColorSpace); + CGContextSetInterpolationQuality(ctx, kCGInterpolationNone); + CGContextSetAllowsAntialiasing(ctx, false); + // adjust the coordinate system + CGContextTranslateCTM(ctx, 0.0, subsetHeight); + CGContextScaleCTM(ctx, 1.0, -1.0); + +#ifdef DEBUG + NSLog(@"created %dx%d bitmap context", subsetWidth, subsetHeight); +#endif + + UIGraphicsPushContext(ctx); + CGRect rect = CGRectMake(offset.x * scale, offset.y * scale, scale * size.width, scale * size.height); +#ifdef DEBUG + NSLog(@"rect for image = (%.1f,%.1f)x(%.1f,%.1f)", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); +#endif + [image drawInRect:rect]; + UIGraphicsPopContext(); + +#ifdef DEBUG + NSLog(@"drew image into %d(%d)x%d bitmap context", subsetWidth, subsetBytesPerRow, subsetHeight); +#endif + CGContextFlush(ctx); +#ifdef DEBUG + NSLog(@"flushed context"); +#endif + + CGImageRef subsetImageRef = CGBitmapContextCreateImage(ctx); +#ifdef DEBUG + NSLog(@"created CGImage from context"); +#endif + + self.subsetImage = [UIImage imageWithCGImage:subsetImageRef]; + // for debug purposes. + UIImageWriteToSavedPhotosAlbum(self.subsetImage, nil, nil, nil); + + CGImageRelease(subsetImageRef); + + CGContextRelease(ctx); +#ifdef DEBUG + NSLog(@"released context"); +#endif +} + +- (void)decode:(id)arg { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + { + + NSSet *formatReaders = [FormatReader formatReaders]; + + Ref source (new GrayBytesMonochromeBitmapSource(subsetData, subsetWidth, subsetHeight, subsetBytesPerRow)); + + Ref binarizer (new GlobalHistogramBinarizer(source)); + Ref grayImage (new BinaryBitmap(binarizer)); +#ifdef DEBUG + NSLog(@"created GrayBytesMonochromeBitmapSource", subsetWidth, subsetHeight); + NSLog(@"grayImage count = %d", grayImage->count()); +#endif + + TwoDDecoderResult *decoderResult = nil; + +#ifdef TRY_ROTATIONS + for (int i = 0; !decoderResult && i < 4; i++) {` +#endif + for (FormatReader *reader in formatReaders) { + try { + #ifdef DEBUG + NSLog(@"decoding gray image"); + #endif + Ref result([reader decode:grayImage]); + #ifdef DEBUG + NSLog(@"gray image decoded"); + #endif + + Ref resultText(result->getText()); + const char *cString = resultText->getText().c_str(); + const std::vector > &resultPoints = result->getResultPoints(); + NSMutableArray *points = + [NSMutableArray arrayWithCapacity:resultPoints.size()]; + + for (size_t i = 0; i < resultPoints.size(); i++) { + const Ref &rp = resultPoints[i]; + CGPoint p = CGPointMake(rp->getX(), rp->getY()); + [points addObject:[NSValue valueWithCGPoint:p]]; + } + + NSString *resultString = [NSString stringWithCString:cString + encoding:NSUTF8StringEncoding]; + + decoderResult = [TwoDDecoderResult resultWithText:resultString + points:points]; + } catch (ReaderException &rex) { + NSLog(@"failed to decode, caught ReaderException '%s'", + rex.what()); + } catch (IllegalArgumentException &iex) { + NSLog(@"failed to decode, caught IllegalArgumentException '%s'", + iex.what()); + } catch (...) { + NSLog(@"Caught unknown exception!"); + } + } + +#ifdef TRY_ROTATIONS + if (!decoderResult) { +#ifdef DEBUG + NSLog(@"rotating gray image"); +#endif + grayImage = grayImage->rotateCounterClockwise(); +#ifdef DEBUG + NSLog(@"gray image rotated"); +#endif + } + } +#endif + + if (decoderResult) { + [self performSelectorOnMainThread:@selector(didDecodeImage:) + withObject:decoderResult + waitUntilDone:NO]; + } else { + [self performSelectorOnMainThread:@selector(failedToDecodeImage:) + withObject:NSLocalizedString(@"Decoder BarcodeDetectionFailure", @"No barcode detected.") + waitUntilDone:NO]; + } + + free(subsetData); + self.subsetData = NULL; + } + [pool drain]; +#ifdef DEBUG + NSLog(@"finished decoding."); +#endif + + // if this is not the main thread, then we end it + if (![NSThread isMainThread]) { + [NSThread exit]; + } +} + +- (void) decodeImage:(UIImage *)i { + [self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)]; +} + +- (void) decodeImage:(UIImage *)i cropRect:(CGRect)cr { + self.image = i; + self.cropRect = cr; + + [self prepareSubset]; + [self willDecodeImage]; + [self performSelectorOnMainThread:@selector(progressDecodingImage:) + withObject:NSLocalizedString(@"Decoder MessageWhileDecoding", @"Decoding ...") + waitUntilDone:NO]; + + [NSThread detachNewThreadSelector:@selector(decode:) + toTarget:self + withObject:nil]; +} + +- (void) dealloc { + [image release]; + [subsetImage release]; + if (subsetData) free(subsetData); + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/DecoderDelegate.h b/iphone/ZXingWidget/DecoderDelegate.h new file mode 100644 index 000000000..5a78203dc --- /dev/null +++ b/iphone/ZXingWidget/DecoderDelegate.h @@ -0,0 +1,34 @@ +// +// DecoderDelegate.h +// ZXing +// +// Created by Christian Brunschen on 01/04/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class Decoder; +@class TwoDDecoderResult; + +@protocol DecoderDelegate +@optional +- (void)decoder:(Decoder *)decoder willDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset; +- (void)decoder:(Decoder *)decoder decodingImage:(UIImage *)image usingSubset:(UIImage *)subset progress:(NSString *)message; +- (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)result; +- (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason; + +@end diff --git a/iphone/ZXingWidget/DoCoMoResultParser.h b/iphone/ZXingWidget/DoCoMoResultParser.h new file mode 100644 index 000000000..0b5287014 --- /dev/null +++ b/iphone/ZXingWidget/DoCoMoResultParser.h @@ -0,0 +1,38 @@ +// +// DoCoMoResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + +@interface NSString (DoCoMoFieldParsing) +- (NSString *)backslashUnescaped; +- (NSArray *)fieldsWithPrefix:(NSString *)prefix; +- (NSArray *)fieldsWithPrefix:(NSString *)prefix terminator:(NSString *)term; +- (NSString *)fieldWithPrefix:(NSString *)prefix; +- (NSString *)fieldWithPrefix:(NSString *)prefix terminator:(NSString *)term; +@end + + +@interface DoCoMoResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/DoCoMoResultParser.m b/iphone/ZXingWidget/DoCoMoResultParser.m new file mode 100644 index 000000000..d29e095e4 --- /dev/null +++ b/iphone/ZXingWidget/DoCoMoResultParser.m @@ -0,0 +1,114 @@ +// +// DoCoMoResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "DoCoMoResultParser.h" + + +@implementation NSString (DoCoMoFieldParsing) + +- (NSString *)backslashUnescaped { + NSRange backslashRange = [self rangeOfString:@"\\"]; + if (backslashRange.location == NSNotFound) { + return self; + } + + int max = [self length]; + int startLocation = 0; + NSMutableString *result = [NSMutableString stringWithCapacity:[self length]]; + while (backslashRange.location != NSNotFound) { + [result appendString:[self substringWithRange:NSMakeRange(startLocation, + backslashRange.location - startLocation)]]; + [result appendFormat:@"%c", [self characterAtIndex:backslashRange.location + 1]]; + startLocation = backslashRange.location + 2; + NSRange searchRange = NSMakeRange(startLocation, max - startLocation); + backslashRange = [self rangeOfString:@"\\" options:0 range:searchRange]; + } + if (startLocation < max) { + [result appendString:[self substringWithRange:NSMakeRange(startLocation, max - startLocation)]]; + } + return [NSString stringWithString:result]; +} + +- (NSArray *)fieldsWithPrefix:(NSString *)prefix { + return [self fieldsWithPrefix:prefix terminator:@";"]; +} + +- (NSArray *)fieldsWithPrefix:(NSString *)prefix terminator:(NSString *)term { + NSMutableArray *result = nil; + + int i = 0; + int max = [self length]; + NSRange searchRange; + NSRange foundRange; + while (i < max) { + searchRange = NSMakeRange(i, max - i); + foundRange = [self rangeOfString:prefix options:0 range:searchRange]; + if(foundRange.location == NSNotFound) { + break; + } + + int start = i = foundRange.location + foundRange.length; + bool done = false; + while (!done) { + searchRange = NSMakeRange(i, max - i); + NSRange termRange = [self rangeOfString:term options:0 range:searchRange]; + if (termRange.location == NSNotFound) { + i = max; + done = true; + } else if ([self characterAtIndex:termRange.location-1] == (unichar)'\\') { + i++; + } else { + NSString *substring = [self substringWithRange:NSMakeRange(start, termRange.location - start)]; + NSString *unescaped = [substring backslashUnescaped]; + if (result == nil) { + result = [NSMutableArray arrayWithObject:unescaped]; + } else { + [result addObject:unescaped]; + } + i = termRange.location + termRange.length; + done = true; + } + } + } + + return result; +} + +- (NSString *)fieldWithPrefix:(NSString *)prefix { + return [self fieldWithPrefix:prefix terminator:@";"]; +} + +- (NSString *)fieldWithPrefix:(NSString *)prefix terminator:(NSString *)term { + NSArray *fields = [self fieldsWithPrefix:prefix terminator:term]; + if (fields.count == 0) { + return nil; + } else { + return [fields lastObject]; + } +} + +@end + + + +@implementation DoCoMoResultParser + +@end diff --git a/iphone/ZXingWidget/EmailAction.h b/iphone/ZXingWidget/EmailAction.h new file mode 100644 index 000000000..78e48e81e --- /dev/null +++ b/iphone/ZXingWidget/EmailAction.h @@ -0,0 +1,34 @@ +// +// EmailAction.h +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#include "OpenUrlAction.h" + +@interface EmailAction : OpenUrlAction { + NSString *recipient; +} + +@property (nonatomic, copy) NSString *recipient; + +- (id)initWithRecipient:(NSString *)recipient subject:(NSString *)subject body:(NSString *)body; ++ (id)actionWithRecipient:(NSString *)recipient subject:(NSString *)subject body:(NSString *)body; + +@end diff --git a/iphone/ZXingWidget/EmailAction.m b/iphone/ZXingWidget/EmailAction.m new file mode 100644 index 000000000..2f4fb01c4 --- /dev/null +++ b/iphone/ZXingWidget/EmailAction.m @@ -0,0 +1,68 @@ +// +// EmailAction.m +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "EmailAction.h" + +@implementation EmailAction + +@synthesize recipient; + +static NSURL *MailtoURL(NSString *to, NSString *sub, NSString *body) { + NSMutableString *result = [NSMutableString stringWithFormat:@"mailto:%@", + [to stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + if (sub) { + [result appendFormat:@"&subject=%@", [sub stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + } + if (body) { + [result appendFormat:@"&body=%@", [body stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + } + return [NSURL URLWithString:result]; +} + +- (id)initWithRecipient:(NSString *)rec subject:(NSString *)subject body:(NSString *)body { + if ((self = [super initWithURL:MailtoURL(rec, subject, body)]) != nil) { + self.recipient = rec; + } + return self; +} + ++ (id)actionWithRecipient:(NSString *)recipient subject:(NSString *)subject body:(NSString *)body { + return [[[self alloc] initWithRecipient:recipient subject:subject body:body] autorelease]; +} + +- (NSString *)title { + return [NSString localizedStringWithFormat:NSLocalizedString(@"EmailAction action title", @"Email %@"), self.recipient]; +} + +- (NSString *)alertTitle { + return NSLocalizedString(@"EmailAction alert title", @"Compose Email"); +} + +- (NSString *)alertMessage { + return [NSString localizedStringWithFormat:NSLocalizedString(@"EmailAction alert message", @"Compose Email to %@?"), self.recipient]; +} + +- (NSString *)alertButtonTitle { + return NSLocalizedString(@"EmailAction alert button title", @"Compose"); +} + + +@end diff --git a/iphone/ZXingWidget/EmailDoCoMoResultParser.h b/iphone/ZXingWidget/EmailDoCoMoResultParser.h new file mode 100644 index 000000000..5d1b8304c --- /dev/null +++ b/iphone/ZXingWidget/EmailDoCoMoResultParser.h @@ -0,0 +1,29 @@ +// +// EmailDoCoMoResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "DoCoMoResultParser.h" + +@interface EmailDoCoMoResultParser : DoCoMoResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/EmailDoCoMoResultParser.m b/iphone/ZXingWidget/EmailDoCoMoResultParser.m new file mode 100644 index 000000000..c62a473e9 --- /dev/null +++ b/iphone/ZXingWidget/EmailDoCoMoResultParser.m @@ -0,0 +1,50 @@ +// +// EmailDoCoMoResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "EmailDoCoMoResultParser.h" +#import "EmailParsedResult.h" + +@implementation EmailDoCoMoResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange foundRange = [s rangeOfString:@"MATMSG:"]; + if (foundRange.location == NSNotFound) { + return nil; + } + + NSString *to = [s fieldWithPrefix:@"TO:"]; + if (to == nil) { + return nil; + } + + EmailParsedResult *result = [[EmailParsedResult alloc] init]; + result.to = to; + result.subject = [s fieldWithPrefix:@"SUB:"]; + result.body = [s fieldWithPrefix:@"BODY:"]; + + return [result autorelease]; +} + +@end diff --git a/iphone/ZXingWidget/EmailParsedResult.h b/iphone/ZXingWidget/EmailParsedResult.h new file mode 100644 index 000000000..8378f529a --- /dev/null +++ b/iphone/ZXingWidget/EmailParsedResult.h @@ -0,0 +1,37 @@ +// +// EmailDoCoMoParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ParsedResult.h" + +@interface EmailParsedResult : ParsedResult { + NSString *to; + NSString *subject; + NSString *body; +} + +@property (nonatomic, copy) NSString *to; +@property (nonatomic, copy) NSString *subject; +@property (nonatomic, copy) NSString *body; + ++ (bool) looksLikeAnEmailAddress:(NSString *)s; + +@end diff --git a/iphone/ZXingWidget/EmailParsedResult.m b/iphone/ZXingWidget/EmailParsedResult.m new file mode 100644 index 000000000..d333cbac7 --- /dev/null +++ b/iphone/ZXingWidget/EmailParsedResult.m @@ -0,0 +1,74 @@ +// +// EmailDoCoMoParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "EmailParsedResult.h" +#import "EmailAction.h" + + +@implementation EmailParsedResult + +@synthesize to; +@synthesize subject; +@synthesize body; + ++ (bool) looksLikeAnEmailAddress:(NSString *)s { + if ([s rangeOfString:@"@"].location == NSNotFound) { + return false; + } + if ([s rangeOfString:@"."].location == NSNotFound) { + return false; + } + if ([s rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]].location != NSNotFound) { + return false; + } + return true; +} + + +- (NSString *)stringForDisplay { + NSMutableArray *parts = [[NSMutableArray alloc] initWithCapacity:10]; + [parts addObject:[NSString stringWithFormat:NSLocalizedString(@"EmailParsedResult Display: Recipient", @"To: %@"), self.to]]; + if (self.subject) { + [parts addObject:[NSString stringWithFormat:NSLocalizedString(@"EmailParsedResult Display: Subject", @"Subject: %@"), self.subject]]; + } + if (self.body) { + [parts addObject:@""]; + [parts addObject:[NSString stringWithFormat:NSLocalizedString(@"EmailParsedResult Display: Body", @"%@"), self.body]]; + } + return [parts componentsJoinedByString:@"\n"]; +} + ++ (NSString *)typeName { + return NSLocalizedString(@"EmailParsedResult type name", @"Email"); +} + +- (NSArray *)actions { + return [NSArray arrayWithObject:[EmailAction actionWithRecipient:self.to + subject:self.subject + body:self.body]]; +} + +- (UIImage *)icon { + return [UIImage imageNamed:@"email.png"]; +} + + +@end diff --git a/iphone/ZXingWidget/FormatReader.h b/iphone/ZXingWidget/FormatReader.h new file mode 100644 index 000000000..350a7a64f --- /dev/null +++ b/iphone/ZXingWidget/FormatReader.h @@ -0,0 +1,37 @@ +// +// FormatReader.h +// +// Created by Dave MacLachlan on 2010-05-03. +/* + * Copyright 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import +#import +#import +#import + +@interface FormatReader : NSObject { + zxing::Reader *reader_; +} + ++ (void)registerFormatReader:(FormatReader *)formatReader; ++ (NSSet *)formatReaders; + +- (id)initWithReader:(zxing::Reader *)reader; +- (zxing::Ref)decode:(zxing::Ref)grayImage; + +@end diff --git a/iphone/ZXingWidget/FormatReader.mm b/iphone/ZXingWidget/FormatReader.mm new file mode 100644 index 000000000..a1294d824 --- /dev/null +++ b/iphone/ZXingWidget/FormatReader.mm @@ -0,0 +1,64 @@ +// +// FormatReader.mm +// +// Created by Dave MacLachlan on 2010-05-03. +/* + * Copyright 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FormatReader.h" + +@implementation FormatReader + +static NSMutableSet *sFormatReaders = nil; + ++ (void)registerFormatReader:(FormatReader*)formatReader { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + @synchronized(self) { + if (!sFormatReaders) { + sFormatReaders = [[NSMutableSet alloc] init]; + } + [sFormatReaders addObject:formatReader]; + } + [pool drain]; +} + ++ (NSSet *)formatReaders { + NSSet *formatReaders = nil; + @synchronized(self) { + + formatReaders = [[sFormatReaders copy] autorelease]; + NSLog(@"readers : %d",[formatReaders count]); + } + return formatReaders; +} + +- (id)initWithReader:(zxing::Reader *)reader { + if ((self = [super init])) { + reader_ = reader; + } + return self; +} + +- (void)dealloc { + delete reader_; + [super dealloc]; +} + +- (zxing::Ref)decode:(zxing::Ref)grayImage { + return reader_->decode(grayImage); +} + +@end diff --git a/iphone/ZXingWidget/GeoParsedResult.h b/iphone/ZXingWidget/GeoParsedResult.h new file mode 100644 index 000000000..4feb8802d --- /dev/null +++ b/iphone/ZXingWidget/GeoParsedResult.h @@ -0,0 +1,34 @@ +// +// GeoParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 05/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ParsedResult.h" + +@interface GeoParsedResult : ParsedResult { + NSString *location; +} + +@property (nonatomic, copy) NSString *location; + +- (id)initWithLocation:(NSString *)location; + + +@end diff --git a/iphone/ZXingWidget/GeoParsedResult.m b/iphone/ZXingWidget/GeoParsedResult.m new file mode 100644 index 000000000..44ecfc8cc --- /dev/null +++ b/iphone/ZXingWidget/GeoParsedResult.m @@ -0,0 +1,59 @@ +// +// GeoParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 05/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "GeoParsedResult.h" +#import "ShowMapAction.h" + +@implementation GeoParsedResult + +@synthesize location; + +- (id)initWithLocation:(NSString *)l { + if ((self = [super init]) != nil) { + self.location = l; + } + return self; +} + + ++ (NSString *)typeName { + return NSLocalizedString(@"GeoParsedResult type name", @"Geolocation"); +} + +- (UIImage *)icon { + return [UIImage imageNamed:@"map-pin.png"]; +} + + +- (NSString *)stringForDisplay { + return [NSString stringWithFormat:NSLocalizedString(@"GeoParsedResult display", @"Geo: %@"), self.location]; +} + +- (void)populateActions { + [actions addObject:[ShowMapAction actionWithLocation:self.location]]; +} + +- (void) dealloc { + [location release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/GeoResultParser.h b/iphone/ZXingWidget/GeoResultParser.h new file mode 100644 index 000000000..f91b3d412 --- /dev/null +++ b/iphone/ZXingWidget/GeoResultParser.h @@ -0,0 +1,29 @@ +// +// GeoResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + +@interface GeoResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/GeoResultParser.m b/iphone/ZXingWidget/GeoResultParser.m new file mode 100644 index 000000000..790983a00 --- /dev/null +++ b/iphone/ZXingWidget/GeoResultParser.m @@ -0,0 +1,43 @@ +// +// GeoResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "GeoResultParser.h" +#import "GeoParsedResult.h" + +#define PREFIX @"geo:" + +@implementation GeoResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange prefixRange = [s rangeOfString:PREFIX options:NSCaseInsensitiveSearch]; + if (prefixRange.location == 0) { + int restStart = prefixRange.location + prefixRange.length; + return [[[GeoParsedResult alloc] initWithLocation:[s substringFromIndex:restStart]] + autorelease]; + } + return nil; +} + +@end diff --git a/iphone/ZXingWidget/GrayBytesMonochromeBitmapSource.cpp b/iphone/ZXingWidget/GrayBytesMonochromeBitmapSource.cpp new file mode 100644 index 000000000..317919ad4 --- /dev/null +++ b/iphone/ZXingWidget/GrayBytesMonochromeBitmapSource.cpp @@ -0,0 +1,50 @@ +// +// GrayBytesMonochromeBitmapSource.cpp +// ZXing +// +// Created by Thomas Recloux, Norsys on 04/12/2009. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "GrayBytesMonochromeBitmapSource.h" +#include + + +GrayBytesMonochromeBitmapSource::GrayBytesMonochromeBitmapSource(const unsigned char *bytes, + int width, + int height, + int bytesPerRow) : + width_(width), + height_(height), + bytes_(bytes), + bytesPerRow_(bytesPerRow) { } + + +int GrayBytesMonochromeBitmapSource::getWidth() const{ + return width_; +} + +int GrayBytesMonochromeBitmapSource::getHeight() const { + return height_; +} + +unsigned char GrayBytesMonochromeBitmapSource::getPixel(int x, int y) const { +/* if (x >= width_ || y >= height_) { + throw new ReaderException("bitmap coordinate out of bounds"); + }*/ + int index = y * bytesPerRow_ + x; + return bytes_[index]; +} diff --git a/iphone/ZXingWidget/GrayBytesMonochromeBitmapSource.h b/iphone/ZXingWidget/GrayBytesMonochromeBitmapSource.h new file mode 100644 index 000000000..462118c22 --- /dev/null +++ b/iphone/ZXingWidget/GrayBytesMonochromeBitmapSource.h @@ -0,0 +1,51 @@ +// +// GrayBytesMonochromeBitmapSource.h +// ZXing +// +// Created by Thomas Recloux, Norsys on 04/12/2009. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __GRAY_BYTES_MONOCHROM_BITMAP_SOURCE_H__ +#define __GRAY_BYTES_MONOCHROM_BITMAP_SOURCE_H__ + +#include + +class GrayBytesMonochromeBitmapSource : public zxing::LuminanceSource { +private: + int width_; + int height_; + const unsigned char *bytes_; + int bytesPerRow_; + +public: + GrayBytesMonochromeBitmapSource(const unsigned char *bytes, + int width, + int height, + int bytesPerRow); + virtual ~GrayBytesMonochromeBitmapSource() { } + + virtual unsigned char getPixel(int x, int y) const; + + virtual int getWidth() const; + virtual int getHeight() const; + +private: + GrayBytesMonochromeBitmapSource(const GrayBytesMonochromeBitmapSource&); + GrayBytesMonochromeBitmapSource& operator=(const GrayBytesMonochromeBitmapSource&); +}; + +#endif // __GRAY_BYTES_MONOCHROM_BITMAP_SOURCE_H__ diff --git a/iphone/ZXingWidget/MeCardParser.h b/iphone/ZXingWidget/MeCardParser.h new file mode 100644 index 000000000..288159ea0 --- /dev/null +++ b/iphone/ZXingWidget/MeCardParser.h @@ -0,0 +1,29 @@ +// +// MeCardParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "DoCoMoResultParser.h" + +@interface MeCardParser : DoCoMoResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/MeCardParser.m b/iphone/ZXingWidget/MeCardParser.m new file mode 100644 index 000000000..77d4e6df2 --- /dev/null +++ b/iphone/ZXingWidget/MeCardParser.m @@ -0,0 +1,54 @@ +// +// MeCardParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "MeCardParser.h" +#import "BusinessCardParsedResult.h" + +@implementation MeCardParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange foundRange = [s rangeOfString:@"MECARD:"]; + if (foundRange.location == NSNotFound) { + return nil; + } + + NSString *name = [s fieldWithPrefix:@"N:"]; + if (name == nil) { + return nil; + } + + BusinessCardParsedResult *result = [[BusinessCardParsedResult alloc] init]; + result.name = name; + result.phoneNumbers = [s fieldsWithPrefix:@"TEL:"]; + result.email = [s fieldWithPrefix:@"EMAIL:"]; + result.note = [s fieldWithPrefix:@"NOTE:"]; + result.urlString = [s fieldWithPrefix:@"URL:"]; + result.address = [s fieldWithPrefix:@"ADR:"]; + + return [result autorelease]; +} + + +@end diff --git a/iphone/ZXingWidget/MultiFormatReader.mm b/iphone/ZXingWidget/MultiFormatReader.mm new file mode 100644 index 000000000..7f38ab270 --- /dev/null +++ b/iphone/ZXingWidget/MultiFormatReader.mm @@ -0,0 +1,42 @@ +// +// MultiFormatReader.mm +// +// Created by Dave MacLachlan on 2010-05-03. +/* + * Copyright 2010 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FormatReader.h" +#import + +@interface MultiFormatReader : FormatReader +@end + +@implementation MultiFormatReader + ++ (void)load { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSLog(@"MultiFormatReader: load called"); + [FormatReader registerFormatReader:[[[self alloc] init] autorelease]]; + [pool drain]; +} + +- (id)init { + zxing::MultiFormatReader *reader = new zxing::MultiFormatReader(); + NSLog(@"MultiFormatReader: init called"); + return [super initWithReader:reader]; +} + +@end diff --git a/iphone/ZXingWidget/NSString+HTML.h b/iphone/ZXingWidget/NSString+HTML.h new file mode 100644 index 000000000..52b6d6aff --- /dev/null +++ b/iphone/ZXingWidget/NSString+HTML.h @@ -0,0 +1,32 @@ +// +// NSString+HTML.h +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + + +@interface NSString (HTMLExtensions) + ++ (NSDictionary *)htmlEscapes; ++ (NSDictionary *)htmlUnescapes; +- (NSString *)htmlEscapedString; +- (NSString *)htmlUnescapedString; + +@end diff --git a/iphone/ZXingWidget/NSString+HTML.m b/iphone/ZXingWidget/NSString+HTML.m new file mode 100644 index 000000000..98c45d43f --- /dev/null +++ b/iphone/ZXingWidget/NSString+HTML.m @@ -0,0 +1,70 @@ +// +// NSString+HTML.m +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "NSString+HTML.h" + + +@implementation NSString (HTMLExtensions) + +static NSDictionary *htmlEscapes = nil; +static NSDictionary *htmlUnescapes = nil; + ++ (NSDictionary *)htmlEscapes { + if (!htmlEscapes) { + htmlEscapes = [[NSDictionary alloc] initWithObjectsAndKeys: + @"&", @"&", + @"<", @"<", + @">", @">", + nil + ]; + } + return htmlEscapes; +} + ++ (NSDictionary *)htmlUnescapes { + if (!htmlUnescapes) { + htmlUnescapes = [[NSDictionary alloc] initWithObjectsAndKeys: + @"&", @"&", + @"<", @"<", + @">", @">", + nil + ]; + } + return htmlEscapes; +} + +static NSString *replaceAll(NSString *s, NSDictionary *replacements) { + for (NSString *key in replacements) { + NSString *replacement = [replacements objectForKey:key]; + s = [s stringByReplacingOccurrencesOfString:key withString:replacement]; + } + return s; +} + +- (NSString *)htmlEscapedString { + return replaceAll(self, [[self class] htmlEscapes]); +} + +- (NSString *)htmlUnescapedString { + return replaceAll(self, [[self class] htmlUnescapes]); +} + +@end diff --git a/iphone/ZXingWidget/OpenUrlAction.h b/iphone/ZXingWidget/OpenUrlAction.h new file mode 100644 index 000000000..cc1e17bd8 --- /dev/null +++ b/iphone/ZXingWidget/OpenUrlAction.h @@ -0,0 +1,42 @@ +// +// OpenUrlAction.h +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultAction.h" + +@interface OpenUrlAction : ResultAction { + NSURL *URL; +} + +@property(nonatomic, retain) NSURL *URL; + +- (id)initWithURL:(NSURL *)URL; ++ (id)actionWithURL:(NSURL *)URL; +- (void)openURL; + +- (NSString *)alertTitle; +- (NSString *)alertMessage; +- (NSString *)alertButtonTitle; + +// UIAlertViewDelegate +- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex; + +@end diff --git a/iphone/ZXingWidget/OpenUrlAction.m b/iphone/ZXingWidget/OpenUrlAction.m new file mode 100644 index 000000000..f59da6072 --- /dev/null +++ b/iphone/ZXingWidget/OpenUrlAction.m @@ -0,0 +1,82 @@ +// +// OpenUrlAction.m +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "OpenUrlAction.h" + + +@implementation OpenUrlAction + +@synthesize URL; + +- (id)initWithURL:(NSURL *)url { + if ((self = [super init]) != nil) { + self.URL = url; + } + return self; +} + ++ (id)actionWithURL:(NSURL *)URL { + return [[[self alloc] initWithURL:URL] autorelease]; +} + +- (NSString *)title { + return [NSString localizedStringWithFormat:NSLocalizedString(@"OpenURLAction action title", @"Open URL"), self.URL]; +} + +- (NSString *)alertTitle { + return NSLocalizedString(@"OpenURLAction alert title", @"Open URL"); +} + +- (NSString *)alertMessage { + return [NSString localizedStringWithFormat:NSLocalizedString(@"OpenURLAction alert message", @"Open URL <%@>?"), self.URL]; +} + +- (NSString *)alertButtonTitle { + return NSLocalizedString(@"OpenURLAction alert button title", @"Open"); +} + +- (void)performActionWithController:(UIViewController *)controller + shouldConfirm:(bool)shouldConfirm { + if (shouldConfirm) { + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil + message:[self alertMessage] + delegate:self + cancelButtonTitle:NSLocalizedString(@"OpenURLAction cancel button title", @"Cancel") + otherButtonTitles:[self alertButtonTitle], nil]; + [alertView show]; + [alertView release]; + } else { + [self openURL]; + } +} + +- (void)openURL { + [[UIApplication sharedApplication] openURL:self.URL]; +} + +- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { + if (buttonIndex != [alertView cancelButtonIndex]) { + // perform the action + [self openURL]; + } +} + +@end diff --git a/iphone/ZXingWidget/OverlayView.h b/iphone/ZXingWidget/OverlayView.h new file mode 100755 index 000000000..f8436b10f --- /dev/null +++ b/iphone/ZXingWidget/OverlayView.h @@ -0,0 +1,40 @@ +/** + * Copyright 2009 Jeff Verkoeyen + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@protocol CancelDelegate; + +@interface OverlayView : UIView { + UIImageView *imageView; + NSArray *_points; + UIButton *cancelButton; + id delegate; +} + +//@property (nonatomic, retain) UIImage* image; +@property (nonatomic, retain) NSArray* points; +@property (nonatomic, assign) id delegate; + +- (id)initWithCancelEnabled:(BOOL)cancelEnabled frame:(CGRect)frame; + +- (CGRect)cropRect; + +@end + +@protocol CancelDelegate +- (void)cancelled; +@end \ No newline at end of file diff --git a/iphone/ZXingWidget/OverlayView.m b/iphone/ZXingWidget/OverlayView.m new file mode 100755 index 000000000..35617670b --- /dev/null +++ b/iphone/ZXingWidget/OverlayView.m @@ -0,0 +1,166 @@ +/** + * Copyright 2009 Jeff Verkoeyen + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "OverlayView.h" + +static const CGFloat kPadding = 10; + +@implementation OverlayView + +@synthesize delegate; +@synthesize points = _points; +//@synthesize image; + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +- (id)initWithCancelEnabled:(BOOL)cancelEnabled frame:(CGRect)frame { + if( self = [super initWithFrame:frame] ) { + self.backgroundColor = [UIColor clearColor]; + } + if (cancelEnabled) { + cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [cancelButton setTitle:@"Cancel" forState:UIControlStateNormal]; + [cancelButton setFrame:CGRectMake(95, 420, 130, 45)]; + [cancelButton addTarget:self action:@selector(cancel:) forControlEvents:UIControlEventTouchUpInside]; + [self addSubview:cancelButton]; + } + return self; +} + +- (void)cancel:(id)sender { + // call delegate to cancel this scanner + if (delegate != nil) { + [delegate cancelled]; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +- (void) dealloc { + [imageView release]; + imageView = nil; + [_points release]; + _points = nil; + + [super dealloc]; +} + + +- (void)drawRect:(CGRect)rect inContext:(CGContextRef)context { + CGContextBeginPath(context); + CGContextMoveToPoint(context, rect.origin.x, rect.origin.y); + CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y); + CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + rect.size.height); + CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height); + CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y); + CGContextStrokePath(context); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +- (void)drawRect:(CGRect)rect { + [super drawRect:rect]; + CGContextRef c = UIGraphicsGetCurrentContext(); + + CGRect cropRect = [self cropRect]; + + if (nil != _points) { +// [imageView.image drawAtPoint:cropRect.origin]; + } + + CGFloat white[4] = {1.0f, 1.0f, 1.0f, 1.0f}; + CGContextSetStrokeColor(c, white); + CGContextSetFillColor(c, white); + [self drawRect:cropRect inContext:c]; + +// CGContextSetStrokeColor(c, white); + char *text = "Place a barcode inside the"; + char *text2 = "viewfinder rectangle to scan it."; + // CGContextSetStrokeColor(c, white); + CGContextSaveGState(c); + CGContextSelectFont(c, "Helvetica", 18, kCGEncodingMacRoman); + CGContextScaleCTM(c, -1.0, 1.0); + CGContextRotateCTM(c, 3.1415); + CGContextShowTextAtPoint(c, 48.0, -45.0, text, 26); + CGContextShowTextAtPoint(c, 33.0, -70.0, text2, 32); + CGContextRestoreGState(c); + if( nil != _points ) { + CGFloat blue[4] = {0.0f, 1.0f, 0.0f, 1.0f}; + CGContextSetStrokeColor(c, blue); + CGContextSetFillColor(c, blue); + CGRect smallSquare = CGRectMake(0, 0, 10, 10); + for( NSValue* value in _points ) { + CGPoint point = [value CGPointValue]; + NSLog(@"drawing point at %f, %f", point.x, point.y); + smallSquare.origin = CGPointMake( + cropRect.origin.x + point.x - smallSquare.size.width / 2, + cropRect.origin.y + point.y - smallSquare.size.height / 2); + [self drawRect:smallSquare inContext:c]; + } + } +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +/* +- (void) setImage:(UIImage*)image { + if( nil == _imageView ) { + _imageView = [[UIImageView alloc] initWithImage:image]; + _imageView.alpha = 0.5; + } else { + _imageView.image = image; + } + + CGRect frame = _imageView.frame; + frame.origin.x = self.cropRect.origin.x; + frame.origin.y = self.cropRect.origin.y; + _imageView.frame = frame; + + [_points release]; + _points = nil; + self.backgroundColor = [UIColor clearColor]; + + [self setNeedsDisplay]; +} +*/ + +//////////////////////////////////////////////////////////////////////////////////////////////////// +- (UIImage*) image { + return imageView.image; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +- (CGRect) cropRect { + CGFloat rectSize = self.frame.size.width - kPadding * 2; + + return CGRectMake(kPadding, (self.frame.size.height - rectSize) / 2, rectSize, rectSize); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +- (void) setPoints:(NSArray*)pnts { + [pnts retain]; + [_points release]; + _points = pnts; + + if (pnts != nil) { + self.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.25]; + } + [self setNeedsDisplay]; +} + + +@end diff --git a/iphone/ZXingWidget/ParsedResult.h b/iphone/ZXingWidget/ParsedResult.h new file mode 100644 index 000000000..1a7566c21 --- /dev/null +++ b/iphone/ZXingWidget/ParsedResult.h @@ -0,0 +1,35 @@ +// +// ParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 22/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@interface ParsedResult : NSObject { + NSMutableArray *actions; +} + ++ (NSString *)typeName; + +- (NSString *)stringForDisplay; +- (UIImage *)icon; +- (NSArray *)actions; +- (void)populateActions; + +@end diff --git a/iphone/ZXingWidget/ParsedResult.m b/iphone/ZXingWidget/ParsedResult.m new file mode 100644 index 000000000..4d4494dbd --- /dev/null +++ b/iphone/ZXingWidget/ParsedResult.m @@ -0,0 +1,104 @@ +// +// ParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 22/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "ParsedResult.h" + +#import "TextParsedResult.h" +#import "TelParsedResult.h" +#import "EmailParsedResult.h" +#import "BusinessCardParsedResult.h" +#import "URIParsedResult.h" +#import "GeoParsedResult.h" + +#import "UIKit/UIStringDrawing.h" +#import + +@implementation ParsedResult + +static NSMutableDictionary *iconsByClass = nil; + ++ (NSString *)typeName { + return NSStringFromClass(self); +} + +- (NSString *)stringForDisplay { + return @"{none}"; +} + +#define ICON_SIZE 40 +#define ICON_INSIDE 36 + ++ (UIImage *)icon { + if (iconsByClass == nil) { + iconsByClass = [[NSMutableDictionary alloc] initWithCapacity:16]; + } + UIImage *icon = [iconsByClass objectForKey:[self class]]; + if (icon == nil) { + UIGraphicsBeginImageContext(CGSizeMake(ICON_SIZE, ICON_SIZE)); + CGContextRef ctx = UIGraphicsGetCurrentContext(); + + [[UIColor lightGrayColor] set]; + UIRectFill(CGRectMake(0, 0, ICON_SIZE, ICON_SIZE)); + + [[UIColor blackColor] set]; + NSString *s = [[self class] typeName]; + UIFont *font = [UIFont systemFontOfSize:16]; + CGSize stringSize = [s sizeWithFont:font]; + float xScale = fminf(1.0, ICON_INSIDE / stringSize.width); + float yScale = fminf(1.0, ICON_INSIDE / stringSize.height); + + CGContextTranslateCTM(ctx, (ICON_SIZE / 2), (ICON_SIZE / 2)); + CGContextRotateCTM(ctx, -M_PI / 6.0); + CGContextScaleCTM(ctx, xScale, yScale); + CGContextTranslateCTM(ctx, + -(stringSize.width)/2.0, + -(stringSize.height)/2.0); + + [s drawAtPoint:CGPointMake(0, 0) withFont:font]; + + icon = [UIGraphicsGetImageFromCurrentImageContext() retain]; + [iconsByClass setObject:icon forKey:[self class]]; + UIGraphicsEndImageContext(); + } + return icon; +} + +- (UIImage *)icon { + return [[self class] icon]; +} + +- (NSArray *)actions { + if (!actions) { + actions = [[NSMutableArray alloc] init]; + [self populateActions]; + } + return actions; +} + +- (void) populateActions { +} + +- (void) dealloc { + [actions release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/PlainEmailResultParser.h b/iphone/ZXingWidget/PlainEmailResultParser.h new file mode 100644 index 000000000..a689f6460 --- /dev/null +++ b/iphone/ZXingWidget/PlainEmailResultParser.h @@ -0,0 +1,30 @@ +// +// PlainEmailResultParser.h +// ZXing +// +// Created by Christian Brunschen on 28/07/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + + +@interface PlainEmailResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/PlainEmailResultParser.m b/iphone/ZXingWidget/PlainEmailResultParser.m new file mode 100644 index 000000000..6c9078314 --- /dev/null +++ b/iphone/ZXingWidget/PlainEmailResultParser.m @@ -0,0 +1,40 @@ +// +// PlainEmailResultParser.m +// ZXing +// +// Created by Christian Brunschen on 28/07/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "PlainEmailResultParser.h" +#import "EmailParsedResult.h" + +@implementation PlainEmailResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + if ([EmailParsedResult looksLikeAnEmailAddress:s]) { + EmailParsedResult *result = [[[EmailParsedResult alloc] init] autorelease]; + [result setTo:s]; + return result; + } + return nil; +} + +@end diff --git a/iphone/ZXingWidget/ResultAction.h b/iphone/ZXingWidget/ResultAction.h new file mode 100644 index 000000000..5a8e21466 --- /dev/null +++ b/iphone/ZXingWidget/ResultAction.h @@ -0,0 +1,32 @@ +// +// ResultAction.h +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@interface ResultAction : NSObject { + +} + +- (NSString *)title; +- (void)performActionWithController:(UIViewController *)controller + shouldConfirm:(bool)confirm; + +@end diff --git a/iphone/ZXingWidget/ResultAction.m b/iphone/ZXingWidget/ResultAction.m new file mode 100644 index 000000000..d0b61d362 --- /dev/null +++ b/iphone/ZXingWidget/ResultAction.m @@ -0,0 +1,36 @@ +// +// ResultAction.m +// ZXing +// +// Created by Christian Brunschen on 28/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "ResultAction.h" + + +@implementation ResultAction + +- (NSString *)title { + return @"Abstract Action"; +} + +- (void)performActionWithController:(UIViewController *)controller + shouldConfirm:(bool)confirm { + NSLog(@"Abstract Action performed"); +} + +@end diff --git a/iphone/ZXingWidget/ResultParser.h b/iphone/ZXingWidget/ResultParser.h new file mode 100644 index 000000000..6651f73b6 --- /dev/null +++ b/iphone/ZXingWidget/ResultParser.h @@ -0,0 +1,31 @@ +// +// ResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ParsedResult.h" + +@interface ResultParser : NSObject { + +} ++ (void)registerResultParserClass:(Class)resultParser; ++ (ParsedResult *)parsedResultForString:(NSString *)s; + +@end diff --git a/iphone/ZXingWidget/ResultParser.m b/iphone/ZXingWidget/ResultParser.m new file mode 100644 index 000000000..0e5367695 --- /dev/null +++ b/iphone/ZXingWidget/ResultParser.m @@ -0,0 +1,66 @@ +// +// ResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "ResultParser.h" + +@implementation ResultParser + +static NSMutableSet *sResultParsers = nil; + ++ (void)registerResultParserClass:(Class)resultParser { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + @synchronized(self) { + if (!sResultParsers) { + sResultParsers = [[NSMutableSet alloc] init]; + } + [sResultParsers addObject:resultParser]; + } + [pool drain]; +} + ++ (NSSet *)resultParsers { + NSSet *resultParsers = nil; + @synchronized(self) { + resultParsers = [[sResultParsers copy] autorelease]; + } + return resultParsers; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { +#ifdef DEBUG + NSLog(@"parsing result:\n<<<\n%@\n>>>\n", s); +#endif + for (Class c in [self resultParsers]) { +#ifdef DEBUG + NSLog(@"trying %@", NSStringFromClass(c)); +#endif + ParsedResult *result = [c parsedResultForString:s]; + if (result != nil) { +#ifdef DEBUG + NSLog(@"parsed as %@ %@", NSStringFromClass([result class]), result); +#endif + return result; + } + } + return nil; +} + +@end diff --git a/iphone/ZXingWidget/SMSAction.h b/iphone/ZXingWidget/SMSAction.h new file mode 100644 index 000000000..544867880 --- /dev/null +++ b/iphone/ZXingWidget/SMSAction.h @@ -0,0 +1,34 @@ +// +// SMSAction.h +// ZXing +// +// Created by Christian Brunschen on 16/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "CallAction.h" + +@interface SMSAction : CallAction { + NSString *body; +} + +@property (nonatomic, copy) NSString *body; + ++ actionWithNumber:(NSString *)number body:(NSString *)body; ++ actionWithNumber:(NSString *)number; + +@end diff --git a/iphone/ZXingWidget/SMSAction.m b/iphone/ZXingWidget/SMSAction.m new file mode 100644 index 000000000..14eba42af --- /dev/null +++ b/iphone/ZXingWidget/SMSAction.m @@ -0,0 +1,85 @@ +// +// SMSAction.m +// ZXing +// +// Created by Christian Brunschen on 16/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "SMSAction.h" + +// currently, including a message body makes the iPhone not actually +// go to compose an SMS at all, just start the SMS app. Bummer. +#ifdef SMS_URL_INCLUDE_BODY +#undef SMS_URL_INCLUDE_BODY +#endif + +@implementation SMSAction + +@synthesize body; + ++ (NSURL *)urlForNumber:(NSString *)number withBody:(NSString *)body { + NSString *urlString = +#ifdef SMS_URL_INCLUDE_BODY + (body && [body length]) ? + [NSString stringWithFormat:@"sms:%@?body=%@", number, [body stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] : +#endif + [NSString stringWithFormat:@"sms:%@", number]; + return [NSURL URLWithString:urlString]; +} + +- initWithNumber:(NSString *)n body:(NSString *)b { + if ((self = [super initWithURL:[[self class] urlForNumber:n withBody:b]]) != nil) { + self.number = n; + self.body = b; + } + return self; +} + +- initWithNumber:(NSString *)n { + return [self initWithNumber:n body:nil]; +} + ++ actionWithNumber:(NSString *)number body:(NSString *)body { + return [[[self alloc] initWithNumber:number body:body] autorelease]; +} + ++ actionWithNumber:(NSString *)number { + return [self actionWithNumber:number body:nil]; +} + +- (NSString *)title { + return [NSString localizedStringWithFormat:NSLocalizedString(@"SMSAction action title", @"Compose SMS to %@"), self.number]; +} + +- (NSString *)alertTitle { + return NSLocalizedString(@"SMSAction alert title", @"Compose"); +} + +- (NSString *)alertMessage { + return [NSString localizedStringWithFormat:NSLocalizedString(@"SMSAction alert message", @"Compose SMS to %@?"), self.number]; +} + +- (NSString *)alertButtonTitle { + return NSLocalizedString(@"SMSAction alert button title", @"Compose"); +} + +- (void) dealloc { + [body release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/SMSParsedResult.h b/iphone/ZXingWidget/SMSParsedResult.h new file mode 100644 index 000000000..3349d1b2c --- /dev/null +++ b/iphone/ZXingWidget/SMSParsedResult.h @@ -0,0 +1,36 @@ +// +// SMSParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ParsedResult.h" + + +@interface SMSParsedResult : ParsedResult { + NSString *number; + NSString *body; +} + +@property (nonatomic, copy) NSString *number; +@property (nonatomic, copy) NSString *body; + +- (id)initWithNumber:(NSString *)n body:(NSString *)b; + +@end diff --git a/iphone/ZXingWidget/SMSParsedResult.m b/iphone/ZXingWidget/SMSParsedResult.m new file mode 100644 index 000000000..ac2205bcb --- /dev/null +++ b/iphone/ZXingWidget/SMSParsedResult.m @@ -0,0 +1,65 @@ +// +// SMSParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "SMSParsedResult.h" +#import "SMSAction.h" + +@implementation SMSParsedResult + +@synthesize number; +@synthesize body; + +- (id)initWithNumber:(NSString *)n body:(NSString *)b { + if ((self = [super init]) != nil) { + self.number = n; + self.body = b; + } + return self; +} + +- (NSString *)stringForDisplay { + if (self.body) { + return [NSString stringWithFormat:@"%@\n%@", self.number, self.body]; + } + return self.number; +} + + ++ (NSString *)typeName { + return NSLocalizedString(@"SMSParsedResult type name", @"SMS"); +} + +- (UIImage *)icon { + return [UIImage imageNamed:@"sms.png"]; +} + +- (void)populateActions { + [actions addObject:[SMSAction actionWithNumber:self.number body:self.body]]; +} + +- (void) dealloc { + [number release]; + [body release]; + [super dealloc]; +} + + +@end diff --git a/iphone/ZXingWidget/SMSResultParser.h b/iphone/ZXingWidget/SMSResultParser.h new file mode 100644 index 000000000..d087edf4d --- /dev/null +++ b/iphone/ZXingWidget/SMSResultParser.h @@ -0,0 +1,29 @@ +// +// SMSResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + +@interface SMSResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/SMSResultParser.m b/iphone/ZXingWidget/SMSResultParser.m new file mode 100644 index 000000000..d6cf3e8e1 --- /dev/null +++ b/iphone/ZXingWidget/SMSResultParser.m @@ -0,0 +1,78 @@ +// +// SMSResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "SMSResultParser.h" +#import "SMSParsedResult.h" + +#define PREFIX @"sms:" + +@implementation SMSResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange prefixRange = [s rangeOfString:PREFIX options:NSCaseInsensitiveSearch]; + if (prefixRange.location == 0) { + int max = [s length]; + int restStart = prefixRange.location + prefixRange.length; + + // initial presuption: everything after the prefix is the number, and there is no body + NSRange numberRange = NSMakeRange(restStart, max - restStart); + NSRange bodyRange = NSMakeRange(NSNotFound, 0); + + // is there a query string? + NSRange queryRange = [s rangeOfString:@"?" options:0 range:numberRange]; + if (queryRange.location != NSNotFound) { + // truncate the number range at the beginning of the query string + numberRange.length = queryRange.location - numberRange.location; + + int paramsStart = queryRange.location + queryRange.length; + NSRange paramsRange = NSMakeRange(paramsStart, max - paramsStart); + NSRange bodyPrefixRange = [s rangeOfString:@"body=" options:0 range:paramsRange]; + if (bodyPrefixRange.location != NSNotFound) { + int bodyStart = bodyPrefixRange.location + bodyPrefixRange.length; + bodyRange = NSMakeRange(bodyStart, max - bodyStart); + NSRange ampRange = [s rangeOfString:@"&" options:0 range:bodyRange]; + if (ampRange.location != NSNotFound) { + // we found a '&', so we truncate the body range there + bodyRange.length = ampRange.location - bodyRange.location; + } + } + } + + // if there's a semicolon in the number, truncate the number there + NSRange semicolonRange = [s rangeOfString:@";" options:0 range:numberRange]; + if (semicolonRange.location != NSNotFound) { + numberRange.length = semicolonRange.location - numberRange.location; + } + + NSString *number = [s substringWithRange:numberRange]; + NSString *body = bodyRange.location != NSNotFound ? [s substringWithRange:bodyRange] : nil; + return [[[SMSParsedResult alloc] initWithNumber:number body:body] + autorelease]; + } + return nil; +} + + +@end diff --git a/iphone/ZXingWidget/SMSTOResultParser.h b/iphone/ZXingWidget/SMSTOResultParser.h new file mode 100644 index 000000000..43c7bc56d --- /dev/null +++ b/iphone/ZXingWidget/SMSTOResultParser.h @@ -0,0 +1,29 @@ +// +// SMSTOResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + +@interface SMSTOResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/SMSTOResultParser.m b/iphone/ZXingWidget/SMSTOResultParser.m new file mode 100644 index 000000000..a10a55c16 --- /dev/null +++ b/iphone/ZXingWidget/SMSTOResultParser.m @@ -0,0 +1,57 @@ +// +// SMSTOResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "SMSTOResultParser.h" +#import "SMSParsedResult.h" + +#define PREFIX @"SMSTO:" + +@implementation SMSTOResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange prefixRange = [s rangeOfString:PREFIX options:NSCaseInsensitiveSearch]; + if (prefixRange.location == 0) { + int max = [s length]; + int restStart = prefixRange.location + prefixRange.length; + NSRange searchRange = NSMakeRange(restStart, max - restStart); + NSRange colonRange = [s rangeOfString:@":" options:0 range:searchRange]; + if (colonRange.location != NSNotFound) { + NSRange numberRange = NSMakeRange(restStart, + colonRange.location - restStart); + int bodyStart = colonRange.location + colonRange.length; + NSRange bodyRange = NSMakeRange(bodyStart, max - bodyStart); + return [[[SMSParsedResult alloc] initWithNumber:[s substringWithRange:numberRange] + body:[s substringWithRange:bodyRange]] + autorelease]; + } else { + return [[[SMSParsedResult alloc] initWithNumber:[s substringFromIndex:restStart] + body:nil] + autorelease]; + } + } + return nil; +} + +@end diff --git a/iphone/ZXingWidget/ShowMapAction.h b/iphone/ZXingWidget/ShowMapAction.h new file mode 100644 index 000000000..3f3042332 --- /dev/null +++ b/iphone/ZXingWidget/ShowMapAction.h @@ -0,0 +1,34 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// ShowMapAction.h +// ZXing +// +// Created by Christian Brunschen on 05/06/2008. + +#import +#import "OpenUrlAction.h" + +@interface ShowMapAction : OpenUrlAction { + NSString *location; +} + +@property (nonatomic, copy) NSString *location; + +- (id)initWithLocation:(NSString *)location; ++ (id)actionWithLocation:(NSString *)location; + +@end diff --git a/iphone/ZXingWidget/ShowMapAction.m b/iphone/ZXingWidget/ShowMapAction.m new file mode 100644 index 000000000..f3817a23f --- /dev/null +++ b/iphone/ZXingWidget/ShowMapAction.m @@ -0,0 +1,68 @@ +// +// ShowMapAction.m +// ZXing +// +// Created by Christian Brunschen on 05/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "ShowMapAction.h" + + +@implementation ShowMapAction + +@synthesize location; + +static NSURL * URLForLocation(NSString *location) { + NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", + [location stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + return [NSURL URLWithString:urlString]; +} + +- (id)initWithLocation:(NSString *)l { + if ((self = [super initWithURL:URLForLocation(l)]) != nil) { + self.location = l; + } + return self; +} + ++ (id)actionWithLocation:(NSString *)location { + return [[[self alloc] initWithLocation:location] autorelease]; +} + +- (NSString *)title { + return NSLocalizedString(@"ShowMapAction action title", @"Show on Map"); +} + +- (NSString *)alertTitle { + return NSLocalizedString(@"ShowMapAction alert title", @"Show on Map"); +} + +- (NSString *)alertMessage { + return [NSString stringWithFormat:NSLocalizedString(@"ShowMapAction alert message", @"Show location %@ on Map ?"), self.location]; +} + +- (NSString *)alertButtonTitle { + return NSLocalizedString(@"ShowMapAction alert button title", @"Show"); +} + + +- (void)dealloc { + [location release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/TelParsedResult.h b/iphone/ZXingWidget/TelParsedResult.h new file mode 100644 index 000000000..6d7789da8 --- /dev/null +++ b/iphone/ZXingWidget/TelParsedResult.h @@ -0,0 +1,33 @@ +// +// TelParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 23/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ParsedResult.h" + +@interface TelParsedResult : ParsedResult { + NSString *number; +} + +@property (nonatomic, copy) NSString *number; + +- (id)initWithNumber:(NSString *)n; + +@end diff --git a/iphone/ZXingWidget/TelParsedResult.m b/iphone/ZXingWidget/TelParsedResult.m new file mode 100644 index 000000000..d43118910 --- /dev/null +++ b/iphone/ZXingWidget/TelParsedResult.m @@ -0,0 +1,58 @@ +// +// TelParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 23/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "TelParsedResult.h" +#import "CallAction.h" + +@implementation TelParsedResult + +@synthesize number; + +- (id)initWithNumber:(NSString *)n { + if ((self = [super init]) != nil) { + self.number = n; + } + return self; +} + +- (NSString *)stringForDisplay { + return self.number; +} + + ++ (NSString *)typeName { + return NSLocalizedString(@"TelParsedResult type name", @"Tel"); +} + +- (UIImage *)icon { + return [UIImage imageNamed:@"phone.png"]; +} + +- (void)populateActions { + [actions addObject:[CallAction actionWithNumber:self.number]]; +} + +- (void) dealloc { + [number release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/TelResultParser.h b/iphone/ZXingWidget/TelResultParser.h new file mode 100644 index 000000000..dd989fef5 --- /dev/null +++ b/iphone/ZXingWidget/TelResultParser.h @@ -0,0 +1,29 @@ +// +// TelResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + +@interface TelResultParser : NSObject { + +} + +@end diff --git a/iphone/ZXingWidget/TelResultParser.m b/iphone/ZXingWidget/TelResultParser.m new file mode 100644 index 000000000..901221072 --- /dev/null +++ b/iphone/ZXingWidget/TelResultParser.m @@ -0,0 +1,44 @@ +// +// TelResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "TelResultParser.h" +#import "TelParsedResult.h" + +#define PREFIX @"tel:" + +@implementation TelResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange telRange = [s rangeOfString:PREFIX options:NSCaseInsensitiveSearch]; + if (telRange.location == 0) { + int restStart = telRange.location + telRange.length; + return [[[TelParsedResult alloc] initWithNumber:[s substringFromIndex:restStart]] + autorelease]; + } + return nil; +} + + +@end diff --git a/iphone/ZXingWidget/TextParsedResult.h b/iphone/ZXingWidget/TextParsedResult.h new file mode 100644 index 000000000..c71610474 --- /dev/null +++ b/iphone/ZXingWidget/TextParsedResult.h @@ -0,0 +1,34 @@ +// +// TextParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 23/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import "ParsedResult.h" + +@interface TextParsedResult : ParsedResult { + NSString *text; +} + +@property (nonatomic, copy) NSString *text; + +- (id)initWithString:(NSString *)s; + +@end diff --git a/iphone/ZXingWidget/TextParsedResult.m b/iphone/ZXingWidget/TextParsedResult.m new file mode 100644 index 000000000..1572456e0 --- /dev/null +++ b/iphone/ZXingWidget/TextParsedResult.m @@ -0,0 +1,58 @@ +// +// TextParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 23/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "TextParsedResult.h" +#import "EmailAction.h" + + +@implementation TextParsedResult + +@synthesize text; + +- (id)initWithString:(NSString *)s { + if ((self = [super init]) != nil) { + self.text = s; + } + return self; +} + ++ (NSString *)typeName { + return NSLocalizedString(@"TextParsedResult type name", @"Text"); +} + +- (UIImage *)icon { + return [UIImage imageNamed:@"text.png"]; +} + +- (NSString *)stringForDisplay { + return self.text; +} + +- (void) populateActions { + //[actions addObject:[EmailAction actionWithRecipient:@"recipient@domain" subject:@"QR Code Contents" body:text]]; +} + +- (void)dealloc { + [text release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/TextResultParser.h b/iphone/ZXingWidget/TextResultParser.h new file mode 100644 index 000000000..3dc64adf4 --- /dev/null +++ b/iphone/ZXingWidget/TextResultParser.h @@ -0,0 +1,30 @@ +// +// TextResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + + +@interface TextResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/TextResultParser.m b/iphone/ZXingWidget/TextResultParser.m new file mode 100644 index 000000000..fcc6cbe7b --- /dev/null +++ b/iphone/ZXingWidget/TextResultParser.m @@ -0,0 +1,36 @@ +// +// TextResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "TextResultParser.h" +#import "TextParsedResult.h" + +@implementation TextResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + return [[[TextParsedResult alloc] initWithString:s] autorelease]; +} + + +@end diff --git a/iphone/ZXingWidget/TwoDDecoderResult.h b/iphone/ZXingWidget/TwoDDecoderResult.h new file mode 100644 index 000000000..62263eae1 --- /dev/null +++ b/iphone/ZXingWidget/TwoDDecoderResult.h @@ -0,0 +1,35 @@ +// +// TwoDDecoderResult.h +// ZXing +// +// Created by Christian Brunschen on 04/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@interface TwoDDecoderResult : NSObject { + NSString *text; + NSArray *points; +} + +@property (nonatomic, copy) NSString *text; +@property (nonatomic, retain) NSArray *points; + ++ (id)resultWithText:(NSString *)text points:(NSArray *)points; +- (id)initWithText:(NSString *)text points:(NSArray *)points; + +@end diff --git a/iphone/ZXingWidget/TwoDDecoderResult.m b/iphone/ZXingWidget/TwoDDecoderResult.m new file mode 100644 index 000000000..d83f66bd5 --- /dev/null +++ b/iphone/ZXingWidget/TwoDDecoderResult.m @@ -0,0 +1,52 @@ +// +// TwoDDecoderResult.m +// ZXing +// +// Created by Christian Brunschen on 04/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "TwoDDecoderResult.h" + + +@implementation TwoDDecoderResult + +@synthesize text; +@synthesize points; + ++ (id)resultWithText:(NSString *)text points:(NSArray *)points { + return [[[self alloc] initWithText:text points:points] autorelease]; +} + +- (id)initWithText:(NSString *)t points:(NSArray *)p { + if ((self = [super init]) != nil) { + self.text = t; + self.points = p; + } + return self; +} + +- (void)dealloc { + [text release]; + [points release]; + [super dealloc]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p> %@", [self class], self, self.text]; +} + +@end diff --git a/iphone/ZXingWidget/URIParsedResult.h b/iphone/ZXingWidget/URIParsedResult.h new file mode 100644 index 000000000..ae957e7dc --- /dev/null +++ b/iphone/ZXingWidget/URIParsedResult.h @@ -0,0 +1,45 @@ +// +// URIParsedResult.h +// ZXing +// +// Created by Christian Brunschen on 29/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ParsedResult.h" + +@interface NSString (ZXingURLExtensions) +- (bool) looksLikeAURI; +- (NSString *)massagedURLString; +@end + +@interface URIParsedResult : ParsedResult { + NSString *urlString; + NSString *title; + NSURL *URL; +} + +- (id)initWithURLString:(NSString *)s title:(NSString *)t URL:(NSURL *)ur; +- (id)initWithURLString:(NSString *)s title:(NSString *)t; +- (id)initWithURLString:(NSString *)s URL:(NSURL *)ur; +- (id)initWithURLString:(NSString *)s; + +@property (nonatomic, retain) NSString *urlString; +@property (nonatomic, retain) NSString *title; +@property (nonatomic, retain) NSURL *URL; + +@end diff --git a/iphone/ZXingWidget/URIParsedResult.m b/iphone/ZXingWidget/URIParsedResult.m new file mode 100644 index 000000000..0ab983322 --- /dev/null +++ b/iphone/ZXingWidget/URIParsedResult.m @@ -0,0 +1,87 @@ +// +// URIParsedResult.m +// ZXing +// +// Created by Christian Brunschen on 29/05/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "URIParsedResult.h" +#import "OpenUrlAction.h" +#import "EmailAction.h" +#import "SMSAction.h" + + +@implementation URIParsedResult + +@synthesize urlString; +@synthesize title; +@synthesize URL; + +- (ResultAction *)createAction { + return [OpenUrlAction actionWithURL:self.URL]; +} + +- (id)initWithURLString:(NSString *)s title:(NSString *)t URL:(NSURL *)url { + if ((self = [super init]) != nil) { + self.urlString = s; + self.title = t; + self.URL = url; + } + return self; +} + +- (id)initWithURLString:(NSString *)s URL:(NSURL *)url { + return [self initWithURLString:s title:nil URL:url]; +} + +- (id)initWithURLString:(NSString *)s title:(NSString *)t { + return [self initWithURLString:s title:t URL:[NSURL URLWithString:s]]; +} + +- (id)initWithURLString:(NSString *)s { + return [self initWithURLString:s title:nil URL:[NSURL URLWithString:s]]; +} + +- (NSString *)stringForDisplay { + return self.title ? + [NSString stringWithFormat:@"%@ <%@>", self.title, self.urlString] : + self.urlString; +} + ++ (NSString *)typeName { + return NSLocalizedString(@"URIParsedResult type name", @"URI"); +} + +- (UIImage *)icon { + return [UIImage imageNamed:@"link2.png"]; +} + +- (void)populateActions { +#ifdef DEBUG + NSLog(@"creating action to open URL '%@'", self.urlString); +#endif + + [actions addObject:[self createAction]]; +} + +- (void)dealloc { + [URL release]; + [urlString release]; + [super dealloc]; +} + +@end diff --git a/iphone/ZXingWidget/URLResultParser.h b/iphone/ZXingWidget/URLResultParser.h new file mode 100644 index 000000000..9cff23315 --- /dev/null +++ b/iphone/ZXingWidget/URLResultParser.h @@ -0,0 +1,30 @@ +// +// URIResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + + +@interface URLResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/URLResultParser.m b/iphone/ZXingWidget/URLResultParser.m new file mode 100644 index 000000000..df93f19dc --- /dev/null +++ b/iphone/ZXingWidget/URLResultParser.m @@ -0,0 +1,80 @@ +// +// URIResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "URLResultParser.h" +#import "URIParsedResult.h" + +@implementation NSString (ZXingURLExtensions) + +- (bool)looksLikeAURI { + if ([self rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]].location != NSNotFound) { + return false; + } + if ([self rangeOfString:@":"].location == NSNotFound) { + return false; + } + return true; +} + +- (NSString *)massagedURLString { + NSRange colonRange = [self rangeOfString:@":"]; + if (colonRange.location == NSNotFound) { + return [NSString stringWithFormat:@"http://%@", self]; + } else { + return [NSString stringWithFormat:@"%@%@", + [[self substringToIndex:colonRange.location] lowercaseString], + [self substringFromIndex:colonRange.location] + ]; + } +} + +@end + + +#define PREFIX @"URL:" + +@implementation URLResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange prefixRange = [s rangeOfString:PREFIX options:NSCaseInsensitiveSearch]; + if (prefixRange.location == 0) { + int restStart = prefixRange.location + prefixRange.length; + return [[[URIParsedResult alloc] initWithURLString:[[s substringFromIndex:restStart] massagedURLString]] + autorelease]; + } + + if ([s looksLikeAURI]) { + NSString *massaged = [s massagedURLString]; + NSURL *url = [NSURL URLWithString:massaged]; + if (url != nil) { + return [[[URIParsedResult alloc] initWithURLString:massaged URL:url] autorelease]; + } + } + + return nil; +} + + +@end diff --git a/iphone/ZXingWidget/URLTOResultParser.h b/iphone/ZXingWidget/URLTOResultParser.h new file mode 100644 index 000000000..3419acfe3 --- /dev/null +++ b/iphone/ZXingWidget/URLTOResultParser.h @@ -0,0 +1,29 @@ +// +// URLTOResultParser.h +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import +#import "ResultParser.h" + +@interface URLTOResultParser : ResultParser { + +} + +@end diff --git a/iphone/ZXingWidget/URLTOResultParser.m b/iphone/ZXingWidget/URLTOResultParser.m new file mode 100644 index 000000000..73f2fc0b8 --- /dev/null +++ b/iphone/ZXingWidget/URLTOResultParser.m @@ -0,0 +1,54 @@ +// +// URLTOResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "URLTOResultParser.h" +#import "URIParsedResult.h" + +#define PREFIX @"URLTO:" + +@implementation URLTOResultParser + ++ (void)load { + [ResultParser registerResultParserClass:self]; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { + NSRange prefixRange = [s rangeOfString:PREFIX options:NSCaseInsensitiveSearch]; + if (prefixRange.location == 0) { + int max = [s length]; + int titleStart = prefixRange.location + prefixRange.length; + NSRange searchRange = NSMakeRange(titleStart, max - titleStart); + NSRange colonRange = [s rangeOfString:@":" options:0 range:searchRange]; + if (colonRange.location != NSNotFound) { + NSRange titleRange = NSMakeRange(titleStart, + colonRange.location - titleStart); + int linkStart = colonRange.location + colonRange.length; + NSRange linkRange = NSMakeRange(linkStart, max - linkStart); + return [[[URIParsedResult alloc] initWithURLString:[s substringWithRange:linkRange] + title:[s substringWithRange:titleRange]] + autorelease]; + } + } + return nil; +} + + +@end diff --git a/iphone/ZXingWidget/ZXingWidget.xcodeproj/dkavanagh.mode1v3 b/iphone/ZXingWidget/ZXingWidget.xcodeproj/dkavanagh.mode1v3 new file mode 100644 index 000000000..de3fd6ea2 --- /dev/null +++ b/iphone/ZXingWidget/ZXingWidget.xcodeproj/dkavanagh.mode1v3 @@ -0,0 +1,1464 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + E5345AC311988B53000CB77F + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + + Content + + PBXProjectModuleGUID + E5345FB4119B2651000CB77F + PBXProjectModuleLabel + ZXingWidgetController.m + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + E5345FB5119B2651000CB77F + PBXProjectModuleLabel + ZXingWidgetController.m + _historyCapacity + 0 + bookmark + E5345FC6119B26BD000CB77F + history + + E5345FA9119B2602000CB77F + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {821, 706}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 36 1508 821 747 0 1200 1920 1080 + + + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + action + NSToolbarFlexibleSpaceItem + debugger-enable-breakpoints + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 206 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 0867D691FE84028FC02AAC07 + E53458B311987396000CB77F + E53458B411987396000CB77F + 08FB77AEFE84172EC02AAC07 + 32C88DFF0371C24200C91783 + 0867D69AFE84028FC02AAC07 + E5345D2811999F53000CB77F + 034768DFFF38A50411DB9C8B + 1C37FBAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 40 + 27 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {206, 760}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {223, 778}} + GroupTreeTableConfiguration + + MainColumn + 206 + + RubberWindowFrame + 23 190 1142 819 0 0 1920 1178 + + Module + PBXSmartGroupTreeModule + Proportion + 223pt + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + ZXingWidgetController.m + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + ZXingWidgetController.m + _historyCapacity + 0 + bookmark + E5345FC5119B26BD000CB77F + history + + E5345CAF1198EE8B000CB77F + E5345E51119AE2DE000CB77F + E5345E6A119AE4BB000CB77F + E5345E6B119AE4BB000CB77F + E5345E74119AE5C4000CB77F + E5345E75119AE5C4000CB77F + E5345E76119AE5C4000CB77F + E5345E78119AE5C4000CB77F + E5345EC6119AF8AE000CB77F + E5345EC7119AF8AE000CB77F + E5345EC8119AF8AE000CB77F + E5345EC9119AF8AE000CB77F + E5345F10119B0503000CB77F + E5345F11119B0503000CB77F + E5345F12119B0503000CB77F + E5345F34119B094C000CB77F + E5345F35119B094C000CB77F + E5345F39119B094C000CB77F + E5345F72119B12AF000CB77F + E5345FAC119B2651000CB77F + E5345FAD119B2651000CB77F + E5345FAE119B2651000CB77F + E5345FAF119B2651000CB77F + E5345FB0119B2651000CB77F + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {914, 587}} + RubberWindowFrame + 23 190 1142 819 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 587pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 592}, {914, 186}} + RubberWindowFrame + 23 190 1142 819 0 0 1920 1178 + + Module + XCDetailModule + Proportion + 186pt + + + Proportion + 914pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + E5345FB2119B2651000CB77F + 1CE0B1FE06471DED0097A5F4 + E5345FB3119B2651000CB77F + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + E5345AC411988B53000CB77F + E5345FB4119B2651000CB77F + /Users/dkavanagh/zxing/iphone/ZXingWidget/ZXingWidget.xcodeproj + + WindowString + 23 190 1142 819 0 0 1920 1178 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + ZXingWidgetController.m + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {872, 312}} + RubberWindowFrame + 1111 405 872 594 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 312pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 317}, {872, 236}} + RubberWindowFrame + 1111 405 872 594 0 0 1920 1178 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 553pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + E5345AC411988B53000CB77F + E5345FB7119B2651000CB77F + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + 1111 405 872 594 0 0 1920 1178 + WindowToolGUID + E5345AC411988B53000CB77F + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {316, 185}} + {{316, 0}, {378, 185}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 185}} + {{0, 185}, {694, 196}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 381}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 148 + + Frame + {{316, 0}, {378, 185}} + RubberWindowFrame + 51 501 694 422 0 0 1920 1178 + + RubberWindowFrame + 51 501 694 422 0 0 1920 1178 + + Module + PBXDebugSessionModule + Proportion + 381pt + + + Proportion + 381pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + E5345CD21198F149000CB77F + 1C162984064C10D400B95A72 + E5345CD31198F149000CB77F + E5345CD41198F149000CB77F + E5345CD51198F149000CB77F + E5345CD61198F149000CB77F + E5345CD71198F149000CB77F + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 51 501 694 422 0 0 1920 1178 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {650, 250}} + RubberWindowFrame + 516 632 650 250 0 0 1680 1027 + + Module + PBXDebugCLIModule + Proportion + 209pt + + + Proportion + 209pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAAD065D492600B07095 + 1C78EAAE065D492600B07095 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 650 41 650 250 0 0 1280 1002 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + 0 + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + diff --git a/iphone/ZXingWidget/ZXingWidget.xcodeproj/dkavanagh.pbxuser b/iphone/ZXingWidget/ZXingWidget.xcodeproj/dkavanagh.pbxuser new file mode 100644 index 000000000..a77b797c4 --- /dev/null +++ b/iphone/ZXingWidget/ZXingWidget.xcodeproj/dkavanagh.pbxuser @@ -0,0 +1,2560 @@ +// !$*UTF8*$! +{ + 0867D690FE84028FC02AAC07 /* Project object */ = { + activeBuildConfigurationName = Debug; + activeSDKPreference = iphoneos3.1.3; + activeTarget = D2AAC07D0554694100DB518D /* ZXingWidget */; + addToTargets = ( + D2AAC07D0554694100DB518D /* ZXingWidget */, + ); + breakpoints = ( + ); + codeSenseManager = E53458881198372D000CB77F /* Code sense */; + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 675, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 706, + 20, + 48.16259765625, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_SCM_ColumnID, + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 690, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 295380454; + PBXWorkspaceStateSaveDate = 295380454; + }; + perUserProjectItems = { + E5345AB811988B53000CB77F = E5345AB811988B53000CB77F /* PBXTextBookmark */; + E5345AB911988B53000CB77F = E5345AB911988B53000CB77F /* PBXTextBookmark */; + E5345ABA11988B53000CB77F = E5345ABA11988B53000CB77F /* PBXTextBookmark */; + E5345ABB11988B53000CB77F = E5345ABB11988B53000CB77F /* PBXTextBookmark */; + E5345ABC11988B53000CB77F = E5345ABC11988B53000CB77F /* PBXTextBookmark */; + E5345ABD11988B53000CB77F = E5345ABD11988B53000CB77F /* PBXTextBookmark */; + E5345ABE11988B53000CB77F = E5345ABE11988B53000CB77F /* PBXTextBookmark */; + E5345ABF11988B53000CB77F = E5345ABF11988B53000CB77F /* PBXTextBookmark */; + E5345AC011988B53000CB77F = E5345AC011988B53000CB77F /* PBXTextBookmark */; + E5345C041198D954000CB77F = E5345C041198D954000CB77F /* PBXTextBookmark */; + E5345C051198DA1C000CB77F = E5345C051198DA1C000CB77F /* PBXTextBookmark */; + E5345C061198DA1C000CB77F = E5345C061198DA1C000CB77F /* PBXTextBookmark */; + E5345C071198DA1C000CB77F = E5345C071198DA1C000CB77F /* PBXTextBookmark */; + E5345C081198DA1C000CB77F = E5345C081198DA1C000CB77F /* PBXTextBookmark */; + E5345C091198DA1C000CB77F = E5345C091198DA1C000CB77F /* PBXTextBookmark */; + E5345C0A1198DA1C000CB77F = E5345C0A1198DA1C000CB77F /* PBXTextBookmark */; + E5345C301198DC90000CB77F = E5345C301198DC90000CB77F /* PBXTextBookmark */; + E5345C631198E1F7000CB77F = E5345C631198E1F7000CB77F /* PBXTextBookmark */; + E5345C641198E1F7000CB77F = E5345C641198E1F7000CB77F /* PBXTextBookmark */; + E5345CAA1198EE8B000CB77F = E5345CAA1198EE8B000CB77F /* PBXTextBookmark */; + E5345CAB1198EE8B000CB77F = E5345CAB1198EE8B000CB77F /* PBXTextBookmark */; + E5345CAC1198EE8B000CB77F = E5345CAC1198EE8B000CB77F /* PBXTextBookmark */; + E5345CAD1198EE8B000CB77F = E5345CAD1198EE8B000CB77F /* PBXTextBookmark */; + E5345CAE1198EE8B000CB77F = E5345CAE1198EE8B000CB77F /* PBXTextBookmark */; + E5345CAF1198EE8B000CB77F = E5345CAF1198EE8B000CB77F /* PBXTextBookmark */; + E5345CB01198EE8B000CB77F = E5345CB01198EE8B000CB77F /* PBXTextBookmark */; + E5345CB11198EE8B000CB77F = E5345CB11198EE8B000CB77F /* PBXTextBookmark */; + E5345CB71198F0C9000CB77F = E5345CB71198F0C9000CB77F /* PBXTextBookmark */; + E5345CB81198F0C9000CB77F = E5345CB81198F0C9000CB77F /* PBXTextBookmark */; + E5345CB91198F0C9000CB77F = E5345CB91198F0C9000CB77F /* PBXTextBookmark */; + E5345CC01198F0F2000CB77F = E5345CC01198F0F2000CB77F /* PBXTextBookmark */; + E5345CC11198F0F2000CB77F = E5345CC11198F0F2000CB77F /* PBXTextBookmark */; + E5345CC21198F0F2000CB77F = E5345CC21198F0F2000CB77F /* PBXTextBookmark */; + E5345CC31198F0F2000CB77F = E5345CC31198F0F2000CB77F /* PBXTextBookmark */; + E5345CC41198F0F2000CB77F = E5345CC41198F0F2000CB77F /* PBXTextBookmark */; + E5345CC51198F0F2000CB77F = E5345CC51198F0F2000CB77F /* PBXTextBookmark */; + E5345CC61198F0F2000CB77F = E5345CC61198F0F2000CB77F /* PBXTextBookmark */; + E5345CC71198F0F2000CB77F = E5345CC71198F0F2000CB77F /* PBXTextBookmark */; + E5345CC81198F0F2000CB77F = E5345CC81198F0F2000CB77F /* PBXTextBookmark */; + E5345CCF1198F149000CB77F = E5345CCF1198F149000CB77F /* PBXTextBookmark */; + E5345CD01198F149000CB77F = E5345CD01198F149000CB77F /* PBXTextBookmark */; + E5345CD11198F149000CB77F = E5345CD11198F149000CB77F /* PBXTextBookmark */; + E5345CDC1198F18D000CB77F = E5345CDC1198F18D000CB77F /* PBXTextBookmark */; + E5345CDD1198F18D000CB77F = E5345CDD1198F18D000CB77F /* PBXTextBookmark */; + E5345CE4119984D5000CB77F = E5345CE4119984D5000CB77F /* PBXTextBookmark */; + E5345CE5119984D5000CB77F = E5345CE5119984D5000CB77F /* PBXTextBookmark */; + E5345CF811999BBF000CB77F = E5345CF811999BBF000CB77F /* PBXTextBookmark */; + E5345CF911999BBF000CB77F = E5345CF911999BBF000CB77F /* PBXTextBookmark */; + E5345CFA11999BBF000CB77F = E5345CFA11999BBF000CB77F /* PBXTextBookmark */; + E5345CFB11999BBF000CB77F = E5345CFB11999BBF000CB77F /* PBXTextBookmark */; + E5345CFC11999BBF000CB77F = E5345CFC11999BBF000CB77F /* PBXTextBookmark */; + E5345CFD11999BBF000CB77F = E5345CFD11999BBF000CB77F /* PBXTextBookmark */; + E5345D0411999D37000CB77F = E5345D0411999D37000CB77F /* PBXTextBookmark */; + E5345D0511999D37000CB77F = E5345D0511999D37000CB77F /* PBXTextBookmark */; + E5345D0611999D37000CB77F = E5345D0611999D37000CB77F /* PBXTextBookmark */; + E5345D0B11999D92000CB77F = E5345D0B11999D92000CB77F /* PBXTextBookmark */; + E5345D1E11999E6F000CB77F = E5345D1E11999E6F000CB77F /* PBXTextBookmark */; + E5345D2511999F1D000CB77F = E5345D2511999F1D000CB77F /* PBXTextBookmark */; + E5345D2611999F1D000CB77F = E5345D2611999F1D000CB77F /* PBXTextBookmark */; + E5345D2711999F1D000CB77F = E5345D2711999F1D000CB77F /* PBXTextBookmark */; + E5345D321199A033000CB77F = E5345D321199A033000CB77F /* PBXTextBookmark */; + E5345D331199A033000CB77F = E5345D331199A033000CB77F /* PBXTextBookmark */; + E5345D341199A033000CB77F = E5345D341199A033000CB77F /* PBXTextBookmark */; + E5345D351199A033000CB77F = E5345D351199A033000CB77F /* PBXTextBookmark */; + E5345D361199A033000CB77F = E5345D361199A033000CB77F /* PBXTextBookmark */; + E5345D391199A033000CB77F = E5345D391199A033000CB77F /* PBXBookmark */; + E5345D3A1199A033000CB77F = E5345D3A1199A033000CB77F /* PBXTextBookmark */; + E5345D451199A26A000CB77F = E5345D451199A26A000CB77F /* PBXTextBookmark */; + E5345D461199A26A000CB77F = E5345D461199A26A000CB77F /* PBXTextBookmark */; + E5345D471199A26A000CB77F = E5345D471199A26A000CB77F /* PBXTextBookmark */; + E5345D481199A26A000CB77F = E5345D481199A26A000CB77F /* PBXTextBookmark */; + E5345D551199A417000CB77F = E5345D551199A417000CB77F /* PBXTextBookmark */; + E5345D561199A417000CB77F = E5345D561199A417000CB77F /* PBXTextBookmark */; + E5345D611199A5D8000CB77F = E5345D611199A5D8000CB77F /* PBXTextBookmark */; + E5345D621199A5D8000CB77F = E5345D621199A5D8000CB77F /* PBXTextBookmark */; + E5345D6B1199A5E7000CB77F = E5345D6B1199A5E7000CB77F /* PBXTextBookmark */; + E5345D6C1199A5E7000CB77F = E5345D6C1199A5E7000CB77F /* PBXTextBookmark */; + E5345D6D1199A5E7000CB77F = E5345D6D1199A5E7000CB77F /* PBXTextBookmark */; + E5345D6E1199A5E7000CB77F = E5345D6E1199A5E7000CB77F /* PBXTextBookmark */; + E5345D7C1199A8B6000CB77F = E5345D7C1199A8B6000CB77F /* PBXTextBookmark */; + E5345D7D1199A8B6000CB77F = E5345D7D1199A8B6000CB77F /* PBXTextBookmark */; + E5345D7E1199A8B6000CB77F = E5345D7E1199A8B6000CB77F /* PBXTextBookmark */; + E5345D871199BD4C000CB77F = E5345D871199BD4C000CB77F /* PBXTextBookmark */; + E5345D881199BD4C000CB77F = E5345D881199BD4C000CB77F /* PBXTextBookmark */; + E5345D891199BD4C000CB77F = E5345D891199BD4C000CB77F /* PBXTextBookmark */; + E5345D8A1199BD4C000CB77F = E5345D8A1199BD4C000CB77F /* PBXTextBookmark */; + E5345D9A1199C02F000CB77F = E5345D9A1199C02F000CB77F /* PBXTextBookmark */; + E5345D9B1199C02F000CB77F = E5345D9B1199C02F000CB77F /* PBXTextBookmark */; + E5345DA21199C1B4000CB77F = E5345DA21199C1B4000CB77F /* PBXTextBookmark */; + E5345DA31199C1B4000CB77F = E5345DA31199C1B4000CB77F /* PBXTextBookmark */; + E5345DA41199C1B4000CB77F = E5345DA41199C1B4000CB77F /* PBXTextBookmark */; + E5345DA51199C1B4000CB77F = E5345DA51199C1B4000CB77F /* PBXTextBookmark */; + E5345DAE119A2CF9000CB77F = E5345DAE119A2CF9000CB77F /* PBXTextBookmark */; + E5345DAF119A2CF9000CB77F = E5345DAF119A2CF9000CB77F /* PBXTextBookmark */; + E5345DB0119A2CF9000CB77F = E5345DB0119A2CF9000CB77F /* PBXTextBookmark */; + E5345DB1119A2CF9000CB77F = E5345DB1119A2CF9000CB77F /* PBXTextBookmark */; + E5345DB2119A2CF9000CB77F = E5345DB2119A2CF9000CB77F /* PBXTextBookmark */; + E5345DD6119A2EF2000CB77F = E5345DD6119A2EF2000CB77F /* PBXTextBookmark */; + E5345DD7119A2EF2000CB77F = E5345DD7119A2EF2000CB77F /* PBXTextBookmark */; + E5345DE1119A2FC5000CB77F = E5345DE1119A2FC5000CB77F /* PBXTextBookmark */; + E5345E16119A3F15000CB77F = E5345E16119A3F15000CB77F /* PBXTextBookmark */; + E5345E17119A3F15000CB77F = E5345E17119A3F15000CB77F /* PBXTextBookmark */; + E5345E18119A3F15000CB77F = E5345E18119A3F15000CB77F /* PBXTextBookmark */; + E5345E19119A3F15000CB77F = E5345E19119A3F15000CB77F /* PBXTextBookmark */; + E5345E1A119A3F15000CB77F = E5345E1A119A3F15000CB77F /* PBXTextBookmark */; + E5345E51119AE2DE000CB77F = E5345E51119AE2DE000CB77F /* PBXTextBookmark */; + E5345E52119AE2DE000CB77F = E5345E52119AE2DE000CB77F /* PBXTextBookmark */; + E5345E53119AE2DE000CB77F = E5345E53119AE2DE000CB77F /* PBXTextBookmark */; + E5345E54119AE2DE000CB77F = E5345E54119AE2DE000CB77F /* PBXTextBookmark */; + E5345E55119AE2DE000CB77F = E5345E55119AE2DE000CB77F /* PBXTextBookmark */; + E5345E56119AE2DE000CB77F = E5345E56119AE2DE000CB77F /* PBXTextBookmark */; + E5345E57119AE2DE000CB77F = E5345E57119AE2DE000CB77F /* PBXTextBookmark */; + E5345E58119AE2DE000CB77F = E5345E58119AE2DE000CB77F /* PBXTextBookmark */; + E5345E59119AE2DE000CB77F = E5345E59119AE2DE000CB77F /* PBXTextBookmark */; + E5345E5E119AE4AD000CB77F = E5345E5E119AE4AD000CB77F /* PBXTextBookmark */; + E5345E5F119AE4AD000CB77F = E5345E5F119AE4AD000CB77F /* PBXTextBookmark */; + E5345E60119AE4AD000CB77F = E5345E60119AE4AD000CB77F /* PBXTextBookmark */; + E5345E65119AE4BB000CB77F = E5345E65119AE4BB000CB77F /* PBXTextBookmark */; + E5345E66119AE4BB000CB77F = E5345E66119AE4BB000CB77F /* PBXTextBookmark */; + E5345E67119AE4BB000CB77F = E5345E67119AE4BB000CB77F /* PBXTextBookmark */; + E5345E68119AE4BB000CB77F = E5345E68119AE4BB000CB77F /* PBXTextBookmark */; + E5345E69119AE4BB000CB77F = E5345E69119AE4BB000CB77F /* PBXTextBookmark */; + E5345E6A119AE4BB000CB77F = E5345E6A119AE4BB000CB77F /* PBXTextBookmark */; + E5345E6B119AE4BB000CB77F = E5345E6B119AE4BB000CB77F /* PBXTextBookmark */; + E5345E6C119AE4BB000CB77F = E5345E6C119AE4BB000CB77F /* PBXTextBookmark */; + E5345E6D119AE4BB000CB77F = E5345E6D119AE4BB000CB77F /* PBXTextBookmark */; + E5345E6E119AE4BB000CB77F = E5345E6E119AE4BB000CB77F /* PBXTextBookmark */; + E5345E74119AE5C4000CB77F = E5345E74119AE5C4000CB77F /* PBXTextBookmark */; + E5345E75119AE5C4000CB77F = E5345E75119AE5C4000CB77F /* PBXTextBookmark */; + E5345E76119AE5C4000CB77F = E5345E76119AE5C4000CB77F /* PBXTextBookmark */; + E5345E77119AE5C4000CB77F = E5345E77119AE5C4000CB77F /* PBXTextBookmark */; + E5345E78119AE5C4000CB77F = E5345E78119AE5C4000CB77F /* PBXTextBookmark */; + E5345E79119AE5C4000CB77F = E5345E79119AE5C4000CB77F /* PBXTextBookmark */; + E5345E7A119AE5C4000CB77F = E5345E7A119AE5C4000CB77F /* PBXTextBookmark */; + E5345E7F119AE66A000CB77F = E5345E7F119AE66A000CB77F /* PBXTextBookmark */; + E5345E8A119AE692000CB77F = E5345E8A119AE692000CB77F /* PBXTextBookmark */; + E5345E9E119AF6FD000CB77F = E5345E9E119AF6FD000CB77F /* PBXTextBookmark */; + E5345E9F119AF6FD000CB77F = E5345E9F119AF6FD000CB77F /* PBXTextBookmark */; + E5345EA0119AF6FD000CB77F = E5345EA0119AF6FD000CB77F /* PBXTextBookmark */; + E5345EA2119AF6FD000CB77F = E5345EA2119AF6FD000CB77F /* PBXTextBookmark */; + E5345EAB119AF74B000CB77F = E5345EAB119AF74B000CB77F /* PBXTextBookmark */; + E5345EAC119AF74B000CB77F = E5345EAC119AF74B000CB77F /* PBXTextBookmark */; + E5345EAE119AF74B000CB77F = E5345EAE119AF74B000CB77F /* PBXTextBookmark */; + E5345EBF119AF8A4000CB77F = E5345EBF119AF8A4000CB77F /* PBXTextBookmark */; + E5345EC0119AF8A4000CB77F = E5345EC0119AF8A4000CB77F /* PBXTextBookmark */; + E5345EC1119AF8A4000CB77F = E5345EC1119AF8A4000CB77F /* PBXTextBookmark */; + E5345EC6119AF8AE000CB77F = E5345EC6119AF8AE000CB77F /* PBXTextBookmark */; + E5345EC7119AF8AE000CB77F = E5345EC7119AF8AE000CB77F /* PBXTextBookmark */; + E5345EC8119AF8AE000CB77F = E5345EC8119AF8AE000CB77F /* PBXTextBookmark */; + E5345EC9119AF8AE000CB77F = E5345EC9119AF8AE000CB77F /* PBXTextBookmark */; + E5345ECA119AF8AE000CB77F = E5345ECA119AF8AE000CB77F /* PBXTextBookmark */; + E5345ECB119AF8AE000CB77F = E5345ECB119AF8AE000CB77F /* PBXTextBookmark */; + E5345ECC119AF8AE000CB77F = E5345ECC119AF8AE000CB77F /* PBXTextBookmark */; + E5345ECD119AF8AE000CB77F = E5345ECD119AF8AE000CB77F /* PBXTextBookmark */; + E5345ECF119AF8AE000CB77F = E5345ECF119AF8AE000CB77F /* PBXTextBookmark */; + E5345ED0119AF8AE000CB77F = E5345ED0119AF8AE000CB77F /* PBXTextBookmark */; + E5345ED1119AF8AE000CB77F = E5345ED1119AF8AE000CB77F /* PBXTextBookmark */; + E5345ED2119AF8AE000CB77F = E5345ED2119AF8AE000CB77F /* PBXTextBookmark */; + E5345ED3119AF8AE000CB77F = E5345ED3119AF8AE000CB77F /* PBXTextBookmark */; + E5345ED4119AF8AE000CB77F = E5345ED4119AF8AE000CB77F /* PBXTextBookmark */; + E5345ED5119AF8AE000CB77F = E5345ED5119AF8AE000CB77F /* PBXTextBookmark */; + E5345F01119B0494000CB77F = E5345F01119B0494000CB77F /* PBXTextBookmark */; + E5345F02119B0494000CB77F = E5345F02119B0494000CB77F /* PBXTextBookmark */; + E5345F03119B0494000CB77F = E5345F03119B0494000CB77F /* PBXTextBookmark */; + E5345F10119B0503000CB77F = E5345F10119B0503000CB77F /* PBXTextBookmark */; + E5345F11119B0503000CB77F = E5345F11119B0503000CB77F /* PBXTextBookmark */; + E5345F12119B0503000CB77F = E5345F12119B0503000CB77F /* PBXTextBookmark */; + E5345F13119B0503000CB77F = E5345F13119B0503000CB77F /* PBXTextBookmark */; + E5345F14119B0503000CB77F = E5345F14119B0503000CB77F /* PBXTextBookmark */; + E5345F15119B0503000CB77F = E5345F15119B0503000CB77F /* PBXTextBookmark */; + E5345F33119B094C000CB77F = E5345F33119B094C000CB77F /* PBXTextBookmark */; + E5345F34119B094C000CB77F = E5345F34119B094C000CB77F /* PBXTextBookmark */; + E5345F35119B094C000CB77F = E5345F35119B094C000CB77F /* PBXTextBookmark */; + E5345F37119B094C000CB77F = E5345F37119B094C000CB77F /* PBXTextBookmark */; + E5345F38119B094C000CB77F = E5345F38119B094C000CB77F /* PBXTextBookmark */; + E5345F39119B094C000CB77F = E5345F39119B094C000CB77F /* PBXTextBookmark */; + E5345F3A119B094C000CB77F = E5345F3A119B094C000CB77F /* PBXTextBookmark */; + E5345F3B119B094C000CB77F = E5345F3B119B094C000CB77F /* PBXTextBookmark */; + E5345F3C119B094C000CB77F = E5345F3C119B094C000CB77F /* PBXTextBookmark */; + E5345F3F119B09E7000CB77F = E5345F3F119B09E7000CB77F /* PBXTextBookmark */; + E5345F40119B09E7000CB77F = E5345F40119B09E7000CB77F /* PBXTextBookmark */; + E5345F41119B09E7000CB77F = E5345F41119B09E7000CB77F /* PBXTextBookmark */; + E5345F43119B09E7000CB77F = E5345F43119B09E7000CB77F /* PBXTextBookmark */; + E5345F49119B09F8000CB77F = E5345F49119B09F8000CB77F /* PBXTextBookmark */; + E5345F72119B12AF000CB77F = E5345F72119B12AF000CB77F /* PBXTextBookmark */; + E5345F73119B12AF000CB77F = E5345F73119B12AF000CB77F /* PBXTextBookmark */; + E5345F74119B12AF000CB77F = E5345F74119B12AF000CB77F /* PBXTextBookmark */; + E5345F89119B13D3000CB77F = E5345F89119B13D3000CB77F /* PBXTextBookmark */; + E5345F8C119B1408000CB77F = E5345F8C119B1408000CB77F /* PBXTextBookmark */; + E5345F93119B1D3A000CB77F = E5345F93119B1D3A000CB77F /* PBXTextBookmark */; + E5345F96119B233D000CB77F = E5345F96119B233D000CB77F /* PBXTextBookmark */; + E5345F9B119B2588000CB77F = E5345F9B119B2588000CB77F /* PBXTextBookmark */; + E5345FA9119B2602000CB77F /* XCBuildMessageTextBookmark */ = E5345FA9119B2602000CB77F /* XCBuildMessageTextBookmark */; + E5345FAC119B2651000CB77F /* PBXTextBookmark */ = E5345FAC119B2651000CB77F /* PBXTextBookmark */; + E5345FAD119B2651000CB77F /* PBXTextBookmark */ = E5345FAD119B2651000CB77F /* PBXTextBookmark */; + E5345FAE119B2651000CB77F /* PBXTextBookmark */ = E5345FAE119B2651000CB77F /* PBXTextBookmark */; + E5345FAF119B2651000CB77F /* PBXTextBookmark */ = E5345FAF119B2651000CB77F /* PBXTextBookmark */; + E5345FB0119B2651000CB77F /* PBXTextBookmark */ = E5345FB0119B2651000CB77F /* PBXTextBookmark */; + E5345FB1119B2651000CB77F /* PBXTextBookmark */ = E5345FB1119B2651000CB77F /* PBXTextBookmark */; + E5345FB6119B2651000CB77F /* PBXTextBookmark */ = E5345FB6119B2651000CB77F /* PBXTextBookmark */; + E5345FBC119B267E000CB77F /* PBXTextBookmark */ = E5345FBC119B267E000CB77F /* PBXTextBookmark */; + E5345FBD119B267E000CB77F /* PBXTextBookmark */ = E5345FBD119B267E000CB77F /* PBXTextBookmark */; + E5345FBF119B2686000CB77F /* XCBuildMessageTextBookmark */ = E5345FBF119B2686000CB77F /* XCBuildMessageTextBookmark */; + E5345FC0119B2686000CB77F /* PBXTextBookmark */ = E5345FC0119B2686000CB77F /* PBXTextBookmark */; + E5345FC5119B26BD000CB77F /* PBXTextBookmark */ = E5345FC5119B26BD000CB77F /* PBXTextBookmark */; + E5345FC6119B26BD000CB77F /* PBXTextBookmark */ = E5345FC6119B26BD000CB77F /* PBXTextBookmark */; + }; + sourceControlManager = E53458871198372D000CB77F /* Source Control */; + userBuildSettings = { + }; + }; + AA747D9E0F9514B9006C5449 /* ZXingWidget_Prefix.pch */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 188}"; + }; + }; + D2AAC07D0554694100DB518D /* ZXingWidget */ = { + activeExec = 0; + }; + E53458871198372D000CB77F /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + E53458881198372D000CB77F /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + E534588911983738000CB77F /* ZXingWidgetController.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 624}}"; + sepNavSelRange = "{1359, 0}"; + sepNavVisRange = "{175, 1219}"; + sepNavWindowFrame = "{{15, 1472}, {821, 803}}"; + }; + }; + E534588A11983738000CB77F /* ZXingWidgetController.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {999, 2158}}"; + sepNavSelRange = "{4730, 0}"; + sepNavVisRange = "{2970, 1853}"; + sepNavWindowFrame = "{{36, 1452}, {821, 803}}"; + }; + }; + E534588B11983738000CB77F /* OverlayView.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{650, 0}"; + sepNavVisRange = "{0, 1091}"; + }; + }; + E534588C11983738000CB77F /* OverlayView.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 2171}}"; + sepNavSelRange = "{1520, 0}"; + sepNavVisRange = "{4096, 972}"; + }; + }; + E534589211983771000CB77F /* Decoder.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 650}}"; + sepNavSelRange = "{801, 0}"; + sepNavVisRange = "{118, 1333}"; + }; + }; + E534589311983771000CB77F /* Decoder.mm */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.cpp.objcpp; + name = Decoder.mm; + path = "/Users/dkavanagh/zxing-ro-mine/iphone/ZXingWidget/Decoder.mm"; + sourceTree = ""; + }; + E53458961198379E000CB77F /* DecoderDelegate.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {964, 530}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1298}"; + }; + }; + E534589C11984A27000CB77F /* TwoDDecoderResult.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 550}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1020}"; + }; + }; + E534589D11984A27000CB77F /* TwoDDecoderResult.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 663}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1125}"; + }; + }; + E53458A011984A3E000CB77F /* FormatReader.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 845}}"; + sepNavSelRange = "{1150, 0}"; + sepNavVisRange = "{561, 906}"; + }; + }; + E53458A111984A3E000CB77F /* MultiFormatReader.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 559}}"; + sepNavSelRange = "{788, 0}"; + sepNavVisRange = "{0, 1208}"; + }; + }; + E53458A211984A3E000CB77F /* FormatReader.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{704, 0}"; + sepNavVisRange = "{0, 1103}"; + }; + }; + E53458C511987396000CB77F /* Counted.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {811, 2535}}"; + sepNavSelRange = "{789, 20}"; + sepNavVisRange = "{176, 683}"; + }; + }; + E53458FB11987396000CB77F /* MultiFormatReader.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 663}}"; + sepNavSelRange = "{1108, 0}"; + sepNavVisRange = "{258, 1476}"; + }; + }; + E53458FC11987396000CB77F /* MultiFormatReader.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{797, 0}"; + sepNavVisRange = "{0, 999}"; + }; + }; + E534593711987396000CB77F /* QRCodeReader.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {811, 1079}}"; + sepNavSelRange = "{1642, 0}"; + sepNavVisRange = "{1225, 789}"; + }; + }; + E534593B11987396000CB77F /* Reader.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 770}"; + }; + }; + E534593C11987396000CB77F /* Reader.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 533}}"; + sepNavSelRange = "{814, 0}"; + sepNavVisRange = "{0, 1017}"; + }; + }; + E534593F11987396000CB77F /* Result.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {811, 780}}"; + sepNavSelRange = "{1319, 0}"; + sepNavVisRange = "{1005, 429}"; + }; + }; + E534594211987396000CB77F /* ResultPoint.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 990}"; + }; + }; + E53459D5119876A5000CB77F /* ResultParser.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{733, 0}"; + sepNavVisRange = "{0, 890}"; + }; + }; + E53459D6119876A5000CB77F /* ResultParser.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 819}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{498, 1077}"; + }; + }; + E53459F8119876A5000CB77F /* ParsedResult.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 530}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 905}"; + }; + }; + E53459F9119876A5000CB77F /* ParsedResult.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 1365}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1084}"; + }; + }; + E5345AB811988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458961198379E000CB77F /* DecoderDelegate.h */; + name = "DecoderDelegate.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 682; + vrLoc = 0; + }; + E5345AB911988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589211983771000CB77F /* Decoder.h */; + name = "Decoder.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1281; + vrLoc = 0; + }; + E5345ABA11988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 28"; + rLen = 0; + rLoc = 790; + rType = 0; + vrLen = 1496; + vrLoc = 356; + }; + E5345ABB11988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1442; + vrLoc = 0; + }; + E5345ABC11988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 128"; + rLen = 0; + rLoc = 4401; + rType = 0; + vrLen = 1461; + vrLoc = 3810; + }; + E5345ABD11988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 18"; + rLen = 0; + rLoc = 659; + rType = 0; + vrLen = 1342; + vrLoc = 0; + }; + E5345ABE11988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458C511987396000CB77F /* Counted.h */; + name = "Counted.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1122; + vrLoc = 176; + }; + E5345ABF11988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 18"; + rLen = 0; + rLoc = 650; + rType = 0; + vrLen = 1146; + vrLoc = 0; + }; + E5345AC011988B53000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 18"; + rLen = 0; + rLoc = 650; + rType = 0; + vrLen = 1146; + vrLoc = 0; + }; + E5345C041198D954000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 9"; + rLen = 0; + rLoc = 272; + rType = 0; + vrLen = 1146; + vrLoc = 0; + }; + E5345C051198DA1C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 24"; + rLen = 0; + rLoc = 762; + rType = 0; + vrLen = 941; + vrLoc = 175; + }; + E5345C061198DA1C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593F11987396000CB77F /* Result.cpp */; + name = "Result.cpp: 50"; + rLen = 0; + rLoc = 1319; + rType = 0; + vrLen = 429; + vrLoc = 1005; + }; + E5345C071198DA1C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 22"; + rLen = 0; + rLoc = 651; + rType = 0; + vrLen = 961; + vrLoc = 0; + }; + E5345C081198DA1C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A211984A3E000CB77F /* FormatReader.h */; + name = "FormatReader.h: 22"; + rLen = 0; + rLoc = 704; + rType = 0; + vrLen = 684; + vrLoc = 287; + }; + E5345C091198DA1C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Control reaches end of non-void function"; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + rLen = 1; + rLoc = 89; + rType = 1; + }; + E5345C0A1198DA1C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 83"; + rLen = 0; + rLoc = 2777; + rType = 0; + vrLen = 821; + vrLoc = 2510; + }; + E5345C301198DC90000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 9"; + rLen = 0; + rLoc = 272; + rType = 0; + vrLen = 1146; + vrLoc = 0; + }; + E5345C631198E1F7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Request for member 'points' in something not a structure or union"; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + rLen = 1; + rLoc = 142; + rType = 1; + }; + E5345C641198E1F7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 131"; + rLen = 0; + rLoc = 4623; + rType = 0; + vrLen = 854; + vrLoc = 4388; + }; + E5345CAA1198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 9"; + rLen = 0; + rLoc = 272; + rType = 0; + vrLen = 1146; + vrLoc = 0; + }; + E5345CAB1198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 26"; + rLen = 23; + rLoc = 797; + rType = 0; + vrLen = 1342; + vrLoc = 0; + }; + E5345CAC1198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589C11984A27000CB77F /* TwoDDecoderResult.h */; + name = "TwoDDecoderResult.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1020; + vrLoc = 0; + }; + E5345CAD1198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + name = "MultiFormatReader.cpp: 34"; + rLen = 0; + rLoc = 1256; + rType = 0; + vrLen = 1584; + vrLoc = 0; + }; + E5345CAE1198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FC11987396000CB77F /* MultiFormatReader.h */; + name = "MultiFormatReader.h: 25"; + rLen = 0; + rLoc = 797; + rType = 0; + vrLen = 999; + vrLoc = 0; + }; + E5345CAF1198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = AA747D9E0F9514B9006C5449 /* ZXingWidget_Prefix.pch */; + name = "ZXingWidget_Prefix.pch: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 188; + vrLoc = 0; + }; + E5345CB01198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 127"; + rLen = 0; + rLoc = 4622; + rType = 0; + vrLen = 1400; + vrLoc = 3815; + }; + E5345CB11198EE8B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 33"; + rLen = 0; + rLoc = 972; + rType = 0; + vrLen = 1128; + vrLoc = 0; + }; + E5345CB71198F0C9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 128"; + rLen = 0; + rLoc = 4623; + rType = 0; + vrLen = 900; + vrLoc = 4257; + }; + E5345CB81198F0C9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Stray '@' in program"; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + rLen = 1; + rLoc = 31; + rType = 1; + }; + E5345CB91198F0C9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + name = "MultiFormatReader.cpp: 32"; + rLen = 0; + rLoc = 1108; + rType = 0; + vrLen = 867; + vrLoc = 871; + }; + E5345CC01198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FC11987396000CB77F /* MultiFormatReader.h */; + name = "MultiFormatReader.h: 25"; + rLen = 0; + rLoc = 797; + rType = 0; + vrLen = 999; + vrLoc = 0; + }; + E5345CC11198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 127"; + rLen = 0; + rLoc = 4622; + rType = 0; + vrLen = 1400; + vrLoc = 3815; + }; + E5345CC21198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589211983771000CB77F /* Decoder.h */; + name = "Decoder.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1330; + vrLoc = 121; + }; + E5345CC31198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 140"; + rLen = 0; + rLoc = 4795; + rType = 0; + vrLen = 1168; + vrLoc = 4408; + }; + E5345CC41198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A211984A3E000CB77F /* FormatReader.h */; + name = "FormatReader.h: 22"; + rLen = 0; + rLoc = 704; + rType = 0; + vrLen = 1103; + vrLoc = 0; + }; + E5345CC51198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A011984A3E000CB77F /* FormatReader.mm */; + name = "FormatReader.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 933; + vrLoc = 485; + }; + E5345CC61198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 19"; + rLen = 0; + rLoc = 674; + rType = 0; + vrLen = 1122; + vrLoc = 0; + }; + E5345CC71198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Stray '@' in program"; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + rLen = 1; + rLoc = 31; + rType = 1; + }; + E5345CC81198F0F2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + name = "MultiFormatReader.cpp: 32"; + rLen = 0; + rLoc = 1108; + rType = 0; + vrLen = 1532; + vrLoc = 258; + }; + E5345CCF1198F149000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + name = "MultiFormatReader.cpp: 32"; + rLen = 0; + rLoc = 1108; + rType = 0; + vrLen = 1476; + vrLoc = 258; + }; + E5345CD01198F149000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 140"; + rLen = 0; + rLoc = 4795; + rType = 0; + vrLen = 1168; + vrLoc = 4408; + }; + E5345CD11198F149000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 140"; + rLen = 0; + rLoc = 4795; + rType = 0; + vrLen = 1168; + vrLoc = 4408; + }; + E5345CDC1198F18D000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 140"; + rLen = 0; + rLoc = 4795; + rType = 0; + vrLen = 1168; + vrLoc = 4408; + }; + E5345CDD1198F18D000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 129"; + rLen = 0; + rLoc = 4777; + rType = 0; + vrLen = 1576; + vrLoc = 3306; + }; + E5345CE4119984D5000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 129"; + rLen = 0; + rLoc = 4777; + rType = 0; + vrLen = 1576; + vrLoc = 3306; + }; + E5345CE5119984D5000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 137"; + rLen = 0; + rLoc = 4654; + rType = 0; + vrLen = 1158; + vrLoc = 3758; + }; + E5345CF811999BBF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 137"; + rLen = 0; + rLoc = 4654; + rType = 0; + vrLen = 1158; + vrLoc = 3758; + }; + E5345CF911999BBF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 129"; + rLen = 0; + rLoc = 4777; + rType = 0; + vrLen = 1576; + vrLoc = 3306; + }; + E5345CFA11999BBF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 26"; + rLen = 23; + rLoc = 797; + rType = 0; + vrLen = 1342; + vrLoc = 0; + }; + E5345CFB11999BBF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 22"; + rLen = 0; + rLoc = 783; + rType = 0; + vrLen = 858; + vrLoc = 0; + }; + E5345CFC11999BBF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 147"; + rLen = 0; + rLoc = 4938; + rType = 0; + vrLen = 1399; + vrLoc = 0; + }; + E5345CFD11999BBF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 104"; + rLen = 0; + rLoc = 3764; + rType = 0; + vrLen = 1469; + vrLoc = 2483; + }; + E5345D0411999D37000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 29"; + rLen = 0; + rLoc = 1036; + rType = 0; + vrLen = 859; + vrLoc = 0; + }; + E5345D0511999D37000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 27"; + rLen = 6; + rLoc = 724; + rType = 0; + vrLen = 1506; + vrLoc = 218; + }; + E5345D0611999D37000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 27"; + rLen = 6; + rLoc = 724; + rType = 0; + vrLen = 1418; + vrLoc = 344; + }; + E5345D0B11999D92000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 43"; + rLen = 0; + rLoc = 1428; + rType = 0; + vrLen = 1585; + vrLoc = 1864; + }; + E5345D1E11999E6F000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 36"; + rLen = 0; + rLoc = 1079; + rType = 0; + vrLen = 1364; + vrLoc = 1276; + }; + E5345D2511999F1D000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + name = "MultiFormatReader.cpp: 32"; + rLen = 0; + rLoc = 1108; + rType = 0; + vrLen = 813; + vrLoc = 871; + }; + E5345D2611999F1D000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Implicit declaration of function 'UIGetScreenImage'"; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + rLen = 1; + rLoc = 92; + rType = 1; + }; + E5345D2711999F1D000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 85"; + rLen = 0; + rLoc = 2821; + rType = 0; + vrLen = 832; + vrLoc = 2776; + }; + E5345D321199A033000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 36"; + rLen = 0; + rLoc = 1079; + rType = 0; + vrLen = 1554; + vrLoc = 1047; + }; + E5345D331199A033000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 137"; + rLen = 0; + rLoc = 4654; + rType = 0; + vrLen = 1119; + vrLoc = 3797; + }; + E5345D341199A033000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 30"; + rLen = 0; + rLoc = 942; + rType = 0; + vrLen = 1343; + vrLoc = 0; + }; + E5345D351199A033000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 108"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1451; + vrLoc = 2972; + }; + E5345D361199A033000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 108"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1451; + vrLoc = 2972; + }; + E5345D391199A033000CB77F /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + }; + E5345D3A1199A033000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 108"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1940; + vrLoc = 2812; + }; + E5345D451199A26A000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 108"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1700; + vrLoc = 963; + }; + E5345D461199A26A000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 29"; + rLen = 0; + rLoc = 1036; + rType = 0; + vrLen = 859; + vrLoc = 0; + }; + E5345D471199A26A000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 158"; + rLen = 0; + rLoc = 5033; + rType = 0; + vrLen = 1003; + vrLoc = 4183; + }; + E5345D481199A26A000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 108"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1951; + vrLoc = 2776; + }; + E5345D551199A417000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 40"; + rLen = 0; + rLoc = 1383; + rType = 0; + vrLen = 1410; + vrLoc = 1045; + }; + E5345D561199A417000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 108"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1951; + vrLoc = 2776; + }; + E5345D611199A5D8000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Expected expression before '=' token"; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + rLen = 1; + rLoc = 84; + rType = 1; + }; + E5345D621199A5D8000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 72"; + rLen = 0; + rLoc = 2602; + rType = 0; + vrLen = 740; + vrLoc = 1955; + }; + E5345D6B1199A5E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 36"; + rLen = 0; + rLoc = 1079; + rType = 0; + vrLen = 1407; + vrLoc = 1045; + }; + E5345D6C1199A5E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Expected expression before '=' token"; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + rLen = 1; + rLoc = 84; + rType = 1; + }; + E5345D6D1199A5E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 27"; + rLen = 0; + rLoc = 889; + rType = 0; + vrLen = 1246; + vrLoc = 0; + }; + E5345D6E1199A5E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 103"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1722; + vrLoc = 1616; + }; + E5345D7C1199A8B6000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 27"; + rLen = 0; + rLoc = 889; + rType = 0; + vrLen = 1246; + vrLoc = 0; + }; + E5345D7D1199A8B6000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 84"; + rLen = 0; + rLoc = 3241; + rType = 0; + vrLen = 1442; + vrLoc = 2139; + }; + E5345D7E1199A8B6000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 103"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1726; + vrLoc = 1616; + }; + E5345D871199BD4C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 84"; + rLen = 0; + rLoc = 3241; + rType = 0; + vrLen = 1442; + vrLoc = 2139; + }; + E5345D881199BD4C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 36"; + rLen = 0; + rLoc = 1079; + rType = 0; + vrLen = 1428; + vrLoc = 1024; + }; + E5345D891199BD4C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 72"; + rLen = 0; + rLoc = 2425; + rType = 0; + vrLen = 1344; + vrLoc = 1817; + }; + E5345D8A1199BD4C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 103"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1726; + vrLoc = 1616; + }; + E5345D9A1199C02F000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 38"; + rLen = 0; + rLoc = 1242; + rType = 0; + vrLen = 1357; + vrLoc = 560; + }; + E5345D9B1199C02F000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 103"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1726; + vrLoc = 1616; + }; + E5345DA21199C1B4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 84"; + rLen = 0; + rLoc = 3241; + rType = 0; + vrLen = 1288; + vrLoc = 777; + }; + E5345DA31199C1B4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 30"; + rLen = 0; + rLoc = 764; + rType = 0; + vrLen = 1355; + vrLoc = 560; + }; + E5345DA41199C1B4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 38"; + rLen = 0; + rLoc = 1239; + rType = 0; + vrLen = 1355; + vrLoc = 560; + }; + E5345DA51199C1B4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 103"; + rLen = 0; + rLoc = 3932; + rType = 0; + vrLen = 1726; + vrLoc = 1616; + }; + E5345DAE119A2CF9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 31"; + rLen = 0; + rLoc = 1019; + rType = 0; + vrLen = 1398; + vrLoc = 0; + }; + E5345DAF119A2CF9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 28"; + rLen = 0; + rLoc = 951; + rType = 0; + vrLen = 928; + vrLoc = 0; + }; + E5345DB0119A2CF9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 32"; + rLen = 0; + rLoc = 871; + rType = 0; + vrLen = 1402; + vrLoc = 560; + }; + E5345DB1119A2CF9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 44"; + rLen = 0; + rLoc = 1522; + rType = 0; + vrLen = 1449; + vrLoc = 2012; + }; + E5345DB2119A2CF9000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 44"; + rLen = 0; + rLoc = 1522; + rType = 0; + vrLen = 1449; + vrLoc = 2012; + }; + E5345DD6119A2EF2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 44"; + rLen = 0; + rLoc = 1522; + rType = 0; + vrLen = 1470; + vrLoc = 1991; + }; + E5345DD7119A2EF2000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 42"; + rLen = 0; + rLoc = 1361; + rType = 0; + vrLen = 1169; + vrLoc = 107; + }; + E5345DE1119A2FC5000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 37"; + rLen = 0; + rLoc = 1234; + rType = 0; + vrLen = 1167; + vrLoc = 107; + }; + E5345E16119A3F15000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 39"; + rLen = 19; + rLoc = 1068; + rType = 0; + vrLen = 1091; + vrLoc = 0; + }; + E5345E17119A3F15000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 23"; + rLen = 0; + rLoc = 711; + rType = 0; + vrLen = 1129; + vrLoc = 560; + }; + E5345E18119A3F15000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 25"; + rLen = 0; + rLoc = 853; + rType = 0; + vrLen = 1203; + vrLoc = 175; + }; + E5345E19119A3F15000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 56"; + rLen = 0; + rLoc = 1970; + rType = 0; + vrLen = 1235; + vrLoc = 729; + }; + E5345E1A119A3F15000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 36"; + rLen = 0; + rLoc = 1157; + rType = 0; + vrLen = 1222; + vrLoc = 729; + }; + E5345E51119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588B11983738000CB77F /* OverlayView.h */; + name = "OverlayView.h: 20"; + rLen = 0; + rLoc = 650; + rType = 0; + vrLen = 1091; + vrLoc = 0; + }; + E5345E52119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 47"; + rLen = 0; + rLoc = 1520; + rType = 0; + vrLen = 1126; + vrLoc = 594; + }; + E5345E53119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459F8119876A5000CB77F /* ParsedResult.h */; + name = "ParsedResult.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 905; + vrLoc = 0; + }; + E5345E54119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459D6119876A5000CB77F /* ResultParser.m */; + name = "ResultParser.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1077; + vrLoc = 498; + }; + E5345E55119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459D5119876A5000CB77F /* ResultParser.h */; + name = "ResultParser.h: 25"; + rLen = 0; + rLoc = 733; + rType = 0; + vrLen = 906; + vrLoc = 0; + }; + E5345E56119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 32"; + rLen = 0; + rLoc = 1019; + rType = 0; + vrLen = 1218; + vrLoc = 175; + }; + E5345E57119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 58"; + rLen = 0; + rLoc = 1943; + rType = 0; + vrLen = 1294; + vrLoc = 985; + }; + E5345E58119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 137"; + rLen = 0; + rLoc = 4654; + rType = 0; + vrLen = 1219; + vrLoc = 3889; + }; + E5345E59119AE2DE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 137"; + rLen = 0; + rLoc = 4621; + rType = 0; + vrLen = 1221; + vrLoc = 3889; + }; + E5345E5E119AE4AD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 84"; + rLen = 0; + rLoc = 2602; + rType = 0; + vrLen = 789; + vrLoc = 2738; + }; + E5345E5F119AE4AD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Base operand of '->' has non-pointer type 'std::vector, std::allocator > >'"; + fRef = E534593711987396000CB77F /* QRCodeReader.cpp */; + rLen = 1; + rLoc = 55; + rType = 1; + }; + E5345E60119AE4AD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593711987396000CB77F /* QRCodeReader.cpp */; + name = "QRCodeReader.cpp: 57"; + rLen = 0; + rLoc = 1642; + rType = 0; + vrLen = 778; + vrLoc = 1225; + }; + E5345E65119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458961198379E000CB77F /* DecoderDelegate.h */; + name = "DecoderDelegate.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1298; + vrLoc = 0; + }; + E5345E66119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A211984A3E000CB77F /* FormatReader.h */; + name = "FormatReader.h: 22"; + rLen = 0; + rLoc = 704; + rType = 0; + vrLen = 1103; + vrLoc = 0; + }; + E5345E67119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593C11987396000CB77F /* Reader.h */; + name = "Reader.h: 27"; + rLen = 0; + rLoc = 814; + rType = 0; + vrLen = 1017; + vrLoc = 0; + }; + E5345E68119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589211983771000CB77F /* Decoder.h */; + name = "Decoder.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1333; + vrLoc = 118; + }; + E5345E69119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 32"; + rLen = 0; + rLoc = 972; + rType = 0; + vrLen = 1137; + vrLoc = 0; + }; + E5345E6A119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459F8119876A5000CB77F /* ParsedResult.h */; + name = "ParsedResult.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 905; + vrLoc = 0; + }; + E5345E6B119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459F9119876A5000CB77F /* ParsedResult.m */; + name = "ParsedResult.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1084; + vrLoc = 0; + }; + E5345E6C119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459D5119876A5000CB77F /* ResultParser.h */; + name = "ResultParser.h: 24"; + rLen = 0; + rLoc = 733; + rType = 0; + vrLen = 890; + vrLoc = 0; + }; + E5345E6D119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Base operand of '->' has non-pointer type 'std::vector, std::allocator > >'"; + fRef = E534593711987396000CB77F /* QRCodeReader.cpp */; + rLen = 1; + rLoc = 55; + rType = 1; + }; + E5345E6E119AE4BB000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593711987396000CB77F /* QRCodeReader.cpp */; + name = "QRCodeReader.cpp: 44"; + rLen = 0; + rLoc = 1220; + rType = 0; + vrLen = 1278; + vrLoc = 991; + }; + E5345E74119AE5C4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593711987396000CB77F /* QRCodeReader.cpp */; + name = "QRCodeReader.cpp: 54"; + rLen = 0; + rLoc = 1482; + rType = 0; + vrLen = 1278; + vrLoc = 991; + }; + E5345E75119AE5C4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459D5119876A5000CB77F /* ResultParser.h */; + name = "ResultParser.h: 24"; + rLen = 0; + rLoc = 733; + rType = 0; + vrLen = 890; + vrLoc = 0; + }; + E5345E76119AE5C4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53459D6119876A5000CB77F /* ResultParser.m */; + name = "ResultParser.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1077; + vrLoc = 498; + }; + E5345E77119AE5C4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 32"; + rLen = 0; + rLoc = 972; + rType = 0; + vrLen = 1727; + vrLoc = 1966; + }; + E5345E78119AE5C4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588C11983738000CB77F /* OverlayView.m */; + name = "OverlayView.m: 47"; + rLen = 0; + rLoc = 1520; + rType = 0; + vrLen = 972; + vrLoc = 4096; + }; + E5345E79119AE5C4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 58"; + rLen = 0; + rLoc = 1943; + rType = 0; + vrLen = 1287; + vrLoc = 2240; + }; + E5345E7A119AE5C4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 96"; + rLen = 0; + rLoc = 3260; + rType = 0; + vrLen = 1282; + vrLoc = 2240; + }; + E5345E7F119AE66A000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 97"; + rLen = 0; + rLoc = 3154; + rType = 0; + vrLen = 1342; + vrLoc = 2240; + }; + E5345E8A119AE692000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 97"; + rLen = 0; + rLoc = 3194; + rType = 0; + vrLen = 1388; + vrLoc = 2240; + }; + E5345E9E119AF6FD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593711987396000CB77F /* QRCodeReader.cpp */; + name = "QRCodeReader.cpp: 57"; + rLen = 0; + rLoc = 1642; + rType = 0; + vrLen = 778; + vrLoc = 1225; + }; + E5345E9F119AF6FD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458C511987396000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 20; + rLoc = 789; + rType = 0; + vrLen = 683; + vrLoc = 176; + }; + E5345EA0119AF6FD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Iostream: No such file or directory"; + fRef = E5345EA1119AF6FD000CB77F /* Counted.h */; + rLen = 1; + rLoc = 26; + rType = 1; + }; + E5345EA1119AF6FD000CB77F /* Counted.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = Counted.h; + path = ../../cpp/core/src/zxing/common/Counted.h; + sourceTree = ""; + }; + E5345EA2119AF6FD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458C511987396000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 20; + rLoc = 789; + rType = 0; + vrLen = 683; + vrLoc = 176; + }; + E5345EAB119AF74B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345EA1119AF6FD000CB77F /* Counted.h */; + name = "Counted.h: 33"; + rLen = 18; + rLoc = 860; + rType = 0; + vrLen = 406; + vrLoc = 735; + }; + E5345EAC119AF74B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Iostream: No such file or directory"; + fRef = E5345EAD119AF74B000CB77F /* Counted.h */; + rLen = 1; + rLoc = 26; + rType = 1; + }; + E5345EAD119AF74B000CB77F /* Counted.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = Counted.h; + path = ../../cpp/core/src/zxing/common/Counted.h; + sourceTree = ""; + }; + E5345EAE119AF74B000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345EA1119AF6FD000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 20; + rLoc = 789; + rType = 0; + vrLen = 540; + vrLoc = 411; + }; + E5345EB9119AF88B000CB77F /* MultiFormatReader.h */ = { + isa = PBXFileReference; + fileEncoding = 4; + lastKnownFileType = sourcecode.c.h; + name = MultiFormatReader.h; + path = "/Users/dkavanagh/zxing-ro-mine/iphone/ZXingWidget/MultiFormatReader.h"; + sourceTree = ""; + }; + E5345EBF119AF8A4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345EAD119AF74B000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 20; + rLoc = 789; + rType = 0; + vrLen = 540; + vrLoc = 411; + }; + E5345EC0119AF8A4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Expected unqualified-id before '+' token"; + fRef = E5345EB9119AF88B000CB77F /* MultiFormatReader.h */; + rLen = 1; + rLoc = 25; + rType = 1; + }; + E5345EC1119AF8A4000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345EB9119AF88B000CB77F /* MultiFormatReader.h */; + name = "MultiFormatReader.h: 27"; + rLen = 0; + rLoc = 766; + rType = 0; + vrLen = 686; + vrLoc = 80; + }; + E5345EC6119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593B11987396000CB77F /* Reader.cpp */; + name = "Reader.cpp: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 770; + vrLoc = 0; + }; + E5345EC7119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534593C11987396000CB77F /* Reader.h */; + name = "Reader.h: 27"; + rLen = 0; + rLoc = 814; + rType = 0; + vrLen = 1017; + vrLoc = 0; + }; + E5345EC8119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FC11987396000CB77F /* MultiFormatReader.h */; + name = "MultiFormatReader.h: 25"; + rLen = 0; + rLoc = 797; + rType = 0; + vrLen = 999; + vrLoc = 0; + }; + E5345EC9119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; + name = "MultiFormatReader.cpp: 32"; + rLen = 0; + rLoc = 1108; + rType = 0; + vrLen = 1476; + vrLoc = 258; + }; + E5345ECA119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589211983771000CB77F /* Decoder.h */; + name = "Decoder.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1330; + vrLoc = 121; + }; + E5345ECB119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 21"; + rLen = 0; + rLoc = 734; + rType = 0; + vrLen = 1180; + vrLoc = 218; + }; + E5345ECC119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A211984A3E000CB77F /* FormatReader.h */; + name = "FormatReader.h: 22"; + rLen = 0; + rLoc = 704; + rType = 0; + vrLen = 1103; + vrLoc = 0; + }; + E5345ECD119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Iostream: No such file or directory"; + fRef = E5345ECE119AF8AE000CB77F /* Counted.h */; + rLen = 1; + rLoc = 26; + rType = 1; + }; + E5345ECE119AF8AE000CB77F /* Counted.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = Counted.h; + path = ../../cpp/core/src/zxing/common/Counted.h; + sourceTree = ""; + }; + E5345ECF119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345EAD119AF74B000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 20; + rLoc = 789; + rType = 0; + vrLen = 1014; + vrLoc = 0; + }; + E5345ED0119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 25"; + rLen = 0; + rLoc = 801; + rType = 0; + vrLen = 1414; + vrLoc = 107; + }; + E5345ED1119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A011984A3E000CB77F /* FormatReader.mm */; + name = "FormatReader.mm: 42"; + rLen = 0; + rLoc = 1150; + rType = 0; + vrLen = 1023; + vrLoc = 416; + }; + E5345ED2119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 166"; + rLen = 0; + rLoc = 5573; + rType = 0; + vrLen = 1544; + vrLoc = 4803; + }; + E5345ED3119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 39"; + rLen = 0; + rLoc = 1208; + rType = 0; + vrLen = 1102; + vrLoc = 0; + }; + E5345ED4119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Expected unqualified-id before '+' token"; + fRef = E5345EB9119AF88B000CB77F /* MultiFormatReader.h */; + rLen = 1; + rLoc = 25; + rType = 1; + }; + E5345ED5119AF8AE000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345EB9119AF88B000CB77F /* MultiFormatReader.h */; + name = "MultiFormatReader.h: 25"; + rLen = 0; + rLoc = 747; + rType = 0; + vrLen = 766; + vrLoc = 0; + }; + E5345F01119B0494000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345ECE119AF8AE000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 20; + rLoc = 789; + rType = 0; + vrLen = 372; + vrLoc = 735; + }; + E5345F02119B0494000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "No super class declared in @interface for 'MultiFormatReader'"; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + rLen = 1; + rLoc = 38; + rType = 1; + }; + E5345F03119B0494000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 39"; + rLen = 0; + rLoc = 1160; + rType = 0; + vrLen = 550; + vrLoc = 637; + }; + E5345F10119B0503000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534594211987396000CB77F /* ResultPoint.h */; + name = "ResultPoint.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 990; + vrLoc = 0; + }; + E5345F11119B0503000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A211984A3E000CB77F /* FormatReader.h */; + name = "FormatReader.h: 22"; + rLen = 0; + rLoc = 704; + rType = 0; + vrLen = 1103; + vrLoc = 0; + }; + E5345F12119B0503000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A011984A3E000CB77F /* FormatReader.mm */; + name = "FormatReader.mm: 41"; + rLen = 0; + rLoc = 1150; + rType = 0; + vrLen = 906; + vrLoc = 561; + }; + E5345F13119B0503000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589311983771000CB77F /* Decoder.mm */; + name = "Decoder.mm: 153"; + rLen = 0; + rLoc = 4929; + rType = 0; + vrLen = 1302; + vrLoc = 4739; + }; + E5345F14119B0503000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 18"; + rLen = 0; + rLoc = 670; + rType = 0; + vrLen = 1203; + vrLoc = 0; + }; + E5345F15119B0503000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 18"; + rLen = 0; + rLoc = 670; + rType = 0; + vrLen = 1205; + vrLoc = 3; + }; + E5345F2B119B0762000CB77F /* Decoder.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {908, 3549}}"; + sepNavSelRange = "{996, 0}"; + sepNavVisRange = "{572, 1387}"; + }; + }; + E5345F33119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589D11984A27000CB77F /* TwoDDecoderResult.m */; + name = "TwoDDecoderResult.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1089; + vrLoc = 0; + }; + E5345F34119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458961198379E000CB77F /* DecoderDelegate.h */; + name = "DecoderDelegate.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1298; + vrLoc = 0; + }; + E5345F35119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Iostream: No such file or directory"; + fRef = E5345F36119B094C000CB77F /* Counted.h */; + rLen = 1; + rLoc = 26; + rType = 1; + }; + E5345F36119B094C000CB77F /* Counted.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = Counted.h; + path = ../../cpp/core/src/zxing/common/Counted.h; + sourceTree = ""; + }; + E5345F37119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345ECE119AF8AE000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 0; + rLoc = 799; + rType = 0; + vrLen = 1085; + vrLoc = 246; + }; + E5345F38119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 25"; + rLen = 0; + rLoc = 801; + rType = 0; + vrLen = 1414; + vrLoc = 107; + }; + E5345F39119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589211983771000CB77F /* Decoder.h */; + name = "Decoder.h: 28"; + rLen = 0; + rLoc = 801; + rType = 0; + vrLen = 1333; + vrLoc = 118; + }; + E5345F3A119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345F2B119B0762000CB77F /* Decoder.mm */; + name = "Decoder.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1664; + vrLoc = 1746; + }; + E5345F3B119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 18"; + rLen = 0; + rLoc = 670; + rType = 0; + vrLen = 1203; + vrLoc = 0; + }; + E5345F3C119B094C000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1205; + vrLoc = 3; + }; + E5345F3F119B09E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 39"; + rLen = 0; + rLoc = 1160; + rType = 0; + vrLen = 565; + vrLoc = 637; + }; + E5345F40119B09E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345ECE119AF8AE000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 0; + rLoc = 799; + rType = 0; + vrLen = 372; + vrLoc = 735; + }; + E5345F41119B09E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Iostream: No such file or directory"; + fRef = E5345F42119B09E7000CB77F /* Counted.h */; + rLen = 1; + rLoc = 26; + rType = 1; + }; + E5345F42119B09E7000CB77F /* Counted.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = Counted.h; + path = ../../cpp/core/src/zxing/common/Counted.h; + sourceTree = ""; + }; + E5345F43119B09E7000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345F36119B094C000CB77F /* Counted.h */; + name = "Counted.h: 27"; + rLen = 20; + rLoc = 789; + rType = 0; + vrLen = 372; + vrLoc = 735; + }; + E5345F49119B09F8000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1205; + vrLoc = 3; + }; + E5345F72119B12AF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E5345F2B119B0762000CB77F /* Decoder.mm */; + name = "Decoder.mm: 34"; + rLen = 0; + rLoc = 996; + rType = 0; + vrLen = 1387; + vrLoc = 572; + }; + E5345F73119B12AF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1208; + vrLoc = 0; + }; + E5345F74119B12AF000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1203; + vrLoc = 0; + }; + E5345F89119B13D3000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1203; + vrLoc = 0; + }; + E5345F8C119B1408000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1203; + vrLoc = 0; + }; + E5345F93119B1D3A000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1203; + vrLoc = 0; + }; + E5345F96119B233D000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1203; + vrLoc = 0; + }; + E5345F9B119B2588000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1205; + vrLoc = 3; + }; + E5345FA9119B2602000CB77F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Incompatible Objective-C types 'struct TwoDDecoderResult *', expected 'struct ParsedResult *' when passing argument 1 of 'scanResult:' from distinct Objective-C type"; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 141; + rType = 1; + }; + E5345FAC119B2651000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; + name = "MultiFormatReader.mm: 27"; + rLen = 0; + rLoc = 788; + rType = 0; + vrLen = 1208; + vrLoc = 0; + }; + E5345FAD119B2651000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589D11984A27000CB77F /* TwoDDecoderResult.m */; + name = "TwoDDecoderResult.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1125; + vrLoc = 0; + }; + E5345FAE119B2651000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534589C11984A27000CB77F /* TwoDDecoderResult.h */; + name = "TwoDDecoderResult.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1020; + vrLoc = 0; + }; + E5345FAF119B2651000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588911983738000CB77F /* ZXingWidgetController.h */; + name = "ZXingWidgetController.h: 45"; + rLen = 0; + rLoc = 1359; + rType = 0; + vrLen = 1219; + vrLoc = 175; + }; + E5345FB0119B2651000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 35"; + rLen = 0; + rLoc = 1102; + rType = 0; + vrLen = 1515; + vrLoc = 40; + }; + E5345FB1119B2651000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 35"; + rLen = 0; + rLoc = 1102; + rType = 0; + vrLen = 1340; + vrLoc = 1305; + }; + E5345FB6119B2651000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 141"; + rLen = 0; + rLoc = 4730; + rType = 0; + vrLen = 1636; + vrLoc = 3642; + }; + E5345FBC119B267E000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 36"; + rLen = 0; + rLoc = 1102; + rType = 0; + vrLen = 1403; + vrLoc = 895; + }; + E5345FBD119B267E000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 142"; + rLen = 0; + rLoc = 4730; + rType = 0; + vrLen = 1881; + vrLoc = 2970; + }; + E5345FBF119B2686000CB77F /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "Format not a string literal and no format arguments"; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 1; + rLoc = 106; + rType = 1; + }; + E5345FC0119B2686000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 107"; + rLen = 0; + rLoc = 3410; + rType = 0; + vrLen = 849; + vrLoc = 2970; + }; + E5345FC5119B26BD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 107"; + rLen = 0; + rLoc = 3545; + rType = 0; + vrLen = 1515; + vrLoc = 2382; + }; + E5345FC6119B26BD000CB77F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; + name = "ZXingWidgetController.m: 142"; + rLen = 0; + rLoc = 4730; + rType = 0; + vrLen = 1853; + vrLoc = 2970; + }; +} diff --git a/iphone/ZXingWidget/ZXingWidget.xcodeproj/project.pbxproj b/iphone/ZXingWidget/ZXingWidget.xcodeproj/project.pbxproj new file mode 100644 index 000000000..8ac1aa4df --- /dev/null +++ b/iphone/ZXingWidget/ZXingWidget.xcodeproj/project.pbxproj @@ -0,0 +1,1184 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + AA747D9F0F9514B9006C5449 /* ZXingWidget_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* ZXingWidget_Prefix.pch */; }; + AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; + E534588D11983738000CB77F /* ZXingWidgetController.h in Headers */ = {isa = PBXBuildFile; fileRef = E534588911983738000CB77F /* ZXingWidgetController.h */; }; + E534588E11983738000CB77F /* ZXingWidgetController.m in Sources */ = {isa = PBXBuildFile; fileRef = E534588A11983738000CB77F /* ZXingWidgetController.m */; }; + E534588F11983738000CB77F /* OverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = E534588B11983738000CB77F /* OverlayView.h */; }; + E534589011983738000CB77F /* OverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = E534588C11983738000CB77F /* OverlayView.m */; }; + E534589411983771000CB77F /* Decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E534589211983771000CB77F /* Decoder.h */; }; + E53458971198379E000CB77F /* DecoderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458961198379E000CB77F /* DecoderDelegate.h */; }; + E534589E11984A27000CB77F /* TwoDDecoderResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E534589C11984A27000CB77F /* TwoDDecoderResult.h */; }; + E534589F11984A27000CB77F /* TwoDDecoderResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E534589D11984A27000CB77F /* TwoDDecoderResult.m */; }; + E53458A311984A3E000CB77F /* FormatReader.mm in Sources */ = {isa = PBXBuildFile; fileRef = E53458A011984A3E000CB77F /* FormatReader.mm */; }; + E53458A411984A3E000CB77F /* MultiFormatReader.mm in Sources */ = {isa = PBXBuildFile; fileRef = E53458A111984A3E000CB77F /* MultiFormatReader.mm */; }; + E53458A511984A3E000CB77F /* FormatReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458A211984A3E000CB77F /* FormatReader.h */; }; + E534594311987396000CB77F /* BarcodeFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458B511987396000CB77F /* BarcodeFormat.cpp */; }; + E534594411987396000CB77F /* BarcodeFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458B611987396000CB77F /* BarcodeFormat.h */; }; + E534594511987396000CB77F /* Binarizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458B711987396000CB77F /* Binarizer.cpp */; }; + E534594611987396000CB77F /* Binarizer.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458B811987396000CB77F /* Binarizer.h */; }; + E534594711987396000CB77F /* BinaryBitmap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458B911987396000CB77F /* BinaryBitmap.cpp */; }; + E534594811987396000CB77F /* BinaryBitmap.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458BA11987396000CB77F /* BinaryBitmap.h */; }; + E534594911987396000CB77F /* Array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458BC11987396000CB77F /* Array.cpp */; }; + E534594A11987396000CB77F /* Array.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458BD11987396000CB77F /* Array.h */; }; + E534594B11987396000CB77F /* BitArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458BE11987396000CB77F /* BitArray.cpp */; }; + E534594C11987396000CB77F /* BitArray.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458BF11987396000CB77F /* BitArray.h */; }; + E534594D11987396000CB77F /* BitMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458C011987396000CB77F /* BitMatrix.cpp */; }; + E534594E11987396000CB77F /* BitMatrix.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458C111987396000CB77F /* BitMatrix.h */; }; + E534594F11987396000CB77F /* BitSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458C211987396000CB77F /* BitSource.cpp */; }; + E534595011987396000CB77F /* BitSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458C311987396000CB77F /* BitSource.h */; }; + E534595111987396000CB77F /* Counted.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458C411987396000CB77F /* Counted.cpp */; }; + E534595211987396000CB77F /* Counted.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458C511987396000CB77F /* Counted.h */; }; + E534595311987396000CB77F /* DecoderResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458C611987396000CB77F /* DecoderResult.cpp */; }; + E534595411987396000CB77F /* DecoderResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458C711987396000CB77F /* DecoderResult.h */; }; + E534595511987396000CB77F /* DetectorResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458C811987396000CB77F /* DetectorResult.cpp */; }; + E534595611987396000CB77F /* DetectorResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458C911987396000CB77F /* DetectorResult.h */; }; + E534595711987396000CB77F /* EdgeDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458CA11987396000CB77F /* EdgeDetector.cpp */; }; + E534595811987396000CB77F /* EdgeDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458CB11987396000CB77F /* EdgeDetector.h */; }; + E534595911987396000CB77F /* GlobalHistogramBinarizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458CC11987396000CB77F /* GlobalHistogramBinarizer.cpp */; }; + E534595A11987396000CB77F /* GlobalHistogramBinarizer.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458CD11987396000CB77F /* GlobalHistogramBinarizer.h */; }; + E534595B11987396000CB77F /* GridSampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458CE11987396000CB77F /* GridSampler.cpp */; }; + E534595C11987396000CB77F /* GridSampler.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458CF11987396000CB77F /* GridSampler.h */; }; + E534595D11987396000CB77F /* IllegalArgumentException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458D011987396000CB77F /* IllegalArgumentException.cpp */; }; + E534595E11987396000CB77F /* IllegalArgumentException.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458D111987396000CB77F /* IllegalArgumentException.h */; }; + E534595F11987396000CB77F /* LocalBlockBinarizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458D211987396000CB77F /* LocalBlockBinarizer.cpp */; }; + E534596011987396000CB77F /* LocalBlockBinarizer.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458D311987396000CB77F /* LocalBlockBinarizer.h */; }; + E534596111987396000CB77F /* PerspectiveTransform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458D411987396000CB77F /* PerspectiveTransform.cpp */; }; + E534596211987396000CB77F /* PerspectiveTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458D511987396000CB77F /* PerspectiveTransform.h */; }; + E534596311987396000CB77F /* Point.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458D611987396000CB77F /* Point.h */; }; + E534596411987396000CB77F /* GF256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458D811987396000CB77F /* GF256.cpp */; }; + E534596511987396000CB77F /* GF256.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458D911987396000CB77F /* GF256.h */; }; + E534596611987396000CB77F /* GF256Poly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458DA11987396000CB77F /* GF256Poly.cpp */; }; + E534596711987396000CB77F /* GF256Poly.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458DB11987396000CB77F /* GF256Poly.h */; }; + E534596811987396000CB77F /* ReedSolomonDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458DC11987396000CB77F /* ReedSolomonDecoder.cpp */; }; + E534596911987396000CB77F /* ReedSolomonDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458DD11987396000CB77F /* ReedSolomonDecoder.h */; }; + E534596A11987396000CB77F /* ReedSolomonException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458DE11987396000CB77F /* ReedSolomonException.cpp */; }; + E534596B11987396000CB77F /* ReedSolomonException.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458DF11987396000CB77F /* ReedSolomonException.h */; }; + E534596C11987396000CB77F /* Str.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458E011987396000CB77F /* Str.cpp */; }; + E534596D11987396000CB77F /* Str.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458E111987396000CB77F /* Str.h */; }; + E534596E11987396000CB77F /* DataMatrixReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458E311987396000CB77F /* DataMatrixReader.cpp */; }; + E534596F11987396000CB77F /* DataMatrixReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458E411987396000CB77F /* DataMatrixReader.h */; }; + E534597011987396000CB77F /* BitMatrixParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458E611987396000CB77F /* BitMatrixParser.cpp */; }; + E534597111987396000CB77F /* BitMatrixParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458E711987396000CB77F /* BitMatrixParser.h */; }; + E534597211987396000CB77F /* DataBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458E811987396000CB77F /* DataBlock.cpp */; }; + E534597311987396000CB77F /* DataBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458E911987396000CB77F /* DataBlock.h */; }; + E534597411987396000CB77F /* DecodedBitStreamParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458EA11987396000CB77F /* DecodedBitStreamParser.cpp */; }; + E534597511987396000CB77F /* DecodedBitStreamParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458EB11987396000CB77F /* DecodedBitStreamParser.h */; }; + E534597611987396000CB77F /* Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458EC11987396000CB77F /* Decoder.cpp */; }; + E534597711987396000CB77F /* Decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458ED11987396000CB77F /* Decoder.h */; }; + E534597811987396000CB77F /* CornerPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458EF11987396000CB77F /* CornerPoint.cpp */; }; + E534597911987396000CB77F /* CornerPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458F011987396000CB77F /* CornerPoint.h */; }; + E534597A11987396000CB77F /* Detector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458F111987396000CB77F /* Detector.cpp */; }; + E534597B11987396000CB77F /* Detector.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458F211987396000CB77F /* Detector.h */; }; + E534597C11987396000CB77F /* MonochromeRectangleDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458F311987396000CB77F /* MonochromeRectangleDetector.cpp */; }; + E534597D11987396000CB77F /* MonochromeRectangleDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458F411987396000CB77F /* MonochromeRectangleDetector.h */; }; + E534597E11987396000CB77F /* Version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458F511987396000CB77F /* Version.cpp */; }; + E534597F11987396000CB77F /* Version.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458F611987396000CB77F /* Version.h */; }; + E534598011987396000CB77F /* Exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458F711987396000CB77F /* Exception.cpp */; }; + E534598111987396000CB77F /* Exception.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458F811987396000CB77F /* Exception.h */; }; + E534598211987396000CB77F /* LuminanceSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458F911987396000CB77F /* LuminanceSource.cpp */; }; + E534598311987396000CB77F /* LuminanceSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458FA11987396000CB77F /* LuminanceSource.h */; }; + E534598411987396000CB77F /* MultiFormatReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458FB11987396000CB77F /* MultiFormatReader.cpp */; }; + E534598511987396000CB77F /* MultiFormatReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458FC11987396000CB77F /* MultiFormatReader.h */; }; + E534598611987396000CB77F /* Code128Reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E53458FE11987396000CB77F /* Code128Reader.cpp */; }; + E534598711987396000CB77F /* Code128Reader.h in Headers */ = {isa = PBXBuildFile; fileRef = E53458FF11987396000CB77F /* Code128Reader.h */; }; + E534598811987396000CB77F /* Code39Reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590011987396000CB77F /* Code39Reader.cpp */; }; + E534598911987396000CB77F /* Code39Reader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590111987396000CB77F /* Code39Reader.h */; }; + E534598A11987396000CB77F /* EAN13Reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590211987396000CB77F /* EAN13Reader.cpp */; }; + E534598B11987396000CB77F /* EAN13Reader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590311987396000CB77F /* EAN13Reader.h */; }; + E534598C11987396000CB77F /* EAN8Reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590411987396000CB77F /* EAN8Reader.cpp */; }; + E534598D11987396000CB77F /* EAN8Reader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590511987396000CB77F /* EAN8Reader.h */; }; + E534598E11987396000CB77F /* ITFReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590611987396000CB77F /* ITFReader.cpp */; }; + E534598F11987396000CB77F /* ITFReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590711987396000CB77F /* ITFReader.h */; }; + E534599011987396000CB77F /* MultiFormatOneDReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590811987396000CB77F /* MultiFormatOneDReader.cpp */; }; + E534599111987396000CB77F /* MultiFormatOneDReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590911987396000CB77F /* MultiFormatOneDReader.h */; }; + E534599211987396000CB77F /* MultiFormatUPCEANReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590A11987396000CB77F /* MultiFormatUPCEANReader.cpp */; }; + E534599311987396000CB77F /* MultiFormatUPCEANReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590B11987396000CB77F /* MultiFormatUPCEANReader.h */; }; + E534599411987396000CB77F /* OneDReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590C11987396000CB77F /* OneDReader.cpp */; }; + E534599511987396000CB77F /* OneDReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590D11987396000CB77F /* OneDReader.h */; }; + E534599611987396000CB77F /* OneDResultPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534590E11987396000CB77F /* OneDResultPoint.cpp */; }; + E534599711987396000CB77F /* OneDResultPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = E534590F11987396000CB77F /* OneDResultPoint.h */; }; + E534599811987396000CB77F /* UPCAReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534591011987396000CB77F /* UPCAReader.cpp */; }; + E534599911987396000CB77F /* UPCAReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534591111987396000CB77F /* UPCAReader.h */; }; + E534599A11987396000CB77F /* UPCEANReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534591211987396000CB77F /* UPCEANReader.cpp */; }; + E534599B11987396000CB77F /* UPCEANReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534591311987396000CB77F /* UPCEANReader.h */; }; + E534599C11987396000CB77F /* UPCEReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534591411987396000CB77F /* UPCEReader.cpp */; }; + E534599D11987396000CB77F /* UPCEReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534591511987396000CB77F /* UPCEReader.h */; }; + E534599E11987396000CB77F /* BitMatrixParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534591811987396000CB77F /* BitMatrixParser.cpp */; }; + E534599F11987396000CB77F /* BitMatrixParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E534591911987396000CB77F /* BitMatrixParser.h */; }; + E53459A011987396000CB77F /* DataBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534591A11987396000CB77F /* DataBlock.cpp */; }; + E53459A111987396000CB77F /* DataBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = E534591B11987396000CB77F /* DataBlock.h */; }; + E53459A211987396000CB77F /* DataMask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534591C11987396000CB77F /* DataMask.cpp */; }; + E53459A311987396000CB77F /* DataMask.h in Headers */ = {isa = PBXBuildFile; fileRef = E534591D11987396000CB77F /* DataMask.h */; }; + E53459A411987396000CB77F /* DecodedBitStreamParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534591E11987396000CB77F /* DecodedBitStreamParser.cpp */; }; + E53459A511987396000CB77F /* DecodedBitStreamParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E534591F11987396000CB77F /* DecodedBitStreamParser.h */; }; + E53459A611987396000CB77F /* Decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592011987396000CB77F /* Decoder.cpp */; }; + E53459A711987396000CB77F /* Decoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E534592111987396000CB77F /* Decoder.h */; }; + E53459A811987396000CB77F /* Mode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592211987396000CB77F /* Mode.cpp */; }; + E53459A911987396000CB77F /* Mode.h in Headers */ = {isa = PBXBuildFile; fileRef = E534592311987396000CB77F /* Mode.h */; }; + E53459AA11987396000CB77F /* AlignmentPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592511987396000CB77F /* AlignmentPattern.cpp */; }; + E53459AB11987396000CB77F /* AlignmentPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = E534592611987396000CB77F /* AlignmentPattern.h */; }; + E53459AC11987396000CB77F /* AlignmentPatternFinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592711987396000CB77F /* AlignmentPatternFinder.cpp */; }; + E53459AD11987396000CB77F /* AlignmentPatternFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = E534592811987396000CB77F /* AlignmentPatternFinder.h */; }; + E53459AE11987396000CB77F /* Detector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592911987396000CB77F /* Detector.cpp */; }; + E53459AF11987396000CB77F /* Detector.h in Headers */ = {isa = PBXBuildFile; fileRef = E534592A11987396000CB77F /* Detector.h */; }; + E53459B011987396000CB77F /* FinderPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592B11987396000CB77F /* FinderPattern.cpp */; }; + E53459B111987396000CB77F /* FinderPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = E534592C11987396000CB77F /* FinderPattern.h */; }; + E53459B211987396000CB77F /* FinderPatternFinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592D11987396000CB77F /* FinderPatternFinder.cpp */; }; + E53459B311987396000CB77F /* FinderPatternFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = E534592E11987396000CB77F /* FinderPatternFinder.h */; }; + E53459B411987396000CB77F /* FinderPatternInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534592F11987396000CB77F /* FinderPatternInfo.cpp */; }; + E53459B511987396000CB77F /* FinderPatternInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593011987396000CB77F /* FinderPatternInfo.h */; }; + E53459B611987396000CB77F /* QREdgeDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593111987396000CB77F /* QREdgeDetector.cpp */; }; + E53459B711987396000CB77F /* QREdgeDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593211987396000CB77F /* QREdgeDetector.h */; }; + E53459B811987396000CB77F /* ErrorCorrectionLevel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593311987396000CB77F /* ErrorCorrectionLevel.cpp */; }; + E53459B911987396000CB77F /* ErrorCorrectionLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593411987396000CB77F /* ErrorCorrectionLevel.h */; }; + E53459BA11987396000CB77F /* FormatInformation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593511987396000CB77F /* FormatInformation.cpp */; }; + E53459BB11987396000CB77F /* FormatInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593611987396000CB77F /* FormatInformation.h */; }; + E53459BC11987396000CB77F /* QRCodeReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593711987396000CB77F /* QRCodeReader.cpp */; }; + E53459BD11987396000CB77F /* QRCodeReader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593811987396000CB77F /* QRCodeReader.h */; }; + E53459BE11987396000CB77F /* Version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593911987396000CB77F /* Version.cpp */; }; + E53459BF11987396000CB77F /* Version.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593A11987396000CB77F /* Version.h */; }; + E53459C011987396000CB77F /* Reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593B11987396000CB77F /* Reader.cpp */; }; + E53459C111987396000CB77F /* Reader.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593C11987396000CB77F /* Reader.h */; }; + E53459C211987396000CB77F /* ReaderException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593D11987396000CB77F /* ReaderException.cpp */; }; + E53459C311987396000CB77F /* ReaderException.h in Headers */ = {isa = PBXBuildFile; fileRef = E534593E11987396000CB77F /* ReaderException.h */; }; + E53459C411987396000CB77F /* Result.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534593F11987396000CB77F /* Result.cpp */; }; + E53459C511987396000CB77F /* Result.h in Headers */ = {isa = PBXBuildFile; fileRef = E534594011987396000CB77F /* Result.h */; }; + E53459C611987396000CB77F /* ResultPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E534594111987396000CB77F /* ResultPoint.cpp */; }; + E53459C711987396000CB77F /* ResultPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = E534594211987396000CB77F /* ResultPoint.h */; }; + E53459CB119873F3000CB77F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E53459CA119873F3000CB77F /* UIKit.framework */; }; + E5345A0F119876A5000CB77F /* ResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459D5119876A5000CB77F /* ResultParser.h */; }; + E5345A10119876A5000CB77F /* ResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459D6119876A5000CB77F /* ResultParser.m */; }; + E5345A11119876A5000CB77F /* DoCoMoResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459D7119876A5000CB77F /* DoCoMoResultParser.h */; }; + E5345A12119876A5000CB77F /* DoCoMoResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459D8119876A5000CB77F /* DoCoMoResultParser.m */; }; + E5345A13119876A5000CB77F /* MeCardParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459D9119876A5000CB77F /* MeCardParser.h */; }; + E5345A14119876A5000CB77F /* MeCardParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459DA119876A5000CB77F /* MeCardParser.m */; }; + E5345A15119876A5000CB77F /* EmailDoCoMoResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459DB119876A5000CB77F /* EmailDoCoMoResultParser.h */; }; + E5345A16119876A5000CB77F /* EmailDoCoMoResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459DC119876A5000CB77F /* EmailDoCoMoResultParser.m */; }; + E5345A17119876A5000CB77F /* BookmarkDoCoMoResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459DD119876A5000CB77F /* BookmarkDoCoMoResultParser.h */; }; + E5345A18119876A5000CB77F /* BookmarkDoCoMoResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459DE119876A5000CB77F /* BookmarkDoCoMoResultParser.m */; }; + E5345A19119876A5000CB77F /* TelResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459DF119876A5000CB77F /* TelResultParser.h */; }; + E5345A1A119876A5000CB77F /* TelResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459E0119876A5000CB77F /* TelResultParser.m */; }; + E5345A1B119876A5000CB77F /* TextResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459E1119876A5000CB77F /* TextResultParser.h */; }; + E5345A1C119876A5000CB77F /* TextResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459E2119876A5000CB77F /* TextResultParser.m */; }; + E5345A1D119876A5000CB77F /* URLResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459E3119876A5000CB77F /* URLResultParser.h */; }; + E5345A1E119876A5000CB77F /* URLResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459E4119876A5000CB77F /* URLResultParser.m */; }; + E5345A1F119876A5000CB77F /* URLTOResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459E5119876A5000CB77F /* URLTOResultParser.h */; }; + E5345A20119876A5000CB77F /* URLTOResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459E6119876A5000CB77F /* URLTOResultParser.m */; }; + E5345A21119876A5000CB77F /* SMSResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459E7119876A5000CB77F /* SMSResultParser.h */; }; + E5345A22119876A5000CB77F /* SMSResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459E8119876A5000CB77F /* SMSResultParser.m */; }; + E5345A23119876A5000CB77F /* GeoResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459E9119876A5000CB77F /* GeoResultParser.h */; }; + E5345A24119876A5000CB77F /* GeoResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459EA119876A5000CB77F /* GeoResultParser.m */; }; + E5345A25119876A5000CB77F /* SMSTOResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459EB119876A5000CB77F /* SMSTOResultParser.h */; }; + E5345A26119876A5000CB77F /* SMSTOResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459EC119876A5000CB77F /* SMSTOResultParser.m */; }; + E5345A27119876A5000CB77F /* PlainEmailResultParser.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459ED119876A5000CB77F /* PlainEmailResultParser.h */; }; + E5345A28119876A5000CB77F /* PlainEmailResultParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459EE119876A5000CB77F /* PlainEmailResultParser.m */; }; + E5345A29119876A5000CB77F /* BusinessCardParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459F0119876A5000CB77F /* BusinessCardParsedResult.h */; }; + E5345A2A119876A5000CB77F /* BusinessCardParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459F1119876A5000CB77F /* BusinessCardParsedResult.m */; }; + E5345A2B119876A5000CB77F /* EmailParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459F2119876A5000CB77F /* EmailParsedResult.h */; }; + E5345A2C119876A5000CB77F /* EmailParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459F3119876A5000CB77F /* EmailParsedResult.m */; }; + E5345A2D119876A5000CB77F /* TelParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459F4119876A5000CB77F /* TelParsedResult.h */; }; + E5345A2E119876A5000CB77F /* TelParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459F5119876A5000CB77F /* TelParsedResult.m */; }; + E5345A2F119876A5000CB77F /* TextParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459F6119876A5000CB77F /* TextParsedResult.h */; }; + E5345A30119876A5000CB77F /* TextParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459F7119876A5000CB77F /* TextParsedResult.m */; }; + E5345A31119876A5000CB77F /* ParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459F8119876A5000CB77F /* ParsedResult.h */; }; + E5345A32119876A5000CB77F /* ParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459F9119876A5000CB77F /* ParsedResult.m */; }; + E5345A33119876A5000CB77F /* URIParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459FA119876A5000CB77F /* URIParsedResult.h */; }; + E5345A34119876A5000CB77F /* URIParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459FB119876A5000CB77F /* URIParsedResult.m */; }; + E5345A35119876A5000CB77F /* GeoParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459FC119876A5000CB77F /* GeoParsedResult.h */; }; + E5345A36119876A5000CB77F /* GeoParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459FD119876A5000CB77F /* GeoParsedResult.m */; }; + E5345A37119876A5000CB77F /* SMSParsedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = E53459FE119876A5000CB77F /* SMSParsedResult.h */; }; + E5345A38119876A5000CB77F /* SMSParsedResult.m in Sources */ = {isa = PBXBuildFile; fileRef = E53459FF119876A5000CB77F /* SMSParsedResult.m */; }; + E5345A39119876A5000CB77F /* SMSAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A01119876A5000CB77F /* SMSAction.h */; }; + E5345A3A119876A5000CB77F /* SMSAction.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A02119876A5000CB77F /* SMSAction.m */; }; + E5345A3B119876A5000CB77F /* ShowMapAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A03119876A5000CB77F /* ShowMapAction.h */; }; + E5345A3C119876A5000CB77F /* ShowMapAction.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A04119876A5000CB77F /* ShowMapAction.m */; }; + E5345A3D119876A5000CB77F /* AddContactAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A05119876A5000CB77F /* AddContactAction.h */; }; + E5345A3E119876A5000CB77F /* AddContactAction.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A06119876A5000CB77F /* AddContactAction.m */; }; + E5345A3F119876A5000CB77F /* EmailAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A07119876A5000CB77F /* EmailAction.h */; }; + E5345A40119876A5000CB77F /* EmailAction.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A08119876A5000CB77F /* EmailAction.m */; }; + E5345A41119876A5000CB77F /* CallAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A09119876A5000CB77F /* CallAction.h */; }; + E5345A42119876A5000CB77F /* CallAction.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A0A119876A5000CB77F /* CallAction.m */; }; + E5345A43119876A5000CB77F /* OpenUrlAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A0B119876A5000CB77F /* OpenUrlAction.h */; }; + E5345A44119876A5000CB77F /* OpenUrlAction.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A0C119876A5000CB77F /* OpenUrlAction.m */; }; + E5345A45119876A5000CB77F /* ResultAction.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A0D119876A5000CB77F /* ResultAction.h */; }; + E5345A46119876A5000CB77F /* ResultAction.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A0E119876A5000CB77F /* ResultAction.m */; }; + E5345A661198792F000CB77F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5345A651198792F000CB77F /* AudioToolbox.framework */; }; + E5345A6F11987989000CB77F /* NSString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345A6D11987989000CB77F /* NSString+HTML.h */; }; + E5345A7011987989000CB77F /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = E5345A6E11987989000CB77F /* NSString+HTML.m */; }; + E5345AA31198859A000CB77F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5345AA21198859A000CB77F /* CoreGraphics.framework */; }; + E5345AC811988B6E000CB77F /* GrayBytesMonochromeBitmapSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E5345AC611988B6E000CB77F /* GrayBytesMonochromeBitmapSource.h */; }; + E5345AC911988B6E000CB77F /* GrayBytesMonochromeBitmapSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5345AC711988B6E000CB77F /* GrayBytesMonochromeBitmapSource.cpp */; }; + E5345F2C119B0762000CB77F /* Decoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = E5345F2B119B0762000CB77F /* Decoder.mm */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + AA747D9E0F9514B9006C5449 /* ZXingWidget_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZXingWidget_Prefix.pch; sourceTree = SOURCE_ROOT; }; + AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D2AAC07E0554694100DB518D /* libZXingWidget.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libZXingWidget.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E534588911983738000CB77F /* ZXingWidgetController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZXingWidgetController.h; sourceTree = ""; }; + E534588A11983738000CB77F /* ZXingWidgetController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZXingWidgetController.m; sourceTree = ""; }; + E534588B11983738000CB77F /* OverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OverlayView.h; sourceTree = ""; }; + E534588C11983738000CB77F /* OverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OverlayView.m; sourceTree = ""; }; + E534589211983771000CB77F /* Decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decoder.h; sourceTree = ""; }; + E53458961198379E000CB77F /* DecoderDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecoderDelegate.h; sourceTree = ""; }; + E534589C11984A27000CB77F /* TwoDDecoderResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TwoDDecoderResult.h; sourceTree = ""; }; + E534589D11984A27000CB77F /* TwoDDecoderResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TwoDDecoderResult.m; sourceTree = ""; }; + E53458A011984A3E000CB77F /* FormatReader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FormatReader.mm; sourceTree = ""; }; + E53458A111984A3E000CB77F /* MultiFormatReader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MultiFormatReader.mm; sourceTree = ""; }; + E53458A211984A3E000CB77F /* FormatReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormatReader.h; sourceTree = ""; }; + E53458B511987396000CB77F /* BarcodeFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BarcodeFormat.cpp; sourceTree = ""; }; + E53458B611987396000CB77F /* BarcodeFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BarcodeFormat.h; sourceTree = ""; }; + E53458B711987396000CB77F /* Binarizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Binarizer.cpp; sourceTree = ""; }; + E53458B811987396000CB77F /* Binarizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Binarizer.h; sourceTree = ""; }; + E53458B911987396000CB77F /* BinaryBitmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BinaryBitmap.cpp; sourceTree = ""; }; + E53458BA11987396000CB77F /* BinaryBitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BinaryBitmap.h; sourceTree = ""; }; + E53458BC11987396000CB77F /* Array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Array.cpp; sourceTree = ""; }; + E53458BD11987396000CB77F /* Array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Array.h; sourceTree = ""; }; + E53458BE11987396000CB77F /* BitArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitArray.cpp; sourceTree = ""; }; + E53458BF11987396000CB77F /* BitArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitArray.h; sourceTree = ""; }; + E53458C011987396000CB77F /* BitMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitMatrix.cpp; sourceTree = ""; }; + E53458C111987396000CB77F /* BitMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitMatrix.h; sourceTree = ""; }; + E53458C211987396000CB77F /* BitSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitSource.cpp; sourceTree = ""; }; + E53458C311987396000CB77F /* BitSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitSource.h; sourceTree = ""; }; + E53458C411987396000CB77F /* Counted.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Counted.cpp; sourceTree = ""; }; + E53458C511987396000CB77F /* Counted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Counted.h; sourceTree = ""; }; + E53458C611987396000CB77F /* DecoderResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecoderResult.cpp; sourceTree = ""; }; + E53458C711987396000CB77F /* DecoderResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecoderResult.h; sourceTree = ""; }; + E53458C811987396000CB77F /* DetectorResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DetectorResult.cpp; sourceTree = ""; }; + E53458C911987396000CB77F /* DetectorResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetectorResult.h; sourceTree = ""; }; + E53458CA11987396000CB77F /* EdgeDetector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EdgeDetector.cpp; sourceTree = ""; }; + E53458CB11987396000CB77F /* EdgeDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EdgeDetector.h; sourceTree = ""; }; + E53458CC11987396000CB77F /* GlobalHistogramBinarizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GlobalHistogramBinarizer.cpp; sourceTree = ""; }; + E53458CD11987396000CB77F /* GlobalHistogramBinarizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlobalHistogramBinarizer.h; sourceTree = ""; }; + E53458CE11987396000CB77F /* GridSampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GridSampler.cpp; sourceTree = ""; }; + E53458CF11987396000CB77F /* GridSampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GridSampler.h; sourceTree = ""; }; + E53458D011987396000CB77F /* IllegalArgumentException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IllegalArgumentException.cpp; sourceTree = ""; }; + E53458D111987396000CB77F /* IllegalArgumentException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IllegalArgumentException.h; sourceTree = ""; }; + E53458D211987396000CB77F /* LocalBlockBinarizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocalBlockBinarizer.cpp; sourceTree = ""; }; + E53458D311987396000CB77F /* LocalBlockBinarizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalBlockBinarizer.h; sourceTree = ""; }; + E53458D411987396000CB77F /* PerspectiveTransform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PerspectiveTransform.cpp; sourceTree = ""; }; + E53458D511987396000CB77F /* PerspectiveTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerspectiveTransform.h; sourceTree = ""; }; + E53458D611987396000CB77F /* Point.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Point.h; sourceTree = ""; }; + E53458D811987396000CB77F /* GF256.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GF256.cpp; sourceTree = ""; }; + E53458D911987396000CB77F /* GF256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GF256.h; sourceTree = ""; }; + E53458DA11987396000CB77F /* GF256Poly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GF256Poly.cpp; sourceTree = ""; }; + E53458DB11987396000CB77F /* GF256Poly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GF256Poly.h; sourceTree = ""; }; + E53458DC11987396000CB77F /* ReedSolomonDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReedSolomonDecoder.cpp; sourceTree = ""; }; + E53458DD11987396000CB77F /* ReedSolomonDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReedSolomonDecoder.h; sourceTree = ""; }; + E53458DE11987396000CB77F /* ReedSolomonException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReedSolomonException.cpp; sourceTree = ""; }; + E53458DF11987396000CB77F /* ReedSolomonException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReedSolomonException.h; sourceTree = ""; }; + E53458E011987396000CB77F /* Str.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Str.cpp; sourceTree = ""; }; + E53458E111987396000CB77F /* Str.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Str.h; sourceTree = ""; }; + E53458E311987396000CB77F /* DataMatrixReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataMatrixReader.cpp; sourceTree = ""; }; + E53458E411987396000CB77F /* DataMatrixReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataMatrixReader.h; sourceTree = ""; }; + E53458E611987396000CB77F /* BitMatrixParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitMatrixParser.cpp; sourceTree = ""; }; + E53458E711987396000CB77F /* BitMatrixParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitMatrixParser.h; sourceTree = ""; }; + E53458E811987396000CB77F /* DataBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataBlock.cpp; sourceTree = ""; }; + E53458E911987396000CB77F /* DataBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataBlock.h; sourceTree = ""; }; + E53458EA11987396000CB77F /* DecodedBitStreamParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecodedBitStreamParser.cpp; sourceTree = ""; }; + E53458EB11987396000CB77F /* DecodedBitStreamParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecodedBitStreamParser.h; sourceTree = ""; }; + E53458EC11987396000CB77F /* Decoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Decoder.cpp; sourceTree = ""; }; + E53458ED11987396000CB77F /* Decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decoder.h; sourceTree = ""; }; + E53458EF11987396000CB77F /* CornerPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CornerPoint.cpp; sourceTree = ""; }; + E53458F011987396000CB77F /* CornerPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CornerPoint.h; sourceTree = ""; }; + E53458F111987396000CB77F /* Detector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Detector.cpp; sourceTree = ""; }; + E53458F211987396000CB77F /* Detector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Detector.h; sourceTree = ""; }; + E53458F311987396000CB77F /* MonochromeRectangleDetector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MonochromeRectangleDetector.cpp; sourceTree = ""; }; + E53458F411987396000CB77F /* MonochromeRectangleDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MonochromeRectangleDetector.h; sourceTree = ""; }; + E53458F511987396000CB77F /* Version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Version.cpp; sourceTree = ""; }; + E53458F611987396000CB77F /* Version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Version.h; sourceTree = ""; }; + E53458F711987396000CB77F /* Exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Exception.cpp; sourceTree = ""; }; + E53458F811987396000CB77F /* Exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Exception.h; sourceTree = ""; }; + E53458F911987396000CB77F /* LuminanceSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuminanceSource.cpp; sourceTree = ""; }; + E53458FA11987396000CB77F /* LuminanceSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuminanceSource.h; sourceTree = ""; }; + E53458FB11987396000CB77F /* MultiFormatReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MultiFormatReader.cpp; sourceTree = ""; }; + E53458FC11987396000CB77F /* MultiFormatReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultiFormatReader.h; sourceTree = ""; }; + E53458FE11987396000CB77F /* Code128Reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Code128Reader.cpp; sourceTree = ""; }; + E53458FF11987396000CB77F /* Code128Reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Code128Reader.h; sourceTree = ""; }; + E534590011987396000CB77F /* Code39Reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Code39Reader.cpp; sourceTree = ""; }; + E534590111987396000CB77F /* Code39Reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Code39Reader.h; sourceTree = ""; }; + E534590211987396000CB77F /* EAN13Reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EAN13Reader.cpp; sourceTree = ""; }; + E534590311987396000CB77F /* EAN13Reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EAN13Reader.h; sourceTree = ""; }; + E534590411987396000CB77F /* EAN8Reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EAN8Reader.cpp; sourceTree = ""; }; + E534590511987396000CB77F /* EAN8Reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EAN8Reader.h; sourceTree = ""; }; + E534590611987396000CB77F /* ITFReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ITFReader.cpp; sourceTree = ""; }; + E534590711987396000CB77F /* ITFReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ITFReader.h; sourceTree = ""; }; + E534590811987396000CB77F /* MultiFormatOneDReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MultiFormatOneDReader.cpp; sourceTree = ""; }; + E534590911987396000CB77F /* MultiFormatOneDReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultiFormatOneDReader.h; sourceTree = ""; }; + E534590A11987396000CB77F /* MultiFormatUPCEANReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MultiFormatUPCEANReader.cpp; sourceTree = ""; }; + E534590B11987396000CB77F /* MultiFormatUPCEANReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultiFormatUPCEANReader.h; sourceTree = ""; }; + E534590C11987396000CB77F /* OneDReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OneDReader.cpp; sourceTree = ""; }; + E534590D11987396000CB77F /* OneDReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneDReader.h; sourceTree = ""; }; + E534590E11987396000CB77F /* OneDResultPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OneDResultPoint.cpp; sourceTree = ""; }; + E534590F11987396000CB77F /* OneDResultPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneDResultPoint.h; sourceTree = ""; }; + E534591011987396000CB77F /* UPCAReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UPCAReader.cpp; sourceTree = ""; }; + E534591111987396000CB77F /* UPCAReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UPCAReader.h; sourceTree = ""; }; + E534591211987396000CB77F /* UPCEANReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UPCEANReader.cpp; sourceTree = ""; }; + E534591311987396000CB77F /* UPCEANReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UPCEANReader.h; sourceTree = ""; }; + E534591411987396000CB77F /* UPCEReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UPCEReader.cpp; sourceTree = ""; }; + E534591511987396000CB77F /* UPCEReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UPCEReader.h; sourceTree = ""; }; + E534591811987396000CB77F /* BitMatrixParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitMatrixParser.cpp; sourceTree = ""; }; + E534591911987396000CB77F /* BitMatrixParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitMatrixParser.h; sourceTree = ""; }; + E534591A11987396000CB77F /* DataBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataBlock.cpp; sourceTree = ""; }; + E534591B11987396000CB77F /* DataBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataBlock.h; sourceTree = ""; }; + E534591C11987396000CB77F /* DataMask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DataMask.cpp; sourceTree = ""; }; + E534591D11987396000CB77F /* DataMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataMask.h; sourceTree = ""; }; + E534591E11987396000CB77F /* DecodedBitStreamParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecodedBitStreamParser.cpp; sourceTree = ""; }; + E534591F11987396000CB77F /* DecodedBitStreamParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecodedBitStreamParser.h; sourceTree = ""; }; + E534592011987396000CB77F /* Decoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Decoder.cpp; sourceTree = ""; }; + E534592111987396000CB77F /* Decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decoder.h; sourceTree = ""; }; + E534592211987396000CB77F /* Mode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Mode.cpp; sourceTree = ""; }; + E534592311987396000CB77F /* Mode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Mode.h; sourceTree = ""; }; + E534592511987396000CB77F /* AlignmentPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AlignmentPattern.cpp; sourceTree = ""; }; + E534592611987396000CB77F /* AlignmentPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlignmentPattern.h; sourceTree = ""; }; + E534592711987396000CB77F /* AlignmentPatternFinder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AlignmentPatternFinder.cpp; sourceTree = ""; }; + E534592811987396000CB77F /* AlignmentPatternFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlignmentPatternFinder.h; sourceTree = ""; }; + E534592911987396000CB77F /* Detector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Detector.cpp; sourceTree = ""; }; + E534592A11987396000CB77F /* Detector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Detector.h; sourceTree = ""; }; + E534592B11987396000CB77F /* FinderPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FinderPattern.cpp; sourceTree = ""; }; + E534592C11987396000CB77F /* FinderPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FinderPattern.h; sourceTree = ""; }; + E534592D11987396000CB77F /* FinderPatternFinder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FinderPatternFinder.cpp; sourceTree = ""; }; + E534592E11987396000CB77F /* FinderPatternFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FinderPatternFinder.h; sourceTree = ""; }; + E534592F11987396000CB77F /* FinderPatternInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FinderPatternInfo.cpp; sourceTree = ""; }; + E534593011987396000CB77F /* FinderPatternInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FinderPatternInfo.h; sourceTree = ""; }; + E534593111987396000CB77F /* QREdgeDetector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QREdgeDetector.cpp; sourceTree = ""; }; + E534593211987396000CB77F /* QREdgeDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QREdgeDetector.h; sourceTree = ""; }; + E534593311987396000CB77F /* ErrorCorrectionLevel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ErrorCorrectionLevel.cpp; sourceTree = ""; }; + E534593411987396000CB77F /* ErrorCorrectionLevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorCorrectionLevel.h; sourceTree = ""; }; + E534593511987396000CB77F /* FormatInformation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormatInformation.cpp; sourceTree = ""; }; + E534593611987396000CB77F /* FormatInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormatInformation.h; sourceTree = ""; }; + E534593711987396000CB77F /* QRCodeReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = QRCodeReader.cpp; sourceTree = ""; }; + E534593811987396000CB77F /* QRCodeReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QRCodeReader.h; sourceTree = ""; }; + E534593911987396000CB77F /* Version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Version.cpp; sourceTree = ""; }; + E534593A11987396000CB77F /* Version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Version.h; sourceTree = ""; }; + E534593B11987396000CB77F /* Reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Reader.cpp; sourceTree = ""; }; + E534593C11987396000CB77F /* Reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reader.h; sourceTree = ""; }; + E534593D11987396000CB77F /* ReaderException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReaderException.cpp; sourceTree = ""; }; + E534593E11987396000CB77F /* ReaderException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReaderException.h; sourceTree = ""; }; + E534593F11987396000CB77F /* Result.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Result.cpp; sourceTree = ""; }; + E534594011987396000CB77F /* Result.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Result.h; sourceTree = ""; }; + E534594111987396000CB77F /* ResultPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResultPoint.cpp; sourceTree = ""; }; + E534594211987396000CB77F /* ResultPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultPoint.h; sourceTree = ""; }; + E53459CA119873F3000CB77F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + E53459D5119876A5000CB77F /* ResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultParser.h; sourceTree = ""; }; + E53459D6119876A5000CB77F /* ResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResultParser.m; sourceTree = ""; }; + E53459D7119876A5000CB77F /* DoCoMoResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DoCoMoResultParser.h; sourceTree = ""; }; + E53459D8119876A5000CB77F /* DoCoMoResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DoCoMoResultParser.m; sourceTree = ""; }; + E53459D9119876A5000CB77F /* MeCardParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MeCardParser.h; sourceTree = ""; }; + E53459DA119876A5000CB77F /* MeCardParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MeCardParser.m; sourceTree = ""; }; + E53459DB119876A5000CB77F /* EmailDoCoMoResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmailDoCoMoResultParser.h; sourceTree = ""; }; + E53459DC119876A5000CB77F /* EmailDoCoMoResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EmailDoCoMoResultParser.m; sourceTree = ""; }; + E53459DD119876A5000CB77F /* BookmarkDoCoMoResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BookmarkDoCoMoResultParser.h; sourceTree = ""; }; + E53459DE119876A5000CB77F /* BookmarkDoCoMoResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BookmarkDoCoMoResultParser.m; sourceTree = ""; }; + E53459DF119876A5000CB77F /* TelResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TelResultParser.h; sourceTree = ""; }; + E53459E0119876A5000CB77F /* TelResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TelResultParser.m; sourceTree = ""; }; + E53459E1119876A5000CB77F /* TextResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextResultParser.h; sourceTree = ""; }; + E53459E2119876A5000CB77F /* TextResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextResultParser.m; sourceTree = ""; }; + E53459E3119876A5000CB77F /* URLResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLResultParser.h; sourceTree = ""; }; + E53459E4119876A5000CB77F /* URLResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLResultParser.m; sourceTree = ""; }; + E53459E5119876A5000CB77F /* URLTOResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLTOResultParser.h; sourceTree = ""; }; + E53459E6119876A5000CB77F /* URLTOResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLTOResultParser.m; sourceTree = ""; }; + E53459E7119876A5000CB77F /* SMSResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMSResultParser.h; sourceTree = ""; }; + E53459E8119876A5000CB77F /* SMSResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMSResultParser.m; sourceTree = ""; }; + E53459E9119876A5000CB77F /* GeoResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeoResultParser.h; sourceTree = ""; }; + E53459EA119876A5000CB77F /* GeoResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeoResultParser.m; sourceTree = ""; }; + E53459EB119876A5000CB77F /* SMSTOResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMSTOResultParser.h; sourceTree = ""; }; + E53459EC119876A5000CB77F /* SMSTOResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMSTOResultParser.m; sourceTree = ""; }; + E53459ED119876A5000CB77F /* PlainEmailResultParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlainEmailResultParser.h; sourceTree = ""; }; + E53459EE119876A5000CB77F /* PlainEmailResultParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlainEmailResultParser.m; sourceTree = ""; }; + E53459F0119876A5000CB77F /* BusinessCardParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BusinessCardParsedResult.h; sourceTree = ""; }; + E53459F1119876A5000CB77F /* BusinessCardParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BusinessCardParsedResult.m; sourceTree = ""; }; + E53459F2119876A5000CB77F /* EmailParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmailParsedResult.h; sourceTree = ""; }; + E53459F3119876A5000CB77F /* EmailParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EmailParsedResult.m; sourceTree = ""; }; + E53459F4119876A5000CB77F /* TelParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TelParsedResult.h; sourceTree = ""; }; + E53459F5119876A5000CB77F /* TelParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TelParsedResult.m; sourceTree = ""; }; + E53459F6119876A5000CB77F /* TextParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextParsedResult.h; sourceTree = ""; }; + E53459F7119876A5000CB77F /* TextParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextParsedResult.m; sourceTree = ""; }; + E53459F8119876A5000CB77F /* ParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParsedResult.h; sourceTree = ""; }; + E53459F9119876A5000CB77F /* ParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ParsedResult.m; sourceTree = ""; }; + E53459FA119876A5000CB77F /* URIParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URIParsedResult.h; sourceTree = ""; }; + E53459FB119876A5000CB77F /* URIParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URIParsedResult.m; sourceTree = ""; }; + E53459FC119876A5000CB77F /* GeoParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeoParsedResult.h; sourceTree = ""; }; + E53459FD119876A5000CB77F /* GeoParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeoParsedResult.m; sourceTree = ""; }; + E53459FE119876A5000CB77F /* SMSParsedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMSParsedResult.h; sourceTree = ""; }; + E53459FF119876A5000CB77F /* SMSParsedResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMSParsedResult.m; sourceTree = ""; }; + E5345A01119876A5000CB77F /* SMSAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMSAction.h; sourceTree = ""; }; + E5345A02119876A5000CB77F /* SMSAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMSAction.m; sourceTree = ""; }; + E5345A03119876A5000CB77F /* ShowMapAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShowMapAction.h; sourceTree = ""; }; + E5345A04119876A5000CB77F /* ShowMapAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShowMapAction.m; sourceTree = ""; }; + E5345A05119876A5000CB77F /* AddContactAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddContactAction.h; sourceTree = ""; }; + E5345A06119876A5000CB77F /* AddContactAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddContactAction.m; sourceTree = ""; }; + E5345A07119876A5000CB77F /* EmailAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmailAction.h; sourceTree = ""; }; + E5345A08119876A5000CB77F /* EmailAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EmailAction.m; sourceTree = ""; }; + E5345A09119876A5000CB77F /* CallAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallAction.h; sourceTree = ""; }; + E5345A0A119876A5000CB77F /* CallAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallAction.m; sourceTree = ""; }; + E5345A0B119876A5000CB77F /* OpenUrlAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenUrlAction.h; sourceTree = ""; }; + E5345A0C119876A5000CB77F /* OpenUrlAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenUrlAction.m; sourceTree = ""; }; + E5345A0D119876A5000CB77F /* ResultAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultAction.h; sourceTree = ""; }; + E5345A0E119876A5000CB77F /* ResultAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResultAction.m; sourceTree = ""; }; + E5345A651198792F000CB77F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + E5345A6D11987989000CB77F /* NSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+HTML.h"; sourceTree = ""; }; + E5345A6E11987989000CB77F /* NSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+HTML.m"; sourceTree = ""; }; + E5345AA21198859A000CB77F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + E5345AC611988B6E000CB77F /* GrayBytesMonochromeBitmapSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrayBytesMonochromeBitmapSource.h; sourceTree = ""; }; + E5345AC711988B6E000CB77F /* GrayBytesMonochromeBitmapSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GrayBytesMonochromeBitmapSource.cpp; sourceTree = ""; }; + E5345D2911999F62000CB77F /* beep-beep.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "beep-beep.caf"; sourceTree = ""; }; + E5345F2B119B0762000CB77F /* Decoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Decoder.mm; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D2AAC07C0554694100DB518D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */, + E53459CB119873F3000CB77F /* UIKit.framework in Frameworks */, + E5345A661198792F000CB77F /* AudioToolbox.framework in Frameworks */, + E5345AA31198859A000CB77F /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DFFF38A50411DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + D2AAC07E0554694100DB518D /* libZXingWidget.a */, + ); + name = Products; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* ZXingWidget */ = { + isa = PBXGroup; + children = ( + E53458B311987396000CB77F /* CoreSrc */, + 08FB77AEFE84172EC02AAC07 /* Classes */, + 32C88DFF0371C24200C91783 /* Other Sources */, + 0867D69AFE84028FC02AAC07 /* Frameworks */, + E5345D2811999F53000CB77F /* Resources */, + 034768DFFF38A50411DB9C8B /* Products */, + ); + name = ZXingWidget; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* Frameworks */ = { + isa = PBXGroup; + children = ( + AACBBE490F95108600F1A2B1 /* Foundation.framework */, + E53459CA119873F3000CB77F /* UIKit.framework */, + E5345A651198792F000CB77F /* AudioToolbox.framework */, + E5345AA21198859A000CB77F /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 08FB77AEFE84172EC02AAC07 /* Classes */ = { + isa = PBXGroup; + children = ( + E5345A00119876A5000CB77F /* Actions */, + E53459EF119876A5000CB77F /* ParsedResults */, + E53459D4119876A5000CB77F /* ResultParsers */, + E534589211983771000CB77F /* Decoder.h */, + E5345F2B119B0762000CB77F /* Decoder.mm */, + E53458961198379E000CB77F /* DecoderDelegate.h */, + E534589C11984A27000CB77F /* TwoDDecoderResult.h */, + E534589D11984A27000CB77F /* TwoDDecoderResult.m */, + E53458A111984A3E000CB77F /* MultiFormatReader.mm */, + E53458A011984A3E000CB77F /* FormatReader.mm */, + E53458A211984A3E000CB77F /* FormatReader.h */, + E534588911983738000CB77F /* ZXingWidgetController.h */, + E534588A11983738000CB77F /* ZXingWidgetController.m */, + E534588B11983738000CB77F /* OverlayView.h */, + E534588C11983738000CB77F /* OverlayView.m */, + E5345AC611988B6E000CB77F /* GrayBytesMonochromeBitmapSource.h */, + E5345AC711988B6E000CB77F /* GrayBytesMonochromeBitmapSource.cpp */, + E5345A6D11987989000CB77F /* NSString+HTML.h */, + E5345A6E11987989000CB77F /* NSString+HTML.m */, + ); + name = Classes; + sourceTree = ""; + }; + 32C88DFF0371C24200C91783 /* Other Sources */ = { + isa = PBXGroup; + children = ( + AA747D9E0F9514B9006C5449 /* ZXingWidget_Prefix.pch */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + E53458B311987396000CB77F /* CoreSrc */ = { + isa = PBXGroup; + children = ( + E53458B411987396000CB77F /* zxing */, + ); + name = CoreSrc; + path = ../../cpp/core/src; + sourceTree = SOURCE_ROOT; + }; + E53458B411987396000CB77F /* zxing */ = { + isa = PBXGroup; + children = ( + E53458B511987396000CB77F /* BarcodeFormat.cpp */, + E53458B611987396000CB77F /* BarcodeFormat.h */, + E53458B711987396000CB77F /* Binarizer.cpp */, + E53458B811987396000CB77F /* Binarizer.h */, + E53458B911987396000CB77F /* BinaryBitmap.cpp */, + E53458BA11987396000CB77F /* BinaryBitmap.h */, + E53458BB11987396000CB77F /* common */, + E53458E211987396000CB77F /* datamatrix */, + E53458F711987396000CB77F /* Exception.cpp */, + E53458F811987396000CB77F /* Exception.h */, + E53458F911987396000CB77F /* LuminanceSource.cpp */, + E53458FA11987396000CB77F /* LuminanceSource.h */, + E53458FB11987396000CB77F /* MultiFormatReader.cpp */, + E53458FC11987396000CB77F /* MultiFormatReader.h */, + E53458FD11987396000CB77F /* oned */, + E534591611987396000CB77F /* qrcode */, + E534593B11987396000CB77F /* Reader.cpp */, + E534593C11987396000CB77F /* Reader.h */, + E534593D11987396000CB77F /* ReaderException.cpp */, + E534593E11987396000CB77F /* ReaderException.h */, + E534593F11987396000CB77F /* Result.cpp */, + E534594011987396000CB77F /* Result.h */, + E534594111987396000CB77F /* ResultPoint.cpp */, + E534594211987396000CB77F /* ResultPoint.h */, + ); + path = zxing; + sourceTree = ""; + }; + E53458BB11987396000CB77F /* common */ = { + isa = PBXGroup; + children = ( + E53458BC11987396000CB77F /* Array.cpp */, + E53458BD11987396000CB77F /* Array.h */, + E53458BE11987396000CB77F /* BitArray.cpp */, + E53458BF11987396000CB77F /* BitArray.h */, + E53458C011987396000CB77F /* BitMatrix.cpp */, + E53458C111987396000CB77F /* BitMatrix.h */, + E53458C211987396000CB77F /* BitSource.cpp */, + E53458C311987396000CB77F /* BitSource.h */, + E53458C411987396000CB77F /* Counted.cpp */, + E53458C511987396000CB77F /* Counted.h */, + E53458C611987396000CB77F /* DecoderResult.cpp */, + E53458C711987396000CB77F /* DecoderResult.h */, + E53458C811987396000CB77F /* DetectorResult.cpp */, + E53458C911987396000CB77F /* DetectorResult.h */, + E53458CA11987396000CB77F /* EdgeDetector.cpp */, + E53458CB11987396000CB77F /* EdgeDetector.h */, + E53458CC11987396000CB77F /* GlobalHistogramBinarizer.cpp */, + E53458CD11987396000CB77F /* GlobalHistogramBinarizer.h */, + E53458CE11987396000CB77F /* GridSampler.cpp */, + E53458CF11987396000CB77F /* GridSampler.h */, + E53458D011987396000CB77F /* IllegalArgumentException.cpp */, + E53458D111987396000CB77F /* IllegalArgumentException.h */, + E53458D211987396000CB77F /* LocalBlockBinarizer.cpp */, + E53458D311987396000CB77F /* LocalBlockBinarizer.h */, + E53458D411987396000CB77F /* PerspectiveTransform.cpp */, + E53458D511987396000CB77F /* PerspectiveTransform.h */, + E53458D611987396000CB77F /* Point.h */, + E53458D711987396000CB77F /* reedsolomon */, + E53458E011987396000CB77F /* Str.cpp */, + E53458E111987396000CB77F /* Str.h */, + ); + path = common; + sourceTree = ""; + }; + E53458D711987396000CB77F /* reedsolomon */ = { + isa = PBXGroup; + children = ( + E53458D811987396000CB77F /* GF256.cpp */, + E53458D911987396000CB77F /* GF256.h */, + E53458DA11987396000CB77F /* GF256Poly.cpp */, + E53458DB11987396000CB77F /* GF256Poly.h */, + E53458DC11987396000CB77F /* ReedSolomonDecoder.cpp */, + E53458DD11987396000CB77F /* ReedSolomonDecoder.h */, + E53458DE11987396000CB77F /* ReedSolomonException.cpp */, + E53458DF11987396000CB77F /* ReedSolomonException.h */, + ); + path = reedsolomon; + sourceTree = ""; + }; + E53458E211987396000CB77F /* datamatrix */ = { + isa = PBXGroup; + children = ( + E53458E311987396000CB77F /* DataMatrixReader.cpp */, + E53458E411987396000CB77F /* DataMatrixReader.h */, + E53458E511987396000CB77F /* decoder */, + E53458EE11987396000CB77F /* detector */, + E53458F511987396000CB77F /* Version.cpp */, + E53458F611987396000CB77F /* Version.h */, + ); + path = datamatrix; + sourceTree = ""; + }; + E53458E511987396000CB77F /* decoder */ = { + isa = PBXGroup; + children = ( + E53458E611987396000CB77F /* BitMatrixParser.cpp */, + E53458E711987396000CB77F /* BitMatrixParser.h */, + E53458E811987396000CB77F /* DataBlock.cpp */, + E53458E911987396000CB77F /* DataBlock.h */, + E53458EA11987396000CB77F /* DecodedBitStreamParser.cpp */, + E53458EB11987396000CB77F /* DecodedBitStreamParser.h */, + E53458EC11987396000CB77F /* Decoder.cpp */, + E53458ED11987396000CB77F /* Decoder.h */, + ); + path = decoder; + sourceTree = ""; + }; + E53458EE11987396000CB77F /* detector */ = { + isa = PBXGroup; + children = ( + E53458EF11987396000CB77F /* CornerPoint.cpp */, + E53458F011987396000CB77F /* CornerPoint.h */, + E53458F111987396000CB77F /* Detector.cpp */, + E53458F211987396000CB77F /* Detector.h */, + E53458F311987396000CB77F /* MonochromeRectangleDetector.cpp */, + E53458F411987396000CB77F /* MonochromeRectangleDetector.h */, + ); + path = detector; + sourceTree = ""; + }; + E53458FD11987396000CB77F /* oned */ = { + isa = PBXGroup; + children = ( + E53458FE11987396000CB77F /* Code128Reader.cpp */, + E53458FF11987396000CB77F /* Code128Reader.h */, + E534590011987396000CB77F /* Code39Reader.cpp */, + E534590111987396000CB77F /* Code39Reader.h */, + E534590211987396000CB77F /* EAN13Reader.cpp */, + E534590311987396000CB77F /* EAN13Reader.h */, + E534590411987396000CB77F /* EAN8Reader.cpp */, + E534590511987396000CB77F /* EAN8Reader.h */, + E534590611987396000CB77F /* ITFReader.cpp */, + E534590711987396000CB77F /* ITFReader.h */, + E534590811987396000CB77F /* MultiFormatOneDReader.cpp */, + E534590911987396000CB77F /* MultiFormatOneDReader.h */, + E534590A11987396000CB77F /* MultiFormatUPCEANReader.cpp */, + E534590B11987396000CB77F /* MultiFormatUPCEANReader.h */, + E534590C11987396000CB77F /* OneDReader.cpp */, + E534590D11987396000CB77F /* OneDReader.h */, + E534590E11987396000CB77F /* OneDResultPoint.cpp */, + E534590F11987396000CB77F /* OneDResultPoint.h */, + E534591011987396000CB77F /* UPCAReader.cpp */, + E534591111987396000CB77F /* UPCAReader.h */, + E534591211987396000CB77F /* UPCEANReader.cpp */, + E534591311987396000CB77F /* UPCEANReader.h */, + E534591411987396000CB77F /* UPCEReader.cpp */, + E534591511987396000CB77F /* UPCEReader.h */, + ); + path = oned; + sourceTree = ""; + }; + E534591611987396000CB77F /* qrcode */ = { + isa = PBXGroup; + children = ( + E534591711987396000CB77F /* decoder */, + E534592411987396000CB77F /* detector */, + E534593311987396000CB77F /* ErrorCorrectionLevel.cpp */, + E534593411987396000CB77F /* ErrorCorrectionLevel.h */, + E534593511987396000CB77F /* FormatInformation.cpp */, + E534593611987396000CB77F /* FormatInformation.h */, + E534593711987396000CB77F /* QRCodeReader.cpp */, + E534593811987396000CB77F /* QRCodeReader.h */, + E534593911987396000CB77F /* Version.cpp */, + E534593A11987396000CB77F /* Version.h */, + ); + path = qrcode; + sourceTree = ""; + }; + E534591711987396000CB77F /* decoder */ = { + isa = PBXGroup; + children = ( + E534591811987396000CB77F /* BitMatrixParser.cpp */, + E534591911987396000CB77F /* BitMatrixParser.h */, + E534591A11987396000CB77F /* DataBlock.cpp */, + E534591B11987396000CB77F /* DataBlock.h */, + E534591C11987396000CB77F /* DataMask.cpp */, + E534591D11987396000CB77F /* DataMask.h */, + E534591E11987396000CB77F /* DecodedBitStreamParser.cpp */, + E534591F11987396000CB77F /* DecodedBitStreamParser.h */, + E534592011987396000CB77F /* Decoder.cpp */, + E534592111987396000CB77F /* Decoder.h */, + E534592211987396000CB77F /* Mode.cpp */, + E534592311987396000CB77F /* Mode.h */, + ); + path = decoder; + sourceTree = ""; + }; + E534592411987396000CB77F /* detector */ = { + isa = PBXGroup; + children = ( + E534592511987396000CB77F /* AlignmentPattern.cpp */, + E534592611987396000CB77F /* AlignmentPattern.h */, + E534592711987396000CB77F /* AlignmentPatternFinder.cpp */, + E534592811987396000CB77F /* AlignmentPatternFinder.h */, + E534592911987396000CB77F /* Detector.cpp */, + E534592A11987396000CB77F /* Detector.h */, + E534592B11987396000CB77F /* FinderPattern.cpp */, + E534592C11987396000CB77F /* FinderPattern.h */, + E534592D11987396000CB77F /* FinderPatternFinder.cpp */, + E534592E11987396000CB77F /* FinderPatternFinder.h */, + E534592F11987396000CB77F /* FinderPatternInfo.cpp */, + E534593011987396000CB77F /* FinderPatternInfo.h */, + E534593111987396000CB77F /* QREdgeDetector.cpp */, + E534593211987396000CB77F /* QREdgeDetector.h */, + ); + path = detector; + sourceTree = ""; + }; + E53459D4119876A5000CB77F /* ResultParsers */ = { + isa = PBXGroup; + children = ( + E53459D5119876A5000CB77F /* ResultParser.h */, + E53459D6119876A5000CB77F /* ResultParser.m */, + E53459D7119876A5000CB77F /* DoCoMoResultParser.h */, + E53459D8119876A5000CB77F /* DoCoMoResultParser.m */, + E53459D9119876A5000CB77F /* MeCardParser.h */, + E53459DA119876A5000CB77F /* MeCardParser.m */, + E53459DB119876A5000CB77F /* EmailDoCoMoResultParser.h */, + E53459DC119876A5000CB77F /* EmailDoCoMoResultParser.m */, + E53459DD119876A5000CB77F /* BookmarkDoCoMoResultParser.h */, + E53459DE119876A5000CB77F /* BookmarkDoCoMoResultParser.m */, + E53459DF119876A5000CB77F /* TelResultParser.h */, + E53459E0119876A5000CB77F /* TelResultParser.m */, + E53459E1119876A5000CB77F /* TextResultParser.h */, + E53459E2119876A5000CB77F /* TextResultParser.m */, + E53459E3119876A5000CB77F /* URLResultParser.h */, + E53459E4119876A5000CB77F /* URLResultParser.m */, + E53459E5119876A5000CB77F /* URLTOResultParser.h */, + E53459E6119876A5000CB77F /* URLTOResultParser.m */, + E53459E7119876A5000CB77F /* SMSResultParser.h */, + E53459E8119876A5000CB77F /* SMSResultParser.m */, + E53459E9119876A5000CB77F /* GeoResultParser.h */, + E53459EA119876A5000CB77F /* GeoResultParser.m */, + E53459EB119876A5000CB77F /* SMSTOResultParser.h */, + E53459EC119876A5000CB77F /* SMSTOResultParser.m */, + E53459ED119876A5000CB77F /* PlainEmailResultParser.h */, + E53459EE119876A5000CB77F /* PlainEmailResultParser.m */, + ); + name = ResultParsers; + sourceTree = ""; + }; + E53459EF119876A5000CB77F /* ParsedResults */ = { + isa = PBXGroup; + children = ( + E53459F0119876A5000CB77F /* BusinessCardParsedResult.h */, + E53459F1119876A5000CB77F /* BusinessCardParsedResult.m */, + E53459F2119876A5000CB77F /* EmailParsedResult.h */, + E53459F3119876A5000CB77F /* EmailParsedResult.m */, + E53459F4119876A5000CB77F /* TelParsedResult.h */, + E53459F5119876A5000CB77F /* TelParsedResult.m */, + E53459F6119876A5000CB77F /* TextParsedResult.h */, + E53459F7119876A5000CB77F /* TextParsedResult.m */, + E53459F8119876A5000CB77F /* ParsedResult.h */, + E53459F9119876A5000CB77F /* ParsedResult.m */, + E53459FA119876A5000CB77F /* URIParsedResult.h */, + E53459FB119876A5000CB77F /* URIParsedResult.m */, + E53459FC119876A5000CB77F /* GeoParsedResult.h */, + E53459FD119876A5000CB77F /* GeoParsedResult.m */, + E53459FE119876A5000CB77F /* SMSParsedResult.h */, + E53459FF119876A5000CB77F /* SMSParsedResult.m */, + ); + name = ParsedResults; + sourceTree = ""; + }; + E5345A00119876A5000CB77F /* Actions */ = { + isa = PBXGroup; + children = ( + E5345A01119876A5000CB77F /* SMSAction.h */, + E5345A02119876A5000CB77F /* SMSAction.m */, + E5345A03119876A5000CB77F /* ShowMapAction.h */, + E5345A04119876A5000CB77F /* ShowMapAction.m */, + E5345A05119876A5000CB77F /* AddContactAction.h */, + E5345A06119876A5000CB77F /* AddContactAction.m */, + E5345A07119876A5000CB77F /* EmailAction.h */, + E5345A08119876A5000CB77F /* EmailAction.m */, + E5345A09119876A5000CB77F /* CallAction.h */, + E5345A0A119876A5000CB77F /* CallAction.m */, + E5345A0B119876A5000CB77F /* OpenUrlAction.h */, + E5345A0C119876A5000CB77F /* OpenUrlAction.m */, + E5345A0D119876A5000CB77F /* ResultAction.h */, + E5345A0E119876A5000CB77F /* ResultAction.m */, + ); + name = Actions; + sourceTree = ""; + }; + E5345D2811999F53000CB77F /* Resources */ = { + isa = PBXGroup; + children = ( + E5345D2911999F62000CB77F /* beep-beep.caf */, + ); + name = Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D2AAC07A0554694100DB518D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + AA747D9F0F9514B9006C5449 /* ZXingWidget_Prefix.pch in Headers */, + E534588D11983738000CB77F /* ZXingWidgetController.h in Headers */, + E534588F11983738000CB77F /* OverlayView.h in Headers */, + E534589411983771000CB77F /* Decoder.h in Headers */, + E53458971198379E000CB77F /* DecoderDelegate.h in Headers */, + E534589E11984A27000CB77F /* TwoDDecoderResult.h in Headers */, + E53458A511984A3E000CB77F /* FormatReader.h in Headers */, + E534594411987396000CB77F /* BarcodeFormat.h in Headers */, + E534594611987396000CB77F /* Binarizer.h in Headers */, + E534594811987396000CB77F /* BinaryBitmap.h in Headers */, + E534594A11987396000CB77F /* Array.h in Headers */, + E534594C11987396000CB77F /* BitArray.h in Headers */, + E534594E11987396000CB77F /* BitMatrix.h in Headers */, + E534595011987396000CB77F /* BitSource.h in Headers */, + E534595211987396000CB77F /* Counted.h in Headers */, + E534595411987396000CB77F /* DecoderResult.h in Headers */, + E534595611987396000CB77F /* DetectorResult.h in Headers */, + E534595811987396000CB77F /* EdgeDetector.h in Headers */, + E534595A11987396000CB77F /* GlobalHistogramBinarizer.h in Headers */, + E534595C11987396000CB77F /* GridSampler.h in Headers */, + E534595E11987396000CB77F /* IllegalArgumentException.h in Headers */, + E534596011987396000CB77F /* LocalBlockBinarizer.h in Headers */, + E534596211987396000CB77F /* PerspectiveTransform.h in Headers */, + E534596311987396000CB77F /* Point.h in Headers */, + E534596511987396000CB77F /* GF256.h in Headers */, + E534596711987396000CB77F /* GF256Poly.h in Headers */, + E534596911987396000CB77F /* ReedSolomonDecoder.h in Headers */, + E534596B11987396000CB77F /* ReedSolomonException.h in Headers */, + E534596D11987396000CB77F /* Str.h in Headers */, + E534596F11987396000CB77F /* DataMatrixReader.h in Headers */, + E534597111987396000CB77F /* BitMatrixParser.h in Headers */, + E534597311987396000CB77F /* DataBlock.h in Headers */, + E534597511987396000CB77F /* DecodedBitStreamParser.h in Headers */, + E534597711987396000CB77F /* Decoder.h in Headers */, + E534597911987396000CB77F /* CornerPoint.h in Headers */, + E534597B11987396000CB77F /* Detector.h in Headers */, + E534597D11987396000CB77F /* MonochromeRectangleDetector.h in Headers */, + E534597F11987396000CB77F /* Version.h in Headers */, + E534598111987396000CB77F /* Exception.h in Headers */, + E534598311987396000CB77F /* LuminanceSource.h in Headers */, + E534598511987396000CB77F /* MultiFormatReader.h in Headers */, + E534598711987396000CB77F /* Code128Reader.h in Headers */, + E534598911987396000CB77F /* Code39Reader.h in Headers */, + E534598B11987396000CB77F /* EAN13Reader.h in Headers */, + E534598D11987396000CB77F /* EAN8Reader.h in Headers */, + E534598F11987396000CB77F /* ITFReader.h in Headers */, + E534599111987396000CB77F /* MultiFormatOneDReader.h in Headers */, + E534599311987396000CB77F /* MultiFormatUPCEANReader.h in Headers */, + E534599511987396000CB77F /* OneDReader.h in Headers */, + E534599711987396000CB77F /* OneDResultPoint.h in Headers */, + E534599911987396000CB77F /* UPCAReader.h in Headers */, + E534599B11987396000CB77F /* UPCEANReader.h in Headers */, + E534599D11987396000CB77F /* UPCEReader.h in Headers */, + E534599F11987396000CB77F /* BitMatrixParser.h in Headers */, + E53459A111987396000CB77F /* DataBlock.h in Headers */, + E53459A311987396000CB77F /* DataMask.h in Headers */, + E53459A511987396000CB77F /* DecodedBitStreamParser.h in Headers */, + E53459A711987396000CB77F /* Decoder.h in Headers */, + E53459A911987396000CB77F /* Mode.h in Headers */, + E53459AB11987396000CB77F /* AlignmentPattern.h in Headers */, + E53459AD11987396000CB77F /* AlignmentPatternFinder.h in Headers */, + E53459AF11987396000CB77F /* Detector.h in Headers */, + E53459B111987396000CB77F /* FinderPattern.h in Headers */, + E53459B311987396000CB77F /* FinderPatternFinder.h in Headers */, + E53459B511987396000CB77F /* FinderPatternInfo.h in Headers */, + E53459B711987396000CB77F /* QREdgeDetector.h in Headers */, + E53459B911987396000CB77F /* ErrorCorrectionLevel.h in Headers */, + E53459BB11987396000CB77F /* FormatInformation.h in Headers */, + E53459BD11987396000CB77F /* QRCodeReader.h in Headers */, + E53459BF11987396000CB77F /* Version.h in Headers */, + E53459C111987396000CB77F /* Reader.h in Headers */, + E53459C311987396000CB77F /* ReaderException.h in Headers */, + E53459C511987396000CB77F /* Result.h in Headers */, + E53459C711987396000CB77F /* ResultPoint.h in Headers */, + E5345A0F119876A5000CB77F /* ResultParser.h in Headers */, + E5345A11119876A5000CB77F /* DoCoMoResultParser.h in Headers */, + E5345A13119876A5000CB77F /* MeCardParser.h in Headers */, + E5345A15119876A5000CB77F /* EmailDoCoMoResultParser.h in Headers */, + E5345A17119876A5000CB77F /* BookmarkDoCoMoResultParser.h in Headers */, + E5345A19119876A5000CB77F /* TelResultParser.h in Headers */, + E5345A1B119876A5000CB77F /* TextResultParser.h in Headers */, + E5345A1D119876A5000CB77F /* URLResultParser.h in Headers */, + E5345A1F119876A5000CB77F /* URLTOResultParser.h in Headers */, + E5345A21119876A5000CB77F /* SMSResultParser.h in Headers */, + E5345A23119876A5000CB77F /* GeoResultParser.h in Headers */, + E5345A25119876A5000CB77F /* SMSTOResultParser.h in Headers */, + E5345A27119876A5000CB77F /* PlainEmailResultParser.h in Headers */, + E5345A29119876A5000CB77F /* BusinessCardParsedResult.h in Headers */, + E5345A2B119876A5000CB77F /* EmailParsedResult.h in Headers */, + E5345A2D119876A5000CB77F /* TelParsedResult.h in Headers */, + E5345A2F119876A5000CB77F /* TextParsedResult.h in Headers */, + E5345A31119876A5000CB77F /* ParsedResult.h in Headers */, + E5345A33119876A5000CB77F /* URIParsedResult.h in Headers */, + E5345A35119876A5000CB77F /* GeoParsedResult.h in Headers */, + E5345A37119876A5000CB77F /* SMSParsedResult.h in Headers */, + E5345A39119876A5000CB77F /* SMSAction.h in Headers */, + E5345A3B119876A5000CB77F /* ShowMapAction.h in Headers */, + E5345A3D119876A5000CB77F /* AddContactAction.h in Headers */, + E5345A3F119876A5000CB77F /* EmailAction.h in Headers */, + E5345A41119876A5000CB77F /* CallAction.h in Headers */, + E5345A43119876A5000CB77F /* OpenUrlAction.h in Headers */, + E5345A45119876A5000CB77F /* ResultAction.h in Headers */, + E5345A6F11987989000CB77F /* NSString+HTML.h in Headers */, + E5345AC811988B6E000CB77F /* GrayBytesMonochromeBitmapSource.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D2AAC07D0554694100DB518D /* ZXingWidget */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "ZXingWidget" */; + buildPhases = ( + D2AAC07A0554694100DB518D /* Headers */, + D2AAC07B0554694100DB518D /* Sources */, + D2AAC07C0554694100DB518D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ZXingWidget; + productName = ZXingWidget; + productReference = D2AAC07E0554694100DB518D /* libZXingWidget.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "ZXingWidget" */; + compatibilityVersion = "Xcode 3.1"; + hasScannedForEncodings = 1; + mainGroup = 0867D691FE84028FC02AAC07 /* ZXingWidget */; + productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D2AAC07D0554694100DB518D /* ZXingWidget */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + D2AAC07B0554694100DB518D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E534588E11983738000CB77F /* ZXingWidgetController.m in Sources */, + E534589011983738000CB77F /* OverlayView.m in Sources */, + E534589F11984A27000CB77F /* TwoDDecoderResult.m in Sources */, + E53458A311984A3E000CB77F /* FormatReader.mm in Sources */, + E53458A411984A3E000CB77F /* MultiFormatReader.mm in Sources */, + E534594311987396000CB77F /* BarcodeFormat.cpp in Sources */, + E534594511987396000CB77F /* Binarizer.cpp in Sources */, + E534594711987396000CB77F /* BinaryBitmap.cpp in Sources */, + E534594911987396000CB77F /* Array.cpp in Sources */, + E534594B11987396000CB77F /* BitArray.cpp in Sources */, + E534594D11987396000CB77F /* BitMatrix.cpp in Sources */, + E534594F11987396000CB77F /* BitSource.cpp in Sources */, + E534595111987396000CB77F /* Counted.cpp in Sources */, + E534595311987396000CB77F /* DecoderResult.cpp in Sources */, + E534595511987396000CB77F /* DetectorResult.cpp in Sources */, + E534595711987396000CB77F /* EdgeDetector.cpp in Sources */, + E534595911987396000CB77F /* GlobalHistogramBinarizer.cpp in Sources */, + E534595B11987396000CB77F /* GridSampler.cpp in Sources */, + E534595D11987396000CB77F /* IllegalArgumentException.cpp in Sources */, + E534595F11987396000CB77F /* LocalBlockBinarizer.cpp in Sources */, + E534596111987396000CB77F /* PerspectiveTransform.cpp in Sources */, + E534596411987396000CB77F /* GF256.cpp in Sources */, + E534596611987396000CB77F /* GF256Poly.cpp in Sources */, + E534596811987396000CB77F /* ReedSolomonDecoder.cpp in Sources */, + E534596A11987396000CB77F /* ReedSolomonException.cpp in Sources */, + E534596C11987396000CB77F /* Str.cpp in Sources */, + E534596E11987396000CB77F /* DataMatrixReader.cpp in Sources */, + E534597011987396000CB77F /* BitMatrixParser.cpp in Sources */, + E534597211987396000CB77F /* DataBlock.cpp in Sources */, + E534597411987396000CB77F /* DecodedBitStreamParser.cpp in Sources */, + E534597611987396000CB77F /* Decoder.cpp in Sources */, + E534597811987396000CB77F /* CornerPoint.cpp in Sources */, + E534597A11987396000CB77F /* Detector.cpp in Sources */, + E534597C11987396000CB77F /* MonochromeRectangleDetector.cpp in Sources */, + E534597E11987396000CB77F /* Version.cpp in Sources */, + E534598011987396000CB77F /* Exception.cpp in Sources */, + E534598211987396000CB77F /* LuminanceSource.cpp in Sources */, + E534598411987396000CB77F /* MultiFormatReader.cpp in Sources */, + E534598611987396000CB77F /* Code128Reader.cpp in Sources */, + E534598811987396000CB77F /* Code39Reader.cpp in Sources */, + E534598A11987396000CB77F /* EAN13Reader.cpp in Sources */, + E534598C11987396000CB77F /* EAN8Reader.cpp in Sources */, + E534598E11987396000CB77F /* ITFReader.cpp in Sources */, + E534599011987396000CB77F /* MultiFormatOneDReader.cpp in Sources */, + E534599211987396000CB77F /* MultiFormatUPCEANReader.cpp in Sources */, + E534599411987396000CB77F /* OneDReader.cpp in Sources */, + E534599611987396000CB77F /* OneDResultPoint.cpp in Sources */, + E534599811987396000CB77F /* UPCAReader.cpp in Sources */, + E534599A11987396000CB77F /* UPCEANReader.cpp in Sources */, + E534599C11987396000CB77F /* UPCEReader.cpp in Sources */, + E534599E11987396000CB77F /* BitMatrixParser.cpp in Sources */, + E53459A011987396000CB77F /* DataBlock.cpp in Sources */, + E53459A211987396000CB77F /* DataMask.cpp in Sources */, + E53459A411987396000CB77F /* DecodedBitStreamParser.cpp in Sources */, + E53459A611987396000CB77F /* Decoder.cpp in Sources */, + E53459A811987396000CB77F /* Mode.cpp in Sources */, + E53459AA11987396000CB77F /* AlignmentPattern.cpp in Sources */, + E53459AC11987396000CB77F /* AlignmentPatternFinder.cpp in Sources */, + E53459AE11987396000CB77F /* Detector.cpp in Sources */, + E53459B011987396000CB77F /* FinderPattern.cpp in Sources */, + E53459B211987396000CB77F /* FinderPatternFinder.cpp in Sources */, + E53459B411987396000CB77F /* FinderPatternInfo.cpp in Sources */, + E53459B611987396000CB77F /* QREdgeDetector.cpp in Sources */, + E53459B811987396000CB77F /* ErrorCorrectionLevel.cpp in Sources */, + E53459BA11987396000CB77F /* FormatInformation.cpp in Sources */, + E53459BC11987396000CB77F /* QRCodeReader.cpp in Sources */, + E53459BE11987396000CB77F /* Version.cpp in Sources */, + E53459C011987396000CB77F /* Reader.cpp in Sources */, + E53459C211987396000CB77F /* ReaderException.cpp in Sources */, + E53459C411987396000CB77F /* Result.cpp in Sources */, + E53459C611987396000CB77F /* ResultPoint.cpp in Sources */, + E5345A10119876A5000CB77F /* ResultParser.m in Sources */, + E5345A12119876A5000CB77F /* DoCoMoResultParser.m in Sources */, + E5345A14119876A5000CB77F /* MeCardParser.m in Sources */, + E5345A16119876A5000CB77F /* EmailDoCoMoResultParser.m in Sources */, + E5345A18119876A5000CB77F /* BookmarkDoCoMoResultParser.m in Sources */, + E5345A1A119876A5000CB77F /* TelResultParser.m in Sources */, + E5345A1C119876A5000CB77F /* TextResultParser.m in Sources */, + E5345A1E119876A5000CB77F /* URLResultParser.m in Sources */, + E5345A20119876A5000CB77F /* URLTOResultParser.m in Sources */, + E5345A22119876A5000CB77F /* SMSResultParser.m in Sources */, + E5345A24119876A5000CB77F /* GeoResultParser.m in Sources */, + E5345A26119876A5000CB77F /* SMSTOResultParser.m in Sources */, + E5345A28119876A5000CB77F /* PlainEmailResultParser.m in Sources */, + E5345A2A119876A5000CB77F /* BusinessCardParsedResult.m in Sources */, + E5345A2C119876A5000CB77F /* EmailParsedResult.m in Sources */, + E5345A2E119876A5000CB77F /* TelParsedResult.m in Sources */, + E5345A30119876A5000CB77F /* TextParsedResult.m in Sources */, + E5345A32119876A5000CB77F /* ParsedResult.m in Sources */, + E5345A34119876A5000CB77F /* URIParsedResult.m in Sources */, + E5345A36119876A5000CB77F /* GeoParsedResult.m in Sources */, + E5345A38119876A5000CB77F /* SMSParsedResult.m in Sources */, + E5345A3A119876A5000CB77F /* SMSAction.m in Sources */, + E5345A3C119876A5000CB77F /* ShowMapAction.m in Sources */, + E5345A3E119876A5000CB77F /* AddContactAction.m in Sources */, + E5345A40119876A5000CB77F /* EmailAction.m in Sources */, + E5345A42119876A5000CB77F /* CallAction.m in Sources */, + E5345A44119876A5000CB77F /* OpenUrlAction.m in Sources */, + E5345A46119876A5000CB77F /* ResultAction.m in Sources */, + E5345A7011987989000CB77F /* NSString+HTML.m in Sources */, + E5345AC911988B6E000CB77F /* GrayBytesMonochromeBitmapSource.cpp in Sources */, + E5345F2C119B0762000CB77F /* Decoder.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB921F08733DC00010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = NO; + DSTROOT = /tmp/ZXingWidget.dst; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ZXingWidget_Prefix.pch; + HEADER_SEARCH_PATHS = ../../cpp/core/src; + INSTALL_PATH = /usr/local/lib; + IPHONEOS_DEPLOYMENT_TARGET = 3.1.2; + LD_GENERATE_MAP_FILE = YES; + LD_OPENMP_FLAGS = "-fopenmp -M"; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = "-ObjC"; + PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; + PRODUCT_NAME = ZXingWidget; + SDKROOT = iphoneos3.1.3; + SEPARATE_STRIP = NO; + SKIP_INSTALL = YES; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + }; + name = Debug; + }; + 1DEB922008733DC00010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + DSTROOT = /tmp/ZXingWidget.dst; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ZXingWidget_Prefix.pch; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = ZXingWidget; + }; + name = Release; + }; + 1DEB922308733DC00010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_LDFLAGS = "-ObjC"; + PREBINDING = NO; + SDKROOT = iphoneos3.2; + }; + name = Debug; + }; + 1DEB922408733DC00010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_LDFLAGS = "-ObjC"; + PREBINDING = NO; + SDKROOT = iphoneos3.2; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "ZXingWidget" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB921F08733DC00010E9CD /* Debug */, + 1DEB922008733DC00010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "ZXingWidget" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB922308733DC00010E9CD /* Debug */, + 1DEB922408733DC00010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/iphone/ZXingWidget/ZXingWidgetController.h b/iphone/ZXingWidget/ZXingWidgetController.h new file mode 100755 index 000000000..9429fe6c3 --- /dev/null +++ b/iphone/ZXingWidget/ZXingWidgetController.h @@ -0,0 +1,47 @@ +/** + * Copyright 2009 Jeff Verkoeyen + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "Decoder.h" +#include "ParsedResult.h" +#include "OverlayView.h" + +@protocol ZXingDelegate; + +@interface ZXingWidgetController : UIImagePickerController { + ParsedResult *result; + NSArray *actions; + OverlayView *overlayView; + SystemSoundID beepSound; + BOOL showCancel; + id delegate; + BOOL wasCancelled; +} + +@property (nonatomic, assign) id delegate; +@property (nonatomic, assign) BOOL showCancel; +@property (nonatomic, retain) ParsedResult *result; +@property (nonatomic, retain) NSArray *actions; + +- (id)initWithDelegate:(id)delegate; +- (BOOL)fixedFocus; +@end + +@protocol ZXingDelegate +- (void)scanResult:(NSString *)result; +- (void)cancelled; +@end diff --git a/iphone/ZXingWidget/ZXingWidgetController.m b/iphone/ZXingWidget/ZXingWidgetController.m new file mode 100755 index 000000000..6560d9a6e --- /dev/null +++ b/iphone/ZXingWidget/ZXingWidgetController.m @@ -0,0 +1,163 @@ +/** + * Copyright 2009 Jeff Verkoeyen + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "ZXingWidgetController.h" +#import "Decoder.h" +#import "NSString+HTML.h" +#import "ResultParser.h" +#import "ParsedResult.h" +#import "ResultAction.h" +#include +#include + +#define CAMERA_SCALAR 1.12412 // scalar = (480 / (2048 / 480)) +#define FIRST_TAKE_DELAY 1.0 + +CGImageRef UIGetScreenImage(); + +@implementation ZXingWidgetController +@synthesize result, actions, showCancel, delegate; + +- (id)initWithDelegate:(id)scanDelegate { + if (self = [super init]) { + [self setDelegate:scanDelegate]; + showCancel = true; + self.wantsFullScreenLayout = YES; + self.sourceType = UIImagePickerControllerSourceTypeCamera; + float zoomFactor = CAMERA_SCALAR; + if ([self fixedFocus]) { + zoomFactor *= 1.5; + } + self.cameraViewTransform = CGAffineTransformScale( + self.cameraViewTransform, zoomFactor, zoomFactor); + overlayView = [[OverlayView alloc] initWithCancelEnabled:showCancel frame:[UIScreen mainScreen].bounds]; + [overlayView setDelegate:self]; + self.sourceType = UIImagePickerControllerSourceTypeCamera; + self.showsCameraControls = NO; + self.cameraOverlayView = overlayView; + self.allowsEditing = NO; // [[NSUserDefaults standardUserDefaults] boolForKey:@"allowEditing"]; + } + + return self; +} + +- (void)cancelled { + NSLog(@"cancelled called in ZXingWidgetController"); + wasCancelled = true; + if (delegate != nil) { + [delegate cancelled]; + } +} + +- (NSString *)getPlatform { + size_t size; + sysctlbyname("hw.machine", NULL, &size, NULL, 0); + char *machine = malloc(size); + sysctlbyname("hw.machine", machine, &size, NULL, 0); + NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding]; + free(machine); + return platform; +} + +- (BOOL)fixedFocus { + NSString *platform = [self getPlatform]; + if ([platform isEqualToString:@"iPhone1,1"] || + [platform isEqualToString:@"iPhone1,2"]) return true; + return false; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + wasCancelled = false; + [NSTimer scheduledTimerWithTimeInterval: FIRST_TAKE_DELAY + target: self + selector: @selector(takePicture:) + userInfo: nil + repeats: NO]; +} + +- (void)takePicture:(NSTimer*)theTimer { + CGImageRef capture = UIGetScreenImage(); + UIImage *scrn = [UIImage imageWithCGImage:CGImageCreateWithImageInRect(capture, [overlayView cropRect])]; + Decoder *d = [[Decoder alloc] init]; + d.delegate = self; + CGRect cropRect = overlayView.cropRect; + cropRect.origin.x = 0.0; + cropRect.origin.y = 0.0; + NSLog(@"crop rect %f, %f, %f, %f", cropRect.origin.x, cropRect.origin.y, cropRect.size.width, cropRect.size.height); + [d decodeImage:scrn cropRect:cropRect]; +} + +// DecoderDelegate methods + +- (void)decoder:(Decoder *)decoder willDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset{ + NSLog(@"DecoderViewController MessageWhileDecodingWithDimensions: Decoding image (%.0fx%.0f) ...", image.size.width, image.size.height); +} + +- (void)decoder:(Decoder *)decoder + decodingImage:(UIImage *)image + usingSubset:(UIImage *)subset + progress:(NSString *)message { + NSLog(@"decoding image %@", message); +} + +- (void)presentResultForString:(NSString *)resultString { + NSLog(@"in presentResultForString()"); + self.result = [ResultParser parsedResultForString:resultString]; + AudioServicesPlaySystemSound(beepSound); + // self.actions = self.result.actions; +#ifdef DEBUG + NSLog(@"result string = %@", resultString); + NSLog(@"result has %d actions", actions ? 0 : actions.count); +#endif + // [self updateToolbar]; +} + +- (void)presentResultPoints:(NSArray *)resultPoints + forImage:(UIImage *)image + usingSubset:(UIImage *)subset { + // simply add the points to the image view + NSLog(@"got points for display"); + [overlayView setPoints:resultPoints]; +} + +- (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)twoDResult { + // [self presentResultForString:twoDResult.text]; + NSLog(@"decoded image!!"); + [self presentResultPoints:[twoDResult points] forImage:image usingSubset:subset]; + if (delegate != nil) { + [delegate scanResult:[twoDResult text]]; + } + decoder.delegate = nil; + [decoder release]; + + // save the scan to the shared database + // [[Database sharedDatabase] addScanWithText:twoDResult.text]; + // need to call delegate....` + // [self performResultAction:self]; +} + +- (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason { + decoder.delegate = nil; + [decoder release]; + [overlayView setPoints:nil]; + if (!wasCancelled) { + [self takePicture:nil]; + } + //[self updateToolbar]; +} + +@end diff --git a/iphone/ZXingWidget/ZXingWidget_Prefix.pch b/iphone/ZXingWidget/ZXingWidget_Prefix.pch new file mode 100644 index 000000000..bfb739423 --- /dev/null +++ b/iphone/ZXingWidget/ZXingWidget_Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'CocoaTouchStaticLibrary' target in the 'CocoaTouchStaticLibrary' project. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/iphone/ZXingWidget/beep-beep.caf b/iphone/ZXingWidget/beep-beep.caf new file mode 100644 index 000000000..8c693f888 Binary files /dev/null and b/iphone/ZXingWidget/beep-beep.caf differ