Added David Phillip Oster's fixes for compiling and getting the Barcodes app to scan for barcodes.

git-svn-id: https://zxing.googlecode.com/svn/trunk@1343 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
dmaclach 2010-05-07 17:10:06 +00:00
parent 0e7aedd046
commit 52e6d56a63
17 changed files with 1536 additions and 778 deletions

View file

@ -10,6 +10,7 @@ Brian Brown (Google)
Christian Brunschen (Google) Christian Brunschen (Google)
Daniel Switkin (Google) Daniel Switkin (Google)
Dave MacLachlan (Google) Dave MacLachlan (Google)
David Phillip Oster (Google)
David Albert (Bug Labs) David Albert (Bug Labs)
Diego Pierotto Diego Pierotto
Eric Kobrin (Velocitude) Eric Kobrin (Velocitude)

View file

@ -29,11 +29,11 @@
namespace zxing { namespace zxing {
class Binarizer : public Counted { class Binarizer : public Counted {
private: private:
Ref<LuminanceSource> source_; Ref<LuminanceSource> source_;
Ref<BitMatrix> matrix_;
Ref<BitArray> array_; Ref<BitArray> array_;
Ref<BitMatrix> matrix_;
public: public:
Binarizer(Ref<LuminanceSource> source); Binarizer(Ref<LuminanceSource> source);
@ -45,7 +45,7 @@ namespace zxing {
virtual Ref<BitMatrix> estimateBlackMatrix() = 0; virtual Ref<BitMatrix> estimateBlackMatrix() = 0;
Ref<BitMatrix> getBlackMatrix(); Ref<BitMatrix> getBlackMatrix();
Ref<LuminanceSource> getSource(); Ref<LuminanceSource> getSource();
}; };
} }
#endif /* BINARIZER_H_ */ #endif /* BINARIZER_H_ */

View file

@ -24,26 +24,27 @@
#include <zxing/common/IllegalArgumentException.h> #include <zxing/common/IllegalArgumentException.h>
namespace zxing { namespace zxing {
using namespace std; using namespace std;
const int LUMINANCE_BITS = 5; const int LUMINANCE_BITS = 5;
const int LUMINANCE_SHIFT = 8 - LUMINANCE_BITS; const int LUMINANCE_SHIFT = 8 - LUMINANCE_BITS;
const int LUMINANCE_BUCKETS = 1 << LUMINANCE_BITS; const int LUMINANCE_BUCKETS = 1 << LUMINANCE_BITS;
GlobalHistogramBinarizer::GlobalHistogramBinarizer(Ref<LuminanceSource> source) : GlobalHistogramBinarizer::GlobalHistogramBinarizer(Ref<LuminanceSource> source) :
Binarizer(source) { Binarizer(source) {
} }
GlobalHistogramBinarizer::~GlobalHistogramBinarizer() { GlobalHistogramBinarizer::~GlobalHistogramBinarizer() {
} }
Ref<BitArray> GlobalHistogramBinarizer::estimateBlackRow(int y, Ref<BitArray> row){ Ref<BitArray> GlobalHistogramBinarizer::estimateBlackRow(int y,
Ref<BitArray> row){
vector<int> histogram(LUMINANCE_BUCKETS, 0); vector<int> histogram(LUMINANCE_BUCKETS, 0);
LuminanceSource& source = *getSource(); LuminanceSource& source = *getSource();
int width = source.getWidth(); int width = source.getWidth();
if (row == NULL || row->getSize() < width) { if (row == NULL || static_cast<int>(row->getSize()) < width) {
row = new BitArray(width); row = new BitArray(width);
} else { } else {
row->clear(); row->clear();
@ -73,9 +74,9 @@ namespace zxing {
} }
return array_ref; return array_ref;
} }
Ref<BitMatrix> GlobalHistogramBinarizer::estimateBlackMatrix() { Ref<BitMatrix> GlobalHistogramBinarizer::estimateBlackMatrix() {
// Faster than working with the reference // Faster than working with the reference
LuminanceSource& source = *getSource(); LuminanceSource& source = *getSource();
int width = source.getWidth(); int width = source.getWidth();
@ -83,8 +84,9 @@ namespace zxing {
vector<int> histogram(LUMINANCE_BUCKETS, 0); vector<int> histogram(LUMINANCE_BUCKETS, 0);
// Quickly calculates the histogram by sampling four rows from the image. This proved to be // Quickly calculates the histogram by sampling four rows from the image.
// more robust on the blackbox tests than sampling a diagonal as we used to do. // This proved to be more robust on the blackbox tests than sampling a
// diagonal as we used to do.
for (int y = 1; y < 5; y++) { for (int y = 1; y < 5; y++) {
int row = height * y / 5; int row = height * y / 5;
int right = (width << 2) / 5; int right = (width << 2) / 5;
@ -107,9 +109,9 @@ namespace zxing {
} }
} }
return matrix_ref; return matrix_ref;
} }
int GlobalHistogramBinarizer::estimate(vector<int> &histogram) { int GlobalHistogramBinarizer::estimate(vector<int> &histogram) {
int numBuckets = histogram.size(); int numBuckets = histogram.size();
int maxBucketCount = 0; int maxBucketCount = 0;
@ -148,11 +150,13 @@ namespace zxing {
secondPeak = temp; secondPeak = temp;
} }
// Kind of arbitrary; if the two peaks are very close, then we figure there is so little // Kind of arbitrary; if the two peaks are very close, then we figure there is
// dynamic range in the image, that discriminating black and white is too error-prone. // so little dynamic range in the image, that discriminating black and white
// Decoding the image/line is either pointless, or may in some cases lead to a false positive // is too error-prone.
// for 1D formats, which are relatively lenient. // Decoding the image/line is either pointless, or may in some cases lead to
// We arbitrarily say "close" is "<= 1/16 of the total histogram buckets apart" // a false positive for 1D formats, which are relatively lenient.
// We arbitrarily say "close" is
// "<= 1/16 of the total histogram buckets apart"
if (secondPeak - firstPeak <= numBuckets >> 4) { if (secondPeak - firstPeak <= numBuckets >> 4) {
throw IllegalArgumentException("Too little dynamic range in luminance"); throw IllegalArgumentException("Too little dynamic range in luminance");
} }
@ -162,9 +166,10 @@ namespace zxing {
int bestValleyScore = -1; int bestValleyScore = -1;
for (int i = secondPeak - 1; i > firstPeak; i--) { for (int i = secondPeak - 1; i > firstPeak; i--) {
int fromFirst = i - firstPeak; int fromFirst = i - firstPeak;
// Favor a "valley" that is not too close to either peak -- especially not the black peak -- // Favor a "valley" that is not too close to either peak -- especially not
// and that has a low value of course // the black peak -- and that has a low value of course
int score = fromFirst * fromFirst * (secondPeak - i) * (maxBucketCount - histogram[i]); int score = fromFirst * fromFirst * (secondPeak - i) *
(maxBucketCount - histogram[i]);
if (score > bestValleyScore) { if (score > bestValleyScore) {
bestValley = i; bestValley = i;
bestValleyScore = score; bestValleyScore = score;
@ -172,6 +177,7 @@ namespace zxing {
} }
return bestValley; return bestValley;
}
} }
} // namespace zxing

View file

@ -28,8 +28,8 @@ PerspectiveTransform::PerspectiveTransform(float inA11, float inA21,
float inA22, float inA32, float inA22, float inA32,
float inA13, float inA23, float inA13, float inA23,
float inA33) : float inA33) :
a11(inA11), a21(inA21), a31(inA31), a12(inA12), a22(inA22), a32(inA32), a11(inA11), a12(inA12), a13(inA13), a21(inA21), a22(inA22), a23(inA23),
a13(inA13), a23(inA23), a33(inA33) {} a31(inA31), a32(inA32), a33(inA33) {}
Ref<PerspectiveTransform> PerspectiveTransform::quadrilateralToQuadrilateral(float x0, float y0, float x1, float y1, Ref<PerspectiveTransform> PerspectiveTransform::quadrilateralToQuadrilateral(float x0, float y0, float x1, float y1,
float x2, float y2, float x3, float y3, float x0p, float y0p, float x1p, float y1p, float x2p, float y2p, float x2, float y2, float x3, float y3, float x0p, float y0p, float x1p, float y1p, float x2p, float y2p,

View file

@ -28,8 +28,8 @@ int BitMatrixParser::copyBit(size_t x, size_t y, int versionBits) {
return bitMatrix_->get(x, y) ? (versionBits << 1) | 0x1 : versionBits << 1; return bitMatrix_->get(x, y) ? (versionBits << 1) | 0x1 : versionBits << 1;
} }
BitMatrixParser::BitMatrixParser(Ref<BitMatrix> bitMatrix) : parsedVersion_(NULL), BitMatrixParser::BitMatrixParser(Ref<BitMatrix> bitMatrix) : bitMatrix_(NULL),
bitMatrix_(NULL), parsedVersion_(NULL),
readBitMatrix_(NULL) { readBitMatrix_(NULL) {
size_t dimension = bitMatrix->getDimension(); size_t dimension = bitMatrix->getDimension();
if (dimension < 10 || dimension > 144 || (dimension & 0x01) != 0) if (dimension < 10 || dimension > 144 || (dimension & 0x01) != 0)

View file

@ -33,8 +33,8 @@ namespace datamatrix {
class BitMatrixParser : public Counted { class BitMatrixParser : public Counted {
private: private:
Ref<BitMatrix> bitMatrix_; Ref<BitMatrix> bitMatrix_;
Ref<BitMatrix> readBitMatrix_;
Ref<Version> parsedVersion_; Ref<Version> parsedVersion_;
Ref<BitMatrix> readBitMatrix_;
int copyBit(size_t x, size_t y, int versionBits); int copyBit(size_t x, size_t y, int versionBits);

View file

@ -29,14 +29,14 @@ namespace datamatrix {
using namespace std; using namespace std;
ResultPointsAndTransitions::ResultPointsAndTransitions() : from_(), to_(), transitions_(0) { ResultPointsAndTransitions::ResultPointsAndTransitions() : to_(), from_(), transitions_(0) {
Ref<CornerPoint> ref(new CornerPoint(0,0)); Ref<CornerPoint> ref(new CornerPoint(0,0));
from_ = ref; from_ = ref;
to_ = ref; to_ = ref;
} }
ResultPointsAndTransitions::ResultPointsAndTransitions(Ref<CornerPoint> from, Ref<CornerPoint> to, int transitions) : ResultPointsAndTransitions::ResultPointsAndTransitions(Ref<CornerPoint> from, Ref<CornerPoint> to, int transitions) :
from_(from), to_(to), transitions_(transitions) { to_(to), from_(from), transitions_(transitions) {
} }
Ref<CornerPoint> ResultPointsAndTransitions::getFrom() { Ref<CornerPoint> ResultPointsAndTransitions::getFrom() {

View file

@ -26,15 +26,16 @@
#include <limits.h> #include <limits.h>
namespace zxing { namespace zxing {
namespace oned { namespace oned {
static const char* ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"; static const char* ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%";
/** /**
* These represent the encodings of characters, as patterns of wide and narrow bars. * These represent the encodings of characters, as patterns of wide and narrow
* The 9 least-significant bits of each int correspond to the pattern of wide and narrow, * bars.
* with 1s representing "wide" and 0s representing narrow. * The 9 least-significant bits of each int correspond to the pattern of wide
* and narrow, with 1s representing "wide" and 0s representing narrow.
*/ */
const int CHARACTER_ENCODINGS_LEN = 44; const int CHARACTER_ENCODINGS_LEN = 44;
static int CHARACTER_ENCODINGS[CHARACTER_ENCODINGS_LEN] = { static int CHARACTER_ENCODINGS[CHARACTER_ENCODINGS_LEN] = {
@ -46,12 +47,14 @@ namespace zxing {
}; };
static int ASTERISK_ENCODING = 0x094; static int ASTERISK_ENCODING = 0x094;
static const char* ALPHABET_STRING = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"; static const char* ALPHABET_STRING =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%";
/** /**
* Creates a reader that assumes all encoded data is data, and does not treat the final * Creates a reader that assumes all encoded data is data, and does not treat
* character as a check digit. It will not decoded "extended Code 39" sequences. * the final character as a check digit. It will not decoded "extended
* Code 39" sequences.
*/ */
Code39Reader::Code39Reader() : alphabet_string(ALPHABET_STRING), Code39Reader::Code39Reader() : alphabet_string(ALPHABET_STRING),
usingCheckDigit(false), usingCheckDigit(false),
@ -59,13 +62,14 @@ namespace zxing {
} }
/** /**
* Creates a reader that can be configured to check the last character as a check digit. * Creates a reader that can be configured to check the last character as a
* It will not decoded "extended Code 39" sequences. * check digit. It will not decoded "extended Code 39" sequences.
* *
* @param usingCheckDigit if true, treat the last data character as a check digit, not * @param usingCheckDigit if true, treat the last data character as a check
* data, and verify that the checksum passes. * digit, not data, and verify that the checksum passes.
*/ */
Code39Reader::Code39Reader(bool usingCheckDigit_) : alphabet_string(ALPHABET_STRING), Code39Reader::Code39Reader(bool usingCheckDigit_) :
alphabet_string(ALPHABET_STRING),
usingCheckDigit(usingCheckDigit_), usingCheckDigit(usingCheckDigit_),
extendedMode(false) { extendedMode(false) {
} }
@ -125,8 +129,8 @@ namespace zxing {
delete [] counters; delete [] counters;
// IS end // IS end
int whiteSpaceAfterEnd = nextStart - lastStart - lastPatternSize; int whiteSpaceAfterEnd = nextStart - lastStart - lastPatternSize;
// If 50% of last pattern size, following last pattern, is not whitespace, fail // If 50% of last pattern size, following last pattern, is not whitespace,
// (but if it's whitespace to the very end of the image, that's OK) // fail (but if it's whitespace to the very end of the image, that's OK)
if (nextStart != end && whiteSpaceAfterEnd / 2 < lastPatternSize) { if (nextStart != end && whiteSpaceAfterEnd / 2 < lastPatternSize) {
delete [] start; delete [] start;
throw ReaderException("too short end white space"); throw ReaderException("too short end white space");
@ -134,7 +138,7 @@ namespace zxing {
if (usingCheckDigit) { if (usingCheckDigit) {
int max = tmpResultString.length() - 1; int max = tmpResultString.length() - 1;
int total = 0; unsigned int total = 0;
for (int i = 0; i < max; i++) { for (int i = 0; i < max; i++) {
total += alphabet_string.find_first_of(tmpResultString[i], 0); total += alphabet_string.find_first_of(tmpResultString[i], 0);
} }
@ -163,8 +167,10 @@ namespace zxing {
float right = (float) (nextStart + lastStart) / 2.0f; float right = (float) (nextStart + lastStart) / 2.0f;
std::vector< Ref<ResultPoint> > resultPoints(2); std::vector< Ref<ResultPoint> > resultPoints(2);
Ref<OneDResultPoint> resultPoint1(new OneDResultPoint(left, (float) rowNumber)); Ref<OneDResultPoint> resultPoint1(
Ref<OneDResultPoint> resultPoint2(new OneDResultPoint(right, (float) rowNumber)); new OneDResultPoint(left, (float) rowNumber));
Ref<OneDResultPoint> resultPoint2(
new OneDResultPoint(right, (float) rowNumber));
resultPoints[0] = resultPoint1; resultPoints[0] = resultPoint1;
resultPoints[1] = resultPoint2; resultPoints[1] = resultPoint2;
@ -172,7 +178,8 @@ namespace zxing {
delete [] start; delete [] start;
Ref<Result> res(new Result(resultString, resultBytes, resultPoints, BarcodeFormat_CODE_39)); Ref<Result> res(new Result(
resultString, resultBytes, resultPoints, BarcodeFormat_CODE_39));
return res; return res;
} }
@ -203,8 +210,11 @@ namespace zxing {
} else { } else {
if (counterPosition == patternLength - 1) { if (counterPosition == patternLength - 1) {
if (toNarrowWidePattern(counters, countersLen) == ASTERISK_ENCODING) { if (toNarrowWidePattern(counters, countersLen) == ASTERISK_ENCODING) {
// Look for whitespace before start pattern, >= 50% of width of start pattern // Look for whitespace before start pattern, >= 50% of width of
if (row->isRange(fmaxl(0, patternStart - (i - patternStart) / 2), patternStart, false)) { // start pattern.
long double longPatternOffset =
fmaxl(0, patternStart - (i - patternStart) / 2);
if (row->isRange(longPatternOffset, patternStart, false)) {
int* resultValue = new int[2]; int* resultValue = new int[2];
resultValue[0] = patternStart; resultValue[0] = patternStart;
resultValue[1] = i; resultValue[1] = i;
@ -231,8 +241,8 @@ namespace zxing {
throw ReaderException(""); throw ReaderException("");
} }
// For efficiency, returns -1 on failure. Not throwing here saved as many as 700 exceptions // For efficiency, returns -1 on failure. Not throwing here saved as many as
// per image when using some of our blackbox images. // 700 exceptions per image when using some of our blackbox images.
int Code39Reader::toNarrowWidePattern(int counters[], int countersLen){ int Code39Reader::toNarrowWidePattern(int counters[], int countersLen){
int numCounters = countersLen; int numCounters = countersLen;
int maxNarrowCounter = 0; int maxNarrowCounter = 0;
@ -265,7 +275,8 @@ namespace zxing {
int counter = counters[i]; int counter = counters[i];
if (counters[i] > maxNarrowCounter) { if (counters[i] > maxNarrowCounter) {
wideCounters--; wideCounters--;
// totalWideCountersWidth = 3 * average, so this checks if counter >= 3/2 * average // totalWideCountersWidth = 3 * average, so this checks if
// counter >= 3/2 * average.
if ((counter << 1) >= totalWideCountersWidth) { if ((counter << 1) >= totalWideCountersWidth) {
return -1; return -1;
} }
@ -342,5 +353,6 @@ namespace zxing {
Ref<String> decoded(new String(tmpDecoded)); Ref<String> decoded(new String(tmpDecoded));
return decoded; return decoded;
} }
} } // namespace oned
} } // namespace zxing

View file

@ -42,6 +42,7 @@
IBOutlet UIButton *messageHelpButton; IBOutlet UIButton *messageHelpButton;
IBOutlet ScannedImageView *imageView; IBOutlet ScannedImageView *imageView;
IBOutlet UIToolbar *toolbar; IBOutlet UIToolbar *toolbar;
UIImagePickerController *picker;
Decoder *decoder; Decoder *decoder;
ParsedResult *result; ParsedResult *result;
@ -60,6 +61,7 @@
@property (nonatomic, retain) UITextView *messageTextView; @property (nonatomic, retain) UITextView *messageTextView;
@property (nonatomic, retain) UIButton *messageHelpButton; @property (nonatomic, retain) UIButton *messageHelpButton;
@property (nonatomic, retain) ScannedImageView *imageView; @property (nonatomic, retain) ScannedImageView *imageView;
@property (nonatomic, retain) UIImagePickerController *picker;
@property (nonatomic, retain) UIToolbar *toolbar; @property (nonatomic, retain) UIToolbar *toolbar;
@property (nonatomic, retain) Decoder *decoder; @property (nonatomic, retain) Decoder *decoder;
@ -86,8 +88,7 @@
/* UIImagePickerControllerDelegate methods */ /* UIImagePickerControllerDelegate methods */
- (void)imagePickerController:(UIImagePickerController *)picker - (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)image didFinishPickingMediaWithInfo:(NSDictionary *)info;
editingInfo:(NSDictionary *)editingInfo;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
/* UINavigationControllerDelegate methods */ /* UINavigationControllerDelegate methods */

View file

@ -32,6 +32,24 @@
#import "Scan.h" #import "Scan.h"
#import "TwoDDecoderResult.h" #import "TwoDDecoderResult.h"
// Michael Jurewitz, Dec 16, 2009 6:32 PM writes:
// https://devforums.apple.com/message/149553
// Notice Regarding UIGetScreenImage()
// After carefully considering the issue, Apple is now allowing applications to
// use the function UIGetScreenImage() to programmatically capture the current
// screen contents.
// Note that a future release of iPhone OS may provide a public API equivalent
// of this functionality. At such time, all applications using
// UIGetScreenImage() will be required to adopt the public API.
CGImageRef MyCGImageCopyScreenContents(void) {
extern CGImageRef UIGetScreenImage(void);
return UIGetScreenImage(); /* already retained */
}
@interface DecoderViewController()
- (void)takeScreenshot;
@end
@implementation DecoderViewController @implementation DecoderViewController
@synthesize cameraBarItem; @synthesize cameraBarItem;
@ -44,6 +62,7 @@
@synthesize messageTextView; @synthesize messageTextView;
@synthesize messageHelpButton; @synthesize messageHelpButton;
@synthesize imageView; @synthesize imageView;
@synthesize picker;
@synthesize toolbar; @synthesize toolbar;
@synthesize decoder; @synthesize decoder;
@ -55,7 +74,8 @@
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
// Initialization code // Initialization code
self.title = NSLocalizedString(@"DecoderViewController AppTitle", @"Barcode Scanner"); self.title =
NSLocalizedString(@"DecoderViewController AppTitle", @"Barcode Scanner");
Decoder *d = [[Decoder alloc] init]; Decoder *d = [[Decoder alloc] init];
self.decoder = d; self.decoder = d;
@ -86,7 +106,8 @@
target:self target:self
onSuccess:@selector(messageReady:) onSuccess:@selector(messageReady:)
onFailure:@selector(messageFailed:)]; onFailure:@selector(messageFailed:)];
hintsController.title = NSLocalizedString(@"DecoderViewController Hints MessageViewController title", @"Hints"); hintsController.title =
NSLocalizedString(@"DecoderViewController Hints MessageViewController title", @"Hints");
[hintsController view]; [hintsController view];
} }
@ -98,7 +119,8 @@
target:self target:self
onSuccess:@selector(messageReady:) onSuccess:@selector(messageReady:)
onFailure:@selector(messageFailed:)]; onFailure:@selector(messageFailed:)];
aboutController.title = NSLocalizedString(@"DecoderViewController About MessageViewController title", @"About"); aboutController.title =
NSLocalizedString(@"DecoderViewController About MessageViewController title", @"About");
[aboutController view]; [aboutController view];
} }
@ -114,7 +136,8 @@
self.result = nil; self.result = nil;
[self clearImageView]; [self clearImageView];
[self updateToolbar]; [self updateToolbar];
[self showMessage:NSLocalizedString(@"DecoderViewController take or choose picture", @"Please take or choose a picture containing a barcode") helpButton:YES]; [self showMessage:NSLocalizedString(@"DecoderViewController take or choose picture",
@"Please take or choose a picture containing a barcode") helpButton:YES];
} }
// Implement loadView if you want to create a view hierarchy programmatically // Implement loadView if you want to create a view hierarchy programmatically
@ -199,10 +222,41 @@
// Create the Image Picker // Create the Image Picker
if ([UIImagePickerController isSourceTypeAvailable:sourceType]) { if ([UIImagePickerController isSourceTypeAvailable:sourceType]) {
UIImagePickerController* picker = [[UIImagePickerController alloc] init]; UIImagePickerController* aPicker =
picker.sourceType = sourceType; [[[UIImagePickerController alloc] init] autorelease];
picker.delegate = self; aPicker.sourceType = sourceType;
picker.allowsImageEditing = YES; // [[NSUserDefaults standardUserDefaults] boolForKey:@"allowEditing"]; aPicker.delegate = self;
self.picker = aPicker;
// [[NSUserDefaults standardUserDefaults] boolForKey:@"allowEditing"];
BOOL isCamera = (sourceType == UIImagePickerControllerSourceTypeCamera);
picker.allowsEditing = !isCamera;
if (isCamera) {
picker.showsCameraControls = NO;
UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
NSString *cancelString =
NSLocalizedString(@"DecoderViewController cancel button title", @"");
CGFloat height = [UIFont systemFontSize];
CGSize size = [cancelString sizeWithFont:[UIFont systemFontOfSize:height]];
[cancelButton setTitle:cancelString forState:UIControlStateNormal];
CGRect appFrame = [[UIScreen mainScreen] bounds];
static const int kMargin = 10;
static const int kInternalXMargin = 10;
static const int kInternalYMargin = 10;
CGRect frame = CGRectMake(kMargin,
appFrame.size.height - (height + 2*kInternalYMargin + kMargin),
2*kInternalXMargin + size.width,
height + 2*kInternalYMargin);
[cancelButton setFrame:frame];
[cancelButton addTarget:self
action:@selector(cancel:)
forControlEvents:UIControlEventTouchUpInside];
picker.cameraOverlayView = cancelButton;
// The camera takes quite a while to start up. Hence the 2 second delay.
[self performSelector:@selector(takeScreenshot)
withObject:nil
afterDelay:2.0];
}
// Picker is displayed asynchronously. // Picker is displayed asynchronously.
[self presentModalViewController:picker animated:YES]; [self presentModalViewController:picker animated:YES];
@ -246,8 +300,9 @@
[savedPhotosBarItem release]; [savedPhotosBarItem release];
[archiveBarItem release]; [archiveBarItem release];
[toolbar release]; [toolbar release];
[actions dealloc]; [picker release];
[resultPointViews dealloc]; [actions release];
[resultPointViews release];
[super dealloc]; [super dealloc];
} }
@ -338,6 +393,7 @@
} }
- (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)twoDResult { - (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)twoDResult {
self.picker = nil;
[self presentResultForString:twoDResult.text]; [self presentResultForString:twoDResult.text];
[self presentResultPoints:twoDResult.points forImage:image usingSubset:subset]; [self presentResultPoints:twoDResult.points forImage:image usingSubset:subset];
@ -349,8 +405,14 @@
} }
- (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason { - (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason {
if (self.picker && UIImagePickerControllerSourceTypeCamera == self.picker.sourceType) {
// If we are using the camera, and the user hasn't manually cancelled,
// take another snapshot and try to decode it.
[self takeScreenshot];
} else {
[self showMessage:reason helpButton:YES]; [self showMessage:reason helpButton:YES];
[self updateToolbar]; [self updateToolbar];
}
} }
@ -392,14 +454,37 @@
} }
} }
- (void)cancel:(id)sender {
self.picker = nil;
}
- (void)takeScreenshot {
if (picker) {
CGImageRef cgScreen = MyCGImageCopyScreenContents();
if (cgScreen) {
CGRect croppedFrame = CGRectMake(0, 0, CGImageGetWidth(cgScreen),
CGImageGetHeight(cgScreen) - (10+toolbar.bounds.size.height));
CGImageRef cgCropped = CGImageCreateWithImageInRect(cgScreen, croppedFrame);
if (cgCropped) {
UIImage *screenshot = [UIImage imageWithCGImage:cgCropped];
CGImageRelease(cgCropped);
[self.decoder decodeImage:screenshot];
}
CGImageRelease(cgScreen);
}
}
}
// UIImagePickerControllerDelegate methods // UIImagePickerControllerDelegate methods
- (void)imagePickerController:(UIImagePickerController *)picker - (void)imagePickerController:(UIImagePickerController *)aPicker
didFinishPickingImage:(UIImage *)image didFinishPickingMediaWithInfo:(NSDictionary *)info {
editingInfo:(NSDictionary *)editingInfo UIImage *imageToDecode =
{ [info objectForKey:UIImagePickerControllerEditedImage];
UIImage *imageToDecode = image; if (!imageToDecode) {
CGSize size = [image size]; imageToDecode = [info objectForKey:UIImagePickerControllerOriginalImage];
}
CGSize size = [imageToDecode size];
CGRect cropRect = CGRectMake(0.0, 0.0, size.width, size.height); CGRect cropRect = CGRectMake(0.0, 0.0, size.width, size.height);
#ifdef DEBUG #ifdef DEBUG
@ -407,14 +492,13 @@
#endif #endif
NSString *systemVersion = [[UIDevice currentDevice] systemVersion]; NSString *systemVersion = [[UIDevice currentDevice] systemVersion];
if (editingInfo) { NSValue *cropRectValue = [info objectForKey:UIImagePickerControllerCropRect];
UIImage *originalImage = [editingInfo objectForKey:UIImagePickerControllerOriginalImage]; if (cropRectValue) {
UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];
if (originalImage) { if (originalImage) {
#ifdef DEBUG #ifdef DEBUG
NSLog(@"original image size = (%f, %f)", originalImage.size.width, originalImage.size.height); NSLog(@"original image size = (%f, %f)", originalImage.size.width, originalImage.size.height);
#endif #endif
NSValue *cropRectValue = [editingInfo objectForKey:UIImagePickerControllerCropRect];
if (cropRectValue) {
cropRect = [cropRectValue CGRectValue]; cropRect = [cropRectValue CGRectValue];
#ifdef DEBUG #ifdef DEBUG
NSLog(@"crop rect = (%f, %f) x (%f, %f)", CGRectGetMinX(cropRect), CGRectGetMinY(cropRect), CGRectGetWidth(cropRect), CGRectGetHeight(cropRect)); NSLog(@"crop rect = (%f, %f) x (%f, %f)", CGRectGetMinX(cropRect), CGRectGetMinY(cropRect), CGRectGetWidth(cropRect), CGRectGetHeight(cropRect));
@ -434,21 +518,24 @@
imageToDecode = originalImage; imageToDecode = originalImage;
} }
} }
}
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
[imageToDecode retain]; [imageToDecode retain];
[picker release]; self.picker = nil;
[self.decoder decodeImage:imageToDecode cropRect:cropRect]; [self.decoder decodeImage:imageToDecode cropRect:cropRect];
[imageToDecode release]; [imageToDecode release];
[self updateToolbar];
} }
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{ - (void)imagePickerControllerDidCancel:(UIImagePickerController *)aPicker {
self.picker = nil;
}
- (void)setPicker:(UIImagePickerController *)aPicker {
if (picker != aPicker) {
[picker dismissModalViewControllerAnimated:YES]; [picker dismissModalViewControllerAnimated:YES];
[picker release]; picker = [aPicker retain];
[self updateToolbar]; [self updateToolbar];
}
} }
- (void)navigationController:(UINavigationController *)navigationController - (void)navigationController:(UINavigationController *)navigationController

View file

@ -65,8 +65,8 @@ static NSString *_timeString(NSDate *date) {
@synthesize timeView; @synthesize timeView;
- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier { - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if ((self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier])) { if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
imageView = [[UIImageView alloc] initWithFrame:CGRectZero]; imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
imageView.contentMode = UIViewContentModeCenter; imageView.contentMode = UIViewContentModeCenter;
[self.contentView addSubview:imageView]; [self.contentView addSubview:imageView];

View file

@ -10,8 +10,8 @@
<p style="font-weight: bold;"> <p style="font-weight: bold;">
<img style="width: 128px; height: 128px;" alt="ZXing Project Logo" src="../ZxingLarge.png"></p> <img style="width: 128px; height: 128px;" alt="ZXing Project Logo" src="../ZxingLarge.png"></p>
<h2>Strichcodes</h2> <h2>Strichcodes</h2>
<p>Version 1.0</p> <p>Version 1.1</p>
<p>&copy; 2008 The <a href="http://code.google.com/p/zxing/">ZXing</a> <p>&copy; 2008-2010 The <a href="http://code.google.com/p/zxing/">ZXing</a>
Authors<br> Authors<br>
</p> </p>
<p> <p>

View file

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data> <data>
<int key="IBDocument.SystemTarget">512</int> <int key="IBDocument.SystemTarget">768</int>
<string key="IBDocument.SystemVersion">9E17</string> <string key="IBDocument.SystemVersion">10D573</string>
<string key="IBDocument.InterfaceBuilderVersion">670</string> <string key="IBDocument.InterfaceBuilderVersion">762</string>
<string key="IBDocument.AppKitVersion">949.33</string> <string key="IBDocument.AppKitVersion">1038.29</string>
<string key="IBDocument.HIToolboxVersion">352.00</string> <string key="IBDocument.HIToolboxVersion">460.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">87</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -13,13 +17,24 @@
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531"> <object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string> <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object> </object>
<object class="IBProxyObject" id="711762367"> <object class="IBProxyObject" id="711762367">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string> <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object> </object>
<object class="IBUIWebView" id="221386056"> <object class="IBUIWebView" id="221386056">
<nil key="NSNextResponder"/> <nil key="NSNextResponder"/>
@ -31,6 +46,7 @@
</object> </object>
<bool key="IBUIClipsSubviews">YES</bool> <bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool> <bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIScalesPageToFit">YES</bool> <bool key="IBUIScalesPageToFit">YES</bool>
</object> </object>
</object> </object>
@ -51,33 +67,31 @@
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">0</int> <int key="objectID">0</int>
<object class="NSArray" key="object" id="360949347"> <reference key="object" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="1000"/> <reference key="children" ref="1000"/>
<nil key="parent"/> <nil key="parent"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-1</int> <int key="objectID">-1</int>
<reference key="object" ref="372490531"/> <reference key="object" ref="372490531"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> <string key="objectName">File's Owner</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-2</int> <int key="objectID">-2</int>
<reference key="object" ref="711762367"/> <reference key="object" ref="711762367"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">4</int> <int key="objectID">4</int>
<reference key="object" ref="221386056"/> <reference key="object" ref="221386056"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
</object> </object>
</object> </object>
</object> </object>
<object class="NSMutableDictionary" key="flattenedProperties"> <object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string> <string>-1.CustomClassName</string>
<string>-2.CustomClassName</string> <string>-2.CustomClassName</string>
@ -85,16 +99,14 @@
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>HintsViewController</string> <string>MessageViewController</string>
<string>UIResponder</string> <string>UIResponder</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object> </object>
</object> </object>
<object class="NSMutableDictionary" key="unlocalizedProperties"> <object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -102,9 +114,7 @@
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations"> <object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -116,17 +126,224 @@
<object class="NSMutableArray" key="referencedPartialClassDescriptions"> <object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">HintsViewController</string> <string key="className">MessageViewController</string>
<string key="superclassName">UIViewController</string> <string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">callbackTarget</string>
<string key="NS.object.0">id</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier"> <object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string> <string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/HintsViewController.h</string> <string key="minorKey">Classes/MessageViewController.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="28199712">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="28199712"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIWebView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIWebView.h</string>
</object> </object>
</object> </object>
</object> </object>
</object> </object>
<int key="IBDocument.localizationMode">0</int> <int key="IBDocument.localizationMode">0</int>
<nil key="IBDocument.LastKnownRelativeProjectPath"/> <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="768" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="784" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../ZXing.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">87</string>
</data> </data>
</archive> </archive>

View file

@ -10,8 +10,8 @@
<p style="font-weight: bold;"> <p style="font-weight: bold;">
<img style="width: 128px; height: 128px;" alt="ZXing Project Logo" src="../ZxingLarge.png"></p> <img style="width: 128px; height: 128px;" alt="ZXing Project Logo" src="../ZxingLarge.png"></p>
<h2>Barcodes</h2> <h2>Barcodes</h2>
<p>Version 1.0</p> <p>Version 1.1</p>
<p>&copy; 2008 The <a href="http://code.google.com/p/zxing/">ZXing</a> <p>&copy; 2008-2010 The <a href="http://code.google.com/p/zxing/">ZXing</a>
Authors<br> Authors<br>
</p> </p>
<p> <p>

View file

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data> <data>
<int key="IBDocument.SystemTarget">512</int> <int key="IBDocument.SystemTarget">768</int>
<string key="IBDocument.SystemVersion">9E17</string> <string key="IBDocument.SystemVersion">10D573</string>
<string key="IBDocument.InterfaceBuilderVersion">670</string> <string key="IBDocument.InterfaceBuilderVersion">762</string>
<string key="IBDocument.AppKitVersion">949.33</string> <string key="IBDocument.AppKitVersion">1038.29</string>
<string key="IBDocument.HIToolboxVersion">352.00</string> <string key="IBDocument.HIToolboxVersion">460.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">87</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -13,13 +17,24 @@
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531"> <object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string> <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object> </object>
<object class="IBProxyObject" id="711762367"> <object class="IBProxyObject" id="711762367">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string> <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object> </object>
<object class="IBUIWebView" id="221386056"> <object class="IBUIWebView" id="221386056">
<nil key="NSNextResponder"/> <nil key="NSNextResponder"/>
@ -31,6 +46,7 @@
</object> </object>
<bool key="IBUIClipsSubviews">YES</bool> <bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool> <bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIScalesPageToFit">YES</bool> <bool key="IBUIScalesPageToFit">YES</bool>
</object> </object>
</object> </object>
@ -43,7 +59,7 @@
<reference key="source" ref="372490531"/> <reference key="source" ref="372490531"/>
<reference key="destination" ref="221386056"/> <reference key="destination" ref="221386056"/>
</object> </object>
<int key="connectionID">5</int> <int key="connectionID">6</int>
</object> </object>
</object> </object>
<object class="IBMutableOrderedSet" key="objectRecords"> <object class="IBMutableOrderedSet" key="objectRecords">
@ -51,33 +67,31 @@
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">0</int> <int key="objectID">0</int>
<object class="NSArray" key="object" id="360949347"> <reference key="object" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="1000"/> <reference key="children" ref="1000"/>
<nil key="parent"/> <nil key="parent"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-1</int> <int key="objectID">-1</int>
<reference key="object" ref="372490531"/> <reference key="object" ref="372490531"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> <string key="objectName">File's Owner</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-2</int> <int key="objectID">-2</int>
<reference key="object" ref="711762367"/> <reference key="object" ref="711762367"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">4</int> <int key="objectID">4</int>
<reference key="object" ref="221386056"/> <reference key="object" ref="221386056"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
</object> </object>
</object> </object>
</object> </object>
<object class="NSMutableDictionary" key="flattenedProperties"> <object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string> <string>-1.CustomClassName</string>
<string>-2.CustomClassName</string> <string>-2.CustomClassName</string>
@ -85,16 +99,14 @@
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>HintsViewController</string> <string>MessageViewController</string>
<string>UIResponder</string> <string>UIResponder</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object> </object>
</object> </object>
<object class="NSMutableDictionary" key="unlocalizedProperties"> <object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -102,31 +114,236 @@
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations"> <object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
</object> </object>
<nil key="sourceID"/> <nil key="sourceID"/>
<int key="maxID">5</int> <int key="maxID">6</int>
</object> </object>
<object class="IBClassDescriber" key="IBDocument.Classes"> <object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions"> <object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">HintsViewController</string> <string key="className">MessageViewController</string>
<string key="superclassName">UIViewController</string> <string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">callbackTarget</string>
<string key="NS.object.0">id</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier"> <object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string> <string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/HintsViewController.h</string> <string key="minorKey">Classes/MessageViewController.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="25161611">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="25161611"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIWebView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIWebView.h</string>
</object> </object>
</object> </object>
</object> </object>
</object> </object>
<int key="IBDocument.localizationMode">0</int> <int key="IBDocument.localizationMode">0</int>
<nil key="IBDocument.LastKnownRelativeProjectPath"/> <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="768" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="784" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../ZXing.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">87</string>
</data> </data>
</archive> </archive>

View file

@ -10,8 +10,8 @@
<p style="font-weight: bold;"> <p style="font-weight: bold;">
<img style="width: 128px; height: 128px;" alt="ZXing Project Logo" src="../ZxingLarge.png"></p> <img style="width: 128px; height: 128px;" alt="ZXing Project Logo" src="../ZxingLarge.png"></p>
<h2>Streckkoder</h2> <h2>Streckkoder</h2>
<p>Version 1.0</p> <p>Version 1.1</p>
<p>&copy; 2008 The <a href="http://code.google.com/p/zxing/">ZXing</a> <p>&copy; 2008-2010 The <a href="http://code.google.com/p/zxing/">ZXing</a>
Authors<br> Authors<br>
</p> </p>
<p> <p>

View file

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data> <data>
<int key="IBDocument.SystemTarget">512</int> <int key="IBDocument.SystemTarget">768</int>
<string key="IBDocument.SystemVersion">9E17</string> <string key="IBDocument.SystemVersion">10D573</string>
<string key="IBDocument.InterfaceBuilderVersion">670</string> <string key="IBDocument.InterfaceBuilderVersion">762</string>
<string key="IBDocument.AppKitVersion">949.33</string> <string key="IBDocument.AppKitVersion">1038.29</string>
<string key="IBDocument.HIToolboxVersion">352.00</string> <string key="IBDocument.HIToolboxVersion">460.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">87</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -13,13 +17,24 @@
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object> </object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531"> <object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string> <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object> </object>
<object class="IBProxyObject" id="711762367"> <object class="IBProxyObject" id="711762367">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string> <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object> </object>
<object class="IBUIWebView" id="221386056"> <object class="IBUIWebView" id="221386056">
<nil key="NSNextResponder"/> <nil key="NSNextResponder"/>
@ -31,6 +46,7 @@
</object> </object>
<bool key="IBUIClipsSubviews">YES</bool> <bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool> <bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIScalesPageToFit">YES</bool> <bool key="IBUIScalesPageToFit">YES</bool>
</object> </object>
</object> </object>
@ -51,33 +67,31 @@
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">0</int> <int key="objectID">0</int>
<object class="NSArray" key="object" id="360949347"> <reference key="object" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="children" ref="1000"/> <reference key="children" ref="1000"/>
<nil key="parent"/> <nil key="parent"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-1</int> <int key="objectID">-1</int>
<reference key="object" ref="372490531"/> <reference key="object" ref="372490531"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> <string key="objectName">File's Owner</string>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">-2</int> <int key="objectID">-2</int>
<reference key="object" ref="711762367"/> <reference key="object" ref="711762367"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
</object> </object>
<object class="IBObjectRecord"> <object class="IBObjectRecord">
<int key="objectID">4</int> <int key="objectID">4</int>
<reference key="object" ref="221386056"/> <reference key="object" ref="221386056"/>
<reference key="parent" ref="360949347"/> <reference key="parent" ref="0"/>
</object> </object>
</object> </object>
</object> </object>
<object class="NSMutableDictionary" key="flattenedProperties"> <object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys"> <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string> <string>-1.CustomClassName</string>
<string>-2.CustomClassName</string> <string>-2.CustomClassName</string>
@ -85,16 +99,14 @@
</object> </object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<string>HintsViewController</string> <string>MessageViewController</string>
<string>UIResponder</string> <string>UIResponder</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object> </object>
</object> </object>
<object class="NSMutableDictionary" key="unlocalizedProperties"> <object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -102,9 +114,7 @@
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations"> <object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys"> <reference key="dict.sortedKeys" ref="0"/>
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values"> <object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
</object> </object>
@ -116,17 +126,224 @@
<object class="NSMutableArray" key="referencedPartialClassDescriptions"> <object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription"> <object class="IBPartialClassDescription">
<string key="className">HintsViewController</string> <string key="className">MessageViewController</string>
<string key="superclassName">UIViewController</string> <string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">callbackTarget</string>
<string key="NS.object.0">id</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier"> <object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string> <string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/HintsViewController.h</string> <string key="minorKey">Classes/MessageViewController.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="63869399">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="63869399"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIWebView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIWebView.h</string>
</object> </object>
</object> </object>
</object> </object>
</object> </object>
<int key="IBDocument.localizationMode">0</int> <int key="IBDocument.localizationMode">0</int>
<nil key="IBDocument.LastKnownRelativeProjectPath"/> <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="768" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="784" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../ZXing.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int> <int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">87</string>
</data> </data>
</archive> </archive>