From: srowen Date: Mon, 25 Feb 2008 21:57:48 +0000 (+0000) Subject: Initial check in of rough, experimental iPhone code. Not to be used just yet; just... X-Git-Url: http://git.rot13.org/?p=zxing.git;a=commitdiff_plain;h=e16ebd1b7cc6e6a1981f9e0fba06cfb94fa0ed09 Initial check in of rough, experimental iPhone code. Not to be used just yet; just here so we can collaborate a bit. git-svn-id: http://zxing.googlecode.com/svn/trunk@228 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- diff --git a/iphone/experimental/Info.plist b/iphone/experimental/Info.plist new file mode 100644 index 00000000..47927fbd --- /dev/null +++ b/iphone/experimental/Info.plist @@ -0,0 +1,39 @@ + + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ZXing + CFBundleIdentifier + zxing + CFBundleInfoDictionaryVersion + 0.1 + CFBundleName + ZXing + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/iphone/experimental/Makefile b/iphone/experimental/Makefile new file mode 100644 index 00000000..c9957f70 --- /dev/null +++ b/iphone/experimental/Makefile @@ -0,0 +1,36 @@ +# Copyright 2008 Google Inc. +# +# 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. + +CC=/usr/local/bin/arm-apple-darwin-gcc -v +LD=$(CC) + +CFLAGS = -L$(HEAVENLY) +LDFLAGS = -framework CoreFoundation \ + -framework Foundation \ + -framework UIKit \ + -framework CoreGraphics \ + -framework PhotoLibrary \ + -lobjc + +all: ZXing + +ZXing: ZXing.o ZXingApplication.o + $(LD) $(LDFLAGS) -o $@ $^ + +%.o: %.m + $(CC) -c $(CFLAGS) $< -o $@ + +clean: + rm -f *.o ZXing + rm -f ZXing.app/ZXing diff --git a/iphone/experimental/README b/iphone/experimental/README new file mode 100644 index 00000000..2a151262 --- /dev/null +++ b/iphone/experimental/README @@ -0,0 +1,3 @@ +This is a temporary checkin of a rough shell of an iPhone application, for +purposes of experimentation and sharing with developers. It should not be +expected to be complete or functional, or ready for use. diff --git a/iphone/experimental/ZXing.m b/iphone/experimental/ZXing.m new file mode 100644 index 00000000..9ecdedb4 --- /dev/null +++ b/iphone/experimental/ZXing.m @@ -0,0 +1,25 @@ +/* + * Copyright 2008 Google Inc. + * + * 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 "ZXingApplication.h" + +int main(int argc, char **argv) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + return UIApplicationMain(argc, argv, [ZXingApplication class]); +} diff --git a/iphone/experimental/ZXingApplication.h b/iphone/experimental/ZXingApplication.h new file mode 100644 index 00000000..a00f8447 --- /dev/null +++ b/iphone/experimental/ZXingApplication.h @@ -0,0 +1,43 @@ +/* + * Copyright 2008 Google Inc. + * + * 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 + +@interface ZXingApplication : UIApplication +{ + CameraController* cameraController; + + UIWindow* mainWindow; + + UIView* previewView; + UIView* decodeView; + + UIImageView* decodeImageView; +} + +- (void) decodeImage: (id) param1; + +- (void) cameraControllerReadyStateChanged: (id) param1; +- (void) cameraController: (id) param1 + tookPicture: (id) param2 + withPreview: (id) preview + jpegData: (id) param3 + imageProperties: (id) param4; + +@end diff --git a/iphone/experimental/ZXingApplication.m b/iphone/experimental/ZXingApplication.m new file mode 100644 index 00000000..3005a0e3 --- /dev/null +++ b/iphone/experimental/ZXingApplication.m @@ -0,0 +1,97 @@ +/* + * Copyright 2008 Google Inc. + * + * 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 +#import +#import "ZXingApplication.h" + +@implementation ZXingApplication + +- (void) applicationDidFinishLaunching: (id) param1 { + mainWindow = [[UIWindow alloc] initWithContentRect: [UIHardware + fullScreenApplicationContentRect]]; + + [mainWindow orderFront: self]; + [mainWindow _setHidden: NO]; + + // Setup camera stuff + cameraController = [[CameraController alloc] init]; + [cameraController startPreview]; + [[CameraController sharedInstance] setDelegate: self]; + + struct CGRect fullscreen_rect = + [UIHardware fullScreenApplicationContentRect]; + fullscreen_rect.origin.x = 0.0f; + fullscreen_rect.origin.y = 0.0f; + fullscreen_rect.size.width = 320.0f; + fullscreen_rect.size.height = 480.0f; + + // Setup previewView + previewView = [[UIView alloc] initWithFrame: fullscreen_rect]; + [previewView addSubview: [cameraController previewView]]; + + UIPushButton *decode_button = + [[UIPushButton alloc] initWithFrame: + CGRectMake(140.0f, 440.0f, 50.0f, 20.0f)]; + [decode_button setTitle: @"Decode"]; + [decode_button setEnabled: YES]; + [decode_button addTarget: self action: @selector(decodeImage:) + forEvents: 255]; + + [previewView addSubview: decode_button]; + + // Setup decodeView + decodeView = [[UIView alloc] initWithFrame: fullscreen_rect]; + decodeImageView = [[UIImageView alloc] initWithFrame: + CGRectMake(0.0f, 0.0f, + 320.0f, 480.0f)]; + [decodeImageView setRotationBy: 90]; + [decodeView addSubview: decodeImageView]; + + [mainWindow setContentView: previewView]; +} + +- (void) decodeImage: (id) param1 { + [cameraController capturePhoto]; + + [mainWindow setContentView: decodeView]; +} + + +- (void) cameraControllerReadyStateChanged: (id) param1 { +} + +- (void) cameraController: (id) param1 + tookPicture: (id) param2 + withPreview: (id) preview + jpegData: (id) param3 + imageProperties: (id) param4 { + [cameraController stopPreview]; + + CGImageRef orig_image = [preview imageRef]; + int orig_height = CGImageGetHeight(orig_image); + int orig_width = CGImageGetWidth(orig_image); + + [decodeImageView setImage: preview]; + // Height and width swapped since the image comes in rotated 90 degrees. + [decodeImageView setFrame: CGRectMake(0.0f, 0.0f, orig_height, orig_width)]; +} + +@end diff --git a/iphone/experimental/icon.png b/iphone/experimental/icon.png new file mode 100644 index 00000000..6f97d469 Binary files /dev/null and b/iphone/experimental/icon.png differ