[iphone] scanTest project now automatically references and builds ZXingWidget project
[zxing.git] / iphone / ZXingWidget / FormatReader.mm
1 //
2 //  FormatReader.mm
3 //
4 //  Created by Dave MacLachlan on 2010-05-03.
5 /*
6  * Copyright 2010 ZXing authors
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20
21 #import "FormatReader.h"
22
23 @implementation FormatReader
24
25 static NSMutableSet *sFormatReaders = nil;
26
27 + (void)registerFormatReader:(FormatReader*)formatReader {
28   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
29   @synchronized(self) {
30     if (!sFormatReaders) {
31       sFormatReaders = [[NSMutableSet alloc] init];
32     }
33     [sFormatReaders addObject:formatReader];
34   }
35   [pool drain];
36 }
37
38 + (NSSet *)formatReaders {
39   NSSet *formatReaders = nil;
40   @synchronized(self) {
41
42     formatReaders = [[sFormatReaders copy] autorelease];
43   }
44   return formatReaders;
45 }
46
47 - (id)initWithReader:(zxing::Reader *)reader {
48   if ((self = [super init])) {
49     reader_ = reader;
50   }
51   return self;
52 }
53
54 - (void)dealloc {
55   delete reader_;
56   [super dealloc];
57 }
58
59 - (zxing::Ref<zxing::Result>)decode:(zxing::Ref<zxing::BinaryBitmap>)grayImage {
60   return reader_->decode(grayImage);
61 }
62
63 @end