From c2a16e2691dd6d1cd2ec7687d402d872165494f6 Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Wed, 11 Mar 2020 20:15:32 -0400 Subject: [PATCH 1/9] Whoa.. 3.0 --- .editorconfig | 104 + Component-Forms/Banner.png | Bin 242402 -> 0 bytes Component-Forms/Details.md | 13 - Component-Forms/GettingStarted.md | 234 - Component-Forms/License.md | 203 - Component-Forms/component.template.yaml | 69 - .../icons/zxing.net.mobile.forms_128x128.png | Bin 11981 -> 0 bytes .../icons/zxing.net.mobile.forms_512x512.png | Bin 154450 -> 0 bytes Component/Banner.png | Bin 242402 -> 0 bytes Component/Details.md | 14 - Component/GettingStarted.md | 121 - Component/License.md | 203 - Component/component.template.yaml | 74 - Component/icons/zxing.net.mobile_128x128.png | Bin 9829 -> 0 bytes Component/icons/zxing.net.mobile_512x512.png | Bin 152787 -> 0 bytes Samples/Android/Sample.Android.sln | 41 - .../Sample.Android/Assets/AboutAssets.txt | 19 - .../Sample.Android/FragmentActivity.cs | 87 - .../Android/Sample.Android/ImageActivity.cs | 42 - .../Android/Sample.Android/MainActivity.cs | 168 - Samples/Forms/Core/BarcodePage.cs | 29 - Samples/Forms/Core/CustomScanPage.cs | 73 - Samples/Forms/Core/FormsSample.cs | 57 - Samples/Forms/Core/FormsSample.csproj | 59 - Samples/Forms/Core/HomePage.cs | 114 - Samples/Forms/Core/Properties/AssemblyInfo.cs | 27 - Samples/Forms/Droid/MainActivity.cs | 43 - .../Forms/Droid/Properties/AssemblyInfo.cs | 28 - .../Resources/mipmap-hdpi/ic_launcher.png | Bin 5988 -> 0 bytes .../Resources/mipmap-mdpi/ic_launcher.png | Bin 3321 -> 0 bytes .../Resources/mipmap-xhdpi/ic_launcher.png | Bin 8925 -> 0 bytes .../Resources/mipmap-xxhdpi/ic_launcher.png | Bin 15985 -> 0 bytes .../Resources/mipmap-xxxhdpi/ic_launcher.png | Bin 24589 -> 0 bytes Samples/Forms/Sample.Forms.Mac.sln | 305 - Samples/Forms/Sample.Forms.WP8.sln | 226 - Samples/Forms/Sample.Forms.sln | 389 - Samples/Forms/WindowsPhone/App.xaml | 20 - Samples/Forms/WindowsPhone/App.xaml.cs | 223 - .../WindowsPhone/Assets/AlignmentGrid.png | Bin 9042 -> 0 bytes .../WindowsPhone/Assets/ApplicationIcon.png | Bin 3392 -> 0 bytes .../Assets/Tiles/FlipCycleTileLarge.png | Bin 9930 -> 0 bytes .../Assets/Tiles/FlipCycleTileMedium.png | Bin 9070 -> 0 bytes .../Assets/Tiles/FlipCycleTileSmall.png | Bin 3674 -> 0 bytes .../Assets/Tiles/IconicTileMediumLarge.png | Bin 4937 -> 0 bytes .../Assets/Tiles/IconicTileSmall.png | Bin 3724 -> 0 bytes .../FormsSample.WindowsPhone.csproj | 220 - .../Forms/WindowsPhone/LocalizedStrings.cs | 14 - Samples/Forms/WindowsPhone/MainPage.xaml | 62 - Samples/Forms/WindowsPhone/MainPage.xaml.cs | 50 - .../WindowsPhone/Properties/AppManifest.xml | 6 - .../WindowsPhone/Properties/WMAppManifest.xml | 39 - Samples/Forms/WindowsPhone/README_FIRST.txt | 3 - .../Resources/AppResources.Designer.cs | 127 - .../WindowsPhone/Resources/AppResources.resx | 137 - .../Toolkit.Content/ApplicationBar.Add.png | Bin 339 -> 0 bytes .../Toolkit.Content/ApplicationBar.Cancel.png | Bin 350 -> 0 bytes .../Toolkit.Content/ApplicationBar.Check.png | Bin 414 -> 0 bytes .../Toolkit.Content/ApplicationBar.Delete.png | Bin 445 -> 0 bytes .../Toolkit.Content/ApplicationBar.Select.png | Bin 863 -> 0 bytes Samples/Forms/WindowsPhone/packages.config | 5 - Samples/Forms/WindowsUniversal/App.xaml.cs | 111 - .../ApplicationInsights.config | 3 - .../Forms/WindowsUniversal/MainPage.xaml.cs | 38 - .../WindowsUniversal/Package.appxmanifest | 29 - .../WindowsUniversal_TemporaryKey.pfx | Bin 2446 -> 0 bytes Samples/Forms/WindowsUniversal/project.json | 20 - Samples/Forms/iOS/AppDelegate.cs | 39 - Samples/Forms/iOS/FormsSample.iOS.csproj | 131 - Samples/Forms/iOS/Main.cs | 21 - Samples/Forms/iOS/Resources/Icon.png | Bin 166820 -> 0 bytes Samples/Forms/iOS/Resources/Icon@2x.png | Bin 166820 -> 0 bytes .../AppIcons.appiconset/Icon-40.png | Bin 2515 -> 0 bytes .../AppIcons.appiconset/Icon-40@2x.png | Bin 6450 -> 0 bytes .../AppIcons.appiconset/Icon-40@3x.png | Bin 11679 -> 0 bytes .../AppIcons.appiconset/Icon-60@2x.png | Bin 11679 -> 0 bytes .../AppIcons.appiconset/Icon-60@3x.png | Bin 22608 -> 0 bytes .../AppIcons.appiconset/Icon-76.png | Bin 6041 -> 0 bytes .../AppIcons.appiconset/Icon-76@2x.png | Bin 17247 -> 0 bytes .../AppIcons.appiconset/Icon-83.5@2x.png | Bin 20122 -> 0 bytes .../AppIcons.appiconset/Icon-Small.png | Bin 1573 -> 0 bytes .../AppIcons.appiconset/Icon-Small@2x.png | Bin 4195 -> 0 bytes .../AppIcons.appiconset/Icon-Small@3x.png | Bin 7470 -> 0 bytes Samples/Forms/iOS/Resources/LaunchScreen.xib | 33 - Samples/Sample.Android/FragmentActivity.cs | 84 + Samples/Sample.Android/ImageActivity.cs | 43 + Samples/Sample.Android/MainActivity.cs | 170 + .../Properties/AndroidManifest.xml | 6 +- .../Sample.Android/Properties/AssemblyInfo.cs | 4 +- .../Resources/AboutResources.txt | 0 .../Resources/drawable-hdpi/launcher.png | Bin .../Resources/drawable-mdpi/launcher.png | Bin .../Resources/drawable-xhdpi/launcher.png | Bin .../Resources/drawable-xxhdpi/launcher.png | Bin .../Resources/drawable-xxxhdpi/launcher.png | Bin .../Resources/layout/FragmentActivity.axml | 0 .../Resources/layout/ImageActivity.axml | 0 .../Sample.Android/Resources/layout/Main.axml | 0 .../Resources/layout/ZxingOverlay.axml | 0 .../Resources/values/Strings.xml | 0 .../Sample.Android/Sample.Android.csproj | 35 +- .../Assets/AboutAssets.txt | 10 +- .../Sample.Forms.Android/MainActivity.cs | 46 + .../Properties/AndroidManifest.xml | 8 +- .../Properties/AssemblyInfo.cs | 23 +- .../Resources/AboutResources.txt | 24 +- .../Resources/layout/Tabbar.xml | 11 + .../Resources/layout/Toolbar.xml | 9 + .../Resources/mipmap-hdpi/launcher.png | Bin 0 -> 5983 bytes .../Resources/mipmap-mdpi/launcher.png | Bin 0 -> 3753 bytes .../Resources/mipmap-xhdpi/launcher.png | Bin 0 -> 8543 bytes .../Resources/mipmap-xxhdpi/launcher.png | Bin 0 -> 14394 bytes .../Resources/mipmap-xxxhdpi/launcher.png | Bin 0 -> 21226 bytes .../Resources/values/colors.xml | 7 + .../Resources/values/styles.xml | 30 + .../Sample.Forms.Android.csproj} | 107 +- .../Sample.Forms.Tizen/Sample.Forms.Tizen.cs | 36 + .../Sample.Forms.Tizen.csproj | 36 + .../shared/res/FormsSample.Tizen.png | Bin 0 -> 10097 bytes .../Sample.Forms.Tizen/tizen-manifest.xml | 18 + .../Sample.Forms.UWP}/App.xaml | 5 +- .../Sample.Forms/Sample.Forms.UWP/App.xaml.cs | 109 + .../Assets/LargeTile.scale-100.png | Bin 0 -> 6143 bytes .../Assets/LargeTile.scale-200.png | Bin 0 -> 13916 bytes .../Assets/LargeTile.scale-400.png | Bin 0 -> 31561 bytes .../Assets/SmallTile.scale-100.png | Bin 0 -> 1218 bytes .../Assets/SmallTile.scale-200.png | Bin 0 -> 2536 bytes .../Assets/SmallTile.scale-400.png | Bin 0 -> 5566 bytes .../Assets/SplashScreen.scale-100.png | Bin 0 -> 6555 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 15240 bytes .../Assets/SplashScreen.scale-400.png | Bin 0 -> 39781 bytes .../Assets/Square150x150Logo.scale-100.png | Bin 0 -> 2772 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 5904 bytes .../Assets/Square150x150Logo.scale-400.png | Bin 0 -> 13344 bytes ...x44Logo.altform-unplated_targetsize-16.png | Bin 0 -> 394 bytes ...44Logo.altform-unplated_targetsize-256.png | Bin 0 -> 9693 bytes ...x44Logo.altform-unplated_targetsize-48.png | Bin 0 -> 1245 bytes .../Assets/Square44x44Logo.scale-100.png | Bin 0 -> 1141 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 2468 bytes .../Assets/Square44x44Logo.scale-400.png | Bin 0 -> 4740 bytes .../Assets/Square44x44Logo.targetsize-16.png | Bin 0 -> 394 bytes .../Assets/Square44x44Logo.targetsize-256.png | Bin 0 -> 9693 bytes .../Assets/Square44x44Logo.targetsize-48.png | Bin 0 -> 1245 bytes .../Assets/StoreLogo.backup.png | Bin 0 -> 392 bytes .../Assets/StoreLogo.scale-100.png | Bin 0 -> 836 bytes .../Assets/StoreLogo.scale-200.png | Bin 0 -> 1742 bytes .../Assets/StoreLogo.scale-400.png | Bin 0 -> 3654 bytes .../Assets/Wide310x150Logo.scale-100.png | Bin 0 -> 2988 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 6555 bytes .../Assets/Wide310x150Logo.scale-400.png | Bin 0 -> 15240 bytes .../Sample.Forms.UWP}/MainPage.xaml | 14 +- .../Sample.Forms.UWP/MainPage.xaml.cs | 27 + .../Sample.Forms.UWP/Package.appxmanifest | 56 + .../Properties/AssemblyInfo.cs | 4 +- .../Properties/Default.rd.xml | 2 +- .../Sample.Forms.UWP/Sample.Forms.UWP.csproj | 189 +- .../Sample.Forms.iOS/AppDelegate.cs | 31 + .../AppIcon.appiconset/Contents.json | 117 + .../AppIcon.appiconset/Icon1024.png | Bin 0 -> 70429 bytes .../AppIcon.appiconset/Icon120.png | Bin 0 -> 3773 bytes .../AppIcon.appiconset/Icon152.png | Bin 0 -> 4750 bytes .../AppIcon.appiconset/Icon167.png | Bin 0 -> 4692 bytes .../AppIcon.appiconset/Icon180.png | Bin 0 -> 5192 bytes .../AppIcon.appiconset/Icon20.png | Bin 0 -> 1313 bytes .../AppIcon.appiconset/Icon29.png | Bin 0 -> 845 bytes .../AppIcon.appiconset/Icon40.png | Bin 0 -> 1101 bytes .../AppIcon.appiconset/Icon58.png | Bin 0 -> 1761 bytes .../AppIcon.appiconset/Icon60.png | Bin 0 -> 2537 bytes .../AppIcon.appiconset/Icon76.png | Bin 0 -> 2332 bytes .../AppIcon.appiconset/Icon80.png | Bin 0 -> 2454 bytes .../AppIcon.appiconset/Icon87.png | Bin 0 -> 2758 bytes .../Sample.Forms.iOS}/Entitlements.plist | 0 .../Sample.Forms.iOS}/Info.plist | 36 +- Samples/Sample.Forms/Sample.Forms.iOS/Main.cs | 20 + .../Properties/AssemblyInfo.cs | 13 +- .../Resources/Default-568h@2x.png | Bin 0 -> 8884 bytes .../Resources/Default-Portrait.png | Bin 0 -> 10710 bytes .../Resources/Default-Portrait@2x.png | Bin 0 -> 34540 bytes .../Sample.Forms.iOS/Resources/Default.png | Bin 0 -> 7243 bytes .../Sample.Forms.iOS/Resources/Default@2x.png | Bin 0 -> 8368 bytes .../Sample.Forms.iOS}/Resources/Icon.png | Bin .../Sample.Forms.iOS}/Resources/Icon@2x.png | Bin .../AppIcons.appiconset/Contents.json | 0 .../AppIcons.appiconset/Icon-40.png | Bin .../AppIcons.appiconset/Icon-40@2x.png | Bin .../AppIcons.appiconset/Icon-40@3x.png | Bin .../AppIcons.appiconset/Icon-60@2x.png | Bin .../AppIcons.appiconset/Icon-60@3x.png | Bin .../AppIcons.appiconset/Icon-76.png | Bin .../AppIcons.appiconset/Icon-76@2x.png | Bin .../AppIcons.appiconset/Icon-83.5@2x.png | Bin .../AppIcons.appiconset/Icon-Small.png | Bin .../AppIcons.appiconset/Icon-Small@2x.png | Bin .../AppIcons.appiconset/Icon-Small@3x.png | Bin .../LaunchImage.launchimage/Contents.json | 0 .../Resources/LaunchScreen.storyboard | 39 + .../Sample.Forms.iOS/Sample.Forms.iOS.csproj | 146 + Samples/Sample.Forms/Sample.Forms/App.xaml | 11 + Samples/Sample.Forms/Sample.Forms/App.xaml.cs | 59 + .../Sample.Forms/Sample.Forms/AssemblyInfo.cs | 3 + .../Sample.Forms/Sample.Forms/BarcodePage.cs | 30 + .../Sample.Forms/CustomContinuousScanPage.cs | 105 + .../Sample.Forms/CustomScanPage.cs | 75 + Samples/Sample.Forms/Sample.Forms/HomePage.cs | 144 + .../Sample.Forms/Sample.Forms.csproj | 28 + Samples/Sample.Uwp/App.xaml | 7 + Samples/Sample.Uwp/App.xaml.cs | 100 + .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin Samples/Sample.Uwp/ImagePage.xaml | 13 + Samples/Sample.Uwp/ImagePage.xaml.cs | 51 + Samples/Sample.Uwp/MainPage.xaml | 41 + Samples/Sample.Uwp/MainPage.xaml.cs | 153 + Samples/Sample.Uwp/Package.appxmanifest | 52 + .../Sample.Uwp}/Properties/AssemblyInfo.cs | 6 +- Samples/Sample.Uwp/Properties/Default.rd.xml | 31 + .../Sample.Uwp.csproj} | 97 +- .../App.xaml | 0 .../App.xaml.cs | 7 +- .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../ImagePage.xaml | 0 .../ImagePage.xaml.cs | 0 .../MainPage.xaml | 0 .../MainPage.xaml.cs | 14 +- .../Package.appxmanifest | 0 .../Properties/AssemblyInfo.cs | 0 .../Properties/Default.rd.xml | 0 .../Sample.WindowsUniversal.csproj | 31 +- .../Sample.WindowsUniversal_TemporaryKey.pfx | Bin Samples/{iOS => }/Sample.iOS/AppDelegate.cs | 22 +- Samples/Sample.iOS/CustomOverlayView.cs | 39 + Samples/Sample.iOS/HomeViewController.cs | 148 + Samples/Sample.iOS/ImageViewController.cs | 44 + Samples/{iOS => }/Sample.iOS/Info.plist | 0 Samples/{iOS => }/Sample.iOS/LaunchScreen.xib | 0 Samples/{iOS => }/Sample.iOS/Main.cs | 10 +- Samples/Sample.iOS/Resources/Icon.png | Bin 0 -> 156853 bytes Samples/Sample.iOS/Resources/Icon@2x.png | Bin 0 -> 156853 bytes .../AppIcons.appiconset/Contents.json | 0 .../AppIcons.appiconset/Icon-40.png | Bin 0 -> 2269 bytes .../AppIcons.appiconset/Icon-40@2x.png | Bin 0 -> 5663 bytes .../AppIcons.appiconset/Icon-40@3x.png | Bin 0 -> 9940 bytes .../AppIcons.appiconset/Icon-60@2x.png | Bin 0 -> 9940 bytes .../AppIcons.appiconset/Icon-60@3x.png | Bin 0 -> 19555 bytes .../AppIcons.appiconset/Icon-76.png | Bin 0 -> 5365 bytes .../AppIcons.appiconset/Icon-76@2x.png | Bin 0 -> 14881 bytes .../AppIcons.appiconset/Icon-83.5@2x.png | Bin 0 -> 17331 bytes .../AppIcons.appiconset/Icon-Small.png | Bin 0 -> 1451 bytes .../AppIcons.appiconset/Icon-Small@2x.png | Bin 0 -> 3800 bytes .../AppIcons.appiconset/Icon-Small@3x.png | Bin 0 -> 6606 bytes .../LaunchImage.launchimage/Contents.json | 0 .../{iOS => }/Sample.iOS/Sample.iOS.csproj | 59 +- Samples/WindowsPhone/Sample.WindowsPhone.sln | 82 - .../WindowsPhone/Sample.WindowsPhone/App.xaml | 19 - .../Sample.WindowsPhone/App.xaml.cs | 144 - .../Sample.WindowsPhone/ApplicationIcon.png | Bin 1881 -> 0 bytes .../Sample.WindowsPhone/Background.png | Bin 3521 -> 0 bytes .../Sample.WindowsPhone/ImagePage.xaml | 38 - .../Sample.WindowsPhone/ImagePage.xaml.cs | 41 - .../Sample.WindowsPhone/MainPage.xaml | 76 - .../Sample.WindowsPhone/MainPage.xaml.cs | 128 - .../Properties/AppManifest.xml | 6 - .../Properties/WMAppManifest.xml | 48 - .../Sample.WindowsPhone.csproj | 175 - .../Sample.WindowsPhone/SplashScreenImage.jpg | Bin 9417 -> 0 bytes .../Sample.WindowsPhone/packages.config | 4 - .../Sample.WindowsUniversal.sln | 100 - .../ApplicationInsights.config | 3 - .../Sample.WindowsUniversal/project.json | 19 - Samples/iOS/Sample.iOS.sln | 129 - Samples/iOS/Sample.iOS/CustomOverlayView.cs | 50 - Samples/iOS/Sample.iOS/HomeViewController.cs | 145 - Samples/iOS/Sample.iOS/ImageViewController.cs | 48 - Source/ZXing.Net | 1 - .../ActivityLifecycleContextListener.cs | 50 - .../ZXing.Net.Mobile.Android/AssemblyInfo.cs | 27 - .../BitmapRenderer.cs | 93 - .../CameraAccess/CameraAnalyzer.cs | 165 - .../CameraAccess/CameraController.cs | 435 - .../CameraAccess/CameraEventsListener.cs | 31 - .../CameraAccess/Torch.cs | 103 - .../FastJavaArrayEx.cs | 17 - .../FastJavaByteArrayYUVLuminanceSource.cs | 179 - .../MobileBarcodeScanner.cs | 180 - .../ZXing.Net.Mobile.Android/Permissions.cs | 3 - .../PermissionsHandler.cs | 164 - .../ZXing.Net.Mobile.Android.csproj | 85 - .../ZXingScannerFragment.cs | 179 - .../ZXingSurfaceView.cs | 221 - .../ZXing.Net.Mobile.Android/ZxingActivity.cs | 187 - Source/ZXing.Net.Mobile.Core/AssemblyInfo.cs | 27 - .../IMobileBarcodeScanner.cs | 97 - Source/ZXing.Net.Mobile.Core/IScannerView.cs | 23 - .../MobileBarcodeScanningOptions.cs | 113 - .../ZXing.Net.Mobile.Core.csproj | 62 - .../PermissionsHandler.cs | 21 - .../Platform.cs | 18 - .../Properties/AssemblyInfo.cs | 27 - .../Resources/AboutResources.txt | 44 - .../Resources/Resource.cs | 59 - .../Resources/values/Strings.xml | 4 - .../ZXing.Net.Mobile.Forms.Android.csproj | 84 - .../ZXingBarcodeImageViewRenderer.cs | 70 - .../ZXingScannerViewRenderer.cs | 112 - .../Properties/AssemblyInfo.cs | 37 - .../README_FIRST.txt | 3 - .../Toolkit.Content/ApplicationBar.Add.png | Bin 339 -> 0 bytes .../Toolkit.Content/ApplicationBar.Cancel.png | Bin 350 -> 0 bytes .../Toolkit.Content/ApplicationBar.Check.png | Bin 414 -> 0 bytes .../Toolkit.Content/ApplicationBar.Delete.png | Bin 445 -> 0 bytes .../Toolkit.Content/ApplicationBar.Select.png | Bin 863 -> 0 bytes ...ZXing.Net.Mobile.Forms.WindowsPhone.csproj | 160 - .../ZXingBarcodeImageViewRenderer.cs | 70 - .../ZXingScannerViewRenderer.cs | 89 - .../packages.config | 5 - ...g.Net.Mobile.Forms.WindowsUniversal.rd.xml | 33 - ...g.Net.Mobile.Forms.WindowsUniversal.csproj | 144 - .../ZXingBarcodeImageViewRenderer.cs | 69 - .../ZXingScannerViewRenderer.cs | 96 - .../project.json | 17 - Source/ZXing.Net.Mobile.Forms.iOS/Platform.cs | 18 - .../Properties/AssemblyInfo.cs | 27 - .../ZXing.Net.Mobile.Forms.iOS.csproj | 70 - .../ZXingBarcodeImageViewRenderer.cs | 72 - .../ZXingScannerViewRenderer.cs | 111 - .../ZXing.Net.Mobile.Forms/BarcodeWriter.cs | 63 - .../Properties/AssemblyInfo.cs | 27 - .../ZXing.Net.Mobile.Forms.csproj | 56 - .../ZXingBarcodeImageView.cs | 46 - .../ZXingDefaultOverlay.cs | 126 - .../ZXingScannerPage.cs | 188 - .../ZXingScannerView.cs | 99 - .../ZXing.Net.Mobile.Portable/AssemblyInfo.cs | 27 - .../MobileBarcodeScanner.cs | 57 - .../ZXing.Net.Mobile.Portable.csproj | 50 - .../AssemblyInfo.cs | 27 - .../AudioVideoCaptureDeviceCameraReader.cs | 417 - .../BarcodeWriter.cs | 22 - .../MobileBarcodeScanner.cs | 134 - .../PhotoCameraLuminanceSource.cs | 43 - .../ScanPage.xaml | 36 - .../ScanPage.xaml.cs | 221 - .../SimpleCameraReader.cs | 326 - .../WriteableBitmapRenderer.cs | 273 - .../ZXing.Net.Mobile.WindowsPhone.csproj | 150 - .../ZXingScannerControl.xaml | 55 - .../ZXingScannerControl.xaml.cs | 224 - .../packages.config | 4 - .../AssemblyInfo.cs | 27 - .../NotSupported.cs | 76 - .../ZXing.Net.Mobile.WindowsRT.csproj | 65 - .../AssemblyInfo.cs | 27 - .../BarcodeWriter.cs | 23 - .../MobileBarcodeScanner.cs | 142 - .../ZXing.Net.Mobile.Universal.rd.xml | 33 - .../ScanPage.xaml.cs | 205 - .../SoftwareBitmapLuminanceSource.cs | 97 - .../VisualTreeHelperExt.cs | 35 - .../WriteableBitmapRenderer.cs | 273 - .../ZXingScannerControl.xaml | 60 - .../ZXingScannerControl.xaml.cs | 823 -- .../project.json | 16 - .../AVCaptureScannerView.cs | 775 -- .../AVCaptureScannerViewController.cs | 203 - Source/ZXing.Net.Mobile.iOS/AssemblyInfo.cs | 27 - Source/ZXing.Net.Mobile.iOS/BitmapRenderer.cs | 46 - .../CVPixelBufferBGRA32LuminanceSource.cs | 41 - .../MobileBarcodeScanner.cs | 229 - .../RGBLuminanceSourceiOS.cs | 45 - .../ZXing.Net.Mobile.iOS.csproj | 97 - .../ZXingScannerViewController.cs | 216 - ZXing.Net.Mobile.Forms.nuspec | 85 - ZXing.Net.Mobile.Forms.sln | 598 - .../PermissionsHandler.android.cs | 20 + ZXing.Net.Mobile.Forms/Platform.android.cs | 13 + ZXing.Net.Mobile.Forms/Platform.ios.cs | 13 + ZXing.Net.Mobile.Forms/Platform.macos.cs | 12 + ZXing.Net.Mobile.Forms/Platform.tizen.cs | 16 + .../ZXing.Net.Mobile.Forms.csproj | 107 + .../ZXingBarcodeImageView.shared.cs | 46 + .../ZXingBarcodeImageViewRenderer.android.cs | 74 + .../ZXingBarcodeImageViewRenderer.ios.cs | 74 + .../ZXingBarcodeImageViewRenderer.macos.cs | 74 + .../ZXingBarcodeImageViewRenderer.tizen.cs | 70 + .../ZXingBarcodeImageViewRenderer.uwp.cs | 69 + .../ZXingDefaultOverlay.shared.cs | 134 + .../ZXingScannerPage.shared.cs | 183 + .../ZXingScannerView.shared.cs | 94 + .../ZXingScannerViewRenderer.android.cs | 130 + .../ZXingScannerViewRenderer.ios.cs | 121 + .../ZXingScannerViewRenderer.tizen.cs | 88 + .../ZXingScannerViewRenderer.uwp.cs | 100 + ZXing.Net.Mobile.UITests.sln | 870 -- ZXing.Net.Mobile.WP8.sln | 401 - ZXing.Net.Mobile.nuspec | 83 - ZXing.Net.Mobile.sln | 1116 +- .../Android/BitmapRenderer.android.cs | 91 + .../Android/BitmapWriter.android.cs | 26 +- .../CameraAccess/CameraAnalyzer.android.cs | 157 + .../CameraAccess/CameraController.android.cs | 432 + .../CameraEventsListener.android.cs | 26 + .../Android/CameraAccess/Torch.android.cs | 94 + .../Android/FastJavaArrayEx.android.cs | 17 + ...JavaByteArrayYUVLuminanceSource.android.cs | 173 + .../Android/MobileBarcodeScanner.android.cs | 132 + .../Android/Permissions.android.cs | 3 + .../Android/PermissionsHandler.android.cs | 44 + .../Android/ZXingScannerFragment.android.cs | 154 + .../Android/ZXingSurfaceView.android.cs | 160 + .../Android/ZxingActivity.android.cs | 161 + .../Android/ZxingOverlayView.android.cs | 94 +- .../CameraResolution.shared.cs | 5 +- .../IMobileBarcodeScanner.shared.cs | 90 + .../IScannerSessionHost.shared.cs | 0 ZXing.Net.Mobile/IScannerView.shared.cs | 22 + .../MacOS/BitmapRenderer.macos.cs | 43 + ZXing.Net.Mobile/MacOS/BitmapWriter.macos.cs | 17 + .../MacOS/MobileBarcodeScanner.macos.cs | 37 + .../MobileBarcodeScanner.netstandard.cs | 37 + .../MobileBarcodeScanner.shared.cs | 35 + .../MobileBarcodeScanningOptions.shared.cs | 120 + .../Performance.shared.cs | 23 +- .../layout/zxingscanneractivitylayout.axml | 0 .../layout/zxingscannerfragmentlayout.axml | 0 .../ScanPage.xaml | 10 +- ZXing.Net.Mobile/ScanPage.xaml.cs | 177 + ZXing.Net.Mobile/Tizen/BarcodeWriter.tizen.cs | 12 + .../Tizen/BitmapRenderer.tizen.cs | 75 + .../Tizen/MobileBarcodeScanner.tizen.cs | 83 + .../Tizen/TizenBarcodeAnalyzer.tizen.cs | 80 + .../Tizen/ZXingDefaultOverlay.tizen.cs | 91 + .../Tizen/ZXingMediaView.tizen.cs | 73 + .../Tizen/ZXingScannerCamera.tizen.cs | 135 + .../Tizen/ZXingScannerWindow.tizen.cs | 116 + ZXing.Net.Mobile/UWP/BarcodeWriter.uwp.cs | 23 + .../UWP/MobileBarcodeScanner.uwp.cs | 123 + .../UWP/SoftwareBitmapLuminanceSource.uwp.cs | 89 + .../UWP/VisualTreeHelperExt.uwp.cs | 35 + .../UWP/WriteableBitmapRenderer.uwp.cs | 273 + ZXing.Net.Mobile/ZXing.Net.Mobile.csproj | 122 + ZXing.Net.Mobile/ZXingScannerControl.xaml | 60 + ZXing.Net.Mobile/ZXingScannerControl.xaml.cs | 779 ++ .../iOS/AVCaptureScannerView.ios.cs | 632 + .../iOS/AVCaptureScannerViewController.ios.cs | 175 + .../iOS/BarcodeWriter.ios.cs | 33 +- ZXing.Net.Mobile/iOS/BitmapRenderer.ios.cs | 42 + .../CVPixelBufferBGRA32LuminanceSource.ios.cs | 34 + .../iOS/IScannerViewController.ios.cs | 10 +- .../iOS/MobileBarcodeScanner.ios.cs | 224 + .../iOS/RGBLuminanceSourceiOS.ios.cs | 43 + .../iOS/ZXingDefaultOverlayView.ios.cs | 126 +- .../iOS/ZXingScannerView.ios.cs | 459 +- .../iOS/ZXingScannerViewController.ios.cs | 188 + ZXing.Net/zxing.dll | Bin 0 -> 438272 bytes ZXing.Net/zxing.pdb | Bin 0 -> 216276 bytes ZXing.Net/zxing.xml | 10863 ++++++++++++++++ build.cake | 84 - build.ps1 | 234 - build.sh | 117 - 469 files changed, 21691 insertions(+), 19090 deletions(-) create mode 100644 .editorconfig delete mode 100644 Component-Forms/Banner.png delete mode 100644 Component-Forms/Details.md delete mode 100644 Component-Forms/GettingStarted.md delete mode 100644 Component-Forms/License.md delete mode 100644 Component-Forms/component.template.yaml delete mode 100644 Component-Forms/icons/zxing.net.mobile.forms_128x128.png delete mode 100644 Component-Forms/icons/zxing.net.mobile.forms_512x512.png delete mode 100644 Component/Banner.png delete mode 100644 Component/Details.md delete mode 100644 Component/GettingStarted.md delete mode 100644 Component/License.md delete mode 100644 Component/component.template.yaml delete mode 100644 Component/icons/zxing.net.mobile_128x128.png delete mode 100644 Component/icons/zxing.net.mobile_512x512.png delete mode 100644 Samples/Android/Sample.Android.sln delete mode 100644 Samples/Android/Sample.Android/Assets/AboutAssets.txt delete mode 100644 Samples/Android/Sample.Android/FragmentActivity.cs delete mode 100644 Samples/Android/Sample.Android/ImageActivity.cs delete mode 100644 Samples/Android/Sample.Android/MainActivity.cs delete mode 100644 Samples/Forms/Core/BarcodePage.cs delete mode 100644 Samples/Forms/Core/CustomScanPage.cs delete mode 100644 Samples/Forms/Core/FormsSample.cs delete mode 100644 Samples/Forms/Core/FormsSample.csproj delete mode 100644 Samples/Forms/Core/HomePage.cs delete mode 100644 Samples/Forms/Core/Properties/AssemblyInfo.cs delete mode 100644 Samples/Forms/Droid/MainActivity.cs delete mode 100644 Samples/Forms/Droid/Properties/AssemblyInfo.cs delete mode 100644 Samples/Forms/Droid/Resources/mipmap-hdpi/ic_launcher.png delete mode 100644 Samples/Forms/Droid/Resources/mipmap-mdpi/ic_launcher.png delete mode 100644 Samples/Forms/Droid/Resources/mipmap-xhdpi/ic_launcher.png delete mode 100644 Samples/Forms/Droid/Resources/mipmap-xxhdpi/ic_launcher.png delete mode 100644 Samples/Forms/Droid/Resources/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 Samples/Forms/Sample.Forms.Mac.sln delete mode 100644 Samples/Forms/Sample.Forms.WP8.sln delete mode 100644 Samples/Forms/Sample.Forms.sln delete mode 100644 Samples/Forms/WindowsPhone/App.xaml delete mode 100644 Samples/Forms/WindowsPhone/App.xaml.cs delete mode 100644 Samples/Forms/WindowsPhone/Assets/AlignmentGrid.png delete mode 100644 Samples/Forms/WindowsPhone/Assets/ApplicationIcon.png delete mode 100644 Samples/Forms/WindowsPhone/Assets/Tiles/FlipCycleTileLarge.png delete mode 100644 Samples/Forms/WindowsPhone/Assets/Tiles/FlipCycleTileMedium.png delete mode 100644 Samples/Forms/WindowsPhone/Assets/Tiles/FlipCycleTileSmall.png delete mode 100644 Samples/Forms/WindowsPhone/Assets/Tiles/IconicTileMediumLarge.png delete mode 100644 Samples/Forms/WindowsPhone/Assets/Tiles/IconicTileSmall.png delete mode 100644 Samples/Forms/WindowsPhone/FormsSample.WindowsPhone.csproj delete mode 100644 Samples/Forms/WindowsPhone/LocalizedStrings.cs delete mode 100644 Samples/Forms/WindowsPhone/MainPage.xaml delete mode 100644 Samples/Forms/WindowsPhone/MainPage.xaml.cs delete mode 100644 Samples/Forms/WindowsPhone/Properties/AppManifest.xml delete mode 100644 Samples/Forms/WindowsPhone/Properties/WMAppManifest.xml delete mode 100644 Samples/Forms/WindowsPhone/README_FIRST.txt delete mode 100644 Samples/Forms/WindowsPhone/Resources/AppResources.Designer.cs delete mode 100644 Samples/Forms/WindowsPhone/Resources/AppResources.resx delete mode 100644 Samples/Forms/WindowsPhone/Toolkit.Content/ApplicationBar.Add.png delete mode 100644 Samples/Forms/WindowsPhone/Toolkit.Content/ApplicationBar.Cancel.png delete mode 100644 Samples/Forms/WindowsPhone/Toolkit.Content/ApplicationBar.Check.png delete mode 100644 Samples/Forms/WindowsPhone/Toolkit.Content/ApplicationBar.Delete.png delete mode 100644 Samples/Forms/WindowsPhone/Toolkit.Content/ApplicationBar.Select.png delete mode 100644 Samples/Forms/WindowsPhone/packages.config delete mode 100644 Samples/Forms/WindowsUniversal/App.xaml.cs delete mode 100644 Samples/Forms/WindowsUniversal/ApplicationInsights.config delete mode 100644 Samples/Forms/WindowsUniversal/MainPage.xaml.cs delete mode 100644 Samples/Forms/WindowsUniversal/Package.appxmanifest delete mode 100644 Samples/Forms/WindowsUniversal/WindowsUniversal_TemporaryKey.pfx delete mode 100644 Samples/Forms/WindowsUniversal/project.json delete mode 100644 Samples/Forms/iOS/AppDelegate.cs delete mode 100644 Samples/Forms/iOS/FormsSample.iOS.csproj delete mode 100644 Samples/Forms/iOS/Main.cs delete mode 100644 Samples/Forms/iOS/Resources/Icon.png delete mode 100644 Samples/Forms/iOS/Resources/Icon@2x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@2x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@3x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@2x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@3x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-83.5@2x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png delete mode 100644 Samples/Forms/iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@3x.png delete mode 100644 Samples/Forms/iOS/Resources/LaunchScreen.xib create mode 100644 Samples/Sample.Android/FragmentActivity.cs create mode 100644 Samples/Sample.Android/ImageActivity.cs create mode 100644 Samples/Sample.Android/MainActivity.cs rename Samples/{Android => }/Sample.Android/Properties/AndroidManifest.xml (74%) rename Samples/{Android => }/Sample.Android/Properties/AssemblyInfo.cs (90%) rename Samples/{Android => }/Sample.Android/Resources/AboutResources.txt (100%) rename Samples/{Android => }/Sample.Android/Resources/drawable-hdpi/launcher.png (100%) rename Samples/{Android => }/Sample.Android/Resources/drawable-mdpi/launcher.png (100%) rename Samples/{Android => }/Sample.Android/Resources/drawable-xhdpi/launcher.png (100%) rename Samples/{Android => }/Sample.Android/Resources/drawable-xxhdpi/launcher.png (100%) rename Samples/{Android => }/Sample.Android/Resources/drawable-xxxhdpi/launcher.png (100%) rename Samples/{Android => }/Sample.Android/Resources/layout/FragmentActivity.axml (100%) rename Samples/{Android => }/Sample.Android/Resources/layout/ImageActivity.axml (100%) rename Samples/{Android => }/Sample.Android/Resources/layout/Main.axml (100%) rename Samples/{Android => }/Sample.Android/Resources/layout/ZxingOverlay.axml (100%) rename Samples/{Android => }/Sample.Android/Resources/values/Strings.xml (100%) rename Samples/{Android => }/Sample.Android/Sample.Android.csproj (79%) rename Samples/{Forms/Droid => Sample.Forms/Sample.Forms.Android}/Assets/AboutAssets.txt (75%) create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/MainActivity.cs rename Samples/{Forms/Droid => Sample.Forms/Sample.Forms.Android}/Properties/AndroidManifest.xml (52%) rename Samples/{WindowsPhone/Sample.WindowsPhone => Sample.Forms/Sample.Forms.Android}/Properties/AssemblyInfo.cs (53%) rename Samples/{Forms/Droid => Sample.Forms/Sample.Forms.Android}/Resources/AboutResources.txt (72%) create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/layout/Tabbar.xml create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/layout/Toolbar.xml create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/mipmap-hdpi/launcher.png create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/mipmap-mdpi/launcher.png create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/mipmap-xhdpi/launcher.png create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/mipmap-xxhdpi/launcher.png create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/mipmap-xxxhdpi/launcher.png create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/values/colors.xml create mode 100644 Samples/Sample.Forms/Sample.Forms.Android/Resources/values/styles.xml rename Samples/{Forms/Droid/FormsSample.Droid.csproj => Sample.Forms/Sample.Forms.Android/Sample.Forms.Android.csproj} (51%) create mode 100644 Samples/Sample.Forms/Sample.Forms.Tizen/Sample.Forms.Tizen.cs create mode 100644 Samples/Sample.Forms/Sample.Forms.Tizen/Sample.Forms.Tizen.csproj create mode 100644 Samples/Sample.Forms/Sample.Forms.Tizen/shared/res/FormsSample.Tizen.png create mode 100644 Samples/Sample.Forms/Sample.Forms.Tizen/tizen-manifest.xml rename Samples/{Forms/WindowsUniversal => Sample.Forms/Sample.Forms.UWP}/App.xaml (70%) create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/App.xaml.cs create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/LargeTile.scale-100.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/LargeTile.scale-200.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/LargeTile.scale-400.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/SmallTile.scale-100.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/SmallTile.scale-200.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/SmallTile.scale-400.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/SplashScreen.scale-100.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/SplashScreen.scale-200.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/SplashScreen.scale-400.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square150x150Logo.scale-100.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square150x150Logo.scale-200.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square150x150Logo.scale-400.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.scale-100.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.scale-200.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.scale-400.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.targetsize-16.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.targetsize-256.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Square44x44Logo.targetsize-48.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/StoreLogo.backup.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/StoreLogo.scale-100.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/StoreLogo.scale-200.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/StoreLogo.scale-400.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Wide310x150Logo.scale-100.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Wide310x150Logo.scale-200.png create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Assets/Wide310x150Logo.scale-400.png rename Samples/{Forms/WindowsUniversal => Sample.Forms/Sample.Forms.UWP}/MainPage.xaml (55%) create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/MainPage.xaml.cs create mode 100644 Samples/Sample.Forms/Sample.Forms.UWP/Package.appxmanifest rename Samples/{Forms/WindowsUniversal => Sample.Forms/Sample.Forms.UWP}/Properties/AssemblyInfo.cs (91%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.Forms/Sample.Forms.UWP}/Properties/Default.rd.xml (92%) rename Source/ZXing.Net.Mobile.WindowsUniversal/ZXing.Net.Mobile.WindowsUniversal.csproj => Samples/Sample.Forms/Sample.Forms.UWP/Sample.Forms.UWP.csproj (50%) create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/AppDelegate.cs create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png rename Samples/{Forms/iOS => Sample.Forms/Sample.Forms.iOS}/Entitlements.plist (100%) rename Samples/{Forms/iOS => Sample.Forms/Sample.Forms.iOS}/Info.plist (67%) create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Main.cs rename Samples/{Forms/WindowsPhone => Sample.Forms/Sample.Forms.iOS}/Properties/AssemblyInfo.cs (75%) create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Resources/Default-568h@2x.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Resources/Default-Portrait.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Resources/Default-Portrait@2x.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Resources/Default.png create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Resources/Default@2x.png rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Icon.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Icon@2x.png (100%) rename Samples/{Forms/iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Contents.json (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-40.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@2x.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@3x.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@2x.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@3x.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-83.5@2x.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png (100%) rename Samples/{iOS/Sample.iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@3x.png (100%) rename Samples/{Forms/iOS => Sample.Forms/Sample.Forms.iOS}/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json (100%) create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Resources/LaunchScreen.storyboard create mode 100644 Samples/Sample.Forms/Sample.Forms.iOS/Sample.Forms.iOS.csproj create mode 100644 Samples/Sample.Forms/Sample.Forms/App.xaml create mode 100644 Samples/Sample.Forms/Sample.Forms/App.xaml.cs create mode 100644 Samples/Sample.Forms/Sample.Forms/AssemblyInfo.cs create mode 100644 Samples/Sample.Forms/Sample.Forms/BarcodePage.cs create mode 100644 Samples/Sample.Forms/Sample.Forms/CustomContinuousScanPage.cs create mode 100644 Samples/Sample.Forms/Sample.Forms/CustomScanPage.cs create mode 100644 Samples/Sample.Forms/Sample.Forms/HomePage.cs create mode 100644 Samples/Sample.Forms/Sample.Forms/Sample.Forms.csproj create mode 100644 Samples/Sample.Uwp/App.xaml create mode 100644 Samples/Sample.Uwp/App.xaml.cs rename Samples/{Forms/WindowsUniversal => Sample.Uwp}/Assets/LockScreenLogo.scale-200.png (100%) rename Samples/{Forms/WindowsUniversal => Sample.Uwp}/Assets/SplashScreen.scale-200.png (100%) rename Samples/{Forms/WindowsUniversal => Sample.Uwp}/Assets/Square150x150Logo.scale-200.png (100%) rename Samples/{Forms/WindowsUniversal => Sample.Uwp}/Assets/Square44x44Logo.scale-200.png (100%) rename Samples/{Forms/WindowsUniversal => Sample.Uwp}/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename Samples/{Forms/WindowsUniversal => Sample.Uwp}/Assets/StoreLogo.png (100%) rename Samples/{Forms/WindowsUniversal => Sample.Uwp}/Assets/Wide310x150Logo.scale-200.png (100%) create mode 100644 Samples/Sample.Uwp/ImagePage.xaml create mode 100644 Samples/Sample.Uwp/ImagePage.xaml.cs create mode 100644 Samples/Sample.Uwp/MainPage.xaml create mode 100644 Samples/Sample.Uwp/MainPage.xaml.cs create mode 100644 Samples/Sample.Uwp/Package.appxmanifest rename {Source/ZXing.Net.Mobile.Forms.WindowsUniversal => Samples/Sample.Uwp}/Properties/AssemblyInfo.cs (82%) create mode 100644 Samples/Sample.Uwp/Properties/Default.rd.xml rename Samples/{Forms/WindowsUniversal/FormsSample.WindowsUniversal.csproj => Sample.Uwp/Sample.Uwp.csproj} (69%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/App.xaml (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/App.xaml.cs (93%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Assets/LockScreenLogo.scale-200.png (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Assets/SplashScreen.scale-200.png (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Assets/Square150x150Logo.scale-200.png (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Assets/Square44x44Logo.scale-200.png (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Assets/StoreLogo.png (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Assets/Wide310x150Logo.scale-200.png (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/ImagePage.xaml (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/ImagePage.xaml.cs (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/MainPage.xaml (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/MainPage.xaml.cs (91%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Package.appxmanifest (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Properties/AssemblyInfo.cs (100%) rename Samples/{Forms/WindowsUniversal => Sample.WindowsUniversalOld}/Properties/Default.rd.xml (100%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Sample.WindowsUniversal.csproj (86%) rename Samples/{WindowsUniversal/Sample.WindowsUniversal => Sample.WindowsUniversalOld}/Sample.WindowsUniversal_TemporaryKey.pfx (100%) rename Samples/{iOS => }/Sample.iOS/AppDelegate.cs (71%) create mode 100644 Samples/Sample.iOS/CustomOverlayView.cs create mode 100644 Samples/Sample.iOS/HomeViewController.cs create mode 100644 Samples/Sample.iOS/ImageViewController.cs rename Samples/{iOS => }/Sample.iOS/Info.plist (100%) rename Samples/{iOS => }/Sample.iOS/LaunchScreen.xib (100%) rename Samples/{iOS => }/Sample.iOS/Main.cs (67%) create mode 100644 Samples/Sample.iOS/Resources/Icon.png create mode 100644 Samples/Sample.iOS/Resources/Icon@2x.png rename Samples/{iOS => }/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Contents.json (100%) create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@2x.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@3x.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@2x.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-60@3x.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-83.5@2x.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png create mode 100644 Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@3x.png rename Samples/{iOS => }/Sample.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json (100%) rename Samples/{iOS => }/Sample.iOS/Sample.iOS.csproj (84%) delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone.sln delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/App.xaml delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/App.xaml.cs delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/ApplicationIcon.png delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/Background.png delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml.cs delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml.cs delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/Properties/AppManifest.xml delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/Properties/WMAppManifest.xml delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/Sample.WindowsPhone.csproj delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/SplashScreenImage.jpg delete mode 100644 Samples/WindowsPhone/Sample.WindowsPhone/packages.config delete mode 100644 Samples/WindowsUniversal/Sample.WindowsUniversal.sln delete mode 100644 Samples/WindowsUniversal/Sample.WindowsUniversal/ApplicationInsights.config delete mode 100644 Samples/WindowsUniversal/Sample.WindowsUniversal/project.json delete mode 100644 Samples/iOS/Sample.iOS.sln delete mode 100644 Samples/iOS/Sample.iOS/CustomOverlayView.cs delete mode 100644 Samples/iOS/Sample.iOS/HomeViewController.cs delete mode 100644 Samples/iOS/Sample.iOS/ImageViewController.cs delete mode 160000 Source/ZXing.Net delete mode 100644 Source/ZXing.Net.Mobile.Android/ActivityLifecycleContextListener.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/BitmapRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/CameraAccess/CameraAnalyzer.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/CameraAccess/CameraController.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/CameraAccess/CameraEventsListener.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/CameraAccess/Torch.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/FastJavaArrayEx.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/FastJavaByteArrayYUVLuminanceSource.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/MobileBarcodeScanner.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/Permissions.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/PermissionsHandler.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/ZXing.Net.Mobile.Android.csproj delete mode 100644 Source/ZXing.Net.Mobile.Android/ZXingScannerFragment.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/ZXingSurfaceView.cs delete mode 100644 Source/ZXing.Net.Mobile.Android/ZxingActivity.cs delete mode 100644 Source/ZXing.Net.Mobile.Core/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.Core/IMobileBarcodeScanner.cs delete mode 100644 Source/ZXing.Net.Mobile.Core/IScannerView.cs delete mode 100644 Source/ZXing.Net.Mobile.Core/MobileBarcodeScanningOptions.cs delete mode 100644 Source/ZXing.Net.Mobile.Core/ZXing.Net.Mobile.Core.csproj delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/PermissionsHandler.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/Platform.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/Properties/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/Resources/AboutResources.txt delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/Resources/Resource.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/Resources/values/Strings.xml delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/ZXing.Net.Mobile.Forms.Android.csproj delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/ZXingBarcodeImageViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.Android/ZXingScannerViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/Properties/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/README_FIRST.txt delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Add.png delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Cancel.png delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Check.png delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Delete.png delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Select.png delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXing.Net.Mobile.Forms.WindowsPhone.csproj delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingBarcodeImageViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingScannerViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsPhone/packages.config delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsUniversal/Properties/ZXing.Net.Mobile.Forms.WindowsUniversal.rd.xml delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXing.Net.Mobile.Forms.WindowsUniversal.csproj delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingBarcodeImageViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingScannerViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.WindowsUniversal/project.json delete mode 100644 Source/ZXing.Net.Mobile.Forms.iOS/Platform.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.iOS/Properties/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.iOS/ZXing.Net.Mobile.Forms.iOS.csproj delete mode 100644 Source/ZXing.Net.Mobile.Forms.iOS/ZXingBarcodeImageViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms.iOS/ZXingScannerViewRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms/BarcodeWriter.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms/Properties/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj delete mode 100644 Source/ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms/ZXingScannerPage.cs delete mode 100644 Source/ZXing.Net.Mobile.Forms/ZXingScannerView.cs delete mode 100644 Source/ZXing.Net.Mobile.Portable/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.Portable/MobileBarcodeScanner.cs delete mode 100644 Source/ZXing.Net.Mobile.Portable/ZXing.Net.Mobile.Portable.csproj delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/AudioVideoCaptureDeviceCameraReader.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/BarcodeWriter.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/MobileBarcodeScanner.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/PhotoCameraLuminanceSource.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/SimpleCameraReader.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/WriteableBitmapRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/ZXing.Net.Mobile.WindowsPhone.csproj delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsPhone/packages.config delete mode 100644 Source/ZXing.Net.Mobile.WindowsRT/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsRT/NotSupported.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsRT/ZXing.Net.Mobile.WindowsRT.csproj delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/BarcodeWriter.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/MobileBarcodeScanner.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/Properties/ZXing.Net.Mobile.Universal.rd.xml delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/ScanPage.xaml.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/SoftwareBitmapLuminanceSource.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/VisualTreeHelperExt.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/WriteableBitmapRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml.cs delete mode 100644 Source/ZXing.Net.Mobile.WindowsUniversal/project.json delete mode 100644 Source/ZXing.Net.Mobile.iOS/AVCaptureScannerView.cs delete mode 100644 Source/ZXing.Net.Mobile.iOS/AVCaptureScannerViewController.cs delete mode 100644 Source/ZXing.Net.Mobile.iOS/AssemblyInfo.cs delete mode 100644 Source/ZXing.Net.Mobile.iOS/BitmapRenderer.cs delete mode 100644 Source/ZXing.Net.Mobile.iOS/CVPixelBufferBGRA32LuminanceSource.cs delete mode 100644 Source/ZXing.Net.Mobile.iOS/MobileBarcodeScanner.cs delete mode 100644 Source/ZXing.Net.Mobile.iOS/RGBLuminanceSourceiOS.cs delete mode 100644 Source/ZXing.Net.Mobile.iOS/ZXing.Net.Mobile.iOS.csproj delete mode 100644 Source/ZXing.Net.Mobile.iOS/ZXingScannerViewController.cs delete mode 100644 ZXing.Net.Mobile.Forms.nuspec delete mode 100644 ZXing.Net.Mobile.Forms.sln create mode 100644 ZXing.Net.Mobile.Forms/PermissionsHandler.android.cs create mode 100644 ZXing.Net.Mobile.Forms/Platform.android.cs create mode 100644 ZXing.Net.Mobile.Forms/Platform.ios.cs create mode 100644 ZXing.Net.Mobile.Forms/Platform.macos.cs create mode 100644 ZXing.Net.Mobile.Forms/Platform.tizen.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj create mode 100644 ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.shared.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.android.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.ios.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.macos.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.tizen.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.uwp.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.shared.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingScannerPage.shared.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingScannerView.shared.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.android.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.ios.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.tizen.cs create mode 100644 ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.uwp.cs delete mode 100644 ZXing.Net.Mobile.UITests.sln delete mode 100644 ZXing.Net.Mobile.WP8.sln delete mode 100644 ZXing.Net.Mobile.nuspec create mode 100644 ZXing.Net.Mobile/Android/BitmapRenderer.android.cs rename Source/ZXing.Net.Mobile.Android/BitmapWriter.cs => ZXing.Net.Mobile/Android/BitmapWriter.android.cs (60%) create mode 100644 ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs create mode 100644 ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs create mode 100644 ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs create mode 100644 ZXing.Net.Mobile/Android/CameraAccess/Torch.android.cs create mode 100644 ZXing.Net.Mobile/Android/FastJavaArrayEx.android.cs create mode 100644 ZXing.Net.Mobile/Android/FastJavaByteArrayYUVLuminanceSource.android.cs create mode 100644 ZXing.Net.Mobile/Android/MobileBarcodeScanner.android.cs create mode 100644 ZXing.Net.Mobile/Android/Permissions.android.cs create mode 100644 ZXing.Net.Mobile/Android/PermissionsHandler.android.cs create mode 100644 ZXing.Net.Mobile/Android/ZXingScannerFragment.android.cs create mode 100644 ZXing.Net.Mobile/Android/ZXingSurfaceView.android.cs create mode 100644 ZXing.Net.Mobile/Android/ZxingActivity.android.cs rename Source/ZXing.Net.Mobile.Android/ZxingOverlayView.cs => ZXing.Net.Mobile/Android/ZxingOverlayView.android.cs (73%) rename Source/ZXing.Net.Mobile.Core/CameraResolution.cs => ZXing.Net.Mobile/CameraResolution.shared.cs (55%) create mode 100644 ZXing.Net.Mobile/IMobileBarcodeScanner.shared.cs rename Source/ZXing.Net.Mobile.Core/IScannerSessionHost.cs => ZXing.Net.Mobile/IScannerSessionHost.shared.cs (100%) create mode 100644 ZXing.Net.Mobile/IScannerView.shared.cs create mode 100644 ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs create mode 100644 ZXing.Net.Mobile/MacOS/BitmapWriter.macos.cs create mode 100644 ZXing.Net.Mobile/MacOS/MobileBarcodeScanner.macos.cs create mode 100644 ZXing.Net.Mobile/MobileBarcodeScanner.netstandard.cs create mode 100644 ZXing.Net.Mobile/MobileBarcodeScanner.shared.cs create mode 100644 ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs rename Source/ZXing.Net.Mobile.Core/Performance.cs => ZXing.Net.Mobile/Performance.shared.cs (58%) rename {Source/ZXing.Net.Mobile.Android => ZXing.Net.Mobile}/Resources/layout/zxingscanneractivitylayout.axml (100%) rename {Source/ZXing.Net.Mobile.Android => ZXing.Net.Mobile}/Resources/layout/zxingscannerfragmentlayout.axml (100%) rename {Source/ZXing.Net.Mobile.WindowsUniversal => ZXing.Net.Mobile}/ScanPage.xaml (65%) create mode 100644 ZXing.Net.Mobile/ScanPage.xaml.cs create mode 100644 ZXing.Net.Mobile/Tizen/BarcodeWriter.tizen.cs create mode 100644 ZXing.Net.Mobile/Tizen/BitmapRenderer.tizen.cs create mode 100644 ZXing.Net.Mobile/Tizen/MobileBarcodeScanner.tizen.cs create mode 100644 ZXing.Net.Mobile/Tizen/TizenBarcodeAnalyzer.tizen.cs create mode 100644 ZXing.Net.Mobile/Tizen/ZXingDefaultOverlay.tizen.cs create mode 100644 ZXing.Net.Mobile/Tizen/ZXingMediaView.tizen.cs create mode 100644 ZXing.Net.Mobile/Tizen/ZXingScannerCamera.tizen.cs create mode 100644 ZXing.Net.Mobile/Tizen/ZXingScannerWindow.tizen.cs create mode 100644 ZXing.Net.Mobile/UWP/BarcodeWriter.uwp.cs create mode 100644 ZXing.Net.Mobile/UWP/MobileBarcodeScanner.uwp.cs create mode 100644 ZXing.Net.Mobile/UWP/SoftwareBitmapLuminanceSource.uwp.cs create mode 100644 ZXing.Net.Mobile/UWP/VisualTreeHelperExt.uwp.cs create mode 100644 ZXing.Net.Mobile/UWP/WriteableBitmapRenderer.uwp.cs create mode 100644 ZXing.Net.Mobile/ZXing.Net.Mobile.csproj create mode 100644 ZXing.Net.Mobile/ZXingScannerControl.xaml create mode 100644 ZXing.Net.Mobile/ZXingScannerControl.xaml.cs create mode 100644 ZXing.Net.Mobile/iOS/AVCaptureScannerView.ios.cs create mode 100644 ZXing.Net.Mobile/iOS/AVCaptureScannerViewController.ios.cs rename Source/ZXing.Net.Mobile.iOS/BarcodeWriter.cs => ZXing.Net.Mobile/iOS/BarcodeWriter.ios.cs (58%) create mode 100644 ZXing.Net.Mobile/iOS/BitmapRenderer.ios.cs create mode 100644 ZXing.Net.Mobile/iOS/CVPixelBufferBGRA32LuminanceSource.ios.cs rename Source/ZXing.Net.Mobile.iOS/IScannerViewController.cs => ZXing.Net.Mobile/iOS/IScannerViewController.ios.cs (57%) create mode 100644 ZXing.Net.Mobile/iOS/MobileBarcodeScanner.ios.cs create mode 100644 ZXing.Net.Mobile/iOS/RGBLuminanceSourceiOS.ios.cs rename Source/ZXing.Net.Mobile.iOS/ZXingDefaultOverlayView.cs => ZXing.Net.Mobile/iOS/ZXingDefaultOverlayView.ios.cs (58%) rename Source/ZXing.Net.Mobile.iOS/ZXingScannerView.cs => ZXing.Net.Mobile/iOS/ZXingScannerView.ios.cs (51%) create mode 100644 ZXing.Net.Mobile/iOS/ZXingScannerViewController.ios.cs create mode 100644 ZXing.Net/zxing.dll create mode 100644 ZXing.Net/zxing.pdb create mode 100644 ZXing.Net/zxing.xml delete mode 100644 build.cake delete mode 100644 build.ps1 delete mode 100644 build.sh diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..0f8bb3c76 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,104 @@ +# Suppress: EC112 +# top-most EditorConfig file +root = true + +[*] +indent_style = tabs +# (Please don't specify an indent_size here; that has too many unintended consequences.) + +# Code files +[*.{cs,csx,vb,vbx}] +indent_size = 4 + +# Code files +[*.sln] +indent_size = 4 + +# Xml project files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] +indent_size = 2 + +# Xml config files +[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] +indent_size = 2 + +# JSON files +[*.json] +indent_size = 2 + +# XML files +[*.xml] +indent_size = 2 + +# Dotnet code style settings: +[*.{cs,vb}] +# Sort using and Import directives with System.* appearing first +dotnet_sort_system_directives_first = true +# Avoid "this." and "Me." if not necessary +dotnet_style_qualification_for_field = false:suggestion +dotnet_style_qualification_for_property = false:suggestion +dotnet_style_qualification_for_method = false:suggestion +dotnet_style_qualification_for_event = false:suggestion + +# Use language keywords instead of framework type names for type references +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion +dotnet_style_require_accessibility_modifiers = omit_if_default:warning + +# Suggest more modern language features when available +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion + +# Naming Conventions: +# Pascal Casing +dotnet_naming_symbols.method_and_property_symbols.applicable_kinds= method,property,enum +dotnet_naming_symbols.method_and_property_symbols.applicable_accessibilities = * +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +dotnet_naming_rule.methods_and_properties_must_be_pascal_case.severity = warning +dotnet_naming_rule.methods_and_properties_must_be_pascal_case.symbols = method_and_property_symbols +dotnet_naming_rule.methods_and_properties_must_be_pascal_case.style = pascal_case_style + +# Non-public members must be lower-case +dotnet_naming_symbols.non_public_symbols.applicable_kinds = field +dotnet_naming_symbols.non_public_symbols.applicable_accessibilities = private +dotnet_naming_style.all_lower_case_style.capitalization = camel_case + +dotnet_naming_rule.non_public_members_must_be_lower_case.severity = warning +dotnet_naming_rule.non_public_members_must_be_lower_case.symbols = non_public_symbols +dotnet_naming_rule.non_public_members_must_be_lower_case.style = all_lower_case_style + +# CSharp code style settings: +[*.cs] +# Do not prefer "var" everywhere +csharp_style_var_for_built_in_types = true:error +csharp_style_var_when_type_is_apparent = true:error +csharp_style_var_elsewhere = true:error + +# Prefer method-like constructs to have a block body +csharp_style_expression_bodied_methods = true:suggestion +csharp_style_expression_bodied_constructors = true:suggestion +csharp_style_expression_bodied_operators = true:suggestion + +# Prefer property-like constructs to have an expression-body +csharp_style_expression_bodied_properties = true:suggestion +csharp_style_expression_bodied_indexers = true:suggestion +csharp_style_expression_bodied_accessors = true:suggestion + +# Suggest more modern language features when available +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_conditional_delegate_call = true:suggestion + +# Newline settings +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true diff --git a/Component-Forms/Banner.png b/Component-Forms/Banner.png deleted file mode 100644 index ac1b0580d5dfe34ae89ae16ccbd141f32b862042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242402 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

R@tMzjW@Y7u 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

!^vSgr-ul*uECDH&CS`n-}8Nk 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 { - // Stop scanning - scanPage.IsScanning = false; - - // Pop the page and show the result - Device.BeginInvokeOnMainThread (() => { - Navigation.PopAsync (); - DisplayAlert("Scanned Barcode", result.Text, "OK"); - }); -}; - -// Navigate to our scanner page -await Navigation.PushAsync (scanPage); -``` - - -## Additional Setup Required - -For each platform there is some additional setup required: - -### Android - -On Android, in your main `Activity`'s `OnCreate (..)` implementation, call: - -```csharp -ZXing.Net.Mobile.Forms.Android.Platform.Init(); -``` - -ZXing.Net.Mobile for Xamarin.Forms also handles the new Android permission request model for you, but you will need to add the following override implementation to your main `Activity` as well: - -```csharp -public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) -{ - global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult (requestCode, permissions, grantResults); -} -``` - -The `Camera` permission should be automatically included for you in the `AndroidManifest.xml` however if you would like to use the Torch API's you will still need to add the `Flashlight` permission yourself. You can do this by using the following assembly level attribute: - -```csharp -[assembly: UsesPermission (Android.Manifest.Permission.Flashlight)] -``` - -### iOS - -In your `AppDelegate`'s `FinishedLaunching (..)` implementation, call: - -```csharp -ZXing.Net.Mobile.Forms.Android.Platform.Init(); -``` - - -### Windows Phone -In your main `Page`'s constructor, you should add: - -```csharp -ZXing.Net.Mobile.Forms.WindowsPhone.ZXingScannerViewRenderer.Init(); -``` - -### Windows Universal UWP - -In your main `Page`'s constructor, you should add: - -```csharp -ZXing.Net.Mobile.Forms.WindowsUniversal.ZXingScannerViewRenderer.Init(); -``` - - - -# Scanning in a View - -If you need more customization, or do not want the scanner to take up its own Page, you can also use the `ZXingScannerView` in your own custom page: - -```csharp -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; - -namespace FormsSample -{ - public class CustomScanPage : ContentPage - { - ZXingScannerView zxing; - ZXingDefaultOverlay overlay; - - public CustomScanPage () : base () - { - zxing = new ZXingScannerView - { - HorizontalOptions = LayoutOptions.FillAndExpand, - VerticalOptions = LayoutOptions.FillAndExpand - }; - zxing.OnScanResult += (result) => - Device.BeginInvokeOnMainThread (async () => { - - // Stop analysis until we navigate away so we don't keep reading barcodes - zxing.IsAnalyzing = false; - - // Show an alert - await DisplayAlert ("Scanned Barcode", result.Text, "OK"); - - // Navigate away - await Navigation.PopAsync (); - }); - - overlay = new ZXingDefaultOverlay - { - TopText = "Hold your phone up to the barcode", - BottomText = "Scanning will happen automatically", - ShowFlashButton = zxing.HasTorch, - }; - overlay.FlashButtonClicked += (sender, e) => { - zxing.IsTorchOn = !zxing.IsTorchOn; - }; - var grid = new Grid - { - VerticalOptions = LayoutOptions.FillAndExpand, - HorizontalOptions = LayoutOptions.FillAndExpand, - }; - grid.Children.Add(zxing); - grid.Children.Add(overlay); - - // The root page of your application - Content = grid; - } - - protected override void OnAppearing() - { - base.OnAppearing(); - - zxing.IsScanning = true; - } - - protected override void OnDisappearing() - { - zxing.IsScanning = false; - - base.OnDisappearing(); - } - } -} -``` - - -## Custom Overlays - -It's very simple to use a custom overlay. If you are using the `ZXingScannerPage` you can pass in any `View` for the `customOverlay` parameter in the constructor. - -```csharp -// Create our custom overlay -var customOverlay = new StackLayout { - HorizontalOptions = LayoutOptions.FillAndExpand, - VerticalOptions = LayoutOptions.FillAndExpand -}; -var torch = new Button { - Text = "Toggle Torch" -}; -torch.Clicked += delegate { - scanPage.ToggleTorch (); -}; -customOverlay.Children.Add (torch); - -// Pass in the custom overlay -scanPage = new ZXingScannerPage (customOverlay: customOverlay); -scanPage.OnScanResult += (result) => { - scanPage.IsScanning = false; - - Device.BeginInvokeOnMainThread(() => - { - Navigation.PopAsync(); - DisplayAlert("Scanned Barcode", result.Text, "OK"); - }); -}; -await Navigation.PushAsync (scanPage); -``` - -If you are using `ZXingScannerView` on your own page, of course you are responsible for adding your own overlay. - - -## Barcode Formats - -By default, all barcode formats are monitored while scanning. You can change which formats to check for by passing a `MobileBarcodeScanningOptions` instance into the `ZXingScannerPage`'s constructor. - -```csharp -var options = new ZXing.Mobile.MobileBarcodeScanningOptions(); -options.PossibleFormats = new List() { - ZXing.BarcodeFormat.Ean8, ZXing.BarcodeFormat.Ean13 -}; - -var scanPage = new ZXingScannerPage (options); - -// ... -``` - -You can also set the `Options` property if you are using the `ZXingScannerView` control directly. - - -## Displaying / Generating Barcodes - -There is also a `ZXingBarcodeImageView` control available that can be used within any Xamarin.Forms page: - -```csharp -public class BarcodePage : ContentPage -{ - ZXingBarcodeImageView barcode; - - public BarcodePage () - { - barcode = new ZXingBarcodeImageView { - HorizontalOptions = LayoutOptions.FillAndExpand, - VerticalOptions = LayoutOptions.FillAndExpand, - }; - barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE; - barcode.BarcodeOptions.Width = 300; - barcode.BarcodeOptions.Height = 300; - barcode.BarcodeOptions.Margin = 10; - barcode.BarcodeValue = "ZXing.Net.Mobile"; - - Content = barcode; - } -} -``` diff --git a/Component-Forms/License.md b/Component-Forms/License.md deleted file mode 100644 index f4f87bd4e..000000000 --- a/Component-Forms/License.md +++ /dev/null @@ -1,203 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - \ No newline at end of file diff --git a/Component-Forms/component.template.yaml b/Component-Forms/component.template.yaml deleted file mode 100644 index e2df8347f..000000000 --- a/Component-Forms/component.template.yaml +++ /dev/null @@ -1,69 +0,0 @@ -version: {VERSION} -name: ZXing.Net.Mobile for Forms -id: zxing.net.mobile.forms -publisher: Redth -license: License.md -skip_docs: true -icons: - - ./icons/zxing.net.mobile.forms_128x128.png - - ./icons/zxing.net.mobile.forms_512x512.png -publisher-url: "https://github.com/Redth/ZXing.Net.Mobile" -libraries: - ios-unified: - - ../Build/Forms/Release/ios-unified/ZXing.Net.Mobile.Forms.dll - - ../Build/Forms/Release/ios-unified/ZXing.Net.Mobile.Forms.iOS.dll - android: - - ../Build/Forms/Release/android/ZXing.Net.Mobile.Forms.dll - - ../Build/Forms/Release/android/ZXing.Net.Mobile.Forms.Android.dll - winuniversal-10.0: - - ../Build/Forms/Release/uwp/ZXing.Net.Mobile.Forms.dll - - ../Build/Forms/Release/uwp/ZXing.Net.Mobile.Forms.WindowsUniversal.dll - pcl: - - ../Build/Forms/Release/portable/ZXing.Net.Mobile.Forms.dll -is_shell: true -packages: - android: - - ZXing.Net.Mobile.Forms, Version={VERSION} - ios-unified: - - ZXing.Net.Mobile.Forms, Version={VERSION} - winuniversal-10.0: - - ZXing.Net.Mobile.Forms, Version={VERSION} -summary: "ZXing.Net.Mobile is a C#/.NET Barcode Scanning Library for Xamarin.Forms" -details: ./Details.md -getting-started: ./GettingStarted.md -samples: - - name: Forms Sample - path: "../Samples/Forms/Sample.Forms.sln" - removeProjects: - - zxing.portable - - ZXing.Net.Mobile.Core - - ZXing.Net.Mobile.Portable - - ZXing.Net.Mobile.WindowsRT - - ZXing.Net.Mobile.iOS - - ZXing.Net.Mobile.Android - - ZXing.Net.Mobile.WindowsUniversal - - ZXing.Net.Mobile.Forms - - ZXing.Net.Mobile.Forms.iOS - - ZXing.Net.Mobile.Forms.Android - - ZXing.Net.Mobile.Forms.WindowsUniversal - installNuGets: - - project: FormsSample - packages: - - ZXing.Net.Mobile - - ZXing.Net.Mobile.Forms - - project: FormsSample.iOS - packages: - - ZXing.Net.Mobile - - ZXing.Net.Mobile.Forms - - project: FormsSample.Droid - packages: - - ZXing.Net.Mobile - - ZXing.Net.Mobile.Forms - - project: FormsSample.WindowsUniversal - packages: - - ZXing.Net.Mobile - - ZXing.Net.Mobile.Forms - no_build: true - skip_docs: true -local-nuget-repo: ../output -no_build: true diff --git a/Component-Forms/icons/zxing.net.mobile.forms_128x128.png b/Component-Forms/icons/zxing.net.mobile.forms_128x128.png deleted file mode 100644 index f1965654d984afa960cdc0e51b885635e8aa1867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11981 zcmV;;E;7-HP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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%0An29rhp@EgRL!{7 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Á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 L#Gm_b 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

R@tMzjW@Y7u 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

!^vSgr-ul*uECDH&CS`n-}8Nk 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 { - - var scanner = new ZXing.Mobile.MobileBarcodeScanner(); - var result = await scanner.Scan(); - - if (result != null) - Console.WriteLine("Scanned Barcode: " + result.Text); -}; -``` - -NOTE: On Android you must call the platform specific initializer sometime before trying to scan: - -```csharp -// Somewhere in your app, call the initialization code: -MobileBarcodeScanner.Initialize (Application); -``` - -### Android Versions -The component should work on Android 2.2 or higher. In Xamarin.Android there are 3 places in the project settings relating to Android version. YOU ***MUST*** set the Project Options -> Build -> General -> Target Framework to ***2.3*** or higher. If you still want to use 2.2, you can set the Project Options -> Build -> Android Application -> Minimum Android version to 2.2, but be sure to set the Target Android version in this section to 2.3 or higher. - -You must also add a reference to the Component `Android Support Library v4` https://components.xamarin.com/view/xamandroidsupportv4-18 from the Component Store. - -### Android Permissions - -The `Camera` permission should automatically be added to your `AndroidManifest.xml` for you (it's required for barcode scanning), however the `Flashlight` permission needs to be manually added if you would like to use Torch API's. You can add it by adding the following assembly level attribute to your app: - -```csharp -ssembly: UsesPermission (Android.Manifest.Permission.Flashlight)] -``` - -###Custom Overlays -By default, ZXing.Net.Mobile provides a very simple overlay for your barcode scanning interface. This overlay consists of a horizontal red line centered in the scanning 'window' and semi-transparent borders on the top and bottom of the non-scanning area. You also have the opportunity to customize the top and bottom text that appears in this overlay. - -If you want to customize the overlay, you must create your own View for each platform. You can customize your overlay like this: - -```csharp -var scanner = new ZXing.Mobile.MobileBarcodeScanner(); -scanner.UseCustomOverlay = true; -scanner.CustomOverlay = myCustomOverlayInstance; -var result = await scanner.Scan(); -//Handle result -``` - -Keep in mind that when using a Custom Overlay, you are responsible for the entire overlay (you cannot mix and match custom elements with the default overlay). The *ZxingScanner* instance has a *CustomOverlay* property, however on each platform this property is of a different type: - -- Xamarin.iOS => **UIView** -- Xamarin.Android => **View** -- Windows Phone => **UIElement** - -All of the platform samples have examples of custom overlays. - -###Barcode Formats -By default, all barcode formats are monitored while scanning. You can change which formats to check for by passing a ZxingScanningOptions instance into the StartScanning method: - -```csharp -var options = new ZXing.Mobile.MobileBarcodeScanningOptions(); -options.PossibleFormats = new List() { - ZXing.BarcodeFormat.Ean8, ZXing.BarcodeFormat.Ean13 -}; - -var scanner = new ZXing.Mobile.MobileBarcodeScanner(); -var result = await scanner.Scan(options); -//Handle result -``` - -###Using the ZXingScanner View / Fragment / Control -On each platform, the ZXing scanner has been implemented as a reusable component (view, fragment, or control), and it is possible to use the reusable component directly without using the MobileBarcodeScanner class at all. On each platform, the instance of the view/fragment/control contains the necessary properties and methods required to control your scanner. By default, the default overlay is automatically used, unless you set the CustomOverlay property as well as the UseCustomOverlay property on the instance of the view/fragment/control. You can use methods such as ToggleTorch() or StopScanning() on the view/fragment/control, however you are responsible for calling StartScanning(...) with a callback and an instance of MobileBarcodeScanningOptions when you are ready for the view's scanning to begin. You are also responsible for stopping scanning if you want to cancel at any point. - -The view/fragment/control classes for each platform are: - - - iOS: ZXingScannerView (UIView) - See ZXingScannerViewController.cs View Controller for an example of how to use this view - - iOS: AVCaptureScannerView (UIView) - This is API equivalent to ZXingScannerView, but uses Apple's AVCaptureSession Metadata engine to scan the barcodes instead of ZXing.Net. See AVCaptureScannerViewController.cs View Controller for an example of how to use this view - - Android: ZXingScannerFragment (Fragment) - See ZXingActivity.cs Activity for an example of how to use this fragment - - Windows Phone: ZXingScannerControl (UserControl) - See ScanPage.xaml Page for an example of how to use this Control - - -###Using Apple's AVCaptureSession (iOS7 Built in) Barcode Scanning -In iOS7, Apple added some API's to allow for scanning of barcodes in an AVCaptureSession. The latest version of ZXing.Net.Mobile gives you the option of using this instead of the ZXing scanning engine. You can use the `AVCaptureScannerView` or the `AVCaptureScannerViewController` classes directly just the same as you would use their ZXing* equivalents. Or, in your `MobileBarcodeScanner`, there is now an overload to use the AV Capture Engine: - -```csharp -//Scan(MobileBarcodeScanningOptions options, bool useAVCaptureEngine) -scanner.Scan(options, true); -``` -In the MobileBarcodeScanner, even if you specify to use the AVCaptureSession scanning, it will gracefully degrade to using ZXing if the device doesn't support this (eg: if it's not iOS7 or newer), or if you specify a barcode format in your scanning options which the AVCaptureSession does not support for detection. The AVCaptureSession can only decode the following barcodes: - -- Aztec -- Code 128 -- Code 39 -- Code 93 -- EAN13 -- EAN8 -- PDF417 -- QR -- UPC-E - -###License -Apache ZXing.Net.Mobile Copyright 2012 The Apache Software Foundation -This product includes software developed at The Apache Software Foundation (http://www.apache.org/). - -### ZXing.Net -ZXing.Net is released under the Apache 2.0 license. -ZXing.Net can be found here: http://zxingnet.codeplex.com/ -A copy of the Apache 2.0 license can be found here: http://www.apache.org/licenses/LICENSE-2.0 - -### ZXing -ZXing is released under the Apache 2.0 license. -ZXing can be found here: https://github.com/zxing/zxing -A copy of the Apache 2.0 license can be found here: http://www.apache.org/licenses/LICENSE-2.0 - -### System.Drawing -The System.Drawing classes included are from the mono source code which is property of Novell. -Copyright notice is intact in source code files. diff --git a/Component/License.md b/Component/License.md deleted file mode 100644 index f4f87bd4e..000000000 --- a/Component/License.md +++ /dev/null @@ -1,203 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - \ No newline at end of file diff --git a/Component/component.template.yaml b/Component/component.template.yaml deleted file mode 100644 index 3dd6864ad..000000000 --- a/Component/component.template.yaml +++ /dev/null @@ -1,74 +0,0 @@ -version: {VERSION} -name: ZXing.Net.Mobile -id: zxing.net.mobile -publisher: Redth -license: License.md -skip_docs: true -icons: - - ./icons/zxing.net.mobile_128x128.png - - ./icons/zxing.net.mobile_512x512.png -publisher-url: "https://github.com/Redth/ZXing.Net.Mobile" -libraries: - ios-unified: - - ../Build/Release/ios-unified/zxing.portable.dll - - ../Build/Release/ios-unified/ZXingNetMobile.dll - android: - - ../Build/Release/android/zxing.portable.dll - - ../Build/Release/android/ZXingNetMobile.dll - winuniversal-10.0: - - ../Build/Release/uwp/zxing.portable.dll - - ../Build/Release/uwp/ZXingNetMobile.dll - pcl: - - ../Build/Release/portable/zxing.portable.dll - - ../Build/Release/portable/ZXingNetMobile.dll -is_shell: true -packages: - android: - - ZXing.Net.Mobile, Version={VERSION} - - Xamarin.Android.Support.v4, Version=23.0.1.3 - ios-unified: - - ZXing.Net.Mobile, Version={VERSION} - winuniversal-10.0: - - ZXing.Net.Mobile, Version={VERSION} -summary: "ZXing.Net.Mobile is a C#/.NET Barcode Scanning Library" -details: ./Details.md -getting-started: ./GettingStarted.md -samples: - - name: Xamarin.iOS Unified API Sample - path: "../Samples/iOS/Sample.iOS.sln" - removeProjects: - - ZXing.Net.Mobile.iOS - - ZXing.Net.Mobile.Core - - zxing.portable - installNuGets: - - project: Sample.iOS - packages: - - ZXing.Net.Mobile - no_build: true - skip_docs: true - - name: Xamarin.Android Sample - path: "../Samples/Android/Sample.Android.sln" - removeProjects: - - ZXing.Net.Mobile.Android - - ZXing.Net.Mobile.Core - - zxing.portable - installNuGets: - - project: Sample.Android - packages: - - ZXing.Net.Mobile - no_build: true - skip_docs: true - - name: Windows Universal Sample - path: "../Samples/WindowsUniversal/Sample.WindowsUniversal.sln" - removeProjects: - - ZXing.Net.Mobile.WindowsUniversal - - ZXing.Net.Mobile.Core - - zxing.portable - installNuGets: - - project: Sample.WindowsUniversal - packages: - - ZXing.Net.Mobile - no_build: true - skip_docs: true -local-nuget-repo: ../output -no_build: true diff --git a/Component/icons/zxing.net.mobile_128x128.png b/Component/icons/zxing.net.mobile_128x128.png deleted file mode 100644 index 10d79ea3f76022a30e74c8ffba2fdccb14761c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9829 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

GRo@tRxmPwE2gB~&7myGz3 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 z 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 XL(hRY!5a*)00000NkvXXu0mjf+5*s8 diff --git a/Samples/Android/Sample.Android.sln b/Samples/Android/Sample.Android.sln deleted file mode 100644 index ef8161cd1..000000000 --- a/Samples/Android/Sample.Android.sln +++ /dev/null @@ -1,41 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26228.9 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Android", "Sample.Android\Sample.Android.csproj", "{660D9346-D70B-4C54-8402-E5F6DF48E9AC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Android", "..\..\Source\ZXing.Net.Mobile.Android\ZXing.Net.Mobile.Android.csproj", "{AC17589E-C817-4FA8-B3EC-CCEB25E55E59}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "..\..\Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "..\..\Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Samples/Android/Sample.Android/Assets/AboutAssets.txt b/Samples/Android/Sample.Android/Assets/AboutAssets.txt deleted file mode 100644 index ee3988629..000000000 --- a/Samples/Android/Sample.Android/Assets/AboutAssets.txt +++ /dev/null @@ -1,19 +0,0 @@ -Any raw assets you want to be deployed with your application can be placed in -this directory (and child directories) and given a Build Action of "AndroidAsset". - -These files will be deployed with you package and will be accessible using Android's -AssetManager, like this: - -public class ReadAsset : Activity -{ - protected override void OnCreate (Bundle bundle) - { - base.OnCreate (bundle); - - InputStream input = Assets.Open ("my_asset.txt"); - } -} - -Additionally, some Android functions will automatically load asset files: - -Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); \ No newline at end of file diff --git a/Samples/Android/Sample.Android/FragmentActivity.cs b/Samples/Android/Sample.Android/FragmentActivity.cs deleted file mode 100644 index cb363ce2c..000000000 --- a/Samples/Android/Sample.Android/FragmentActivity.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Collections.Generic; -using ZXing.Mobile; -using Android.OS; - -using Android.App; -using Android.Widget; -using Android.Content.PM; - -namespace Sample.Android -{ - [Activity (Label = "ZXing.Net.Mobile", Theme="@android:style/Theme.Holo.Light", ConfigurationChanges=ConfigChanges.Orientation|ConfigChanges.KeyboardHidden)] - public class FragmentActivity : global::Android.Support.V4.App.FragmentActivity - { - ZXingScannerFragment scanFragment; - - protected override void OnCreate (Bundle savedInstanceState) - { - base.OnCreate (savedInstanceState); - - SetContentView (Resource.Layout.FragmentActivity); - } - - protected override void OnResume () - { - base.OnResume (); - - var needsPermissionRequest = ZXing.Net.Mobile.Android.PermissionsHandler.NeedsPermissionRequest(this); - - if (needsPermissionRequest) - ZXing.Net.Mobile.Android.PermissionsHandler.RequestPermissionsAsync(this); - - if (scanFragment == null) - { - scanFragment = new ZXingScannerFragment(); - - SupportFragmentManager.BeginTransaction() - .Replace(Resource.Id.fragment_container, scanFragment) - .Commit(); - } - - if (!needsPermissionRequest) - scan(); - } - - public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) - { - ZXing.Net.Mobile.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults); - } - - protected override void OnPause () - { - scanFragment?.StopScanning (); - - base.OnPause (); - } - - void scan () - { - var opts = new MobileBarcodeScanningOptions { - PossibleFormats = new List { - ZXing.BarcodeFormat.QR_CODE - }, - CameraResolutionSelector = availableResolutions => { - - foreach (var ar in availableResolutions) { - Console.WriteLine ("Resolution: " + ar.Width + "x" + ar.Height); - } - return null; - } - }; - - scanFragment.StartScanning (result => { - - // Null result means scanning was cancelled - if (result == null || string.IsNullOrEmpty (result.Text)) { - Toast.MakeText (this, "Scanning Cancelled", ToastLength.Long).Show (); - return; - } - - // Otherwise, proceed with result - RunOnUiThread (() => Toast.MakeText (this, "Scanned: " + result.Text, ToastLength.Short).Show ()); - }, opts); - } - } -} - diff --git a/Samples/Android/Sample.Android/ImageActivity.cs b/Samples/Android/Sample.Android/ImageActivity.cs deleted file mode 100644 index 27bdcc94a..000000000 --- a/Samples/Android/Sample.Android/ImageActivity.cs +++ /dev/null @@ -1,42 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -using Android.App; -using Android.Content; -using Android.OS; -using Android.Runtime; -using Android.Views; -using Android.Widget; - -namespace Sample.Android -{ - [Activity (Label = "ImageActivity")] - public class ImageActivity : Activity - { - ImageView imageBarcode; - - protected override void OnCreate (Bundle bundle) - { - base.OnCreate (bundle); - - SetContentView (Resource.Layout.ImageActivity); - - imageBarcode = FindViewById (Resource.Id.imageBarcode); - - var barcodeWriter = new ZXing.Mobile.BarcodeWriter { - Format = ZXing.BarcodeFormat.QR_CODE, - Options = new ZXing.Common.EncodingOptions { - Width = 300, - Height = 300 - } - }; - var barcode = barcodeWriter.Write ("ZXing.Net.Mobile"); - - imageBarcode.SetImageBitmap (barcode); - } - } -} - diff --git a/Samples/Android/Sample.Android/MainActivity.cs b/Samples/Android/Sample.Android/MainActivity.cs deleted file mode 100644 index 4541bff48..000000000 --- a/Samples/Android/Sample.Android/MainActivity.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System.Collections.Generic; -using Android.App; -using Android.Content.PM; -using Android.Views; -using Android.Widget; -using Android.OS; -using ZXing; -using ZXing.Mobile; -using System; - -namespace Sample.Android -{ - [Activity (Label = "ZXing.Net.Mobile", MainLauncher = true, Theme="@android:style/Theme.Holo.Light", ConfigurationChanges=ConfigChanges.Orientation|ConfigChanges.KeyboardHidden)] - public class Activity1 : Activity - { - Button buttonScanCustomView; - Button buttonScanDefaultView; - Button buttonContinuousScan; - Button buttonFragmentScanner; - Button buttonGenerate; - - MobileBarcodeScanner scanner; - - protected override void OnCreate (Bundle bundle) - { - base.OnCreate (bundle); - - // Initialize the scanner first so we can track the current context - MobileBarcodeScanner.Initialize (Application); - - // Set our view from the "main" layout resource - SetContentView (Resource.Layout.Main); - - //Create a new instance of our Scanner - scanner = new MobileBarcodeScanner(); - - buttonScanDefaultView = this.FindViewById + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Samples/Sample.Uwp/MainPage.xaml.cs b/Samples/Sample.Uwp/MainPage.xaml.cs new file mode 100644 index 000000000..3c9b8e72a --- /dev/null +++ b/Samples/Sample.Uwp/MainPage.xaml.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Threading.Tasks; +using Sample.WindowsUniversal; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Popups; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; +using ZXing.Mobile; + +// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 + +namespace Sample.Uwp +{ + ///

+ /// An empty page that can be used on its own or navigated to within a Frame. + /// + public sealed partial class MainPage : Page + { + UIElement customOverlayElement = null; + MobileBarcodeScanner scanner; + + public MainPage() + { + InitializeComponent(); + + //Create a new instance of our scanner + scanner = new MobileBarcodeScanner(this.Dispatcher); + scanner.RootFrame = this.Frame; + scanner.Dispatcher = this.Dispatcher; + scanner.OnCameraError += Scanner_OnCameraError; + scanner.OnCameraInitialized += Scanner_OnCameraInitialized; ; + } + + void Scanner_OnCameraInitialized() + { + //handle initialization + } + + void Scanner_OnCameraError(IEnumerable errors) + { + if (errors != null) + { + errors.ToList().ForEach(async e => await MessageBox(e)); + } + } + + + void buttonScanDefault_Click(object sender, RoutedEventArgs e) + { + //Tell our scanner to use the default overlay + scanner.UseCustomOverlay = false; + //We can customize the top and bottom text of our default overlay + scanner.TopText = "Hold camera up to barcode"; + scanner.BottomText = "Camera will automatically scan barcode\r\n\r\nPress the 'Back' button to Cancel"; + //Start scanning + scanner.Scan().ContinueWith(t => + { + if (t.Result != null) + HandleScanResult(t.Result); + }); + } + + void buttonScanContinuously_Click(object sender, RoutedEventArgs e) + { + //Tell our scanner to use the default overlay + scanner.UseCustomOverlay = false; + //We can customize the top and bottom text of our default overlay + scanner.TopText = "Hold camera up to barcode"; + scanner.BottomText = "Camera will automatically scan barcode\r\n\r\nPress the 'Back' button to Cancel"; + + //Start scanning + scanner.ScanContinuously(new MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 3000 }, async (result) => + { + var msg = "Found Barcode: " + result.Text; + + await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () => + { + await MessageBox(msg); + }); + }); + } + + private void buttonScanCustom_Click(object sender, RoutedEventArgs e) + { + //Get our UIElement from the MainPage.xaml (this) file + // to use as our custom overlay + if (customOverlayElement == null) + { + customOverlayElement = this.customOverlay.Children[0]; + customOverlay.Children.RemoveAt(0); + } + + //Wireup our buttons from the custom overlay + buttonCancel.Click += (s, e2) => + { + scanner.Cancel(); + }; + buttonFlash.Click += (s, e2) => + { + scanner.ToggleTorch(); + }; + + //Set our custom overlay and enable it + scanner.CustomOverlay = customOverlayElement; + scanner.UseCustomOverlay = true; + + //Start scanning + scanner.Scan(new MobileBarcodeScanningOptions { AutoRotate = true }).ContinueWith(t => + { + if (t.Result != null) + HandleScanResult(t.Result); + }); + } + + async void HandleScanResult(ZXing.Result result) + { + var msg = ""; + + if (result != null && !string.IsNullOrEmpty(result.Text)) + msg = "Found Barcode: " + result.Text; + else + msg = "Scanning Canceled!"; + + await MessageBox(msg); + + } + + private void buttonGenerate_Click(object sender, RoutedEventArgs e) + { + //Go back to the main page + Frame.Navigate(typeof(ImagePage)); + } + + async Task MessageBox(string text) + { + await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () => + { + var dialog = new MessageDialog(text); + await dialog.ShowAsync(); + }); + } + } +} diff --git a/Samples/Sample.Uwp/Package.appxmanifest b/Samples/Sample.Uwp/Package.appxmanifest new file mode 100644 index 000000000..017ee919c --- /dev/null +++ b/Samples/Sample.Uwp/Package.appxmanifest @@ -0,0 +1,52 @@ + + + + + + + + + + Sample.Uwp + jondi + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/Properties/AssemblyInfo.cs b/Samples/Sample.Uwp/Properties/AssemblyInfo.cs similarity index 82% rename from Source/ZXing.Net.Mobile.Forms.WindowsUniversal/Properties/AssemblyInfo.cs rename to Samples/Sample.Uwp/Properties/AssemblyInfo.cs index c0e2eb224..7ae101b83 100644 --- a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/Properties/AssemblyInfo.cs +++ b/Samples/Sample.Uwp/Properties/AssemblyInfo.cs @@ -5,12 +5,12 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("ZXing.Net.Mobile.Forms.WindowsUniversal")] +[assembly: AssemblyTitle("Sample.Uwp")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ZXing.Net.Mobile.Forms.WindowsUniversal")] -[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyProduct("Sample.Uwp")] +[assembly: AssemblyCopyright("Copyright © 2020")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/Samples/Sample.Uwp/Properties/Default.rd.xml b/Samples/Sample.Uwp/Properties/Default.rd.xml new file mode 100644 index 000000000..af00722cd --- /dev/null +++ b/Samples/Sample.Uwp/Properties/Default.rd.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Samples/Forms/WindowsUniversal/FormsSample.WindowsUniversal.csproj b/Samples/Sample.Uwp/Sample.Uwp.csproj similarity index 69% rename from Samples/Forms/WindowsUniversal/FormsSample.WindowsUniversal.csproj rename to Samples/Sample.Uwp/Sample.Uwp.csproj index caf166e1f..3467210d6 100644 --- a/Samples/Forms/WindowsUniversal/FormsSample.WindowsUniversal.csproj +++ b/Samples/Sample.Uwp/Sample.Uwp.csproj @@ -1,22 +1,23 @@  - + Debug x86 - {69094754-B453-4BFA-9609-3DE9C9185157} + {2D97B30F-94A0-4631-9276-3ED17F392184} AppContainerExe Properties - WindowsUniversal - WindowsUniversal + Sample.Uwp + Sample.Uwp en-US UAP - 10.0.14393.0 - 10.0.10240.0 + 10.0.18362.0 + 10.0.17763.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - WindowsUniversal_TemporaryKey.pfx + true + false true @@ -51,7 +52,6 @@ false prompt true - true bin\ARM\Release\ @@ -65,6 +65,30 @@ true true + + true + bin\ARM64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM64 + false + prompt + true + true + + + bin\ARM64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM64 + false + prompt + true + true + true bin\x64\Debug\ @@ -88,17 +112,16 @@ true true - - - - PreserveNewest - - - + + PackageReference + App.xaml + + ImagePage.xaml + MainPage.xaml @@ -108,7 +131,6 @@ Designer - @@ -125,39 +147,34 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + MSBuild:Compile Designer - - {7528dd0a-1781-47f4-adbf-eeddb011f6bb} - ZXing.Net.Mobile.Core - - - {c785f56e-0d1d-492c-850b-4d882314f29b} - ZXing.Net.Mobile.Forms.WindowsUniversal - - - {8e54db74-c094-4016-859a-d1c7f2509a58} - ZXing.Net.Mobile.Forms - - - {1b000bca-4895-4acf-a0c6-3adf3a9bedf2} - ZXing.Net.Mobile.WindowsUniversal - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - {0daf97ca-02db-4e4f-9163-b8f14eae2d90} - FormsSample + + 6.2.9 + + + 1.5.1 + + + + + {8b7a8ab6-35a4-4c9c-83e1-96ba8be3c941} + ZXing.Net.Mobile - + + False + ..\..\ZXing.Net\zxing.dll + 14.0 diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/App.xaml b/Samples/Sample.WindowsUniversalOld/App.xaml similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/App.xaml rename to Samples/Sample.WindowsUniversalOld/App.xaml diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/App.xaml.cs b/Samples/Sample.WindowsUniversalOld/App.xaml.cs similarity index 93% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/App.xaml.cs rename to Samples/Sample.WindowsUniversalOld/App.xaml.cs index d69343a6b..55e4b4041 100644 --- a/Samples/WindowsUniversal/Sample.WindowsUniversal/App.xaml.cs +++ b/Samples/Sample.WindowsUniversalOld/App.xaml.cs @@ -29,9 +29,6 @@ sealed partial class App : Application /// public App() { - Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync( - Microsoft.ApplicationInsights.WindowsCollectors.Metadata | - Microsoft.ApplicationInsights.WindowsCollectors.Session); this.InitializeComponent(); this.Suspending += OnSuspending; } @@ -51,7 +48,7 @@ protected override void OnLaunched(LaunchActivatedEventArgs e) } #endif - Frame rootFrame = Window.Current.Content as Frame; + var rootFrame = Window.Current.Content as Frame; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active @@ -96,7 +93,7 @@ private void OnNavigated(object sender, NavigationEventArgs e) private void OnBackRequested(object sender, BackRequestedEventArgs e) { - Frame rootFrame = Window.Current.Content as Frame; + var rootFrame = Window.Current.Content as Frame; if (rootFrame.CanGoBack) { diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/LockScreenLogo.scale-200.png b/Samples/Sample.WindowsUniversalOld/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/LockScreenLogo.scale-200.png rename to Samples/Sample.WindowsUniversalOld/Assets/LockScreenLogo.scale-200.png diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/SplashScreen.scale-200.png b/Samples/Sample.WindowsUniversalOld/Assets/SplashScreen.scale-200.png similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/SplashScreen.scale-200.png rename to Samples/Sample.WindowsUniversalOld/Assets/SplashScreen.scale-200.png diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Square150x150Logo.scale-200.png b/Samples/Sample.WindowsUniversalOld/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Square150x150Logo.scale-200.png rename to Samples/Sample.WindowsUniversalOld/Assets/Square150x150Logo.scale-200.png diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Square44x44Logo.scale-200.png b/Samples/Sample.WindowsUniversalOld/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Square44x44Logo.scale-200.png rename to Samples/Sample.WindowsUniversalOld/Assets/Square44x44Logo.scale-200.png diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Samples/Sample.WindowsUniversalOld/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to Samples/Sample.WindowsUniversalOld/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/StoreLogo.png b/Samples/Sample.WindowsUniversalOld/Assets/StoreLogo.png similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/StoreLogo.png rename to Samples/Sample.WindowsUniversalOld/Assets/StoreLogo.png diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Wide310x150Logo.scale-200.png b/Samples/Sample.WindowsUniversalOld/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Assets/Wide310x150Logo.scale-200.png rename to Samples/Sample.WindowsUniversalOld/Assets/Wide310x150Logo.scale-200.png diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/ImagePage.xaml b/Samples/Sample.WindowsUniversalOld/ImagePage.xaml similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/ImagePage.xaml rename to Samples/Sample.WindowsUniversalOld/ImagePage.xaml diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/ImagePage.xaml.cs b/Samples/Sample.WindowsUniversalOld/ImagePage.xaml.cs similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/ImagePage.xaml.cs rename to Samples/Sample.WindowsUniversalOld/ImagePage.xaml.cs diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/MainPage.xaml b/Samples/Sample.WindowsUniversalOld/MainPage.xaml similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/MainPage.xaml rename to Samples/Sample.WindowsUniversalOld/MainPage.xaml diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/MainPage.xaml.cs b/Samples/Sample.WindowsUniversalOld/MainPage.xaml.cs similarity index 91% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/MainPage.xaml.cs rename to Samples/Sample.WindowsUniversalOld/MainPage.xaml.cs index 5dbcebb64..0ec73ea62 100644 --- a/Samples/WindowsUniversal/Sample.WindowsUniversal/MainPage.xaml.cs +++ b/Samples/Sample.WindowsUniversalOld/MainPage.xaml.cs @@ -39,12 +39,12 @@ public MainPage() scanner.OnCameraInitialized += Scanner_OnCameraInitialized; ; } - private void Scanner_OnCameraInitialized() + void Scanner_OnCameraInitialized() { //handle initialization } - private void Scanner_OnCameraError(IEnumerable errors) + void Scanner_OnCameraError(IEnumerable errors) { if(errors != null) { @@ -53,7 +53,7 @@ private void Scanner_OnCameraError(IEnumerable errors) } - private void buttonScanDefault_Click(object sender, RoutedEventArgs e) + void buttonScanDefault_Click(object sender, RoutedEventArgs e) { //Tell our scanner to use the default overlay scanner.UseCustomOverlay = false; @@ -68,7 +68,7 @@ private void buttonScanDefault_Click(object sender, RoutedEventArgs e) }); } - private void buttonScanContinuously_Click(object sender, RoutedEventArgs e) + void buttonScanContinuously_Click(object sender, RoutedEventArgs e) { //Tell our scanner to use the default overlay scanner.UseCustomOverlay = false; @@ -99,11 +99,11 @@ private void buttonScanCustom_Click(object sender, RoutedEventArgs e) } //Wireup our buttons from the custom overlay - this.buttonCancel.Click += (s, e2) => + buttonCancel.Click += (s, e2) => { scanner.Cancel(); }; - this.buttonFlash.Click += (s, e2) => + buttonFlash.Click += (s, e2) => { scanner.ToggleTorch(); }; @@ -122,7 +122,7 @@ private void buttonScanCustom_Click(object sender, RoutedEventArgs e) async void HandleScanResult(ZXing.Result result) { - string msg = ""; + var msg = ""; if (result != null && !string.IsNullOrEmpty(result.Text)) msg = "Found Barcode: " + result.Text; diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Package.appxmanifest b/Samples/Sample.WindowsUniversalOld/Package.appxmanifest similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Package.appxmanifest rename to Samples/Sample.WindowsUniversalOld/Package.appxmanifest diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Properties/AssemblyInfo.cs b/Samples/Sample.WindowsUniversalOld/Properties/AssemblyInfo.cs similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Properties/AssemblyInfo.cs rename to Samples/Sample.WindowsUniversalOld/Properties/AssemblyInfo.cs diff --git a/Samples/Forms/WindowsUniversal/Properties/Default.rd.xml b/Samples/Sample.WindowsUniversalOld/Properties/Default.rd.xml similarity index 100% rename from Samples/Forms/WindowsUniversal/Properties/Default.rd.xml rename to Samples/Sample.WindowsUniversalOld/Properties/Default.rd.xml diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Sample.WindowsUniversal.csproj b/Samples/Sample.WindowsUniversalOld/Sample.WindowsUniversal.csproj similarity index 86% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Sample.WindowsUniversal.csproj rename to Samples/Sample.WindowsUniversalOld/Sample.WindowsUniversal.csproj index d68a8b095..354367ad2 100644 --- a/Samples/WindowsUniversal/Sample.WindowsUniversal/Sample.WindowsUniversal.csproj +++ b/Samples/Sample.WindowsUniversalOld/Sample.WindowsUniversal.csproj @@ -11,12 +11,13 @@ Sample.WindowsUniversal en-US UAP - 10.0.14393.0 - 10.0.10240.0 + 10.0.16299.0 + 10.0.16299.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Sample.WindowsUniversal_TemporaryKey.pfx + win10-arm;win10-arm-aot;win10-x86;win10-x86-aot;win10-x64;win10-x64-aot true @@ -93,13 +94,6 @@ true true - - - - PreserveNewest - - - App.xaml @@ -143,17 +137,14 @@ - - {7528dd0a-1781-47f4-adbf-eeddb011f6bb} - ZXing.Net.Mobile.Core - - - {1b000bca-4895-4acf-a0c6-3adf3a9bedf2} - ZXing.Net.Mobile.WindowsUniversal - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable + + 6.1.9 + + + + + {8b7a8ab6-35a4-4c9c-83e1-96ba8be3c941} + ZXing.Net.Mobile diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/Sample.WindowsUniversal_TemporaryKey.pfx b/Samples/Sample.WindowsUniversalOld/Sample.WindowsUniversal_TemporaryKey.pfx similarity index 100% rename from Samples/WindowsUniversal/Sample.WindowsUniversal/Sample.WindowsUniversal_TemporaryKey.pfx rename to Samples/Sample.WindowsUniversalOld/Sample.WindowsUniversal_TemporaryKey.pfx diff --git a/Samples/iOS/Sample.iOS/AppDelegate.cs b/Samples/Sample.iOS/AppDelegate.cs similarity index 71% rename from Samples/iOS/Sample.iOS/AppDelegate.cs rename to Samples/Sample.iOS/AppDelegate.cs index fbe0a6283..d1472fe3c 100644 --- a/Samples/iOS/Sample.iOS/AppDelegate.cs +++ b/Samples/Sample.iOS/AppDelegate.cs @@ -15,7 +15,7 @@ namespace Sample.iOS // The UIApplicationDelegate for the application. This class is responsible for launching the // User Interface of the application, as well as listening (and optionally responding) to // application events from iOS. - [Register ("AppDelegate")] + [Register("AppDelegate")] public partial class AppDelegate : UIApplicationDelegate { // class-level declarations @@ -30,12 +30,12 @@ public partial class AppDelegate : UIApplicationDelegate // // You have 17 seconds to return from this method, or iOS will terminate your application. // - public override bool FinishedLaunching (UIApplication app, NSDictionary options) + public override bool FinishedLaunching(UIApplication app, NSDictionary options) { - Xamarin.Calabash.Start (); + Xamarin.Calabash.Start(); // create a new window instance based on the screen size - window = new UIWindow (UIScreen.MainScreen.Bounds); + window = new UIWindow(UIScreen.MainScreen.Bounds); homeViewController = new HomeViewController(); @@ -46,18 +46,18 @@ public override bool FinishedLaunching (UIApplication app, NSDictionary options) //window.AddSubview(navController.View); // make the window visible - window.MakeKeyAndVisible (); + window.MakeKeyAndVisible(); return true; } - [Export ("UITestBackdoorScan:")] // notice the colon at the end of the method name - public NSString UITestBackdoorScan (NSString value) - { - homeViewController.UITestBackdoorScan (value.ToString ()); + [Export("UITestBackdoorScan:")] // notice the colon at the end of the method name + public NSString UITestBackdoorScan(NSString value) + { + homeViewController.UITestBackdoorScan(value.ToString()); - return new NSString (); - } + return new NSString(); + } } } diff --git a/Samples/Sample.iOS/CustomOverlayView.cs b/Samples/Sample.iOS/CustomOverlayView.cs new file mode 100644 index 000000000..0f15a08e7 --- /dev/null +++ b/Samples/Sample.iOS/CustomOverlayView.cs @@ -0,0 +1,39 @@ +using System; + +using Foundation; +using CoreFoundation; +using CoreGraphics; +using UIKit; + +namespace Sample.iOS +{ + public class CustomOverlayView : UIView + { + public UIButton ButtonTorch; + public UIButton ButtonCancel; + + public CustomOverlayView() : base() + { + ButtonTorch = UIButton.FromType(UIButtonType.RoundedRect); + ButtonTorch.Frame = new CGRect(Frame.Width / 2 + 5, Frame.Height - 60, Frame.Width / 2 - 10, 34); + ButtonTorch.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleLeftMargin; + ButtonTorch.SetTitle("Torch", UIControlState.Normal); + AddSubview(ButtonTorch); + + + ButtonCancel = UIButton.FromType(UIButtonType.RoundedRect); + ButtonCancel.Frame = new CGRect(0, Frame.Height - 60, Frame.Width / 2 - 10, 34); + ButtonCancel.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleRightMargin; + ButtonCancel.SetTitle("Cancel", UIControlState.Normal); + AddSubview(ButtonCancel); + } + + public override void LayoutSubviews() + { + ButtonTorch.Frame = new CGRect(Frame.Width / 2 + 5, Frame.Height - 60, Frame.Width / 2 - 10, 34); + ButtonCancel.Frame = new CGRect(0, Frame.Height - 60, Frame.Width / 2 - 10, 34); + } + + } +} + diff --git a/Samples/Sample.iOS/HomeViewController.cs b/Samples/Sample.iOS/HomeViewController.cs new file mode 100644 index 000000000..7287c6950 --- /dev/null +++ b/Samples/Sample.iOS/HomeViewController.cs @@ -0,0 +1,148 @@ +using System; +using MonoTouch.Dialog; + +using Foundation; +using CoreGraphics; +using UIKit; + +using ZXing; +using ZXing.Mobile; +using System.Collections.Generic; + +namespace Sample.iOS +{ + public class HomeViewController : DialogViewController + { + public HomeViewController() : base(UITableViewStyle.Grouped, new RootElement("ZXing.Net.Mobile"), false) + { + } + + MobileBarcodeScanner scanner; + CustomOverlayView customOverlay; + + public override void ViewDidLoad() + { + //Create a new instance of our scanner + scanner = new MobileBarcodeScanner(this.NavigationController); + + Root = new RootElement("ZXing.Net.Mobile") { + new Section { + + new StyledStringElement ("Scan with Default View", async () => { + //Tell our scanner to use the default overlay + scanner.UseCustomOverlay = false; + //We can customize the top and bottom text of the default overlay + scanner.TopText = "Hold camera up to barcode to scan"; + scanner.BottomText = "Barcode will automatically scan"; + + //Start scanning + var result = await scanner.Scan (); + + HandleScanResult(result); + }), + + new StyledStringElement ("Scan Continuously", () => { + //Tell our scanner to use the default overlay + scanner.UseCustomOverlay = false; + + //Tell our scanner to use our custom overlay + scanner.UseCustomOverlay = true; + scanner.CustomOverlay = customOverlay; + + + var opt = new MobileBarcodeScanningOptions (); + opt.DelayBetweenContinuousScans = 3000; + + //Start scanning + scanner.ScanContinuously (opt, false, HandleScanResult); + }), + + new StyledStringElement ("Scan with Custom View", async () => { + //Create an instance of our custom overlay + customOverlay = new CustomOverlayView(); + //Wireup the buttons from our custom overlay + customOverlay.ButtonTorch.TouchUpInside += delegate { + scanner.ToggleTorch(); + }; + customOverlay.ButtonCancel.TouchUpInside += delegate { + scanner.Cancel(); + }; + + //Tell our scanner to use our custom overlay + scanner.UseCustomOverlay = true; + scanner.CustomOverlay = customOverlay; + + var result = await scanner.Scan (new MobileBarcodeScanningOptions { AutoRotate = true }); + + HandleScanResult(result); + }), + + new StyledStringElement ("Scan with AVCapture Engine", async () => { + //Tell our scanner to use the default overlay + scanner.UseCustomOverlay = false; + //We can customize the top and bottom text of the default overlay + scanner.TopText = "Hold camera up to barcode to scan"; + scanner.BottomText = "Barcode will automatically scan"; + + //Start scanning + var result = await scanner.Scan (true); + + HandleScanResult (result); + }), + + new StyledStringElement ("Generate Barcode", () => { + NavigationController.PushViewController (new ImageViewController (), true); + }) + } + }; + } + + void HandleScanResult(ZXing.Result result) + { + var msg = ""; + + if (result != null && !string.IsNullOrEmpty(result.Text)) + msg = "Found Barcode: " + result.Text; + else + msg = "Scanning Canceled!"; + + this.InvokeOnMainThread(() => + { + var av = new UIAlertView("Barcode Result", msg, null, "OK", null); + av.Show(); + }); + } + + public void UITestBackdoorScan(string param) + { + var expectedFormat = BarcodeFormat.QR_CODE; + Enum.TryParse(param, out expectedFormat); + var opts = new MobileBarcodeScanningOptions + { + PossibleFormats = new List { expectedFormat } + }; + + //Create a new instance of our scanner + scanner = new MobileBarcodeScanner(this.NavigationController); + scanner.UseCustomOverlay = false; + + Console.WriteLine("Scanning " + expectedFormat); + + //Start scanning + scanner.Scan(opts).ContinueWith(t => + { + var result = t.Result; + + var format = result?.BarcodeFormat.ToString() ?? string.Empty; + var value = result?.Text ?? string.Empty; + + BeginInvokeOnMainThread(() => + { + var av = UIAlertController.Create("Barcode Result", format + "|" + value, UIAlertControllerStyle.Alert); + av.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Cancel, null)); + PresentViewController(av, true, null); + }); + }); + } + } +} diff --git a/Samples/Sample.iOS/ImageViewController.cs b/Samples/Sample.iOS/ImageViewController.cs new file mode 100644 index 000000000..ae7b174c7 --- /dev/null +++ b/Samples/Sample.iOS/ImageViewController.cs @@ -0,0 +1,44 @@ +using System; +using ZXing.Mobile; +using UIKit; +using CoreGraphics; + +namespace Sample.iOS +{ + public class ImageViewController : UIViewController + { + public ImageViewController() : base() + { + } + + UIImageView imageBarcode; + + public override void ViewDidLoad() + { + base.ViewDidLoad(); + + NavigationItem.Title = "Generate Barcode"; + View.BackgroundColor = UIColor.White; + + imageBarcode = new UIImageView(new CGRect(20, 80, View.Frame.Width - 40, View.Frame.Height - 120)); + + View.AddSubview(imageBarcode); + + var barcodeWriter = new BarcodeWriter + { + Format = ZXing.BarcodeFormat.QR_CODE, + Options = new ZXing.Common.EncodingOptions + { + Width = 300, + Height = 300, + Margin = 30 + } + }; + + var barcode = barcodeWriter.Write("ZXing.Net.Mobile"); + + imageBarcode.Image = barcode; + } + } +} + diff --git a/Samples/iOS/Sample.iOS/Info.plist b/Samples/Sample.iOS/Info.plist similarity index 100% rename from Samples/iOS/Sample.iOS/Info.plist rename to Samples/Sample.iOS/Info.plist diff --git a/Samples/iOS/Sample.iOS/LaunchScreen.xib b/Samples/Sample.iOS/LaunchScreen.xib similarity index 100% rename from Samples/iOS/Sample.iOS/LaunchScreen.xib rename to Samples/Sample.iOS/LaunchScreen.xib diff --git a/Samples/iOS/Sample.iOS/Main.cs b/Samples/Sample.iOS/Main.cs similarity index 67% rename from Samples/iOS/Sample.iOS/Main.cs rename to Samples/Sample.iOS/Main.cs index 867b1db95..7225b5dd4 100644 --- a/Samples/iOS/Sample.iOS/Main.cs +++ b/Samples/Sample.iOS/Main.cs @@ -1,25 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; - -#if __UNIFIED__ using Foundation; using UIKit; -#else -using MonoTouch.Foundation; -using MonoTouch.UIKit; -#endif namespace ZxingSharp.MonoTouch.Sample { public class Application { // This is the main entry point of the application. - static void Main (string[] args) + static void Main(string[] args) { // if you want to use a different Application Delegate class from "AppDelegate" // you can specify it here. - UIApplication.Main (args, null, "AppDelegate"); + UIApplication.Main(args, null, "AppDelegate"); } } } diff --git a/Samples/Sample.iOS/Resources/Icon.png b/Samples/Sample.iOS/Resources/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..492d90e7c8e9c4cc52f56a5038c0760356ffe3e7 GIT binary patch literal 156853 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

27d*(^%{ztP-(0PG{Q^xJ2zm_v>b`caHF-6#1 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 z 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

0XmM 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 pI|S40IWQOuf}l1102@oBpHNHc+cd$)z*L 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 literal 0 HcmV?d00001 diff --git a/Samples/Sample.iOS/Resources/Icon@2x.png b/Samples/Sample.iOS/Resources/Icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..492d90e7c8e9c4cc52f56a5038c0760356ffe3e7 GIT binary patch literal 156853 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

27d*(^%{ztP-(0PG{Q^xJ2zm_v>b`caHF-6#1 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 z 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

- /// Provides easy access to the root frame of the Phone Application. - /// - /// The root frame of the Phone Application. - public PhoneApplicationFrame RootFrame { get; private set; } - - /// - /// Constructor for the Application object. - /// - public App() - { - // Global handler for uncaught exceptions. - UnhandledException += Application_UnhandledException; - - // Standard Silverlight initialization - InitializeComponent(); - - // Phone-specific initialization - InitializePhoneApplication(); - - // Show graphics profiling information while debugging. - if (System.Diagnostics.Debugger.IsAttached) - { - // Display the current frame rate counters. - Application.Current.Host.Settings.EnableFrameRateCounter = true; - - // Show the areas of the app that are being redrawn in each frame. - //Application.Current.Host.Settings.EnableRedrawRegions = true; - - // Enable non-production analysis visualization mode, - // which shows areas of a page that are handed off to GPU with a colored overlay. - //Application.Current.Host.Settings.EnableCacheVisualization = true; - - // Disable the application idle detection by setting the UserIdleDetectionMode property of the - // application's PhoneApplicationService object to Disabled. - // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run - // and consume battery power when the user is not using the phone. - PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled; - } - - } - - // Code to execute when the application is launching (eg, from Start) - // This code will not execute when the application is reactivated - private void Application_Launching(object sender, LaunchingEventArgs e) - { - } - - // Code to execute when the application is activated (brought to foreground) - // This code will not execute when the application is first launched - private void Application_Activated(object sender, ActivatedEventArgs e) - { - } - - // Code to execute when the application is deactivated (sent to background) - // This code will not execute when the application is closing - private void Application_Deactivated(object sender, DeactivatedEventArgs e) - { - System.Diagnostics.Debug.WriteLine("Deactivated..."); - } - - // Code to execute when the application is closing (eg, user hit Back) - // This code will not execute when the application is deactivated - private void Application_Closing(object sender, ClosingEventArgs e) - { - System.Diagnostics.Debug.WriteLine("Closing..."); - } - - // Code to execute if a navigation fails - private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) - { - if (System.Diagnostics.Debugger.IsAttached) - { - // A navigation has failed; break into the debugger - System.Diagnostics.Debugger.Break(); - } - } - - // Code to execute on Unhandled Exceptions - private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) - { - if (System.Diagnostics.Debugger.IsAttached) - { - // An unhandled exception has occurred; break into the debugger - System.Diagnostics.Debugger.Break(); - } - } - - #region Phone application initialization - - // Avoid double-initialization - private bool phoneApplicationInitialized = false; - - // Do not add any additional code to this method - private void InitializePhoneApplication() - { - if (phoneApplicationInitialized) - return; - - // Create the frame but don't set it as RootVisual yet; this allows the splash - // screen to remain active until the application is ready to render. - RootFrame = new PhoneApplicationFrame(); - RootFrame.Navigated += CompleteInitializePhoneApplication; - - // Handle navigation failures - RootFrame.NavigationFailed += RootFrame_NavigationFailed; - - // Ensure we don't initialize again - phoneApplicationInitialized = true; - } - - // Do not add any additional code to this method - private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) - { - // Set the root visual to allow the application to render - if (RootVisual != RootFrame) - RootVisual = RootFrame; - - // Remove this handler since it is no longer needed - RootFrame.Navigated -= CompleteInitializePhoneApplication; - } - - #endregion - } -} \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/ApplicationIcon.png b/Samples/WindowsPhone/Sample.WindowsPhone/ApplicationIcon.png deleted file mode 100644 index 5859393ca1056103ba35d225773352a9fa3ab754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1881 zcmV-f2d4OmP)GXLPE9uD;d|3K9jFs0^O3no;*#kUHY6H}PH_^L3*aj} zl+rSw?L`W0p^tkju#a}u3PxyqFY3}?ZpgV`?z#P)?|kQbU67g4(Jt>MC@$|ToYbAv zoz$Jwoz$JwUyrEBh@^xBYY9T32$%4g4Eozd9YH8m>Im7iz@UwrH+y+`StMa0!Jlv1 zOs9{eP8~IOLbaYWZ(elNbZg1v$&=#~5`=udMY3Y~^2n$tPDrTrV}g_vPDsd`qdqj` z?(SZ2=x{`MxJ4Ea7yy62*t!)g2L{u*+?5%tV8G+?EYFApOLBK?H(-W0sdbrL7RKcs zEi7D+mK#@=wJ2&3^B#Z6SE|tW^ z&fa_A0KDdD7g}CkuGQ%*uYy_6tlm5}8JiaBN~M03ks%g~tMA@5>&#%lv|6osRa0w$GfX-lmv6;tg7E35t(xdFTQCUeAbpwWpTg5+|K7IY# zwbIg(hK5FUUmu3O*mrLl?KRUayoa}&LPcB<-$|3+(JUi7*{UTR~?sv$M1P1N>*rj)mLHrKNHON-lLA!%9m^1R@cPXUv=l zmwktfMx&WuVn$tE?SL(YK0XhFAR`119z6nm6Brlagxr7dz}8t~Yn@7=%#V+Eb8|(} zt{zpd`CNjX*sbr;=t5DIS`Dt#+slj1W=)+krM;u$iMZ8K>adS$jr!2xBjD^>TUvBF z9d0yoxm*IZ?l;-5Ain@y6NACvgojsGRpsU7j%^L&Y-U7+haE2}3J&Fvoey?)v}dhb zCu#eKuxQ%SD*0;n9-YaBlZv8a$Hv3kwrJWRlMUc_^1_AW@h&SVIeq4*!NEa-a~Q~4 z+oV!0nTl_2YVx!S#tzx~^ayTn&@|YYz@VU6F)=fuXV94}i1{Q@*QnG@O^x-nwNi;h z*`t)BXsbkOr-$)j`>g(C&HN({S~o10_f z;%IdG#4O<1vuEG#-(Pg%q)ef3=$L{Rf85e?x28HGf*TMRL^f|}YwPyhobszzVFAQ= zm~N%=UR|9)Ab@0*RDI`VXWyx=A<{WQ0h*baId@(Hx%~+Wg~envH8%FDRE|=IfS_Gc9lLglmM*of63B)(jlMWFl^Yh` z-PHwg&`!V3goKDr=Y)nNCGiA8A;+rnCkfqM=&e6)R#x6>e)2@4>Few7cQpMPZm{_I z@>5c?^YUI_#W{jAr%qkC_-ltu?lLq)WR>)^Tj}QN>OSs3Z67*1WyCi#!0z{cbAY@o z006~x)1!xywl>13BNU2g3IFKvB5+=0+j?T+{J*NJA&d|~9YF+(7w2r-hRPK^N~OV| z*K2jK7)uw$abO06sz<3-X}VB_(P)g1kH1%6r&4Pit&*rzYH08@48w6FjvxpyMqH5G z+#G(IkSOXBu{bAtE4UNjJv2Dv?d^r*xNNN6#<*(JR_RN|$7Zqo{R0Rz5+7e*D63_1 z1<}onQAk;|C^{yFKD+Wz{HrNFFf|SuX0K6dp!F8pg;@r>Y=rsCpr)?Z@)E?>v3>(o$ zrqR3^&og+a=b!w5N57jd;8|i|GIMu#V_YC94Rc^kd-O#lzDi#4-5>B z`F?^uj5UIS0&A+OHhi}J_wsTa!}NN6eQllj6z=lWJG4TH)* z?`+z*0Yy=!W5up*A7no6n!nw*wo>MkzI-d?@orCP?%cM_FCIaX9;>6gpovZ%<&lG0MhzAcYIoOgsb z0n|ss&CTu6!-opA%OZibfuXl|${hS;XMd^jw!!)D4NmG#>Q3rT>i;k5{|Ybw$j9Fp Tu#Z&K00000NkvXXu0mjfnP|DN diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/Background.png b/Samples/WindowsPhone/Sample.WindowsPhone/Background.png deleted file mode 100644 index e46f21d9407f1ae4d6fedcf793778f32bae3f06d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3521 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 diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml b/Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml deleted file mode 100644 index 32ccf5b94..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml.cs b/Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml.cs deleted file mode 100644 index b4b4e73e2..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/ImagePage.xaml.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Navigation; -using Microsoft.Phone.Controls; -using Microsoft.Phone.Shell; -using ZXing.Mobile; - -namespace ZxingSharp.WindowsPhone.Sample -{ - public partial class ImagePage : PhoneApplicationPage - { - public ImagePage() - { - InitializeComponent(); - } - - protected override void OnNavigatedTo(NavigationEventArgs e) - { - base.OnNavigatedTo(e); - - var barcodeWriter = new BarcodeWriter - { - Format = ZXing.BarcodeFormat.QR_CODE, - Options = new ZXing.Common.EncodingOptions - { - Width = 300, - Height = 300, - Margin = 30 - } - }; - - var image = barcodeWriter.Write("ZXing.Net.Mobile"); - - imageBarcode.Source = image; - } - } -} \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml b/Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml deleted file mode 100644 index 69423259b..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml.cs b/Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml.cs deleted file mode 100644 index 64bc41304..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/MainPage.xaml.cs +++ /dev/null @@ -1,128 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using System.Linq; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Shapes; -using Microsoft.Phone.Controls; -using ZXing.Mobile; - -namespace ZxingSharp.WindowsPhone.Sample -{ - public partial class MainPage : PhoneApplicationPage - { - UIElement customOverlayElement = null; - MobileBarcodeScanner scanner; - - // Constructor - public MainPage() - { - InitializeComponent(); - - //Create a new instance of our scanner - scanner = new MobileBarcodeScanner(this.Dispatcher); - scanner.Dispatcher = this.Dispatcher; - } - - private void buttonScanDefault_Click(object sender, RoutedEventArgs e) - { - //Tell our scanner to use the default overlay - scanner.UseCustomOverlay = false; - //We can customize the top and bottom text of our default overlay - scanner.TopText = "Hold camera up to barcode"; - scanner.BottomText = "Camera will automatically scan barcode\r\n\r\nPress the 'Back' button to Cancel"; - - //Start scanning - scanner.Scan().ContinueWith(t => - { - if (t.Result != null) - HandleScanResult(t.Result); - }); - } - - private void buttonScanContinuously_Click(object sender, RoutedEventArgs e) - { - //Tell our scanner to use the default overlay - scanner.UseCustomOverlay = false; - //We can customize the top and bottom text of our default overlay - scanner.TopText = "Hold camera up to barcode"; - scanner.BottomText = "Camera will automatically scan barcode\r\n\r\nPress the 'Back' button to Cancel"; - - //Start scanning - scanner.ScanContinuously(result => - { - var msg = "Found Barcode: " + result.Text; - - this.Dispatcher.BeginInvoke(() => - { - MessageBox.Show(msg); - }); - }); - } - - private void buttonScanCustom_Click(object sender, RoutedEventArgs e) - { - //Get our UIElement from the MainPage.xaml (this) file - // to use as our custom overlay - if (customOverlayElement == null) - { - customOverlayElement = this.customOverlay.Children[0]; - this.customOverlay.Children.RemoveAt(0); - } - - //Wireup our buttons from the custom overlay - this.buttonCancel.Click += (s, e2) => - { - scanner.Cancel(); - }; - this.buttonFlash.Click += (s, e2) => - { - scanner.ToggleTorch(); - }; - - //Set our custom overlay and enable it - scanner.CustomOverlay = customOverlayElement; - scanner.UseCustomOverlay = true; - - //Start scanning - scanner.Scan().ContinueWith(t => - { - if (t.Result != null) - HandleScanResult(t.Result); - }); - } - - void HandleScanResult(ZXing.Result result) - { - string msg = ""; - - if (result != null && !string.IsNullOrEmpty(result.Text)) - msg = "Found Barcode: " + result.Text; - else - msg = "Scanning Canceled!"; - - this.Dispatcher.BeginInvoke(() => - { - MessageBox.Show(msg); - - //Go back to the main page - NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); - - //Don't allow to navigate back to the scanner with the back button - NavigationService.RemoveBackEntry(); - }); - } - - private void buttonGenerate_Click(object sender, RoutedEventArgs e) - { - //Go back to the main page - NavigationService.Navigate(new Uri("/ImagePage.xaml", UriKind.Relative)); - } - } -} \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/Properties/AppManifest.xml b/Samples/WindowsPhone/Sample.WindowsPhone/Properties/AppManifest.xml deleted file mode 100644 index 6712a1178..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/Properties/AppManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/Properties/WMAppManifest.xml b/Samples/WindowsPhone/Sample.WindowsPhone/Properties/WMAppManifest.xml deleted file mode 100644 index ddad79a80..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/Properties/WMAppManifest.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - ApplicationIcon.png - - - - - - - - - - - - - - - - - - - - - - - - - Background.png - 0 - Background.png - ZxingSharp.WindowsPhone.Sample - - - - - false - - - - - - - - - - \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/Sample.WindowsPhone.csproj b/Samples/WindowsPhone/Sample.WindowsPhone/Sample.WindowsPhone.csproj deleted file mode 100644 index 2f3f6f98f..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/Sample.WindowsPhone.csproj +++ /dev/null @@ -1,175 +0,0 @@ - - - - Debug - AnyCPU - {BC6808C6-5CEF-4D29-A23B-D2155334243D} - {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - ZxingSharp.WindowsPhone.Sample - ZxingSharp.WindowsPhone.Sample - v8.0 - - - - - WindowsPhone - true - - - true - true - WindowsPhone8.Sample_$(Configuration)_$(Platform).xap - Properties\AppManifest.xml - ZxingSharp.WindowsPhone.Sample.App - true - true - 11.0 - - - true - full - false - Bin\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - false - - - pdbonly - true - Bin\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - false - - - true - Bin\x86\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - full - - - prompt - MinimumRecommendedRules.ruleset - false - - - Bin\x86\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - pdbonly - - - prompt - MinimumRecommendedRules.ruleset - - - true - Bin\ARM\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - full - - - prompt - MinimumRecommendedRules.ruleset - false - - - Bin\ARM\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - pdbonly - - - prompt - MinimumRecommendedRules.ruleset - - - - App.xaml - - - ImagePage.xaml - - - MainPage.xaml - - - - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - Designer - MSBuild:Compile - - - - - - - Designer - - - - - PreserveNewest - - - PreserveNewest - - - - - - {7528dd0a-1781-47f4-adbf-eeddb011f6bb} - ZXing.Net.Mobile.Core - - - {c9efc2f6-ac4c-446c-8fbf-91824b00431d} - ZXing.Net.Mobile.WindowsPhone - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - ..\packages\WriteableBitmapEx.1.5.0.0\lib\WindowsPhone8\WriteableBitmapExWinPhone.dll - True - - - ..\packages\WriteableBitmapEx.1.5.0.0\lib\WindowsPhone8\WriteableBitmapExWinPhoneXnaDependant.dll - True - - - - - - - \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/SplashScreenImage.jpg b/Samples/WindowsPhone/Sample.WindowsPhone/SplashScreenImage.jpg deleted file mode 100644 index 353b1927b9d397aac7f23098e427739615db19fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9417 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 UfQSJR10n`Q4E%c;KnlnH2jCM6ivR!s diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/packages.config b/Samples/WindowsPhone/Sample.WindowsPhone/packages.config deleted file mode 100644 index 8bb6466fa..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal.sln b/Samples/WindowsUniversal/Sample.WindowsUniversal.sln deleted file mode 100644 index b0058060e..000000000 --- a/Samples/WindowsUniversal/Sample.WindowsUniversal.sln +++ /dev/null @@ -1,100 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26228.9 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "..\..\Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "..\..\Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsUniversal", "..\..\Source\ZXing.Net.Mobile.WindowsUniversal\ZXing.Net.Mobile.WindowsUniversal.csproj", "{1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.WindowsUniversal", "Sample.WindowsUniversal\Sample.WindowsUniversal.csproj", "{67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|ARM.ActiveCfg = Debug|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|ARM.Build.0 = Debug|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x64.ActiveCfg = Debug|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x64.Build.0 = Debug|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x86.ActiveCfg = Debug|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x86.Build.0 = Debug|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|Any CPU.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x86.Build.0 = Release|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|Any CPU.ActiveCfg = Debug|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|Any CPU.Build.0 = Debug|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|Any CPU.Deploy.0 = Debug|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|ARM.ActiveCfg = Debug|ARM - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|ARM.Build.0 = Debug|ARM - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|ARM.Deploy.0 = Debug|ARM - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|x64.ActiveCfg = Debug|x64 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|x64.Build.0 = Debug|x64 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|x64.Deploy.0 = Debug|x64 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|x86.ActiveCfg = Debug|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|x86.Build.0 = Debug|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Debug|x86.Deploy.0 = Debug|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|Any CPU.ActiveCfg = Release|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|ARM.ActiveCfg = Release|ARM - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|ARM.Build.0 = Release|ARM - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|ARM.Deploy.0 = Release|ARM - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|x64.ActiveCfg = Release|x64 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|x64.Build.0 = Release|x64 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|x64.Deploy.0 = Release|x64 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|x86.ActiveCfg = Release|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|x86.Build.0 = Release|x86 - {67ADB9A5-9F5E-4D4A-9B31-9BEFB91EE5F1}.Release|x86.Deploy.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/ApplicationInsights.config b/Samples/WindowsUniversal/Sample.WindowsUniversal/ApplicationInsights.config deleted file mode 100644 index cb2a232da..000000000 --- a/Samples/WindowsUniversal/Sample.WindowsUniversal/ApplicationInsights.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Samples/WindowsUniversal/Sample.WindowsUniversal/project.json b/Samples/WindowsUniversal/Sample.WindowsUniversal/project.json deleted file mode 100644 index d6a2d50f4..000000000 --- a/Samples/WindowsUniversal/Sample.WindowsUniversal/project.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "dependencies": { - "Microsoft.ApplicationInsights": "2.3.0", - "Microsoft.ApplicationInsights.PersistenceChannel": "1.2.3", - "Microsoft.ApplicationInsights.WindowsApps": "1.1.1", - "Microsoft.NETCore.UniversalWindowsPlatform": "5.3.3" - }, - "frameworks": { - "uap10.0": {} - }, - "runtimes": { - "win10-arm": {}, - "win10-arm-aot": {}, - "win10-x86": {}, - "win10-x86-aot": {}, - "win10-x64": {}, - "win10-x64-aot": {} - } -} \ No newline at end of file diff --git a/Samples/iOS/Sample.iOS.sln b/Samples/iOS/Sample.iOS.sln deleted file mode 100644 index cce3f9301..000000000 --- a/Samples/iOS/Sample.iOS.sln +++ /dev/null @@ -1,129 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26228.9 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.iOS", "Sample.iOS\Sample.iOS.csproj", "{D119965B-BA8F-40D7-86B4-E9654E1014E2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "..\..\Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "..\..\Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.iOS", "..\..\Source\ZXing.Net.Mobile.iOS\ZXing.Net.Mobile.iOS.csproj", "{6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Ad-Hoc|Any CPU = Ad-Hoc|Any CPU - Ad-Hoc|iPhone = Ad-Hoc|iPhone - Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator - AppStore|Any CPU = AppStore|Any CPU - AppStore|iPhone = AppStore|iPhone - AppStore|iPhoneSimulator = AppStore|iPhoneSimulator - Debug|Any CPU = Debug|Any CPU - Debug|iPhone = Debug|iPhone - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Release|Any CPU = Release|Any CPU - Release|iPhone = Release|iPhone - Release|iPhoneSimulator = Release|iPhoneSimulator - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|Any CPU.Build.0 = Ad-Hoc|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|Any CPU.Build.0 = AppStore|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhone.ActiveCfg = AppStore|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhone.Build.0 = AppStore|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhone.ActiveCfg = Debug|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhone.Build.0 = Debug|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|Any CPU.ActiveCfg = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|Any CPU.Build.0 = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhone.ActiveCfg = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhone.Build.0 = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Samples/iOS/Sample.iOS/CustomOverlayView.cs b/Samples/iOS/Sample.iOS/CustomOverlayView.cs deleted file mode 100644 index ca0beedee..000000000 --- a/Samples/iOS/Sample.iOS/CustomOverlayView.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; - -#if __UNIFIED__ -using Foundation; -using CoreFoundation; -using CoreGraphics; -using UIKit; -#else -using MonoTouch.Foundation; -using MonoTouch.CoreFoundation; -using MonoTouch.UIKit; - -using System.Drawing; -using CGRect = global::System.Drawing.RectangleF; -using CGPoint = global::System.Drawing.PointF; -#endif - -namespace Sample.iOS -{ - public class CustomOverlayView : UIView - { - public UIButton ButtonTorch; - public UIButton ButtonCancel; - - public CustomOverlayView () : base() - { - ButtonTorch = UIButton.FromType(UIButtonType.RoundedRect); - ButtonTorch.Frame = new CGRect(this.Frame.Width / 2 + 5, this.Frame.Height - 60, this.Frame.Width / 2 - 10, 34); - ButtonTorch.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleLeftMargin; - ButtonTorch.SetTitle("Torch", UIControlState.Normal); - this.AddSubview(ButtonTorch); - - - ButtonCancel = UIButton.FromType(UIButtonType.RoundedRect); - ButtonCancel.Frame = new CGRect(0, this.Frame.Height - 60, this.Frame.Width / 2 - 10, 34); - ButtonCancel.AutoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleRightMargin; - ButtonCancel.SetTitle("Cancel", UIControlState.Normal); - this.AddSubview(ButtonCancel); - - } - - public override void LayoutSubviews () - { - ButtonTorch.Frame = new CGRect(this.Frame.Width / 2 + 5, this.Frame.Height - 60, this.Frame.Width / 2 - 10, 34); - ButtonCancel.Frame = new CGRect(0, this.Frame.Height - 60, this.Frame.Width / 2 - 10, 34); - } - - } -} - diff --git a/Samples/iOS/Sample.iOS/HomeViewController.cs b/Samples/iOS/Sample.iOS/HomeViewController.cs deleted file mode 100644 index ebb1c6093..000000000 --- a/Samples/iOS/Sample.iOS/HomeViewController.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System; -using MonoTouch.Dialog; - -using Foundation; -using CoreGraphics; -using UIKit; - -using ZXing; -using ZXing.Mobile; -using System.Collections.Generic; - -namespace Sample.iOS -{ - public class HomeViewController : DialogViewController - { - public HomeViewController () : base (UITableViewStyle.Grouped, new RootElement ("ZXing.Net.Mobile"), false) - { - } - - MobileBarcodeScanner scanner; - CustomOverlayView customOverlay; - - public override void ViewDidLoad () - { - //Create a new instance of our scanner - scanner = new MobileBarcodeScanner(this.NavigationController); - - Root = new RootElement ("ZXing.Net.Mobile") { - new Section { - - new StyledStringElement ("Scan with Default View", async () => { - //Tell our scanner to use the default overlay - scanner.UseCustomOverlay = false; - //We can customize the top and bottom text of the default overlay - scanner.TopText = "Hold camera up to barcode to scan"; - scanner.BottomText = "Barcode will automatically scan"; - - //Start scanning - var result = await scanner.Scan (); - - HandleScanResult(result); - }), - - new StyledStringElement ("Scan Continuously", () => { - //Tell our scanner to use the default overlay - scanner.UseCustomOverlay = false; - - //Tell our scanner to use our custom overlay - scanner.UseCustomOverlay = true; - scanner.CustomOverlay = customOverlay; - - - var opt = new MobileBarcodeScanningOptions (); - opt.DelayBetweenContinuousScans = 3000; - - //Start scanning - scanner.ScanContinuously (opt, false, HandleScanResult); - }), - - new StyledStringElement ("Scan with Custom View", async () => { - //Create an instance of our custom overlay - customOverlay = new CustomOverlayView(); - //Wireup the buttons from our custom overlay - customOverlay.ButtonTorch.TouchUpInside += delegate { - scanner.ToggleTorch(); - }; - customOverlay.ButtonCancel.TouchUpInside += delegate { - scanner.Cancel(); - }; - - //Tell our scanner to use our custom overlay - scanner.UseCustomOverlay = true; - scanner.CustomOverlay = customOverlay; - - var result = await scanner.Scan (new MobileBarcodeScanningOptions { AutoRotate = true }); - - HandleScanResult(result); - }), - - new StyledStringElement ("Scan with AVCapture Engine", async () => { - //Tell our scanner to use the default overlay - scanner.UseCustomOverlay = false; - //We can customize the top and bottom text of the default overlay - scanner.TopText = "Hold camera up to barcode to scan"; - scanner.BottomText = "Barcode will automatically scan"; - - //Start scanning - var result = await scanner.Scan (true); - - HandleScanResult (result); - }), - - new StyledStringElement ("Generate Barcode", () => { - NavigationController.PushViewController (new ImageViewController (), true); - }) - } - }; - } - - void HandleScanResult(ZXing.Result result) - { - string msg = ""; - - if (result != null && !string.IsNullOrEmpty(result.Text)) - msg = "Found Barcode: " + result.Text; - else - msg = "Scanning Canceled!"; - - this.InvokeOnMainThread(() => { - var av = new UIAlertView("Barcode Result", msg, null, "OK", null); - av.Show(); - }); - } - - public void UITestBackdoorScan (string param) - { - var expectedFormat = BarcodeFormat.QR_CODE; - Enum.TryParse (param, out expectedFormat); - var opts = new MobileBarcodeScanningOptions { - PossibleFormats = new List { expectedFormat } - }; - - //Create a new instance of our scanner - scanner = new MobileBarcodeScanner (this.NavigationController); - scanner.UseCustomOverlay = false; - - Console.WriteLine ("Scanning " + expectedFormat); - - //Start scanning - scanner.Scan (opts).ContinueWith (t => { - var result = t.Result; - - var format = result?.BarcodeFormat.ToString () ?? string.Empty; - var value = result?.Text ?? string.Empty; - - BeginInvokeOnMainThread (() => { - var av = UIAlertController.Create ("Barcode Result", format + "|" + value, UIAlertControllerStyle.Alert); - av.AddAction (UIAlertAction.Create ("OK", UIAlertActionStyle.Cancel, null)); - PresentViewController (av, true, null); - }); - }); - } - } -} - diff --git a/Samples/iOS/Sample.iOS/ImageViewController.cs b/Samples/iOS/Sample.iOS/ImageViewController.cs deleted file mode 100644 index 8f526374e..000000000 --- a/Samples/iOS/Sample.iOS/ImageViewController.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using ZXing.Mobile; - -#if __UNIFIED__ -using UIKit; -using CoreGraphics; -#else -using MonoTouch.UIKit; -using CGRect = System.Drawing.RectangleF; -#endif - -namespace Sample.iOS -{ - public class ImageViewController : UIViewController - { - public ImageViewController () : base () - { - } - - UIImageView imageBarcode; - - public override void ViewDidLoad () - { - base.ViewDidLoad (); - - NavigationItem.Title = "Generate Barcode"; - View.BackgroundColor = UIColor.White; - - imageBarcode = new UIImageView (new CGRect (20, 80, View.Frame.Width - 40, View.Frame.Height - 120)); - - View.AddSubview (imageBarcode); - - var barcodeWriter = new BarcodeWriter { - Format = ZXing.BarcodeFormat.QR_CODE, - Options = new ZXing.Common.EncodingOptions { - Width = 300, - Height = 300, - Margin = 30 - } - }; - - var barcode = barcodeWriter.Write ("ZXing.Net.Mobile"); - - imageBarcode.Image = barcode; - } - } -} - diff --git a/Source/ZXing.Net b/Source/ZXing.Net deleted file mode 160000 index 14f3f07b7..000000000 --- a/Source/ZXing.Net +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 14f3f07b740b0332ae27508039a801537d8ce9a0 diff --git a/Source/ZXing.Net.Mobile.Android/ActivityLifecycleContextListener.cs b/Source/ZXing.Net.Mobile.Android/ActivityLifecycleContextListener.cs deleted file mode 100644 index aea3a444f..000000000 --- a/Source/ZXing.Net.Mobile.Android/ActivityLifecycleContextListener.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Android.App; -using Android.Content; - -namespace ZXing.Mobile -{ - public class ActivityLifecycleContextListener : Java.Lang.Object, Application.IActivityLifecycleCallbacks - { - public ActivityLifecycleContextListener () - { - } - - Activity currentActivity = null; - - public Context Context { - get { - return currentActivity ?? Application.Context; - } - } - - public void OnActivityCreated (Activity activity, Android.OS.Bundle savedInstanceState) - { - } - - public void OnActivityDestroyed (Activity activity) - { - } - - public void OnActivityPaused (Activity activity) - { - } - - public void OnActivityResumed (Activity activity) - { - currentActivity = activity; - } - - public void OnActivitySaveInstanceState (Activity activity, Android.OS.Bundle outState) - { - } - - public void OnActivityStarted (Activity activity) - { - } - - public void OnActivityStopped (Activity activity) - { - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Android/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.Android/AssemblyInfo.cs deleted file mode 100644 index 44ce54b44..000000000 --- a/Source/ZXing.Net.Mobile.Android/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("ZXing.Net.Mobile.Android")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("redth")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.Android/BitmapRenderer.cs b/Source/ZXing.Net.Mobile.Android/BitmapRenderer.cs deleted file mode 100644 index 9e0af13fc..000000000 --- a/Source/ZXing.Net.Mobile.Android/BitmapRenderer.cs +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2012 ZXing.Net authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -using Android.Graphics; - -using ZXing.Common; -using ZXing.Rendering; - -namespace ZXing.Mobile -{ - /// - /// Renders a to a image - /// - public class BitmapRenderer : IBarcodeRenderer - { - /// - /// Gets or sets the foreground color. - /// - /// The foreground color. - public Color Foreground { get; set; } - - /// - /// Gets or sets the background color. - /// - /// The background color. - public Color Background { get; set; } - - /// - /// Initializes a new instance of the class. - /// - public BitmapRenderer() - { - Foreground = Color.Black; - Background = Color.White; - } - - /// - /// Renders the specified matrix. - /// - /// The matrix. - /// The format. - /// The content. - /// - public Bitmap Render(BitMatrix matrix, BarcodeFormat format, string content) - { - return Render(matrix, format, content, new EncodingOptions()); - } - - /// - /// Renders the specified matrix. - /// - /// The matrix. - /// The format. - /// The content. - /// The options. - /// - public Bitmap Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) - { - var width = matrix.Width; - var height = matrix.Height; - var pixels = new int[width * height]; - var outputIndex = 0; - var fColor = Foreground.ToArgb(); - var bColor = Background.ToArgb(); - - for (var y = 0; y < height; y++) - { - for (var x = 0; x < width; x++) - { - pixels[outputIndex] = matrix[x, y] ? fColor : bColor; - outputIndex++; - } - } - - var bitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); - bitmap.SetPixels(pixels, 0, width, 0, 0, width, height); - return bitmap; - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraAnalyzer.cs b/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraAnalyzer.cs deleted file mode 100644 index 326e145a6..000000000 --- a/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraAnalyzer.cs +++ /dev/null @@ -1,165 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Android.Views; -using ApxLabs.FastAndroidCamera; - -namespace ZXing.Mobile.CameraAccess -{ - public class CameraAnalyzer - { - private readonly CameraController _cameraController; - private readonly CameraEventsListener _cameraEventListener; - private Task _processingTask; - private DateTime _lastPreviewAnalysis = DateTime.UtcNow; - private bool _wasScanned; - IScannerSessionHost _scannerHost; - - public CameraAnalyzer(SurfaceView surfaceView, IScannerSessionHost scannerHost) - { - _scannerHost = scannerHost; - _cameraEventListener = new CameraEventsListener(); - _cameraController = new CameraController(surfaceView, _cameraEventListener, scannerHost); - Torch = new Torch(_cameraController, surfaceView.Context); - } - - public Action BarcodeFound; - - public Torch Torch { get; } - - public bool IsAnalyzing { get; private set; } - - public void PauseAnalysis() - { - IsAnalyzing = false; - } - - public void ResumeAnalysis() - { - IsAnalyzing = true; - } - - public void ShutdownCamera() - { - IsAnalyzing = false; - _cameraEventListener.OnPreviewFrameReady -= HandleOnPreviewFrameReady; - _cameraController.ShutdownCamera(); - } - - public void SetupCamera() - { - _cameraEventListener.OnPreviewFrameReady += HandleOnPreviewFrameReady; - _cameraController.SetupCamera(); - } - - public void AutoFocus() - { - _cameraController.AutoFocus(); - } - - public void AutoFocus(int x, int y) - { - _cameraController.AutoFocus(x, y); - } - - public void RefreshCamera() - { - _cameraController.RefreshCamera(); - } - - private bool CanAnalyzeFrame - { - get - { - if (!IsAnalyzing) - return false; - - //Check and see if we're still processing a previous frame - // todo: check if we can run as many as possible or mby run two analyzers at once (Vision + ZXing) - if (_processingTask != null && !_processingTask.IsCompleted) - return false; - - var elapsedTimeMs = (DateTime.UtcNow - _lastPreviewAnalysis).TotalMilliseconds; - if (elapsedTimeMs < _scannerHost.ScanningOptions.DelayBetweenAnalyzingFrames) - return false; - - // Delay a minimum between scans - if (_wasScanned && elapsedTimeMs < _scannerHost.ScanningOptions.DelayBetweenContinuousScans) - return false; - - return true; - } - } - - private void HandleOnPreviewFrameReady(object sender, FastJavaByteArray fastArray) - { - if (!CanAnalyzeFrame) - return; - - _wasScanned = false; - _lastPreviewAnalysis = DateTime.UtcNow; - - _processingTask = Task.Run(() => - { - try - { - DecodeFrame(fastArray); - } catch (Exception ex) { - Console.WriteLine(ex); - } - }).ContinueWith(task => - { - if (task.IsFaulted) - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "DecodeFrame exception occurs"); - }, TaskContinuationOptions.OnlyOnFaulted); - } - - private void DecodeFrame(FastJavaByteArray fastArray) - { - var cameraParameters = _cameraController.Camera.GetParameters(); - var width = cameraParameters.PreviewSize.Width; - var height = cameraParameters.PreviewSize.Height; - - var barcodeReader = _scannerHost.ScanningOptions.BuildBarcodeReader(); - - var rotate = false; - var newWidth = width; - var newHeight = height; - - // use last value for performance gain - var cDegrees = _cameraController.LastCameraDisplayOrientationDegree; - - if (cDegrees == 90 || cDegrees == 270) - { - rotate = true; - newWidth = height; - newHeight = width; - } - - ZXing.Result result = null; - var start = PerformanceCounter.Start(); - - LuminanceSource fast = new FastJavaByteArrayYUVLuminanceSource(fastArray, width, height, 0, 0, width, height); // _area.Left, _area.Top, _area.Width, _area.Height); - if (rotate) - fast = fast.rotateCounterClockwise(); - - result = barcodeReader.Decode(fast); - - fastArray.Dispose(); - fastArray = null; - - PerformanceCounter.Stop(start, - "Decode Time: {0} ms (width: " + width + ", height: " + height + ", degrees: " + cDegrees + ", rotate: " + - rotate + ")"); - - if (result != null) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Barcode Found"); - - _wasScanned = true; - BarcodeFound?.Invoke(result); - return; - } - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraController.cs b/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraController.cs deleted file mode 100644 index 61f7b8e3b..000000000 --- a/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraController.cs +++ /dev/null @@ -1,435 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Android.Content; -using Android.Graphics; -using Android.Hardware; -using Android.OS; -using Android.Runtime; -using Android.Views; -using ApxLabs.FastAndroidCamera; -using Camera = Android.Hardware.Camera; - -namespace ZXing.Mobile.CameraAccess -{ - public class CameraController - { - private readonly Context _context; - private readonly ISurfaceHolder _holder; - private readonly SurfaceView _surfaceView; - private readonly CameraEventsListener _cameraEventListener; - private int _cameraId; - IScannerSessionHost _scannerHost; - - public CameraController(SurfaceView surfaceView, CameraEventsListener cameraEventListener, IScannerSessionHost scannerHost) - { - _context = surfaceView.Context; - _holder = surfaceView.Holder; - _surfaceView = surfaceView; - _cameraEventListener = cameraEventListener; - _scannerHost = scannerHost; - } - - public Camera Camera { get; private set; } - - public int LastCameraDisplayOrientationDegree { get; private set; } - - public void RefreshCamera() - { - if (_holder == null) return; - - ApplyCameraSettings(); - - try - { - Camera.SetPreviewDisplay(_holder); - Camera.StartPreview(); - } - catch (Exception ex) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, ex.ToString()); - } - } - - public void SetupCamera() - { - if (Camera != null) return; - - ZXing.Net.Mobile.Android.PermissionsHandler.CheckCameraPermissions(_context); - - var perf = PerformanceCounter.Start(); - OpenCamera(); - PerformanceCounter.Stop(perf, "Setup Camera took {0}ms"); - - if (Camera == null) return; - - perf = PerformanceCounter.Start(); - ApplyCameraSettings(); - - try - { - Camera.SetPreviewDisplay(_holder); - - - var previewParameters = Camera.GetParameters(); - var previewSize = previewParameters.PreviewSize; - var bitsPerPixel = ImageFormat.GetBitsPerPixel(previewParameters.PreviewFormat); - - - int bufferSize = (previewSize.Width * previewSize.Height * bitsPerPixel) / 8; - const int NUM_PREVIEW_BUFFERS = 5; - for (uint i = 0; i < NUM_PREVIEW_BUFFERS; ++i) - { - using (var buffer = new FastJavaByteArray(bufferSize)) - Camera.AddCallbackBuffer(buffer); - } - - - - Camera.StartPreview(); - - Camera.SetNonMarshalingPreviewCallback(_cameraEventListener); - } - catch (Exception ex) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, ex.ToString()); - return; - } - finally - { - PerformanceCounter.Stop(perf, "Setup Camera Parameters took {0}ms"); - } - - // Docs suggest if Auto or Macro modes, we should invoke AutoFocus at least once - var currentFocusMode = Camera.GetParameters().FocusMode; - if (currentFocusMode == Camera.Parameters.FocusModeAuto - || currentFocusMode == Camera.Parameters.FocusModeMacro) - AutoFocus(); - } - - public void AutoFocus() - { - AutoFocus(0, 0, false); - } - - public void AutoFocus(int x, int y) - { - // The bounds for focus areas are actually -1000 to 1000 - // So we need to translate the touch coordinates to this scale - var focusX = x / _surfaceView.Width * 2000 - 1000; - var focusY = y / _surfaceView.Height * 2000 - 1000; - - // Call the autofocus with our coords - AutoFocus(focusX, focusY, true); - } - - public void ShutdownCamera() - { - if (Camera == null) return; - - // camera release logic takes about 0.005 sec so there is no need in async releasing - var perf = PerformanceCounter.Start(); - try - { - try - { - Camera.StopPreview(); - Camera.SetNonMarshalingPreviewCallback(null); - - //Camera.SetPreviewCallback(null); - - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, $"Calling SetPreviewDisplay: null"); - Camera.SetPreviewDisplay(null); - } - catch (Exception ex) - { - Android.Util.Log.Error(MobileBarcodeScanner.TAG, ex.ToString()); - } - Camera.Release(); - Camera = null; - } - catch (Exception e) - { - Android.Util.Log.Error(MobileBarcodeScanner.TAG, e.ToString()); - } - - PerformanceCounter.Stop(perf, "Shutdown camera took {0}ms"); - } - - private void OpenCamera() - { - try - { - var version = Build.VERSION.SdkInt; - - if (version >= BuildVersionCodes.Gingerbread) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Checking Number of cameras..."); - - var numCameras = Camera.NumberOfCameras; - var camInfo = new Camera.CameraInfo(); - var found = false; - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Found " + numCameras + " cameras..."); - - var whichCamera = CameraFacing.Back; - - if (_scannerHost.ScanningOptions.UseFrontCameraIfAvailable.HasValue && - _scannerHost.ScanningOptions.UseFrontCameraIfAvailable.Value) - whichCamera = CameraFacing.Front; - - for (var i = 0; i < numCameras; i++) - { - Camera.GetCameraInfo(i, camInfo); - if (camInfo.Facing == whichCamera) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, - "Found " + whichCamera + " Camera, opening..."); - Camera = Camera.Open(i); - _cameraId = i; - found = true; - break; - } - } - - if (!found) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, - "Finding " + whichCamera + " camera failed, opening camera 0..."); - Camera = Camera.Open(0); - _cameraId = 0; - } - } - else - { - Camera = Camera.Open(); - } - - //if (Camera != null) - // Camera.SetPreviewCallback(_cameraEventListener); - //else - // MobileBarcodeScanner.LogWarn(MobileBarcodeScanner.TAG, "Camera is null :("); - } - catch (Exception ex) - { - ShutdownCamera(); - MobileBarcodeScanner.LogError("Setup Error: {0}", ex); - } - } - - private void ApplyCameraSettings() - { - if (Camera == null) - { - OpenCamera(); - } - - // do nothing if something wrong with camera - if (Camera == null) return; - - var parameters = Camera.GetParameters(); - parameters.PreviewFormat = ImageFormatType.Nv21; - - var supportedFocusModes = parameters.SupportedFocusModes; - if (_scannerHost.ScanningOptions.DisableAutofocus) - parameters.FocusMode = Camera.Parameters.FocusModeFixed; - else if (Build.VERSION.SdkInt >= BuildVersionCodes.IceCreamSandwich && - supportedFocusModes.Contains(Camera.Parameters.FocusModeContinuousPicture)) - parameters.FocusMode = Camera.Parameters.FocusModeContinuousPicture; - else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeContinuousVideo)) - parameters.FocusMode = Camera.Parameters.FocusModeContinuousVideo; - else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeAuto)) - parameters.FocusMode = Camera.Parameters.FocusModeAuto; - else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeFixed)) - parameters.FocusMode = Camera.Parameters.FocusModeFixed; - - var selectedFps = parameters.SupportedPreviewFpsRange.FirstOrDefault(); - if (selectedFps != null) - { - // This will make sure we select a range with the lowest minimum FPS - // and maximum FPS which still has the lowest minimum - // This should help maximize performance / support for hardware - foreach (var fpsRange in parameters.SupportedPreviewFpsRange) - { - if (fpsRange[0] <= selectedFps[0] && fpsRange[1] > selectedFps[1]) - selectedFps = fpsRange; - } - parameters.SetPreviewFpsRange(selectedFps[0], selectedFps[1]); - } - - CameraResolution resolution = null; - var supportedPreviewSizes = parameters.SupportedPreviewSizes; - if (supportedPreviewSizes != null) - { - var availableResolutions = supportedPreviewSizes.Select(sps => new CameraResolution - { - Width = sps.Width, - Height = sps.Height - }); - - // Try and get a desired resolution from the options selector - resolution = _scannerHost.ScanningOptions.GetResolution(availableResolutions.ToList()); - - // If the user did not specify a resolution, let's try and find a suitable one - if (resolution == null) - { - foreach (var sps in supportedPreviewSizes) - { - if (sps.Width >= 640 && sps.Width <= 1000 && sps.Height >= 360 && sps.Height <= 1000) - { - resolution = new CameraResolution - { - Width = sps.Width, - Height = sps.Height - }; - break; - } - } - } - } - - // Google Glass requires this fix to display the camera output correctly - if (Build.Model.Contains("Glass")) - { - resolution = new CameraResolution - { - Width = 640, - Height = 360 - }; - // Glass requires 30fps - parameters.SetPreviewFpsRange(30000, 30000); - } - - // Hopefully a resolution was selected at some point - if (resolution != null) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, - "Selected Resolution: " + resolution.Width + "x" + resolution.Height); - parameters.SetPreviewSize(resolution.Width, resolution.Height); - } - - Camera.SetParameters(parameters); - - SetCameraDisplayOrientation(); - } - - private void AutoFocus(int x, int y, bool useCoordinates) - { - if (Camera == null) return; - - if (_scannerHost.ScanningOptions.DisableAutofocus) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus Disabled"); - return; - } - - var cameraParams = Camera.GetParameters(); - - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus Requested"); - - // Cancel any previous requests - Camera.CancelAutoFocus(); - - try - { - // If we want to use coordinates - // Also only if our camera supports Auto focus mode - // Since FocusAreas only really work with FocusModeAuto set - if (useCoordinates - && cameraParams.SupportedFocusModes.Contains(Camera.Parameters.FocusModeAuto)) - { - // Let's give the touched area a 20 x 20 minimum size rect to focus on - // So we'll offset -10 from the center of the touch and then - // make a rect of 20 to give an area to focus on based on the center of the touch - x = x - 10; - y = y - 10; - - // Ensure we don't go over the -1000 to 1000 limit of focus area - if (x >= 1000) - x = 980; - if (x < -1000) - x = -1000; - if (y >= 1000) - y = 980; - if (y < -1000) - y = -1000; - - // Explicitly set FocusModeAuto since Focus areas only work with this setting - cameraParams.FocusMode = Camera.Parameters.FocusModeAuto; - // Add our focus area - cameraParams.FocusAreas = new List - { - new Camera.Area(new Rect(x, y, x + 20, y + 20), 1000) - }; - Camera.SetParameters(cameraParams); - } - - // Finally autofocus (weather we used focus areas or not) - Camera.AutoFocus(_cameraEventListener); - } - catch (Exception ex) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus Failed: {0}", ex); - } - } - - private void SetCameraDisplayOrientation() - { - var degrees = GetCameraDisplayOrientation(); - LastCameraDisplayOrientationDegree = degrees; - - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Changing Camera Orientation to: " + degrees); - - try - { - Camera.SetDisplayOrientation(degrees); - } - catch (Exception ex) - { - Android.Util.Log.Error(MobileBarcodeScanner.TAG, ex.ToString()); - } - } - - private int GetCameraDisplayOrientation() - { - int degrees; - var windowManager = _context.GetSystemService(Context.WindowService).JavaCast(); - var display = windowManager.DefaultDisplay; - var rotation = display.Rotation; - - switch (rotation) - { - case SurfaceOrientation.Rotation0: - degrees = 0; - break; - case SurfaceOrientation.Rotation90: - degrees = 90; - break; - case SurfaceOrientation.Rotation180: - degrees = 180; - break; - case SurfaceOrientation.Rotation270: - degrees = 270; - break; - default: - throw new ArgumentOutOfRangeException(); - } - - var info = new Camera.CameraInfo(); - Camera.GetCameraInfo(_cameraId, info); - - int correctedDegrees; - if (info.Facing == CameraFacing.Front) - { - correctedDegrees = (info.Orientation + degrees)%360; - correctedDegrees = (360 - correctedDegrees)%360; // compensate the mirror - } - else - { - // back-facing - correctedDegrees = (info.Orientation - degrees + 360)%360; - } - - return correctedDegrees; - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraEventsListener.cs b/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraEventsListener.cs deleted file mode 100644 index fcf0c224f..000000000 --- a/Source/ZXing.Net.Mobile.Android/CameraAccess/CameraEventsListener.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using Android.Hardware; -using ApxLabs.FastAndroidCamera; - -namespace ZXing.Mobile.CameraAccess -{ - public class CameraEventsListener : Java.Lang.Object, INonMarshalingPreviewCallback, Camera.IAutoFocusCallback - { - public event EventHandler OnPreviewFrameReady; - - //public void OnPreviewFrame(byte[] data, Camera camera) - //{ - // OnPreviewFrameReady?.Invoke(this, data); - //} - - public void OnPreviewFrame(IntPtr data, Camera camera) - { - using (var fastArray = new FastJavaByteArray(data)) - { - OnPreviewFrameReady?.Invoke(this, fastArray); - - camera.AddCallbackBuffer(fastArray); - } - } - - public void OnAutoFocus(bool success, Camera camera) - { - Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus {0}", success ? "Succeeded" : "Failed"); - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/CameraAccess/Torch.cs b/Source/ZXing.Net.Mobile.Android/CameraAccess/Torch.cs deleted file mode 100644 index 2ec8c9c5d..000000000 --- a/Source/ZXing.Net.Mobile.Android/CameraAccess/Torch.cs +++ /dev/null @@ -1,103 +0,0 @@ -using Android.Content; -using Android.Content.PM; -using Android.Hardware; - -namespace ZXing.Mobile.CameraAccess -{ - public class Torch - { - private readonly CameraController _cameraController; - private readonly Context _context; - private bool? _hasTorch; - - public Torch(CameraController cameraController, Context context) - { - _cameraController = cameraController; - _context = context; - } - - public bool IsSupported - { - get - { - if (_hasTorch.HasValue) - return _hasTorch.Value; - - if (!_context.PackageManager.HasSystemFeature(PackageManager.FeatureCameraFlash)) - { - Android.Util.Log.Info(MobileBarcodeScanner.TAG, "Flash not supported on this device"); - return false; - } - - if (_cameraController.Camera == null) - { - Android.Util.Log.Info(MobileBarcodeScanner.TAG, "Run camera first"); - return false; - } - - var p = _cameraController.Camera.GetParameters(); - var supportedFlashModes = p.SupportedFlashModes; - - if ((supportedFlashModes != null) - && (supportedFlashModes.Contains(Camera.Parameters.FlashModeTorch) - || supportedFlashModes.Contains(Camera.Parameters.FlashModeOn))) - _hasTorch = ZXing.Net.Mobile.Android.PermissionsHandler.CheckTorchPermissions(_context, false); - - return _hasTorch != null && _hasTorch.Value; - } - } - - public bool IsEnabled { get; private set; } - - public void TurnOn() - { - Enable(true); - } - - public void TurnOff() - { - Enable(false); - } - - public void Toggle() - { - Enable(!IsEnabled); - } - - private void Enable(bool state) - { - if (!IsSupported || IsEnabled == state) - return; - - if (_cameraController.Camera == null) - { - Android.Util.Log.Info(MobileBarcodeScanner.TAG, "NULL Camera, cannot toggle torch"); - return; - } - - var parameters = _cameraController.Camera.GetParameters(); - var supportedFlashModes = parameters.SupportedFlashModes; - - var flashMode = string.Empty; - if (state) - { - if (supportedFlashModes.Contains(Camera.Parameters.FlashModeTorch)) - flashMode = Camera.Parameters.FlashModeTorch; - else if (supportedFlashModes.Contains(Camera.Parameters.FlashModeOn)) - flashMode = Camera.Parameters.FlashModeOn; - } - else - { - if (supportedFlashModes != null && supportedFlashModes.Contains(Camera.Parameters.FlashModeOff)) - flashMode = Camera.Parameters.FlashModeOff; - } - - if (!string.IsNullOrEmpty(flashMode)) - { - parameters.FlashMode = flashMode; - _cameraController.Camera.SetParameters(parameters); - IsEnabled = state; - } - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/FastJavaArrayEx.cs b/Source/ZXing.Net.Mobile.Android/FastJavaArrayEx.cs deleted file mode 100644 index 504663da2..000000000 --- a/Source/ZXing.Net.Mobile.Android/FastJavaArrayEx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using ApxLabs.FastAndroidCamera; - -namespace ZXing.Mobile -{ - public static class FastJavaArrayEx - { - public static void BlockCopyTo(this FastJavaByteArray self, int sourceIndex, byte[] array, int arrayIndex, int length) - { - unsafe - { - Marshal.Copy(new IntPtr(self.Raw + sourceIndex), array, arrayIndex, Math.Min(length, Math.Min(self.Count, array.Length - arrayIndex))); - } - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/FastJavaByteArrayYUVLuminanceSource.cs b/Source/ZXing.Net.Mobile.Android/FastJavaByteArrayYUVLuminanceSource.cs deleted file mode 100644 index d802959b2..000000000 --- a/Source/ZXing.Net.Mobile.Android/FastJavaByteArrayYUVLuminanceSource.cs +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright 2009 ZXing authors - * Modifications copyright 2016 kasper@byolimit.com - * - * 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. - */ - -using ApxLabs.FastAndroidCamera; - -using System; - -namespace ZXing.Mobile -{ - /// - /// This object extends LuminanceSource around an array of YUV data returned from the camera driver, - /// with the option to crop to a rectangle within the full data. This can be used to exclude - /// superfluous pixels around the perimeter and speed up decoding. - /// It works for any pixel format where the Y channel is planar and appears first, including - /// YCbCr_420_SP and YCbCr_422_SP. - /// - /// - /// Builds upon PlanarYUVLuminanceSource from ZXing.NET, which is a .Net port of ZXing. The original code - /// was authored by - /// @author dswitkin@google.com (Daniel Switkin) - /// - public sealed class FastJavaByteArrayYUVLuminanceSource : BaseLuminanceSource - { - private readonly FastJavaByteArray _yuv; - private readonly int _dataWidth; - private readonly int _dataHeight; - private readonly int _left; - private readonly int _top; - - /// - /// Initializes a new instance of the class. - /// - /// The yuv data. - /// Width of the data. - /// Height of the data. - /// The left. - /// The top. - /// The width. - /// The height. - /// if set to true [reverse horiz]. - public FastJavaByteArrayYUVLuminanceSource(FastJavaByteArray yuv, - int dataWidth, - int dataHeight, - int left, - int top, - int width, - int height) - : base(width, height) - { - if (left < 0) - throw new ArgumentException("Negative value", nameof(left)); - - if (top < 0) - throw new ArgumentException("Negative value", nameof(top)); - - if (width < 0) - throw new ArgumentException("Negative value", nameof(width)); - - if (height < 0) - throw new ArgumentException("Negative value", nameof(height)); - - if (left + width > dataWidth || top + height > dataHeight) - { - throw new ArgumentException("Crop rectangle does not fit within image data."); - } - - _yuv = yuv; - _dataWidth = dataWidth; - _dataHeight = dataHeight; - _left = left; - _top = top; - } - - /// - /// Fetches one row of luminance data from the underlying platform's bitmap. Values range from - /// 0 (black) to 255 (white). Because Java does not have an unsigned byte type, callers will have - /// to bitwise and with 0xff for each value. It is preferable for implementations of this method - /// to only fetch this row rather than the whole image, since no 2D Readers may be installed and - /// getMatrix() may never be called. - /// - /// The row to fetch, 0 <= y < Height. - /// An optional preallocated array. If null or too small, it will be ignored. - /// Always use the returned object, and ignore the .length of the array. - /// - /// An array containing the luminance data of the requested row. - /// - override public byte[] getRow(int y, byte[] row) - { - if (y < 0 || y >= Height) - throw new ArgumentException("Requested row is outside the image: " + y, nameof(y)); - - int width = Width; - if (row == null || row.Length < width) - row = new byte[width]; // ensure we have room for the row - - int offset = (y + _top) * _dataWidth + _left; - _yuv.BlockCopyTo(offset, row, 0, width); - return row; - } - - override public byte[] Matrix - { - get - { - int width = Width; - int height = Height; - - int area = width * height; - byte[] matrix = new byte[area]; - int inputOffset = _top * _dataWidth + _left; - - // If the width matches the full width of the underlying data, perform a single copy. - if (width == _dataWidth) - { - _yuv.BlockCopyTo(inputOffset, matrix, 0, area); - return matrix; - } - - // Otherwise copy one cropped row at a time. - for (int y = 0; y < height; y++) - { - int outputOffset = y * width; - _yuv.BlockCopyTo(inputOffset, matrix, outputOffset, width); - inputOffset += _dataWidth; - } - return matrix; - } - } - - /// Whether this subclass supports cropping. - override public bool CropSupported - { - get { return true; } - } - - /// - /// Returns a new object with cropped image data. Implementations may keep a reference to the - /// original data rather than a copy. Only callable if CropSupported is true. - /// - /// The left coordinate, 0 <= left < Width. - /// The top coordinate, 0 <= top <= Height. - /// The width of the rectangle to crop. - /// The height of the rectangle to crop. - /// - /// A cropped version of this object. - /// - override public LuminanceSource crop(int left, int top, int width, int height) - { - return new FastJavaByteArrayYUVLuminanceSource(_yuv, - _dataWidth, - _dataHeight, - _left + left, - _top + top, - width, - height); - } - - protected override LuminanceSource CreateLuminanceSource(byte[] newLuminances, int width, int height) - { - // Called when rotating. - // todo: This partially defeats the purpose as we traffic in byte[] luminances - return new PlanarYUVLuminanceSource(newLuminances, width, height, 0, 0, width, height, false); - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/MobileBarcodeScanner.cs b/Source/ZXing.Net.Mobile.Android/MobileBarcodeScanner.cs deleted file mode 100644 index c1771b9d7..000000000 --- a/Source/ZXing.Net.Mobile.Android/MobileBarcodeScanner.cs +++ /dev/null @@ -1,180 +0,0 @@ -using System; -using System.Threading.Tasks; -using Android.Content; -using ZXing; -using Android.OS; - -namespace ZXing.Mobile -{ - - public class MobileBarcodeScanner : MobileBarcodeScannerBase - { - public const string TAG = "ZXing.Net.Mobile"; - - static ActivityLifecycleContextListener lifecycleListener; - - public static void Initialize (Android.App.Application app) - { - var version = Build.VERSION.SdkInt; - - if (version >= BuildVersionCodes.IceCreamSandwich) { - lifecycleListener = new ActivityLifecycleContextListener (); - app.RegisterActivityLifecycleCallbacks (lifecycleListener); - } - } - - public static void Uninitialize (Android.App.Application app) - { - var version = Build.VERSION.SdkInt; - - if (version >= BuildVersionCodes.IceCreamSandwich) - app.UnregisterActivityLifecycleCallbacks (lifecycleListener); - } - - public Android.Views.View CustomOverlay { get; set; } - //public int CaptureSound { get;set; } - - bool torch = false; - - Context GetContext (Context context) - { - if (context != null) - return context; - - var version = Build.VERSION.SdkInt; - - if (version >= BuildVersionCodes.IceCreamSandwich) - return lifecycleListener.Context; - else - return Android.App.Application.Context; - } - - public override void ScanContinuously (MobileBarcodeScanningOptions options, Action scanHandler) - { - ScanContinuously (null, options, scanHandler); - } - - public void ScanContinuously (Context context, MobileBarcodeScanningOptions options, Action scanHandler) - { - var ctx = GetContext (context); - var scanIntent = new Intent(ctx, typeof(ZxingActivity)); - - scanIntent.AddFlags(ActivityFlags.NewTask); - - ZxingActivity.UseCustomOverlayView = this.UseCustomOverlay; - ZxingActivity.CustomOverlayView = this.CustomOverlay; - ZxingActivity.ScanningOptions = options; - ZxingActivity.ScanContinuously = true; - ZxingActivity.TopText = TopText; - ZxingActivity.BottomText = BottomText; - - ZxingActivity.ScanCompletedHandler = (Result result) => - { - if (scanHandler != null) - scanHandler (result); - }; - - ctx.StartActivity(scanIntent); - } - - public override Task Scan (MobileBarcodeScanningOptions options) - { - return Scan (null, options); - } - public Task Scan (Context context, MobileBarcodeScanningOptions options) - { - var ctx = GetContext (context); - - var task = Task.Factory.StartNew(() => { - - var waitScanResetEvent = new System.Threading.ManualResetEvent(false); - - var scanIntent = new Intent(ctx, typeof(ZxingActivity)); - - scanIntent.AddFlags(ActivityFlags.NewTask); - - ZxingActivity.UseCustomOverlayView = this.UseCustomOverlay; - ZxingActivity.CustomOverlayView = this.CustomOverlay; - ZxingActivity.ScanningOptions = options; - ZxingActivity.ScanContinuously = false; - ZxingActivity.TopText = TopText; - ZxingActivity.BottomText = BottomText; - - Result scanResult = null; - - ZxingActivity.CanceledHandler = () => - { - waitScanResetEvent.Set(); - }; - - ZxingActivity.ScanCompletedHandler = (Result result) => - { - scanResult = result; - waitScanResetEvent.Set(); - }; - - ctx.StartActivity (scanIntent); - - waitScanResetEvent.WaitOne(); - - return scanResult; - }); - - return task; - } - - public override void Cancel() - { - ZxingActivity.RequestCancel(); - } - - public override void AutoFocus () - { - ZxingActivity.RequestAutoFocus(); - } - - public override void Torch (bool on) - { - torch = on; - ZxingActivity.RequestTorch(on); - } - - public override void ToggleTorch () - { - Torch (!torch); - } - - public override void PauseAnalysis () - { - ZxingActivity.RequestPauseAnalysis (); - } - - public override void ResumeAnalysis () - { - ZxingActivity.RequestResumeAnalysis (); - } - - public override bool IsTorchOn { - get { - return torch; - } - } - - internal static void LogDebug (string format, params object [] args) - { - Android.Util.Log.Debug ("ZXING", format, args); - } - internal static void LogError (string format, params object [] args) - { - Android.Util.Log.Error ("ZXING", format, args); - } - internal static void LogInfo (string format, params object [] args) - { - Android.Util.Log.Info ("ZXING", format, args); - } - internal static void LogWarn (string format, params object [] args) - { - Android.Util.Log.Warn ("ZXING", format, args); - } - } -} diff --git a/Source/ZXing.Net.Mobile.Android/Permissions.cs b/Source/ZXing.Net.Mobile.Android/Permissions.cs deleted file mode 100644 index ec14de0a7..000000000 --- a/Source/ZXing.Net.Mobile.Android/Permissions.cs +++ /dev/null @@ -1,3 +0,0 @@ -using Android.App; - -[assembly: UsesPermission (Android.Manifest.Permission.Camera)] \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/PermissionsHandler.cs b/Source/ZXing.Net.Mobile.Android/PermissionsHandler.cs deleted file mode 100644 index 7443ddbd2..000000000 --- a/Source/ZXing.Net.Mobile.Android/PermissionsHandler.cs +++ /dev/null @@ -1,164 +0,0 @@ -using System; -using System.Collections.Generic; -using ZXing.Mobile; -using System.Linq; -using Android.App; -using System.Threading.Tasks; -using Android.Content.PM; -using Android.Content; -using Android.Support.V4.Content; -using Android.Support.V4.App; - -namespace ZXing.Net.Mobile.Android -{ - public static class PermissionsHandler - { - static TaskCompletionSource requestCompletion = null; - - public static Task PermissionRequestTask - { - get - { - return requestCompletion?.Task ?? Task.CompletedTask; - } - } - - public static bool NeedsPermissionRequest(Context context) - { - var permissionsToRequest = new List(); - - // Check and request any permissions - foreach (var permission in ZxingActivity.RequiredPermissions) - { - if (IsPermissionInManifest(context, permission)) - { - if (!IsPermissionGranted(context, permission)) - return true; - } - } - - return false; - } - - public static Task RequestPermissionsAsync (Activity activity) - { - if (requestCompletion != null && !requestCompletion.Task.IsCompleted) - return requestCompletion.Task; - - var permissionsToRequest = new List(); - - // Check and request any permissions - foreach (var permission in ZxingActivity.RequiredPermissions) - { - if (IsPermissionInManifest(activity, permission)) - { - if (!IsPermissionGranted(activity, permission)) - permissionsToRequest.Add(permission); - } - } - - if (permissionsToRequest.Any()) - { - DoRequestPermissions(activity, permissionsToRequest.ToArray(), 101); - requestCompletion = new TaskCompletionSource(); - - return requestCompletion.Task; - } - - return Task.FromResult(true); - } - - public static void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) - { - if (requestCompletion != null && !requestCompletion.Task.IsCompleted) - { - var success = true; - - foreach (var gr in grantResults) - { - if (gr == Permission.Denied) - { - success = false; - break; - } - } - - requestCompletion.TrySetResult(success); - } - } - - - internal static bool IsPermissionInManifest (Context context, string permission) - { - try - { - var info = context.PackageManager.GetPackageInfo(context.PackageName, PackageInfoFlags.Permissions); - return info.RequestedPermissions.Contains(permission); - } - catch - { - } - - return false; - } - - internal static bool IsPermissionGranted(Context context, string permission) - { - return ContextCompat.CheckSelfPermission(context, permission) == Permission.Granted; - } - - internal static bool DoRequestPermissions(Activity activity, string[] permissions, int requestCode) - { - var permissionsToRequest = new List(); - foreach (var permission in permissions) - { - if (ContextCompat.CheckSelfPermission(activity, permission) != Permission.Granted) - permissionsToRequest.Add(permission); - } - - if (permissionsToRequest.Any()) - { - ActivityCompat.RequestPermissions(activity, permissionsToRequest.ToArray(), requestCode); - return true; - } - - return false; - } - - internal static bool CheckCameraPermissions(Context context, bool throwOnError = true) - { - return CheckPermissions(context, global::Android.Manifest.Permission.Camera, throwOnError); - } - - internal static bool CheckTorchPermissions(Context context, bool throwOnError = true) - { - return CheckPermissions(context, global::Android.Manifest.Permission.Flashlight, throwOnError); - } - - internal static bool CheckPermissions(Context context, string permission, bool throwOnError = true) - { - var result = true; - var perf = PerformanceCounter.Start(); - - global::Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Checking " + permission + "..."); - - if (!IsPermissionInManifest(context, permission) || !IsPermissionGranted(context, permission)) - { - result = false; - - if (throwOnError) - { - var msg = "ZXing.Net.Mobile requires: " + permission + ", but was not found in your AndroidManifest.xml file."; - global::Android.Util.Log.Error("ZXing.Net.Mobile", msg); - - throw new UnauthorizedAccessException(msg); - } - } - - PerformanceCounter.Stop(perf, "CheckPermissions took {0}ms"); - - return result; - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Android/ZXing.Net.Mobile.Android.csproj b/Source/ZXing.Net.Mobile.Android/ZXing.Net.Mobile.Android.csproj deleted file mode 100644 index 0fad828b0..000000000 --- a/Source/ZXing.Net.Mobile.Android/ZXing.Net.Mobile.Android.csproj +++ /dev/null @@ -1,85 +0,0 @@ - - - - Debug - AnyCPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59} - {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - Properties - Resources\Resource.designer.cs - 512 - Off - ZXing.Mobile - ZXingNetMobile - v4.0.3 - - - False - ..\..\Build\Debug\android\ - 4 - None - MONODROID;DEBUG - true - true - - - none - False - ..\..\Build\Release\android\ - 4 - False - MONODROID - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/ZXingScannerFragment.cs b/Source/ZXing.Net.Mobile.Android/ZXingScannerFragment.cs deleted file mode 100644 index f9ccefd7a..000000000 --- a/Source/ZXing.Net.Mobile.Android/ZXingScannerFragment.cs +++ /dev/null @@ -1,179 +0,0 @@ -using System; -using Android.OS; -using Android.Views; -using Android.Widget; -using Android.Support.V4.App; - -namespace ZXing.Mobile -{ - public class ZXingScannerFragment : Fragment, IZXingScanner, IScannerView - { - public ZXingScannerFragment() - { - UseCustomOverlayView = false; - } - - FrameLayout frame; - - public override View OnCreateView (LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) - { - frame = (FrameLayout)layoutInflater.Inflate(Resource.Layout.zxingscannerfragmentlayout, viewGroup, false); - - var layoutParams = getChildLayoutParams(); - - try - { - scanner = new ZXingSurfaceView (this.Activity, ScanningOptions); - - frame.AddView(scanner, layoutParams); - - - if (!UseCustomOverlayView) - { - zxingOverlay = new ZxingOverlayView (this.Activity); - zxingOverlay.TopText = TopText ?? ""; - zxingOverlay.BottomText = BottomText ?? ""; - - frame.AddView (zxingOverlay, layoutParams); - } - else if (CustomOverlayView != null) - { - frame.AddView(CustomOverlayView, layoutParams); - } - } - catch (Exception ex) - { - Console.WriteLine ("Create Surface View Failed: " + ex); - } - - Android.Util.Log.Debug (MobileBarcodeScanner.TAG, "ZXingScannerFragment->OnResume exit"); - - return frame; - } - - public override void OnStart() - { - base.OnStart(); - // won't be 0 if OnCreateView has been called before. - if (frame.ChildCount == 0) - { - var layoutParams = getChildLayoutParams(); - // reattach scanner and overlay views. - frame.AddView(scanner, layoutParams); - - if (!UseCustomOverlayView) - frame.AddView (zxingOverlay, layoutParams); - else if (CustomOverlayView != null) - frame.AddView (CustomOverlayView, layoutParams); - } - } - - public override void OnStop() - { - if (scanner != null) - { - scanner.StopScanning(); - - frame.RemoveView(scanner); - } - - if (!UseCustomOverlayView) - frame.RemoveView(zxingOverlay); - else if (CustomOverlayView != null) - frame.RemoveView(CustomOverlayView); - - base.OnStop(); - } - - private LinearLayout.LayoutParams getChildLayoutParams() - { - var layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); - layoutParams.Weight = 1; - return layoutParams; - } - - public View CustomOverlayView { get;set; } - public bool UseCustomOverlayView { get; set ; } - public MobileBarcodeScanningOptions ScanningOptions { get;set; } - public string TopText { get;set; } - public string BottomText { get;set; } - - ZXingSurfaceView scanner; - ZxingOverlayView zxingOverlay; - - public void Torch(bool on) - { - scanner?.Torch(on); - } - - public void AutoFocus() - { - scanner?.AutoFocus(); - } - - public void AutoFocus(int x, int y) - { - scanner?.AutoFocus(x, y); - } - - Action scanCallback; - //bool scanImmediately = false; - - public void StartScanning (Action scanResultHandler, MobileBarcodeScanningOptions options = null) - { - ScanningOptions = options; - scanCallback = scanResultHandler; - - if (scanner == null) { - //scanImmediately = true; - return; - } - - scan (); - } - - void scan () - { - scanner?.StartScanning (scanCallback, ScanningOptions); - } - - public void StopScanning () - { - scanner?.StopScanning (); - } - - public void PauseAnalysis () - { - scanner?.PauseAnalysis (); - } - - public void ResumeAnalysis () - { - scanner?.ResumeAnalysis (); - } - - public void ToggleTorch () - { - scanner?.ToggleTorch (); - } - - public bool IsTorchOn { - get { - return scanner?.IsTorchOn ?? false; - } - } - - public bool IsAnalyzing { - get { - return scanner?.IsAnalyzing ?? false; - } - } - - public bool HasTorch { - get { - return scanner?.HasTorch ?? false; - } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Android/ZXingSurfaceView.cs b/Source/ZXing.Net.Mobile.Android/ZXingSurfaceView.cs deleted file mode 100644 index c4a7aca54..000000000 --- a/Source/ZXing.Net.Mobile.Android/ZXingSurfaceView.cs +++ /dev/null @@ -1,221 +0,0 @@ -using System; -using Android.Content; -using Android.Runtime; -using Android.Views; -using Android.Graphics; -using ZXing.Mobile.CameraAccess; - -namespace ZXing.Mobile -{ - public class ZXingSurfaceView : SurfaceView, ISurfaceHolderCallback, IScannerView, IScannerSessionHost - { - public ZXingSurfaceView(Context context, MobileBarcodeScanningOptions options) - : base(context) - { - ScanningOptions = options ?? new MobileBarcodeScanningOptions(); - Init(); - } - - protected ZXingSurfaceView(IntPtr javaReference, JniHandleOwnership transfer) - : base(javaReference, transfer) - { - Init(); - } - - bool addedHolderCallback = false; - - private void Init() - { - if (_cameraAnalyzer == null) - _cameraAnalyzer = new CameraAnalyzer(this, this); - - _cameraAnalyzer.ResumeAnalysis(); - - if (!addedHolderCallback) { - Holder.AddCallback(this); - Holder.SetType(SurfaceType.PushBuffers); - addedHolderCallback = true; - } - } - - public async void SurfaceCreated(ISurfaceHolder holder) - { - await ZXing.Net.Mobile.Android.PermissionsHandler.PermissionRequestTask; - - _cameraAnalyzer.SetupCamera(); - - _surfaceCreated = true; - } - - public async void SurfaceChanged(ISurfaceHolder holder, Format format, int wx, int hx) - { - await ZXing.Net.Mobile.Android.PermissionsHandler.PermissionRequestTask; - - _cameraAnalyzer.RefreshCamera(); - } - - public async void SurfaceDestroyed(ISurfaceHolder holder) - { - await ZXing.Net.Mobile.Android.PermissionsHandler.PermissionRequestTask; - - try { - if (addedHolderCallback) { - Holder.RemoveCallback(this); - addedHolderCallback = false; - } - } catch { } - - _cameraAnalyzer.ShutdownCamera(); - } - - public override bool OnTouchEvent(MotionEvent e) - { - var r = base.OnTouchEvent(e); - - switch (e.Action) - { - case MotionEventActions.Down: - return true; - case MotionEventActions.Up: - var touchX = e.GetX(); - var touchY = e.GetY(); - this.AutoFocus((int)touchX, (int)touchY); - break; - } - - return r; - } - - public void AutoFocus() - { - _cameraAnalyzer.AutoFocus(); - } - - public void AutoFocus(int x, int y) - { - _cameraAnalyzer.AutoFocus(x, y); - } - - public void StartScanning(Action scanResultCallback, MobileBarcodeScanningOptions options = null) - { - ScanningOptions = options ?? MobileBarcodeScanningOptions.Default; - - _cameraAnalyzer.BarcodeFound = (result) => - { - scanResultCallback?.Invoke(result); - }; - _cameraAnalyzer.ResumeAnalysis(); - } - - public void StopScanning() - { - _cameraAnalyzer.ShutdownCamera(); - } - - public void PauseAnalysis() - { - _cameraAnalyzer.PauseAnalysis(); - } - - public void ResumeAnalysis() - { - _cameraAnalyzer.ResumeAnalysis(); - } - - public void Torch(bool on) - { - if (on) - _cameraAnalyzer.Torch.TurnOn(); - else - _cameraAnalyzer.Torch.TurnOff(); - } - - public void ToggleTorch() - { - _cameraAnalyzer.Torch.Toggle(); - } - - public MobileBarcodeScanningOptions ScanningOptions { get; set; } - - public bool IsTorchOn => _cameraAnalyzer.Torch.IsEnabled; - - public bool IsAnalyzing => _cameraAnalyzer.IsAnalyzing; - - private CameraAnalyzer _cameraAnalyzer; - private bool _surfaceCreated; - - public bool HasTorch => _cameraAnalyzer.Torch.IsSupported; - - - #region possibl future drawing code - - // private void drawResultPoints (Bitmap barcode, ZXing.Result rawResult) - // { - // var points = rawResult.ResultPoints; - // - // if (points != null && points.Length > 0) { - // var canvas = new Canvas (barcode); - // Paint paint = new Paint (); - // paint.Color = Android.Graphics.Color.White; - // paint.StrokeWidth = 3.0f; - // paint.SetStyle (Paint.Style.Stroke); - // - // var border = new RectF (2, 2, barcode.Width - 2, barcode.Height - 2); - // canvas.DrawRect (border, paint); - // - // paint.Color = Android.Graphics.Color.Purple; - // - // if (points.Length == 2) { - // paint.StrokeWidth = 4.0f; - // drawLine (canvas, paint, points [0], points [1]); - // } else if (points.Length == 4 && - // (rawResult.BarcodeFormat == BarcodeFormat.UPC_A || - // rawResult.BarcodeFormat == BarcodeFormat.EAN_13)) { - // // Hacky special case -- draw two lines, for the barcode and metadata - // drawLine (canvas, paint, points [0], points [1]); - // drawLine (canvas, paint, points [2], points [3]); - // } else { - // paint.StrokeWidth = 10.0f; - // - // foreach (ResultPoint point in points) - // canvas.DrawPoint (point.X, point.Y, paint); - // } - // } - // } - - // private void drawLine (Canvas canvas, Paint paint, ResultPoint a, ResultPoint b) - // { - // canvas.DrawLine (a.X, a.Y, b.X, b.Y, paint); - // } - - #endregion - - protected override void OnAttachedToWindow() - { - base.OnAttachedToWindow(); - - // Reinit things - Init(); - } - - protected override void OnWindowVisibilityChanged(ViewStates visibility) - { - base.OnWindowVisibilityChanged(visibility); - if (visibility == ViewStates.Visible) - Init(); - } - - public override async void OnWindowFocusChanged(bool hasWindowFocus) - { - base.OnWindowFocusChanged(hasWindowFocus); - - if (!hasWindowFocus) return; - // SurfaceCreated/SurfaceChanged are not called on a resume - await ZXing.Net.Mobile.Android.PermissionsHandler.PermissionRequestTask; - - //only refresh the camera if the surface has already been created. Fixed #569 - if (_surfaceCreated) - _cameraAnalyzer.RefreshCamera(); - } - } -} diff --git a/Source/ZXing.Net.Mobile.Android/ZxingActivity.cs b/Source/ZXing.Net.Mobile.Android/ZxingActivity.cs deleted file mode 100644 index 1cf668b2e..000000000 --- a/Source/ZXing.Net.Mobile.Android/ZxingActivity.cs +++ /dev/null @@ -1,187 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Drawing; - -using Android.App; -using Android.Content.PM; -using Android.Views; -using Android.OS; -using Android.Hardware; -using Android.Graphics; - -using Android.Content; -using Android.Runtime; -using Android.Widget; - -using ZXing; -using Android.Support.V4.App; -using System.Linq; -using System.Threading.Tasks; - -namespace ZXing.Mobile -{ - [Activity (Label = "Scanner", ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenLayout)] - public class ZxingActivity : FragmentActivity - { - public static readonly string[] RequiredPermissions = new[] { - Android.Manifest.Permission.Camera, - Android.Manifest.Permission.Flashlight - }; - - public static Action ScanCompletedHandler; - public static Action CanceledHandler; - - public static Action CancelRequestedHandler; - public static Action TorchRequestedHandler; - public static Action AutoFocusRequestedHandler; - public static Action PauseAnalysisHandler; - public static Action ResumeAnalysisHandler; - - public static void RequestCancel () - { - var h = CancelRequestedHandler; - if (h != null) - h (); - } - - public static void RequestTorch (bool torchOn) - { - var h = TorchRequestedHandler; - if (h != null) - h (torchOn); - } - - public static void RequestAutoFocus () - { - var h = AutoFocusRequestedHandler; - if (h != null) - h (); - } - - public static void RequestPauseAnalysis () - { - var h = PauseAnalysisHandler; - if (h != null) - h (); - } - - public static void RequestResumeAnalysis () - { - var h = ResumeAnalysisHandler; - if (h != null) - h (); - } - - public static View CustomOverlayView { get; set; } - - public static bool UseCustomOverlayView { get; set; } - - public static MobileBarcodeScanningOptions ScanningOptions { get; set; } - - public static string TopText { get; set; } - - public static string BottomText { get; set; } - - public static bool ScanContinuously { get; set; } - - ZXingScannerFragment scannerFragment; - - protected override void OnCreate (Bundle bundle) - { - base.OnCreate (bundle); - - this.RequestWindowFeature (WindowFeatures.NoTitle); - - this.Window.AddFlags (WindowManagerFlags.Fullscreen); //to show - this.Window.AddFlags (WindowManagerFlags.KeepScreenOn); //Don't go to sleep while scanning - - if (ScanningOptions.AutoRotate.HasValue && !ScanningOptions.AutoRotate.Value) - RequestedOrientation = ScreenOrientation.Nosensor; - - SetContentView (Resource.Layout.zxingscanneractivitylayout); - - scannerFragment = new ZXingScannerFragment (); - scannerFragment.CustomOverlayView = CustomOverlayView; - scannerFragment.UseCustomOverlayView = UseCustomOverlayView; - scannerFragment.TopText = TopText; - scannerFragment.BottomText = BottomText; - - SupportFragmentManager.BeginTransaction () - .Replace (Resource.Id.contentFrame, scannerFragment, "ZXINGFRAGMENT") - .Commit (); - - CancelRequestedHandler = CancelScan; - AutoFocusRequestedHandler = AutoFocus; - TorchRequestedHandler = SetTorch; - PauseAnalysisHandler = scannerFragment.PauseAnalysis; - ResumeAnalysisHandler = scannerFragment.ResumeAnalysis; - } - - protected override void OnResume () - { - base.OnResume (); - - if (ZXing.Net.Mobile.Android.PermissionsHandler.NeedsPermissionRequest(this)) - ZXing.Net.Mobile.Android.PermissionsHandler.RequestPermissionsAsync(this); - else - StartScanning (); - } - - public override void OnRequestPermissionsResult (int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults) - { - ZXing.Net.Mobile.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults); - } - - void StartScanning () - { - scannerFragment.StartScanning (result => { - var h = ScanCompletedHandler; - if (h != null) - h (result); - - if (!ZxingActivity.ScanContinuously) - this.Finish (); - }, ScanningOptions); - } - - public override void OnConfigurationChanged (Android.Content.Res.Configuration newConfig) - { - base.OnConfigurationChanged (newConfig); - - Android.Util.Log.Debug (MobileBarcodeScanner.TAG, "Configuration Changed"); - } - - public void SetTorch (bool on) - { - scannerFragment.Torch (on); - } - - public void AutoFocus () - { - scannerFragment.AutoFocus (); - } - - public void CancelScan () - { - Finish (); - var h = CanceledHandler; - if (h != null) - h (); - } - - public override bool OnKeyDown (Keycode keyCode, KeyEvent e) - { - switch (keyCode) { - case Keycode.Back: - CancelScan (); - break; - case Keycode.Focus: - return true; - } - - return base.OnKeyDown (keyCode, e); - } - } - -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Core/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.Core/AssemblyInfo.cs deleted file mode 100644 index c0ada2860..000000000 --- a/Source/ZXing.Net.Mobile.Core/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("ZXing.Net.Mobile.Core")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("redth")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.Core/IMobileBarcodeScanner.cs b/Source/ZXing.Net.Mobile.Core/IMobileBarcodeScanner.cs deleted file mode 100644 index b62831c31..000000000 --- a/Source/ZXing.Net.Mobile.Core/IMobileBarcodeScanner.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using System.Threading.Tasks; -using ZXing; - -namespace ZXing.Mobile -{ - public interface IZXingScanner : IScannerView - { - TOverlayViewType CustomOverlayView { get;set; } - bool UseCustomOverlayView { get; set; } - string TopText { get;set; } - string BottomText { get;set; } - } - - public interface IMobileBarcodeScanner - { - Task Scan(MobileBarcodeScanningOptions options); - Task Scan(); - - void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler); - void ScanContinuously(Action scanHandler); - - void Cancel(); - - void Torch(bool on); - void AutoFocus(); - void ToggleTorch(); - - void PauseAnalysis (); - void ResumeAnalysis (); - - bool UseCustomOverlay { get; } - string TopText { get; set; } - string BottomText { get; set; } - - string CancelButtonText { get; set; } - string FlashButtonText { get; set; } - string CameraUnsupportedMessage { get; set; } - - bool IsTorchOn { get; } - } - - public abstract class MobileBarcodeScannerBase : IMobileBarcodeScanner - { - public MobileBarcodeScannerBase() - { - CancelButtonText = "Cancel"; - FlashButtonText = "Flash"; - CameraUnsupportedMessage = "Unable to start Camera for Scanning"; - } - - public bool UseCustomOverlay { get; set; } - public string TopText { get; set; } - public string BottomText { get; set; } - public string CancelButtonText { get; set; } - public string FlashButtonText { get; set; } - public string CameraUnsupportedMessage { get; set; } - - public abstract Task Scan(MobileBarcodeScanningOptions options); - - public Task Scan() - { - return Scan(MobileBarcodeScanningOptions.Default); - } - - public void ScanContinuously (Action scanHandler) - { - ScanContinuously (MobileBarcodeScanningOptions.Default, scanHandler); - } - - public abstract void ScanContinuously (MobileBarcodeScanningOptions options, Action scanHandler); - - public abstract void Cancel(); - - public abstract void Torch(bool on); - - public abstract void ToggleTorch(); - - public abstract bool IsTorchOn { get; } - - public abstract void AutoFocus(); - - public abstract void PauseAnalysis (); - public abstract void ResumeAnalysis (); - } - - public class CancelScanRequestEventArgs : EventArgs - { - public CancelScanRequestEventArgs () - { - this.Cancel = false; - } - - public bool Cancel { get; set; } - } - -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Core/IScannerView.cs b/Source/ZXing.Net.Mobile.Core/IScannerView.cs deleted file mode 100644 index e337b6bba..000000000 --- a/Source/ZXing.Net.Mobile.Core/IScannerView.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; - -namespace ZXing.Mobile -{ - public interface IScannerView - { - void StartScanning (Action scanResultHandler, MobileBarcodeScanningOptions options = null); - void StopScanning (); - - void PauseAnalysis(); - void ResumeAnalysis(); - - void Torch(bool on); - void AutoFocus(); - void AutoFocus(int x, int y); - void ToggleTorch(); - bool IsTorchOn { get; } - bool IsAnalyzing { get; } - - bool HasTorch { get; } - } -} - diff --git a/Source/ZXing.Net.Mobile.Core/MobileBarcodeScanningOptions.cs b/Source/ZXing.Net.Mobile.Core/MobileBarcodeScanningOptions.cs deleted file mode 100644 index 25eed3da4..000000000 --- a/Source/ZXing.Net.Mobile.Core/MobileBarcodeScanningOptions.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using ZXing; - -namespace ZXing.Mobile -{ - public class MobileBarcodeScanningOptions - { - /// - /// Camera resolution selector delegate, must return the selected Resolution from the list of available resolutions - /// - public delegate CameraResolution CameraResolutionSelectorDelegate (List availableResolutions); - - public MobileBarcodeScanningOptions () - { - this.PossibleFormats = new List(); - //this.AutoRotate = true; - this.DelayBetweenAnalyzingFrames = 150; - this.InitialDelayBeforeAnalyzingFrames = 300; - this.DelayBetweenContinuousScans = 1000; - UseNativeScanning = false; - } - - public CameraResolutionSelectorDelegate CameraResolutionSelector { get;set; } - public List PossibleFormats { get;set; } - public bool? TryHarder { get;set; } - public bool? PureBarcode { get;set; } - public bool? AutoRotate { get;set; } - public bool? UseCode39ExtendedMode { get; set; } - public string CharacterSet { get;set; } - public bool? TryInverted { get;set; } - public bool? UseFrontCameraIfAvailable { get; set; } - public bool? AssumeGS1 { get; set; } - - - public bool DisableAutofocus { get; set; } - - public bool UseNativeScanning { get; set; } - - public int DelayBetweenContinuousScans { get; set; } - - public int DelayBetweenAnalyzingFrames { get;set;} - public int InitialDelayBeforeAnalyzingFrames { get;set; } - - public static MobileBarcodeScanningOptions Default - { - get { return new MobileBarcodeScanningOptions(); } - } - - public BarcodeReader BuildBarcodeReader () - { - var reader = new BarcodeReader (); - if (this.TryHarder.HasValue) - reader.Options.TryHarder = this.TryHarder.Value; - if (this.PureBarcode.HasValue) - reader.Options.PureBarcode = this.PureBarcode.Value; - if (this.AutoRotate.HasValue) - reader.AutoRotate = this.AutoRotate.Value; - if (this.UseCode39ExtendedMode.HasValue) - reader.Options.UseCode39ExtendedMode = this.UseCode39ExtendedMode.Value; - if (!string.IsNullOrEmpty (this.CharacterSet)) - reader.Options.CharacterSet = this.CharacterSet; - if (this.TryInverted.HasValue) - reader.TryInverted = this.TryInverted.Value; - if (this.AssumeGS1.HasValue) - reader.Options.AssumeGS1 = this.AssumeGS1.Value; - - if (this.PossibleFormats != null && this.PossibleFormats.Count > 0) - { - reader.Options.PossibleFormats = new List(); - - foreach (var pf in this.PossibleFormats) - reader.Options.PossibleFormats.Add(pf); - } - - return reader; - } - - public MultiFormatReader BuildMultiFormatReader() - { - var reader = new MultiFormatReader(); - - var hints = new Dictionary(); - - if (this.TryHarder.HasValue && this.TryHarder.Value) - hints.Add(DecodeHintType.TRY_HARDER, this.TryHarder.Value); - if (this.PureBarcode.HasValue && this.PureBarcode.Value) - hints.Add(DecodeHintType.PURE_BARCODE, this.PureBarcode.Value); - - if (this.PossibleFormats != null && this.PossibleFormats.Count > 0) - hints.Add(DecodeHintType.POSSIBLE_FORMATS, this.PossibleFormats); - - reader.Hints = hints; - - return reader; - } - - public CameraResolution GetResolution (List availableResolutions) - { - CameraResolution r = null; - - var dg = CameraResolutionSelector; - - if (dg != null) { - r = dg (availableResolutions); - } - - return r; - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Core/ZXing.Net.Mobile.Core.csproj b/Source/ZXing.Net.Mobile.Core/ZXing.Net.Mobile.Core.csproj deleted file mode 100644 index 9510e5627..000000000 --- a/Source/ZXing.Net.Mobile.Core/ZXing.Net.Mobile.Core.csproj +++ /dev/null @@ -1,62 +0,0 @@ - - - - - 10.0 - Debug - AnyCPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - Library - Properties - ZXing.Net.Mobile.Core - ZXing.Net.Mobile.Core - en-US - 512 - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Profile259 - v4.5 - - - true - full - false - ..\..\Build\Debug\core\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\Build\Release\core\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.Android/PermissionsHandler.cs b/Source/ZXing.Net.Mobile.Forms.Android/PermissionsHandler.cs deleted file mode 100644 index 4ad5efef3..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/PermissionsHandler.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using ZXing.Mobile; -using System.Linq; -using Android.App; -using System.Threading.Tasks; -using Android.Content.PM; - -namespace ZXing.Net.Mobile.Forms.Android -{ - public static class PermissionsHandler - { - [Obsolete ("Use ZXing.Net.Mobile.Android.PermissionsHandler.OnRequestPermissionsResult instead")] - public static void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) - { - // Forward the call to the generic android implementation - Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.Android/Platform.cs b/Source/ZXing.Net.Mobile.Forms.Android/Platform.cs deleted file mode 100644 index a23bee79a..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/Platform.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace ZXing.Net.Mobile.Forms.Android -{ - public class Platform - { - public Platform () - { - } - - public static void Init () - { - ZXing.Net.Mobile.Forms.Android.ZXingScannerViewRenderer.Init (); - ZXing.Net.Mobile.Forms.Android.ZXingBarcodeImageViewRenderer.Init (); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.Android/Properties/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.Forms.Android/Properties/AssemblyInfo.cs deleted file mode 100644 index 5b95c8104..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("ZXing.Net.Mobile.Forms.Android")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("redth")] -[assembly: AssemblyTrademark ("")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.0")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.Forms.Android/Resources/AboutResources.txt b/Source/ZXing.Net.Mobile.Forms.Android/Resources/AboutResources.txt deleted file mode 100644 index 10f52d460..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/Resources/AboutResources.txt +++ /dev/null @@ -1,44 +0,0 @@ -Images, layout descriptions, binary blobs and string dictionaries can be included -in your application as resource files. Various Android APIs are designed to -operate on the resource IDs instead of dealing with images, strings or binary blobs -directly. - -For example, a sample Android app that contains a user interface layout (main.axml), -an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) -would keep its resources in the "Resources" directory of the application: - -Resources/ - drawable/ - icon.png - - layout/ - main.axml - - values/ - strings.xml - -In order to get the build system to recognize Android resources, set the build action to -"AndroidResource". The native Android APIs do not operate directly with filenames, but -instead operate on resource IDs. When you compile an Android application that uses resources, -the build system will package the resources for distribution and generate a class called "R" -(this is an Android convention) that contains the tokens for each one of the resources -included. For example, for the above Resources layout, this is what the R class would expose: - -public class R { - public class drawable { - public const int icon = 0x123; - } - - public class layout { - public const int main = 0x456; - } - - public class strings { - public const int first_string = 0xabc; - public const int second_string = 0xbcd; - } -} - -You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main -to reference the layout/main.axml file, or R.strings.first_string to reference the first -string in the dictionary file values/strings.xml. diff --git a/Source/ZXing.Net.Mobile.Forms.Android/Resources/Resource.cs b/Source/ZXing.Net.Mobile.Forms.Android/Resources/Resource.cs deleted file mode 100644 index d8c609a70..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/Resources/Resource.cs +++ /dev/null @@ -1,59 +0,0 @@ -#pragma warning disable 1591 -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.17020 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -[assembly: Android.Runtime.ResourceDesignerAttribute("ZXing.Net.Mobile.Forms.Android.Resource", IsApplication=false)] - -namespace ZXing.Net.Mobile.Forms.Android -{ - [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")] - public partial class Resource - { - static Resource() - { - global::Android.Runtime.ResourceIdManager.UpdateIdValues(); - } - - public partial class Layout - { - // aapt resource value: 0x7f030030 - public static int zxingscanneractivitylayout = 2130903088; - - // aapt resource value: 0x7f030031 - public static int zxingscannerfragmentlayout = 2130903089; - - static Layout() - { - global::Android.Runtime.ResourceIdManager.UpdateIdValues(); - } - - private Layout() - { - } - } - - public partial class String - { - // aapt resource value: 0x7f050020 - public static int library_name = 2131034144; - - static String() - { - global::Android.Runtime.ResourceIdManager.UpdateIdValues(); - } - - private String() - { - } - } - - } -} -#pragma warning restore 1591 diff --git a/Source/ZXing.Net.Mobile.Forms.Android/Resources/values/Strings.xml b/Source/ZXing.Net.Mobile.Forms.Android/Resources/values/Strings.xml deleted file mode 100644 index 4ec40bb54..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/Resources/values/Strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - ZXing.Net.Mobile.Forms.Android - diff --git a/Source/ZXing.Net.Mobile.Forms.Android/ZXing.Net.Mobile.Forms.Android.csproj b/Source/ZXing.Net.Mobile.Forms.Android/ZXing.Net.Mobile.Forms.Android.csproj deleted file mode 100644 index 0164f7cab..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/ZXing.Net.Mobile.Forms.Android.csproj +++ /dev/null @@ -1,84 +0,0 @@ - - - - Debug - AnyCPU - {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD} - Library - ZXing.Net.Mobile.Forms.Android - Assets - Resources - Resource - Resources\Resource.designer.cs - True - ZXing.Net.Mobile.Forms.Android - v7.1 - - - - - true - full - false - ..\..\Build\Forms\Debug\android\ - DEBUG; - prompt - 4 - None - false - - - full - true - ..\..\Build\Forms\Release\android\ - prompt - 4 - false - false - - - - - - - - - - - - - - - - - - - - - - - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {8E54DB74-C094-4016-859A-D1C7F2509A58} - ZXing.Net.Mobile.Forms - - - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59} - ZXing.Net.Mobile.Android - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.Android/ZXingBarcodeImageViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.Android/ZXingBarcodeImageViewRenderer.cs deleted file mode 100644 index 0327a9bea..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/ZXingBarcodeImageViewRenderer.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using ZXing.Net.Mobile.Forms.Android; -using Android.Runtime; -using Xamarin.Forms.Platform.Android; -using System.ComponentModel; -using Android.Widget; -using ZXing.Mobile; - -[assembly:ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] -namespace ZXing.Net.Mobile.Forms.Android -{ - [Preserve(AllMembers = true)] - public class ZXingBarcodeImageViewRenderer : ViewRenderer - { - public static void Init () - { - var temp = DateTime.Now; - } - - ZXingBarcodeImageView formsView; - ImageView imageView; - - protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e) - { - regenerate (); - - base.OnElementPropertyChanged (sender, e); - } - - protected override void OnElementChanged(ElementChangedEventArgs e) - { - formsView = Element; - - if (imageView == null) { - - imageView = new ImageView (Xamarin.Forms.Forms.Context); - - base.SetNativeControl (imageView); - } - - regenerate (); - - base.OnElementChanged (e); - } - - void regenerate () - { - if (formsView != null && formsView.BarcodeValue != null) - { - var writer = new ZXing.Mobile.BarcodeWriter(); - - if (formsView != null && formsView.BarcodeOptions != null) - writer.Options = formsView.BarcodeOptions; - if (formsView != null && formsView.BarcodeFormat != null) - writer.Format = formsView.BarcodeFormat; - - var value = formsView != null ? formsView.BarcodeValue : string.Empty; - - Device.BeginInvokeOnMainThread (() => { - var image = writer.Write (value); - - imageView.SetImageBitmap (image); - }); - } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.Android/ZXingScannerViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.Android/ZXingScannerViewRenderer.cs deleted file mode 100644 index b07e3a31a..000000000 --- a/Source/ZXing.Net.Mobile.Forms.Android/ZXingScannerViewRenderer.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using ZXing.Net.Mobile.Forms.Android; -using Android.Runtime; -using Android.App; -using Xamarin.Forms.Platform.Android; -using Android.Views; -using System.ComponentModel; -using System.Reflection; -using Android.Widget; -using ZXing.Mobile; -using System.Threading.Tasks; -using System.Linq.Expressions; - -[assembly:ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] -namespace ZXing.Net.Mobile.Forms.Android -{ - [Preserve(AllMembers = true)] - public class ZXingScannerViewRenderer : ViewRenderer - { - public ZXingScannerViewRenderer () : base () - { - } - - public static void Init () - { - // Keep linker from stripping empty method - var temp = DateTime.Now; - } - - protected ZXingScannerView formsView; - - protected ZXingSurfaceView zxingSurface; - internal Task requestPermissionsTask; - - protected override async void OnElementChanged(ElementChangedEventArgs e) - { - base.OnElementChanged (e); - - formsView = Element; - - if (zxingSurface == null) { - - // Process requests for autofocus - formsView.AutoFocusRequested += (x, y) => { - if (zxingSurface != null) { - if (x < 0 && y < 0) - zxingSurface.AutoFocus (); - else - zxingSurface.AutoFocus (x, y); - } - }; - - var activity = Context as Activity; - - if (activity != null) - await ZXing.Net.Mobile.Android.PermissionsHandler.RequestPermissionsAsync (activity); - - zxingSurface = new ZXingSurfaceView (Xamarin.Forms.Forms.Context as Activity, formsView.Options); - zxingSurface.LayoutParameters = new LayoutParams (LayoutParams.MatchParent, LayoutParams.MatchParent); - - base.SetNativeControl (zxingSurface); - - if (formsView.IsScanning) - zxingSurface.StartScanning(formsView.RaiseScanResult, formsView.Options); - - if (formsView.IsTorchOn) - zxingSurface.Torch (true); - } - } - - protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e) - { - base.OnElementPropertyChanged (sender, e); - - if (zxingSurface == null) - return; - - switch (e.PropertyName) { - case nameof (ZXingScannerView.IsTorchOn): - zxingSurface.Torch (formsView.IsTorchOn); - break; - case nameof (ZXingScannerView.IsScanning): - if (formsView.IsScanning) - zxingSurface.StartScanning (formsView.RaiseScanResult, formsView.Options); - else - zxingSurface.StopScanning (); - break; - case nameof (ZXingScannerView.IsAnalyzing): - if (formsView.IsAnalyzing) - zxingSurface.ResumeAnalysis (); - else - zxingSurface.PauseAnalysis (); - break; - } - } - - public override bool OnTouchEvent (MotionEvent e) - { - var x = e.GetX (); - var y = e.GetY (); - - if (zxingSurface != null) { - zxingSurface.AutoFocus ((int)x, (int)y); - System.Diagnostics.Debug.WriteLine ("Touch: x={0}, y={1}", x, y); - } - return base.OnTouchEvent (e); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Properties/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Properties/AssemblyInfo.cs deleted file mode 100644 index 064c70962..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Resources; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ZXing.Net.Mobile.Forms.WindowsPhone")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ZXing.Net.Mobile.Forms.WindowsPhone")] -[assembly: AssemblyCopyright("Copyright © 2015")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9a761acb-26da-4185-8008-d4cde7d2f0bf")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/README_FIRST.txt b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/README_FIRST.txt deleted file mode 100644 index ce40c013b..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/README_FIRST.txt +++ /dev/null @@ -1,3 +0,0 @@ -For the Windows Phone toolkit make sure that you have -marked the icons in the "Toolkit.Content" folder as content. That way they -can be used as the icons for the ApplicationBar control. \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Add.png b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Add.png deleted file mode 100644 index 4b524d6f14c6da928c2c8d2568b08eb761eee4c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&1|*M957Y)yk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XzIwVihE&{obH|bQkby))pqEyH(1eB-&x1@t0S&Bk5*Rrr zH#E6OB%7>L{{E>|uIG6qT_6*FX_@{z`E0Aq@!sV2sTGcDH*{Hz%Q5{C diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Cancel.png b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Cancel.png deleted file mode 100644 index 4dd724f087fca227e7ee7ceefd19649c5b9a0351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@j0~PGjv*Dd-pstndsuh8nf>utOJ$E-| zFMsKu(zG#v;j7MF|Bk8EhY|vq1bJt~%r2K|N*h>MBE_mo8I)a0re`rF7#CSG>=3>0W57K1`hkcQ(~r!$GJ9*p z?7J^}*Zj7-P^!Ld*7+GL)%c2oK8M@g*FW_)Q8xIRi*ftTeeam9og;U5O?&)R@IyN& fc;MjbBjp1O$7bzju+Ww91&MmP`njxgN@xNA$Y_JF diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Check.png b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Check.png deleted file mode 100644 index 7a074666878744c35a6e72079704f59854bcd0f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@j1HbIjv*Dd-ppv^ZB`I)JigUd?>+BXY}mz^(R1xr>8d*3 z9hUEcPwQ#LFnr&Y`fQK+yeI9Up%a-6qFb~CA3XDn^MCp|ok65`dD97xPq7IXPhH)2 zgki@rHDlw|J3|DMQ};1WW_oD2+B0_JxrUu=PncYU4YgypY>fa vyGFQQU`yqNo#K29|GeN{1u_!ktGEmprf?gTe~DWM4f^R}GR diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Delete.png b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/Toolkit.Content/ApplicationBar.Delete.png deleted file mode 100644 index 95bb16dabef0d95b3da01ce2f4a46b8cdeeabea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@jPaf>jv*DdlK%YvZ+|#|&4d;OZygJZ2cnV&Ec^6}?Y@@$LQ_f1qNPc*1{U?{g!y?Lu?730b{iAiTO zBci6ME_%7hY*r_GH+#WXez)CIQX1qv-fT~q7QpPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi+5i9!+5vdBQZE1i0`y5lK~!i%?N-Z+ zQc)P!>uY?4gDJEbE1^w`fe^~dF>BfcwkRm57C}U-pch1B;HE{3RxM`J9}q4QB5a{y zx^R@0{Vp_y_IaY+r8E4biP+AmE#NHM7>@=*J`z%_7W$;=#yBwOX}lG@3W~&(Rv*X&vwji9}+3b#*mQgGKEC0YeBKLzq-_ zI^ECh;PH4|p3mo}b^y4%!{Oj*$O~Q*3ODl*Y)g5rV-JIQS=SYDe?=F|?HTt2ONTU~#CElYhNUc`uL4=s#UI+;yqu1-J zg1i{F2}GZP+^2LpZN?qAi%c^_HVQY=7}yI?bex( - - - Debug - AnyCPU - 10.0.20506 - 2.0 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF} - {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - ZXing.Net.Mobile.Forms.WindowsPhone - ZXing.Net.Mobile.Forms.WindowsPhone - WindowsPhone - v8.0 - $(TargetFrameworkVersion) - false - true - 11.0 - true - - - - - true - full - false - ..\..\Build\Forms\Debug\wp8.0\ - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - pdbonly - true - ..\..\Build\Forms\Release\wp8.0\ - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - true - full - false - Bin\x86\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - pdbonly - true - Bin\x86\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - true - full - false - Bin\ARM\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - pdbonly - true - Bin\ARM\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - - - - - - - {7528dd0a-1781-47f4-adbf-eeddb011f6bb} - ZXing.Net.Mobile.Core - - - {8e54db74-c094-4016-859a-d1c7f2509a58} - ZXing.Net.Mobile.Forms - - - {c9efc2f6-ac4c-446c-8fbf-91824b00431d} - ZXing.Net.Mobile.WindowsPhone - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - ..\..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll - True - - - ..\..\packages\Xamarin.Forms.2.3.3.193\lib\WP80\Xamarin.Forms.Core.dll - True - - - ..\..\packages\Xamarin.Forms.2.3.3.193\lib\WP80\Xamarin.Forms.Platform.dll - True - - - ..\..\packages\Xamarin.Forms.2.3.3.193\lib\WP80\Xamarin.Forms.Platform.WP8.dll - True - - - ..\..\packages\Xamarin.Forms.2.3.3.193\lib\WP80\Xamarin.Forms.Xaml.dll - True - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingBarcodeImageViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingBarcodeImageViewRenderer.cs deleted file mode 100644 index d517a5b34..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingBarcodeImageViewRenderer.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using Xamarin.Forms.Platform.WinPhone; -using ZXing.Net.Mobile.Forms.WindowsPhone; -using System.ComponentModel; -using System.Reflection; -using ZXing.Mobile; -using System.Threading.Tasks; - -[assembly: ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] -namespace ZXing.Net.Mobile.Forms.WindowsPhone -{ - public class ZXingBarcodeImageViewRenderer : ViewRenderer - { - public static void Init() - { - } - - ZXingBarcodeImageView formsView; - System.Windows.Controls.Image imageView; - - protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) - { - regenerate(); - - base.OnElementPropertyChanged(sender, e); - } - - protected override void OnElementChanged(ElementChangedEventArgs e) - { - formsView = Element; - - if (imageView == null) - { - - imageView = new System.Windows.Controls.Image(); - - base.SetNativeControl(imageView); - } - - regenerate(); - - base.OnElementChanged(e); - } - - void regenerate () - { - if (formsView != null) - { - var writer = new ZXing.Mobile.BarcodeWriter(); - - if (formsView != null && formsView.BarcodeOptions != null) - writer.Options = formsView.BarcodeOptions; - if (formsView != null && formsView.BarcodeFormat != null) - writer.Format = formsView.BarcodeFormat; - - var value = formsView != null ? formsView.BarcodeValue : string.Empty; - - Device.BeginInvokeOnMainThread(() => - { - var image = writer.Write(value); - - imageView.Source = image; - }); - } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingScannerViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingScannerViewRenderer.cs deleted file mode 100644 index 705f70c29..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/ZXingScannerViewRenderer.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using System.ComponentModel; -using System.Reflection; -using Xamarin.Forms.Platform.WinPhone; -using ZXing.Net.Mobile.Forms.WindowsPhone; - -[assembly: ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] -namespace ZXing.Net.Mobile.Forms.WindowsPhone -{ - //[Preserve(AllMembers = true)] - public class ZXingScannerViewRenderer : ViewRenderer - { - public static void Init() - { - // Force the assembly to load - } - - protected ZXingScannerView formsView; - - protected ZXing.Mobile.ZXingScannerControl zxingControl; - - protected override void OnElementChanged(ElementChangedEventArgs e) - { - formsView = Element; - - if (formsView != null && zxingControl == null) - { - formsView.AutoFocusRequested += FormsView_AutoFocusRequested; - - zxingControl = new ZXing.Mobile.ZXingScannerControl(); - zxingControl.UseCustomOverlay = true; - zxingControl.ContinuousScanning = true; - - base.SetNativeControl(zxingControl); - - if (formsView.IsScanning) - zxingControl.StartScanning(formsView.RaiseScanResult, formsView.Options); - - if (!formsView.IsAnalyzing) - zxingControl.PauseAnalysis(); - - if (formsView.IsTorchOn) - zxingControl.Torch(formsView.IsTorchOn); - } - - if (formsView == null && e.NewElement == null && zxingControl != null) - { - zxingControl.StopScanning(); - } - - base.OnElementChanged(e); - } - - protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) - { - base.OnElementPropertyChanged(sender, e); - - if (zxingControl == null) - return; - - switch (e.PropertyName) - { - case nameof(ZXingScannerView.IsTorchOn): - zxingControl.Torch(formsView.IsTorchOn); - break; - case nameof(ZXingScannerView.IsScanning): - if (formsView.IsScanning) - zxingControl.StartScanning(formsView.RaiseScanResult, formsView.Options); - else - zxingControl.StopScanning(); - break; - case nameof(ZXingScannerView.IsAnalyzing): - if (formsView.IsAnalyzing) - zxingControl.ResumeAnalysis(); - else - zxingControl.PauseAnalysis(); - break; - } - } - - private void FormsView_AutoFocusRequested(int x, int y) - { - zxingControl.AutoFocus(x, y); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/packages.config b/Source/ZXing.Net.Mobile.Forms.WindowsPhone/packages.config deleted file mode 100644 index 558ef58d9..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsPhone/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/Properties/ZXing.Net.Mobile.Forms.WindowsUniversal.rd.xml b/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/Properties/ZXing.Net.Mobile.Forms.WindowsUniversal.rd.xml deleted file mode 100644 index 74d349536..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/Properties/ZXing.Net.Mobile.Forms.WindowsUniversal.rd.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXing.Net.Mobile.Forms.WindowsUniversal.csproj b/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXing.Net.Mobile.Forms.WindowsUniversal.csproj deleted file mode 100644 index 60edc22f3..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXing.Net.Mobile.Forms.WindowsUniversal.csproj +++ /dev/null @@ -1,144 +0,0 @@ - - - - - Debug - AnyCPU - {C785F56E-0D1D-492C-850B-4D882314F29B} - Library - Properties - ZXing.Net.Mobile.Forms.WindowsUniversal - ZXing.Net.Mobile.Forms.WindowsUniversal - en-US - UAP - 10.0.14393.0 - 10.0.10240.0 - 14 - 512 - {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - AnyCPU - true - full - false - ..\..\Build\Forms\Debug\uwp\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - prompt - 4 - - - AnyCPU - pdbonly - true - ..\..\Build\Forms\Release\uwp\ - TRACE;NETFX_CORE;WINDOWS_UWP - prompt - 4 - - - x86 - true - bin\x86\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - x86 - false - prompt - - - x86 - bin\x86\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - x86 - false - prompt - - - ARM - true - bin\ARM\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - ARM - false - prompt - - - ARM - bin\ARM\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - ARM - false - prompt - - - x64 - true - bin\x64\Debug\ - DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 - full - x64 - false - prompt - - - x64 - bin\x64\Release\ - TRACE;NETFX_CORE;WINDOWS_UWP - true - ;2008 - pdbonly - x64 - false - prompt - - - - - - - - - - - - - - {7528dd0a-1781-47f4-adbf-eeddb011f6bb} - ZXing.Net.Mobile.Core - - - {8e54db74-c094-4016-859a-d1c7f2509a58} - ZXing.Net.Mobile.Forms - - - {1b000bca-4895-4acf-a0c6-3adf3a9bedf2} - ZXing.Net.Mobile.WindowsUniversal - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - 14.0 - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingBarcodeImageViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingBarcodeImageViewRenderer.cs deleted file mode 100644 index 26f925510..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingBarcodeImageViewRenderer.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using ZXing.Net.Mobile.Forms.WindowsUniversal; -using Xamarin.Forms.Platform.UWP; -using System.ComponentModel; -using System.Reflection; -using ZXing.Mobile; -using System.Threading.Tasks; - -[assembly: ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] -namespace ZXing.Net.Mobile.Forms.WindowsUniversal -{ - public class ZXingBarcodeImageViewRenderer : ViewRenderer - { - public static void Init() - { - } - - ZXingBarcodeImageView formsView; - Windows.UI.Xaml.Controls.Image imageView; - - protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) - { - regenerate(); - - base.OnElementPropertyChanged(sender, e); - } - protected override void OnElementChanged(ElementChangedEventArgs e) - { - formsView = Element; - - if (imageView == null) - { - - imageView = new Windows.UI.Xaml.Controls.Image(); - - base.SetNativeControl(imageView); - } - - regenerate(); - - base.OnElementChanged(e); - } - - void regenerate () - { - if (formsView != null && formsView.BarcodeValue != null) - { - var writer = new ZXing.Mobile.BarcodeWriter(); - - if (formsView != null && formsView.BarcodeOptions != null) - writer.Options = formsView.BarcodeOptions; - if (formsView != null && formsView.BarcodeFormat != null) - writer.Format = formsView.BarcodeFormat; - - var value = formsView != null ? formsView.BarcodeValue : string.Empty; - - Device.BeginInvokeOnMainThread(() => - { - var image = writer.Write(value); - - imageView.Source = image; - }); - } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingScannerViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingScannerViewRenderer.cs deleted file mode 100644 index 3cd9c1fa5..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/ZXingScannerViewRenderer.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using ZXing.Net.Mobile.Forms.WindowsUniversal; -using Xamarin.Forms.Platform.UWP; -using System.ComponentModel; -using System.Reflection; - -[assembly: ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] -namespace ZXing.Net.Mobile.Forms.WindowsUniversal -{ - //[Preserve(AllMembers = true)] - public class ZXingScannerViewRenderer : ViewRenderer - { - public static void Init () - { - // Cause the assembly to load - } - - protected ZXingScannerView formsView; - - protected ZXing.Mobile.ZXingScannerControl zxingControl; - - protected override void OnElementChanged(ElementChangedEventArgs e) - { - formsView = Element; - - if (formsView != null && zxingControl == null) - { - formsView.AutoFocusRequested += FormsView_AutoFocusRequested; - - zxingControl = new ZXing.Mobile.ZXingScannerControl(); - zxingControl.ContinuousScanning = true; - zxingControl.UseCustomOverlay = true; - - base.SetNativeControl(zxingControl); - - if (formsView.IsScanning) - zxingControl.StartScanning(formsView.RaiseScanResult, formsView.Options); - - if (!formsView.IsAnalyzing) - zxingControl.PauseAnalysis(); - - if (formsView.IsTorchOn) - zxingControl.Torch(formsView.IsTorchOn); - } - - // Shut the scanner down if necessary - if (formsView == null && e.NewElement == null && zxingControl != null) - { - zxingControl.StopScanning(); - } - - base.OnElementChanged(e); - } - - protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) - { - base.OnElementPropertyChanged(sender, e); - - if (zxingControl == null) - return; - - switch (e.PropertyName) - { - case nameof(ZXingScannerView.IsTorchOn): - zxingControl.Torch(formsView.IsTorchOn); - break; - case nameof(ZXingScannerView.IsScanning): - if (formsView.IsScanning) - zxingControl.StartScanning(formsView.RaiseScanResult, formsView.Options); - else - zxingControl.StopScanning(); - break; - case nameof(ZXingScannerView.IsAnalyzing): - if (formsView.IsAnalyzing) - zxingControl.ResumeAnalysis(); - else - zxingControl.PauseAnalysis(); - break; - } - } - - private void FormsView_AutoFocusRequested(int x, int y) - { - zxingControl.AutoFocus(x, y); - } - - protected override async void OnDisconnectVisualChildren() - { - await zxingControl?.StopScanningAsync(); - base.OnDisconnectVisualChildren(); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/project.json b/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/project.json deleted file mode 100644 index c4e711589..000000000 --- a/Source/ZXing.Net.Mobile.Forms.WindowsUniversal/project.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "dependencies": { - "Microsoft.NETCore.UniversalWindowsPlatform": "6.0.1", - "Xamarin.Forms": "2.3.4.270" - }, - "frameworks": { - "uap10.0": {} - }, - "runtimes": { - "win10-arm": {}, - "win10-arm-aot": {}, - "win10-x86": {}, - "win10-x86-aot": {}, - "win10-x64": {}, - "win10-x64-aot": {} - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.iOS/Platform.cs b/Source/ZXing.Net.Mobile.Forms.iOS/Platform.cs deleted file mode 100644 index 7b4ebf9d5..000000000 --- a/Source/ZXing.Net.Mobile.Forms.iOS/Platform.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace ZXing.Net.Mobile.Forms.iOS -{ - public class Platform - { - public Platform () - { - } - - public static void Init () - { - ZXing.Net.Mobile.Forms.iOS.ZXingScannerViewRenderer.Init (); - ZXing.Net.Mobile.Forms.iOS.ZXingBarcodeImageViewRenderer.Init (); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.iOS/Properties/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.Forms.iOS/Properties/AssemblyInfo.cs deleted file mode 100644 index 1a8584026..000000000 --- a/Source/ZXing.Net.Mobile.Forms.iOS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("ZXing.Net.Mobile.Forms.iOS")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("redth")] -[assembly: AssemblyTrademark ("")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.Forms.iOS/ZXing.Net.Mobile.Forms.iOS.csproj b/Source/ZXing.Net.Mobile.Forms.iOS/ZXing.Net.Mobile.Forms.iOS.csproj deleted file mode 100644 index aee6862b2..000000000 --- a/Source/ZXing.Net.Mobile.Forms.iOS/ZXing.Net.Mobile.Forms.iOS.csproj +++ /dev/null @@ -1,70 +0,0 @@ - - - - Debug - AnyCPU - {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {8370ADB4-229C-4DEC-908F-B1A8FC155523} - Library - ZXing.Net.Mobile.Forms.iOS - Resources - ZXing.Net.Mobile.Forms.iOS - - - - - true - full - false - ..\..\Build\Forms\Debug\ios-unified\ - DEBUG; - prompt - 4 - false - - - full - true - ..\..\Build\Forms\Release\ios-unified\ - prompt - 4 - false - - - - - - - - - - - - - - - - - - - - {8E54DB74-C094-4016-859A-D1C7F2509A58} - ZXing.Net.Mobile.Forms - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A} - ZXing.Net.Mobile.iOS - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms.iOS/ZXingBarcodeImageViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.iOS/ZXingBarcodeImageViewRenderer.cs deleted file mode 100644 index cee2d87cf..000000000 --- a/Source/ZXing.Net.Mobile.Forms.iOS/ZXingBarcodeImageViewRenderer.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using ZXing.Net.Mobile.Forms.iOS; -using System.ComponentModel; -using System.Reflection; -using ZXing.Mobile; -using System.Threading.Tasks; -using Xamarin.Forms.Platform.iOS; -using Foundation; -using UIKit; - -[assembly:ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] -namespace ZXing.Net.Mobile.Forms.iOS -{ - [Preserve(AllMembers = true)] - public class ZXingBarcodeImageViewRenderer : ViewRenderer - { - public static void Init () - { - var temp = DateTime.Now; - } - - ZXingBarcodeImageView formsView; - UIImageView imageView; - - protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e) - { - regenerate (); - - base.OnElementPropertyChanged (sender, e); - } - - protected override async void OnElementChanged(ElementChangedEventArgs e) - { - formsView = Element; - - if (imageView == null) { - - imageView = new UIImageView {ContentMode = UIViewContentMode.ScaleAspectFit}; - - base.SetNativeControl (imageView); - } - - regenerate (); - - base.OnElementChanged (e); - } - - void regenerate () - { - if (formsView != null && formsView.BarcodeValue != null) - { - var writer = new ZXing.Mobile.BarcodeWriter(); - - if (formsView != null && formsView.BarcodeOptions != null) - writer.Options = formsView.BarcodeOptions; - if (formsView != null && formsView.BarcodeFormat != null) - writer.Format = formsView.BarcodeFormat; - - var value = formsView != null ? formsView.BarcodeValue : string.Empty; - - Device.BeginInvokeOnMainThread (() => { - var image = writer.Write (value); - - imageView.Image = image; - }); - } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms.iOS/ZXingScannerViewRenderer.cs b/Source/ZXing.Net.Mobile.Forms.iOS/ZXingScannerViewRenderer.cs deleted file mode 100644 index 987706e88..000000000 --- a/Source/ZXing.Net.Mobile.Forms.iOS/ZXingScannerViewRenderer.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using Xamarin.Forms; -using ZXing.Net.Mobile.Forms; -using Xamarin.Forms.Platform.iOS; -using System.ComponentModel; -using System.Reflection; -using Foundation; -using ZXing.Net.Mobile.Forms.iOS; -using UIKit; - -[assembly:ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] -namespace ZXing.Net.Mobile.Forms.iOS -{ - [Preserve(AllMembers = true)] - public class ZXingScannerViewRenderer : ViewRenderer - { - // No-op to be called from app to prevent linker from stripping this out - public static void Init () - { - var temp = DateTime.Now; - } - - protected ZXingScannerView formsView; - protected ZXing.Mobile.ZXingScannerView zxingView; - - protected override void OnElementChanged(ElementChangedEventArgs e) - { - AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - - formsView = Element; - - if (zxingView == null) { - - // Process requests for autofocus - formsView.AutoFocusRequested += (x, y) => { - if (zxingView != null) { - if (x < 0 && y < 0) - zxingView.AutoFocus (); - else - zxingView.AutoFocus (x, y); - } - }; - - - zxingView = new ZXing.Mobile.ZXingScannerView (); - zxingView.UseCustomOverlayView = true; - zxingView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - - base.SetNativeControl (zxingView); - - if (formsView.IsScanning) - zxingView.StartScanning (formsView.RaiseScanResult, formsView.Options); - - if (!formsView.IsAnalyzing) - zxingView.PauseAnalysis (); - - if (formsView.IsTorchOn) - zxingView.Torch (formsView.IsTorchOn); - } - - base.OnElementChanged (e); - } - - protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e) - { - base.OnElementPropertyChanged (sender, e); - - if (zxingView == null) - return; - - switch (e.PropertyName) { - case nameof (ZXingScannerView.IsTorchOn): - zxingView.Torch (formsView.IsTorchOn); - break; - case nameof (ZXingScannerView.IsScanning): - if (formsView.IsScanning) - zxingView.StartScanning (formsView.RaiseScanResult, formsView.Options); - else - zxingView.StopScanning (); - break; - case nameof (ZXingScannerView.IsAnalyzing): - if (formsView.IsAnalyzing) - zxingView.ResumeAnalysis (); - else - zxingView.PauseAnalysis (); - break; - } - } - - public override void TouchesEnded (NSSet touches, UIKit.UIEvent evt) - { - base.TouchesEnded (touches, evt); - - zxingView.AutoFocus (); - } - - public override void LayoutSubviews () - { - base.LayoutSubviews (); - - // Find the best guess at current orientation - var o = UIApplication.SharedApplication.StatusBarOrientation; - if (ViewController != null) - o = ViewController.InterfaceOrientation; - - // Tell the native view to rotate - zxingView.DidRotate (o); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms/BarcodeWriter.cs b/Source/ZXing.Net.Mobile.Forms/BarcodeWriter.cs deleted file mode 100644 index 1241869a0..000000000 --- a/Source/ZXing.Net.Mobile.Forms/BarcodeWriter.cs +++ /dev/null @@ -1,63 +0,0 @@ -// -//using ZXing.Rendering; -//using Xamarin.Forms; -//using System.IO; -//using ZXing.Common; -// -//namespace ZXing.Mobile -//{ -// /// -// /// A smart class to encode some content to a barcode image -// /// -// public class BarcodeWriter : ZXing.IBarcodeWriterGeneric -// { -// ZXing.BarcodeWriterPixelData writer; -// -// /// -// /// Initializes a new instance of the class. -// /// -// public BarcodeWriter() -// { -// writer = new ZXing.BarcodeWriterPixelData (); -// } -// -// public Writer Encoder { -// get { return writer.Encoder; } -// set { writer.Encoder = value; } -// } -// -// public BarcodeFormat Format { -// get { return writer.Format; } -// set { writer.Format = value; } -// } -// -// public EncodingOptions Options { -// get { return writer.Options; } -// set { writer.Options = value; } -// } -// -//// public IBarcodeRenderer Renderer { -//// get { return writer.Renderer; } -//// set { writer.Renderer = value; } -//// } -// -// public ImageSource Write (string contents) -// { -// var bm = Encode (contents); -// return Write (bm); -// } -// -// public ZXing.Common.BitMatrix Encode (string contents) -// { -// return writer.Encode (contents); -// } -// -// public ImageSource Write (ZXing.Common.BitMatrix matrix) -// { -// var data = writer.Write (matrix); -// -// -// return ImageSource.FromStream (() => new MemoryStream (data.Pixels)); -// } -// } -//} diff --git a/Source/ZXing.Net.Mobile.Forms/Properties/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.Forms/Properties/AssemblyInfo.cs deleted file mode 100644 index 79ca6cc15..000000000 --- a/Source/ZXing.Net.Mobile.Forms/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("ZXing.Net.Mobile.Forms")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("redth")] -[assembly: AssemblyTrademark ("")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj b/Source/ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj deleted file mode 100644 index 79fd21eca..000000000 --- a/Source/ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj +++ /dev/null @@ -1,56 +0,0 @@ - - - - Debug - AnyCPU - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {8E54DB74-C094-4016-859A-D1C7F2509A58} - Library - ZXing.Net.Mobile.Forms - ZXing.Net.Mobile.Forms - Profile259 - v4.5 - - - - - true - full - false - ..\..\Build\Forms\Debug\portable\ - DEBUG; - prompt - 4 - false - - - full - true - ..\..\Build\Forms\Release\portable\ - prompt - 4 - false - - - - - - - - - - - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.cs b/Source/ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.cs deleted file mode 100644 index cec214106..000000000 --- a/Source/ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Xamarin.Forms; -using ZXing.Common; - -namespace ZXing.Net.Mobile.Forms -{ - public class ZXingBarcodeImageView : Image - { - public ZXingBarcodeImageView () : base () - { - - } - - public static readonly BindableProperty BarcodeFormatProperty = - BindableProperty.Create( nameof( BarcodeFormat ), typeof( BarcodeFormat ), typeof( ZXingBarcodeImageView ), - defaultValue: BarcodeFormat.QR_CODE, - defaultBindingMode: BindingMode.TwoWay ); - - public BarcodeFormat BarcodeFormat { - get { return (BarcodeFormat)GetValue (BarcodeFormatProperty); } - set { SetValue (BarcodeFormatProperty, value); } - } - - - public static readonly BindableProperty BarcodeValueProperty = - BindableProperty.Create( nameof(BarcodeValue), typeof(string), typeof(ZXingBarcodeImageView), - defaultValue: string.Empty, - defaultBindingMode: BindingMode.TwoWay); - - public string BarcodeValue { - get { return (string)GetValue (BarcodeValueProperty); } - set { SetValue (BarcodeValueProperty, value); } - } - - - public static readonly BindableProperty BarcodeOptionsProperty = - BindableProperty.Create( nameof(BarcodeOptions), typeof(EncodingOptions), typeof(ZXingBarcodeImageView), - defaultValue: new EncodingOptions (), - defaultBindingMode: BindingMode.TwoWay); - - public EncodingOptions BarcodeOptions { - get { return (EncodingOptions)GetValue (BarcodeOptionsProperty); } - set { SetValue (BarcodeOptionsProperty, value); } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.cs b/Source/ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.cs deleted file mode 100644 index bd95a5b24..000000000 --- a/Source/ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.Windows.Input; -using Xamarin.Forms; - -namespace ZXing.Net.Mobile.Forms -{ - public class ZXingDefaultOverlay : Grid - { - Label topText; - Label botText; - Button flash; - - public delegate void FlashButtonClickedDelegate (Button sender, EventArgs e); - public event FlashButtonClickedDelegate FlashButtonClicked; - - public ZXingDefaultOverlay () - { - BindingContext = this; - - VerticalOptions = LayoutOptions.FillAndExpand; - HorizontalOptions = LayoutOptions.FillAndExpand; - - RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Star) }); - RowDefinitions.Add (new RowDefinition { Height = new GridLength (2, GridUnitType.Star) }); - RowDefinitions.Add (new RowDefinition { Height = new GridLength (1, GridUnitType.Star) }); - ColumnDefinitions.Add (new ColumnDefinition { Width = new GridLength (1, GridUnitType.Star) }); - - - Children.Add (new BoxView { - VerticalOptions = LayoutOptions.Fill, - HorizontalOptions = LayoutOptions.FillAndExpand, - BackgroundColor = Color.Black, - Opacity = 0.7, - }, 0, 0); - - Children.Add (new BoxView { - VerticalOptions = LayoutOptions.Fill, - HorizontalOptions = LayoutOptions.FillAndExpand, - BackgroundColor = Color.Black, - Opacity = 0.7, - }, 0, 2); - - Children.Add (new BoxView { - VerticalOptions = LayoutOptions.Center, - HorizontalOptions = LayoutOptions.FillAndExpand, - HeightRequest = 3, - BackgroundColor = Color.Red, - Opacity = 0.6, - }, 0, 1); - - topText = new Label { - VerticalOptions = LayoutOptions.Center, - HorizontalOptions = LayoutOptions.Center, - TextColor = Color.White, - AutomationId = "zxingDefaultOverlay_TopTextLabel", - }; - topText.SetBinding( Label.TextProperty, new Binding( nameof( TopText ) ) ); - Children.Add (topText, 0, 0); - - botText = new Label { - VerticalOptions = LayoutOptions.Center, - HorizontalOptions = LayoutOptions.Center, - TextColor = Color.White, - AutomationId = "zxingDefaultOverlay_BottomTextLabel", - }; - botText.SetBinding( Label.TextProperty, new Binding( nameof( BottomText ) ) ); - Children.Add (botText, 0, 2); - - flash = new Button { - HorizontalOptions = LayoutOptions.End, - VerticalOptions = LayoutOptions.Start, - Text = "Flash", - TextColor = Color.White, - AutomationId = "zxingDefaultOverlay_FlashButton", - }; - flash.SetBinding( Button.IsVisibleProperty, new Binding( nameof( ShowFlashButton ) ) ); - flash.Clicked += (sender, e) => { - FlashButtonClicked?.Invoke( flash, e ); - }; - - Children.Add (flash, 0, 0); - } - - public static readonly BindableProperty TopTextProperty = - BindableProperty.Create( nameof( TopText ), typeof( string ), typeof( ZXingDefaultOverlay ), string.Empty ); - public string TopText - { - get { return ( string )GetValue( TopTextProperty ); } - set { SetValue( TopTextProperty, value ); } - } - - public static readonly BindableProperty BottomTextProperty = - BindableProperty.Create( nameof( BottomText ), typeof( string ), typeof( ZXingDefaultOverlay ), string.Empty ); - public string BottomText - { - get { return ( string )GetValue( BottomTextProperty ); } - set { SetValue( BottomTextProperty, value ); } - } - - public static readonly BindableProperty ShowFlashButtonProperty = - BindableProperty.Create( nameof( ShowFlashButton ), typeof( bool ), typeof( ZXingDefaultOverlay ), false ); - public bool ShowFlashButton - { - get { return ( bool )GetValue( ShowFlashButtonProperty ); } - set { SetValue( ShowFlashButtonProperty, value ); } - } - - public static BindableProperty FlashCommandProperty = - BindableProperty.Create( nameof( FlashCommand ), typeof( ICommand ), typeof( ZXingDefaultOverlay ), - defaultValue: default(ICommand), - propertyChanged: OnFlashCommandChanged ); - public ICommand FlashCommand - { - get { return (ICommand)GetValue( FlashCommandProperty ); } - set { SetValue( FlashCommandProperty, value ); } - } - - private static void OnFlashCommandChanged( BindableObject bindable, object oldvalue, object newValue ) - { - var overlay = bindable as ZXingDefaultOverlay; - if( overlay?.flash == null ) return; - overlay.flash.Command = newValue as Command; - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms/ZXingScannerPage.cs b/Source/ZXing.Net.Mobile.Forms/ZXingScannerPage.cs deleted file mode 100644 index 34b1bfcd4..000000000 --- a/Source/ZXing.Net.Mobile.Forms/ZXingScannerPage.cs +++ /dev/null @@ -1,188 +0,0 @@ -using Xamarin.Forms; -using ZXing.Mobile; - -namespace ZXing.Net.Mobile.Forms -{ - public class ZXingScannerPage : ContentPage - { - ZXingScannerView zxing; - ZXingDefaultOverlay defaultOverlay = null; - - public ZXingScannerPage (MobileBarcodeScanningOptions options = null, View customOverlay = null) : base () - { - zxing = new ZXingScannerView - { - HorizontalOptions = LayoutOptions.FillAndExpand, - VerticalOptions = LayoutOptions.FillAndExpand, - Options = options, - AutomationId = "zxingScannerView" - }; - - zxing.SetBinding( ZXingScannerView.IsTorchOnProperty, new Binding( nameof( IsTorchOn ) ) ); - zxing.SetBinding( ZXingScannerView.IsAnalyzingProperty, new Binding( nameof( IsAnalyzing ) ) ); - zxing.SetBinding( ZXingScannerView.IsScanningProperty, new Binding( nameof( IsScanning ) ) ); - zxing.SetBinding( ZXingScannerView.HasTorchProperty, new Binding( nameof( HasTorch ) ) ); - zxing.SetBinding( ZXingScannerView.ResultProperty, new Binding( nameof( Result ) ) ); - - zxing.OnScanResult += (result) => { - this.OnScanResult?.Invoke( result ); - //Device.BeginInvokeOnMainThread (() => eh (result)); - }; - - if (customOverlay == null) { - defaultOverlay = new ZXingDefaultOverlay () { AutomationId = "zxingDefaultOverlay" }; - - defaultOverlay.SetBinding( ZXingDefaultOverlay.TopTextProperty, new Binding( nameof( DefaultOverlayTopText ) ) ); - defaultOverlay.SetBinding( ZXingDefaultOverlay.BottomTextProperty, new Binding( nameof( DefaultOverlayBottomText ) ) ); - defaultOverlay.SetBinding( ZXingDefaultOverlay.ShowFlashButtonProperty, new Binding( nameof( DefaultOverlayShowFlashButton ) ) ); - - DefaultOverlayTopText = "Hold your phone up to the barcode"; - DefaultOverlayBottomText = "Scanning will happen automatically"; - DefaultOverlayShowFlashButton = HasTorch; - - defaultOverlay.FlashButtonClicked += (sender, e) => { - zxing.IsTorchOn = !zxing.IsTorchOn; - }; - - Overlay = defaultOverlay; - } else { - Overlay = customOverlay; - } - - var grid = new Grid - { - VerticalOptions = LayoutOptions.FillAndExpand, - HorizontalOptions = LayoutOptions.FillAndExpand, - }; - grid.Children.Add(zxing); - grid.Children.Add(Overlay); - - // The root page of your application - Content = grid; - } - - #region Default Overlay Properties - - public static readonly BindableProperty DefaultOverlayTopTextProperty = - BindableProperty.Create( nameof( DefaultOverlayTopText ), typeof( string ), typeof( ZXingScannerPage ), string.Empty ); - public string DefaultOverlayTopText - { - get { return ( string )GetValue( DefaultOverlayTopTextProperty ); } - set { SetValue( DefaultOverlayTopTextProperty, value ); } - } - - public static readonly BindableProperty DefaultOverlayBottomTextProperty = - BindableProperty.Create( nameof( DefaultOverlayBottomText ), typeof( string ), typeof( ZXingScannerPage ), string.Empty ); - public string DefaultOverlayBottomText - { - get { return ( string )GetValue( DefaultOverlayBottomTextProperty ); } - set { SetValue( DefaultOverlayBottomTextProperty, value ); } - } - - public static readonly BindableProperty DefaultOverlayShowFlashButtonProperty = - BindableProperty.Create( nameof( DefaultOverlayShowFlashButton ), typeof( bool ), typeof( ZXingScannerPage ), false ); - public bool DefaultOverlayShowFlashButton - { - get { return ( bool )GetValue( DefaultOverlayShowFlashButtonProperty ); } - set { SetValue( DefaultOverlayShowFlashButtonProperty, value ); } - } - - #endregion - - public delegate void ScanResultDelegate (ZXing.Result result); - public event ScanResultDelegate OnScanResult; - - public View Overlay { - get; - private set; - } - - #region Functions - - public void ToggleTorch () - { - if (zxing != null) - zxing.ToggleTorch (); - } - - protected override void OnAppearing () - { - base.OnAppearing (); - - zxing.IsScanning = true; - } - - protected override void OnDisappearing () - { - zxing.IsScanning = false; - - base.OnDisappearing (); - } - - public void PauseAnalysis () - { - if (zxing != null) - zxing.IsAnalyzing = false; - } - - public void ResumeAnalysis () - { - if (zxing != null) - zxing.IsAnalyzing = true; - } - - public void AutoFocus () - { - if (zxing != null) - zxing.AutoFocus (); - } - - public void AutoFocus (int x, int y) - { - if (zxing != null) - zxing.AutoFocus (x, y); - } - - #endregion - - public static readonly BindableProperty IsTorchOnProperty = - BindableProperty.Create( nameof( IsTorchOn ), typeof( bool ), typeof( ZXingScannerPage ), false ); - public bool IsTorchOn - { - get { return ( bool )GetValue( IsTorchOnProperty ); } - set { SetValue( IsTorchOnProperty, value ); } - } - - public static readonly BindableProperty IsAnalyzingProperty = - BindableProperty.Create( nameof( IsAnalyzing ), typeof( bool ), typeof( ZXingScannerPage ), false ); - public bool IsAnalyzing - { - get { return ( bool )GetValue( IsAnalyzingProperty ); } - set { SetValue( IsAnalyzingProperty, value ); } - } - - public static readonly BindableProperty IsScanningProperty = - BindableProperty.Create( nameof( IsScanning ), typeof( bool ), typeof( ZXingScannerPage ), false ); - public bool IsScanning - { - get { return ( bool )GetValue( IsScanningProperty ); } - set { SetValue( IsScanningProperty, value ); } - } - - public static readonly BindableProperty HasTorchProperty = - BindableProperty.Create( nameof( HasTorch ), typeof( bool ), typeof( ZXingScannerPage ), false ); - public bool HasTorch { - get { return ( bool )GetValue( HasTorchProperty ); } - set { SetValue( HasTorchProperty, value ); } - } - - public static readonly BindableProperty ResultProperty = - BindableProperty.Create( nameof( Result ), typeof( Result ), typeof( ZXingScannerPage ), default( Result ) ); - public Result Result - { - get { return ( Result )GetValue( ResultProperty ); } - set { SetValue( ResultProperty, value ); } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Forms/ZXingScannerView.cs b/Source/ZXing.Net.Mobile.Forms/ZXingScannerView.cs deleted file mode 100644 index 752c52b77..000000000 --- a/Source/ZXing.Net.Mobile.Forms/ZXingScannerView.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Windows.Input; -using Xamarin.Forms; -using ZXing.Mobile; - -namespace ZXing.Net.Mobile.Forms -{ - public class ZXingScannerView : View - { - public delegate void ScanResultDelegate (ZXing.Result result); - public event ScanResultDelegate OnScanResult; - - public event Action AutoFocusRequested; - - public ZXingScannerView () - { - VerticalOptions = LayoutOptions.FillAndExpand; - HorizontalOptions = LayoutOptions.FillAndExpand; - } - - public void RaiseScanResult (Result result) - { - Result = result; - OnScanResult?.Invoke( Result ); - ScanResultCommand?.Execute( Result ); - } - - - public void ToggleTorch () - { - IsTorchOn = !IsTorchOn; - } - - public void AutoFocus () - { - AutoFocusRequested?.Invoke (-1, -1); - } - - public void AutoFocus (int x, int y) - { - AutoFocusRequested?.Invoke (x, y); - } - - - public static readonly BindableProperty OptionsProperty = - BindableProperty.Create( nameof( Options ), typeof( MobileBarcodeScanningOptions ), typeof( ZXingScannerView ), MobileBarcodeScanningOptions.Default ); - - public MobileBarcodeScanningOptions Options { - get { return (MobileBarcodeScanningOptions)GetValue (OptionsProperty); } - set { SetValue (OptionsProperty, value); } - } - - public static readonly BindableProperty IsScanningProperty = - BindableProperty.Create( nameof( IsScanning ), typeof( bool ), typeof( ZXingScannerView ), false ); - - public bool IsScanning { - get { return (bool)GetValue (IsScanningProperty); } - set { SetValue (IsScanningProperty, value); } - } - - public static readonly BindableProperty IsTorchOnProperty = - BindableProperty.Create( nameof( IsTorchOn ), typeof( bool ), typeof( ZXingScannerView ), false ); - public bool IsTorchOn { - get { return (bool)GetValue (IsTorchOnProperty); } - set { SetValue (IsTorchOnProperty, value); } - } - - public static readonly BindableProperty HasTorchProperty = - BindableProperty.Create( nameof( HasTorch ), typeof( bool ), typeof( ZXingScannerView ), false ); - public bool HasTorch { - get { return (bool)GetValue (HasTorchProperty); } - } - - public static readonly BindableProperty IsAnalyzingProperty = - BindableProperty.Create( nameof( IsAnalyzing ), typeof( bool ), typeof( ZXingScannerView ), true ); - - public bool IsAnalyzing { - get { return (bool)GetValue (IsAnalyzingProperty); } - set { SetValue (IsAnalyzingProperty, value); } - } - - public static readonly BindableProperty ResultProperty = - BindableProperty.Create( nameof( Result ), typeof( Result ), typeof( ZXingScannerView ), default( Result ) ); - public Result Result - { - get { return ( Result )GetValue( ResultProperty ); } - set { SetValue( ResultProperty, value ); } - } - - public static readonly BindableProperty ScanResultCommandProperty = - BindableProperty.Create( nameof( ScanResultCommand ), typeof( ICommand ), typeof( ZXingScannerView ), default( ICommand ) ); - public ICommand ScanResultCommand - { - get { return ( ICommand )GetValue( ScanResultCommandProperty ); } - set { SetValue( ScanResultCommandProperty, value ); } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Portable/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.Portable/AssemblyInfo.cs deleted file mode 100644 index 51fbaefd9..000000000 --- a/Source/ZXing.Net.Mobile.Portable/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("ZXing.Net.Mobile.Portable")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("redth")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.Portable/MobileBarcodeScanner.cs b/Source/ZXing.Net.Mobile.Portable/MobileBarcodeScanner.cs deleted file mode 100644 index efa25910b..000000000 --- a/Source/ZXing.Net.Mobile.Portable/MobileBarcodeScanner.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Threading.Tasks; - -namespace ZXing.Mobile -{ - public class MobileBarcodeScanner : MobileBarcodeScannerBase - { - NotSupportedException ex = new NotSupportedException ("Use the platform specific implementation instead!"); - - public override Task Scan(MobileBarcodeScanningOptions options) - { - throw ex; - } - - public override void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) - { - throw ex; - } - - public override void Cancel() - { - throw ex; - } - - public override void AutoFocus () - { - throw ex; - } - - public override void Torch (bool on) - { - throw ex; - } - - public override void ToggleTorch () - { - throw ex; - } - - public override void PauseAnalysis() - { - throw ex; - } - - public override void ResumeAnalysis() - { - throw ex; - } - - public override bool IsTorchOn { - get { - throw ex; - } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.Portable/ZXing.Net.Mobile.Portable.csproj b/Source/ZXing.Net.Mobile.Portable/ZXing.Net.Mobile.Portable.csproj deleted file mode 100644 index 692c4690e..000000000 --- a/Source/ZXing.Net.Mobile.Portable/ZXing.Net.Mobile.Portable.csproj +++ /dev/null @@ -1,50 +0,0 @@ - - - - Debug - AnyCPU - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {78407906-99C6-42B0-A511-973FC78C58CB} - Library - ZXing.Mobile - ZXingNetMobile - Profile259 - v4.5 - - - true - full - false - ..\..\Build\Debug\portable - DEBUG; - prompt - 4 - false - - - full - true - ..\..\Build\Release\portable - prompt - 4 - false - - - - - - - - - - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} - zxing.portable - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.WindowsPhone/AssemblyInfo.cs deleted file mode 100644 index fc30271f0..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("ZXing.Net.Mobile.WindowsPhone")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("redth")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/AudioVideoCaptureDeviceCameraReader.cs b/Source/ZXing.Net.Mobile.WindowsPhone/AudioVideoCaptureDeviceCameraReader.cs deleted file mode 100644 index e2e2f04a7..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/AudioVideoCaptureDeviceCameraReader.cs +++ /dev/null @@ -1,417 +0,0 @@ -using Microsoft.Devices; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Media; -using System.Windows.Threading; -using Windows.Phone.Media.Capture; - -namespace ZXing.Mobile -{ - /// - /// Replacement camera preview reader/processor that uses SL8 APIs and fixes issues with turning on the flash/torch. - /// Written by Rodrigo 'r2d2rigo' Diaz - /// http://www.r2d2rigo.es - /// Based on SimpleCameraReader written by Henning M. Stephansen - /// http://www.henning.ms - /// - public class AudioVideoCaptureDeviceCameraReader - { - public delegate void DecodingCompletedEventHandler(object sender, Result result); - - public event DecodingCompletedEventHandler DecodingCompleted; - - public delegate void CameraInitializedEventHandler(object sender, bool initialized); - - public event CameraInitializedEventHandler CameraInitialized; - - private DispatcherTimer _timer; - private PhotoCameraLuminanceSource _luminance; - private MultiFormatReader _reader; - private AudioVideoCaptureDevice _photoCamera; - - private TimeSpan _scanInterval; - private DateTime _lastAnalysis = DateTime.MinValue; - - bool doCancel = false; - private bool _initialized; - private bool _wasScanned = false; - - private VideoBrush _surface; - - private Dispatcher uiDispatcher; - - //private System.Threading.CancellationTokenSource cancelTokenSource = new System.Threading.CancellationTokenSource(); - - /// - /// Sets how often we should try to decode - /// the camera feed for codes - /// - public double ScanInterval - { - get - { - return _scanInterval.TotalMilliseconds <= 0 ? _scanInterval.TotalMilliseconds : 150; - } - set - { - _scanInterval = TimeSpan.FromMilliseconds(value); - } - } - - /// - /// Gets the number of degrees that the viewfinder brush needs to be rotated - /// clockwise to align with the camera sensor - /// - public double CameraOrientation - { - get - { - return _photoCamera != null ? (double)_photoCamera.SensorRotationInDegrees : 0; - } - } - - /// - /// Returns the AudioVideoCaptureDevice instance - /// - public AudioVideoCaptureDevice Camera - { - get - { - return _photoCamera; - } - } - - /// - /// Get or set whether the camera should flash on auto-focus or not - /// - public FlashMode FlashMode - { - get - { - if (_initialized && _photoCamera != null) - { - var supportedCameraModes = AudioVideoCaptureDevice.GetSupportedPropertyValues(_photoCamera.SensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode); - - if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On)) - { - UInt32 propValue = (UInt32)_photoCamera.GetProperty(KnownCameraAudioVideoProperties.VideoTorchMode); - var torchStatus = (VideoTorchMode)propValue; - - switch (torchStatus) - { - default: - case VideoTorchMode.Off: - return FlashMode.Off; - case VideoTorchMode.On: - return FlashMode.On; - case VideoTorchMode.Auto: - return FlashMode.Auto; - } - } - } - - return FlashMode.Off; - } - set - { - if (_photoCamera != null) - { - var supportedCameraModes = AudioVideoCaptureDevice.GetSupportedPropertyValues(_photoCamera.SensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode); - - if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On)) - { - VideoTorchMode torchStatus = VideoTorchMode.Off; - - switch (value) - { - default: - case FlashMode.Off: - torchStatus = VideoTorchMode.Off; - break; - case FlashMode.On: - torchStatus = VideoTorchMode.On; - break; - case FlashMode.Auto: - torchStatus = VideoTorchMode.Auto; - break; - } - - _photoCamera.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, torchStatus); - } - } - } - } - - public bool HasTorch - { - get - { - var supportedCameraModes = AudioVideoCaptureDevice.GetSupportedPropertyValues(_photoCamera.SensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode); - - return supportedCameraModes != null && supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On); - } - } - - public bool IsAnalyzing - { - get; set; - } - - - public MobileBarcodeScanningOptions Options { get; set; } - //public MobileBarcodeScannerBase Scanner { get; set; } - - /// - /// Initializes the SimpleCameraReader - /// - /// Sets whether the camera should scan on completed autofocus or on a timely fashion - public AudioVideoCaptureDeviceCameraReader(MobileBarcodeScanningOptions options) - { - this.Options = options ?? MobileBarcodeScanningOptions.Default; - // this.Scanner = scanner; - - Initialize(); - } - - private void Initialize() - { - //ScanOnAutoFocus = true; // scanOnAutoFocus; - - // Gets the Dispatcher for the current application so we can invoke the UI-Thread to get - // preview-image and fire our timer events - uiDispatcher = Application.Current.RootVisual.Dispatcher; - - _reader = this.Options.BuildMultiFormatReader(); - - InitializeCamera(); - } - - private async Task InitializeCamera() - { - if (Options.UseFrontCameraIfAvailable.HasValue && Options.UseFrontCameraIfAvailable.Value) - { - try - { - var frontCameraCaptureResolutions = AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Front); - var resolution = GetResolution(frontCameraCaptureResolutions.OrderBy(r => r.Width * r.Height)); - _photoCamera = await AudioVideoCaptureDevice.OpenForVideoOnlyAsync(CameraSensorLocation.Front, resolution); - } - catch (Exception ex) - { - MobileBarcodeScanner.Log("Failed to create front facing camera: {0}", ex); - } - } - - MobileBarcodeScanner.Log("InitializeCamera"); - - if (_photoCamera == null) - { - var backCameraCaptureResolutions = AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back); - var resolution = GetResolution(backCameraCaptureResolutions.OrderBy(r => r.Width * r.Height)); - _photoCamera = await AudioVideoCaptureDevice.OpenForVideoOnlyAsync(CameraSensorLocation.Back, resolution); - } - - IsAnalyzing = true; - - OnPhotoCameraInitialized(this, new CameraOperationCompletedEventArgs(true, null)); - - MobileBarcodeScanner.Log("Wired up Initizialied"); - } - - Windows.Foundation.Size GetResolution (IEnumerable availableResolutions) - { - var size = availableResolutions.FirstOrDefault(); - - if (this.Options.CameraResolutionSelector != null) - { - var cameraResolutions = from r in availableResolutions select new CameraResolution { Width = (int)r.Width, Height = (int)r.Height }; - var selected = this.Options.CameraResolutionSelector(cameraResolutions.ToList ()); - - if (selected != null) - size = availableResolutions.FirstOrDefault(r => r.Width == selected.Width && r.Height == selected.Height); - } - else - { - // Loop through all supported sizes - foreach (var sps in availableResolutions) - { - // Find one that's >= 640x360 but <= 1000x1000 - // This will likely pick the *smallest* size in that range, which should be fine - if (sps.Width >= 640 && sps.Width <= 1000 && sps.Height >= 360 && sps.Height <= 1000) - size = sps; - } - } - - return size; - } - - /// - /// Starts the camera and capture process - /// - public void Start() - { - if (_photoCamera == null) - InitializeCamera(); - - // At this point if application exits etc. without proper stopping of camera - // it will throw an Exception. - try - { - // Invokes these method calls on the UI-thread - uiDispatcher.BeginInvoke(() => - { - _timer = new DispatcherTimer(); - _timer.Interval = _scanInterval; - _timer.Tick += (o, arg) => ScanPreviewBuffer(); - - CameraButtons.ShutterKeyHalfPressed += CameraButtons_ShutterKeyHalfPressed; - - _timer.Start(); - }); - - } - catch (Exception) - { - // Do nothing - } - - Focus(); - } - - private void CameraButtons_ShutterKeyHalfPressed(object sender, EventArgs e) - { - Focus(); - } - - public async Task Focus() - { - try - { - await _photoCamera.FocusAsync(); - } - catch { } - } - - public void Focus(Point point) - { - try - { - // TODO: point focusing - //if (_photoCamera.IsFocusAtPointSupported) - // _photoCamera.FocusAtPoint(point.X, point.Y); - //else - Focus(); - } - catch { } - } - - /// - /// Stops the camera and capture process - /// - public void Stop() - { - IsAnalyzing = false; - doCancel = true; - - if (_timer != null && _timer.IsEnabled) - _timer.Stop(); - - if (_photoCamera != null) - { - CameraButtons.ShutterKeyHalfPressed -= CameraButtons_ShutterKeyHalfPressed; - - _photoCamera.Dispose(); - _photoCamera = null; - } - } - - private void OnPhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e) - { - MobileBarcodeScanner.Log("Initialized Camera"); - - if (_photoCamera == null) - return; - - MobileBarcodeScanner.Log("Creating Luminance Source"); - - var width = Convert.ToInt32(_photoCamera.PreviewResolution.Width); - var height = Convert.ToInt32(_photoCamera.PreviewResolution.Height); - - _luminance = new PhotoCameraLuminanceSource(width, height); - - var supportedCameraModes = AudioVideoCaptureDevice.GetSupportedPropertyValues(_photoCamera.SensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode); - if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On)) - { - _photoCamera.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.Off); - } - - _initialized = true; - - MobileBarcodeScanner.Log("Luminance Source Created"); - - OnCameraInitialized(_initialized); - } - - private void ScanPreviewBuffer() - { - if (!IsAnalyzing) return; - if (_photoCamera == null) return; - if (!_initialized) return; - - // Don't scan too frequently - // Check the minimum time between frames - // as well as the min time between continuous scans - var msSinceLastPreview = (DateTime.UtcNow - _lastAnalysis).TotalMilliseconds; - if ((DateTime.UtcNow - _lastAnalysis).TotalMilliseconds < Options.DelayBetweenAnalyzingFrames - || (_wasScanned && msSinceLastPreview < Options.DelayBetweenContinuousScans)) - return; - - _wasScanned = false; - _lastAnalysis = DateTime.UtcNow; - - try - { - _photoCamera.GetPreviewBufferY(_luminance.PreviewBufferY); - var binarizer = new ZXing.Common.HybridBinarizer(_luminance); - - var binBitmap = new BinaryBitmap(binarizer); - - var result = _reader.decode(binBitmap); - - if (result != null) - { - _wasScanned = true; - OnDecodingCompleted(result); - } - } - catch (Exception) - { - // If decoding fails it will throw a ReaderException - // and we're not interested in doing anything with it - } - } - - /// - /// When a decode was successful we get a result back - /// - /// Result of the decoding - protected virtual void OnDecodingCompleted(Result result) - { - if (DecodingCompleted != null) - DecodingCompleted(this, result); - } - - /// - /// When camera is finished initializing and ready to go. Put Start after this event has fired - /// - /// A boolean value indicating whether camera was successfully initialized - protected virtual void OnCameraInitialized(bool initialized) - { - if (CameraInitialized != null) - CameraInitialized(this, initialized); - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/BarcodeWriter.cs b/Source/ZXing.Net.Mobile.WindowsPhone/BarcodeWriter.cs deleted file mode 100644 index 6762dc024..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/BarcodeWriter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ZXing.Mobile -{ - /// - /// A smart class to encode some content to a barcode image - /// - public class BarcodeWriter : BarcodeWriterGeneric, IBarcodeWriter - { - /// - /// Initializes a new instance of the class. - /// - public BarcodeWriter() - { - Renderer = new WriteableBitmapRenderer(); - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/MobileBarcodeScanner.cs b/Source/ZXing.Net.Mobile.WindowsPhone/MobileBarcodeScanner.cs deleted file mode 100644 index acb9515b3..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/MobileBarcodeScanner.cs +++ /dev/null @@ -1,134 +0,0 @@ -using System; -using System.Threading.Tasks; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Shapes; -using ZXing; - -namespace ZXing.Mobile -{ - public class MobileBarcodeScanner : MobileBarcodeScannerBase - { - public MobileBarcodeScanner () : base () - { - this.Dispatcher = Deployment.Current.Dispatcher; - } - - public MobileBarcodeScanner(System.Windows.Threading.Dispatcher dispatcher) : base() - { - this.Dispatcher = dispatcher; - } - - public System.Windows.Threading.Dispatcher Dispatcher { get; set; } - - public override void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) - { - //Navigate: /ZxingSharp.WindowsPhone;component/Scan.xaml - - ScanPage.ScanningOptions = options; - ScanPage.ResultFoundAction = (r) => - { - scanHandler(r); - }; - - ScanPage.UseCustomOverlay = this.UseCustomOverlay; - ScanPage.CustomOverlay = this.CustomOverlay; - ScanPage.TopText = TopText; - ScanPage.BottomText = BottomText; - ScanPage.ContinuousScanning = true; - - Dispatcher.BeginInvoke(() => - { - ((Microsoft.Phone.Controls.PhoneApplicationFrame)Application.Current.RootVisual).Navigate( - new Uri("/ZXingNetMobile;component/ScanPage.xaml", UriKind.Relative)); - }); - } - - public override Task Scan(MobileBarcodeScanningOptions options) - { - return Task.Factory.StartNew(new Func(() => - { - var scanResultResetEvent = new System.Threading.ManualResetEvent(false); - - Result result = null; - - //Navigate: /ZxingSharp.WindowsPhone;component/Scan.xaml - - ScanPage.ScanningOptions = options; - ScanPage.ResultFoundAction = (r) => - { - result = r; - scanResultResetEvent.Set(); - }; - - ScanPage.UseCustomOverlay = this.UseCustomOverlay; - ScanPage.CustomOverlay = this.CustomOverlay; - ScanPage.TopText = TopText; - ScanPage.BottomText = BottomText; - ScanPage.ContinuousScanning = false; - - Dispatcher.BeginInvoke(() => - { - ((Microsoft.Phone.Controls.PhoneApplicationFrame)Application.Current.RootVisual).Navigate( - new Uri("/ZXingNetMobile;component/ScanPage.xaml", UriKind.Relative)); - }); - - scanResultResetEvent.WaitOne(); - - return result; - })); - } - - public override void Cancel() - { - ScanPage.RequestCancel(); - } - - public override void Torch(bool on) - { - ScanPage.RequestTorch(on); - } - - public override void ToggleTorch() - { - ScanPage.RequestToggleTorch(); - } - - public override void PauseAnalysis () - { - ScanPage.RequestPauseAnalysis (); - } - - public override void ResumeAnalysis () - { - ScanPage.RequestResumeAnalysis (); - } - - public override bool IsTorchOn - { - get { return ScanPage.RequestIsTorchOn(); } - } - - public override void AutoFocus() - { - ScanPage.RequestAutoFocus(); - } - - public System.Windows.UIElement CustomOverlay - { - get; - set; - } - - internal static void Log(string message, params object[] args) - { - System.Diagnostics.Debug.WriteLine(message, args); - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/PhotoCameraLuminanceSource.cs b/Source/ZXing.Net.Mobile.WindowsPhone/PhotoCameraLuminanceSource.cs deleted file mode 100644 index dcc35dab5..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/PhotoCameraLuminanceSource.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Shapes; -using ZXing; - -namespace ZXing.Mobile -{ - public class PhotoCameraLuminanceSource : LuminanceSource - { - public byte[] PreviewBufferY { get; private set; } - - public PhotoCameraLuminanceSource(int width, int height) - : base(width, height) - { - PreviewBufferY = new byte[width * height]; - } - - public override byte[] Matrix - { - get { return (byte[])(Array)PreviewBufferY; } - } - - public override byte[] getRow(int y, byte[] row) - { - if (row == null || row.Length < Width) - { - row = new byte[Width]; - } - - for (int i = 0; i < Height; i++) - row[i] = (byte)PreviewBufferY[i * Width + y]; - - return row; - } - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml b/Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml deleted file mode 100644 index 722752644..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml.cs b/Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml.cs deleted file mode 100644 index 78c6e3174..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/ScanPage.xaml.cs +++ /dev/null @@ -1,221 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Navigation; -using System.Windows.Shapes; -using Microsoft.Devices; -using Microsoft.Phone.Controls; -using ZXing; - -namespace ZXing.Mobile -{ - public partial class ScanPage : PhoneApplicationPage - { - public static MobileBarcodeScanningOptions ScanningOptions { get; set; } - public static MobileBarcodeScannerBase Scanner { get; set; } - public static UIElement CustomOverlay { get; set; } - public static string TopText { get; set; } - public static string BottomText { get; set; } - public static bool UseCustomOverlay { get; set; } - public static bool ContinuousScanning { get; set; } - - public static Result LastScanResult { get; set; } - - public static Action ResultFoundAction { get; set; } - - public static event Action OnRequestTorch; - public static event Action OnRequestToggleTorch; - public static event Action OnRequestAutoFocus; - public static event Action OnRequestCancel; - public static event Func OnRequestIsTorchOn; - public static Action OnRequestPauseAnalysis; - public static Action OnRequestResumeAnalysis; - - public static bool RequestIsTorchOn() - { - var evt = OnRequestIsTorchOn; - return evt != null && evt(); - } - - public static void RequestTorch(bool on) - { - var evt = OnRequestTorch; - if (evt != null) - evt(on); - } - - public static void RequestToggleTorch() - { - var evt = OnRequestToggleTorch; - if (evt != null) - evt(); - } - - public static void RequestAutoFocus() - { - var evt = OnRequestAutoFocus; - if (evt != null) - evt(); - } - - public static void RequestCancel() - { - var evt = OnRequestCancel; - if (evt != null) - evt(); - } - - public static void RequestPauseAnalysis() - { - var evt = OnRequestPauseAnalysis; - if (evt != null) - evt(); - } - - public static void RequestResumeAnalysis() - { - var evt = OnRequestResumeAnalysis; - if (evt != null) - evt(); - } - - public ScanPage() - { - InitializeComponent(); - isNewInstance = true; - } - - void RequestAutoFocusHandler() - { - if (scannerControl != null) - scannerControl.AutoFocus(); - } - - void RequestTorchHandler(bool on) - { - if (scannerControl != null) - scannerControl.Torch(on); - } - - void RequestToggleTorchHandler() - { - if (scannerControl != null) - scannerControl.ToggleTorch(); - } - - void RequestCancelHandler() - { - if (scannerControl != null) - scannerControl.Cancel(); - } - - void RequestPauseAnalysisHandler() - { - if (scannerControl != null) - scannerControl.PauseAnalysis(); - } - - void RequestResumeAnalysisHandler() - { - if (scannerControl != null) - scannerControl.ResumeAnalysis(); - } - - bool RequestIsTorchOnHandler() - { - if (scannerControl != null) - return scannerControl.IsTorchOn; - - return false; - } - - protected override void OnNavigatedTo(NavigationEventArgs e) - { - scannerControl.TopText = TopText; - scannerControl.BottomText = BottomText; - - scannerControl.CustomOverlay = CustomOverlay; - scannerControl.UseCustomOverlay = UseCustomOverlay; - - scannerControl.ScanningOptions = ScanningOptions; - scannerControl.ContinuousScanning = ScanPage.ContinuousScanning; - - OnRequestAutoFocus += RequestAutoFocusHandler; - OnRequestTorch += RequestTorchHandler; - OnRequestToggleTorch += RequestToggleTorchHandler; - OnRequestCancel += RequestCancelHandler; - OnRequestIsTorchOn += RequestIsTorchOnHandler; - OnRequestPauseAnalysis += RequestPauseAnalysisHandler; - OnRequestResumeAnalysis += RequestResumeAnalysisHandler; - - scannerControl.StartScanning(HandleResult, ScanningOptions); - - if (!isNewInstance && !isDeactivated && NavigationService.CanGoBack) - NavigationService.GoBack(); - - isNewInstance = false; - - base.OnNavigatedTo(e); - } - - private bool isNewInstance = false; - private bool isDeactivated = false; - - protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) - { - try - { - isDeactivated = e.NavigationMode != NavigationMode.Back; - OnRequestAutoFocus -= RequestAutoFocusHandler; - OnRequestTorch -= RequestTorchHandler; - OnRequestToggleTorch -= RequestToggleTorchHandler; - OnRequestCancel -= RequestCancelHandler; - OnRequestIsTorchOn -= RequestIsTorchOnHandler; - OnRequestPauseAnalysis -= RequestPauseAnalysisHandler; - OnRequestResumeAnalysis -= RequestResumeAnalysisHandler; - - scannerControl.StopScanning(); - - if (!ContinuousScanning) - RaiseEmptyResult(); - } - catch (Exception ex) { - MobileBarcodeScanner.Log("OnNavigatingFrom Error: {0}", ex); - } - - base.OnNavigatingFrom(e); - } - - void RaiseEmptyResult() - { - LastScanResult = null; - - var evt = ResultFoundAction; - if (evt != null) - evt(LastScanResult); - } - - void HandleResult(ZXing.Result result) - { - LastScanResult = result; - - var evt = ResultFoundAction; - if (evt != null) - evt(LastScanResult); - - if (!ContinuousScanning) - { - if (NavigationService.CanGoBack) - NavigationService.GoBack(); - } - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/SimpleCameraReader.cs b/Source/ZXing.Net.Mobile.WindowsPhone/SimpleCameraReader.cs deleted file mode 100644 index 5f8b4e820..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/SimpleCameraReader.cs +++ /dev/null @@ -1,326 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Ink; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Threading; -using Microsoft.Devices; -using System.Windows.Media.Animation; -using System.Windows.Shapes; -using ZXing; - -namespace ZXing.Mobile -{ - /// - /// A simple and easy to use wrapper for ZXing 2.0 for use with Windows Phone 7 - /// Written by Henning M. Stephansen - /// http://www.henning.ms - /// - public class SimpleCameraReader - { - public delegate void DecodingCompletedEventHandler(object sender, Result result); - - public event DecodingCompletedEventHandler DecodingCompleted; - - public delegate void CameraInitializedEventHandler(object sender, bool initialized); - - public event CameraInitializedEventHandler CameraInitialized; - - private DispatcherTimer _timer; - private PhotoCameraLuminanceSource _luminance; - private MultiFormatReader _reader; - private PhotoCamera _photoCamera; - - private TimeSpan _scanInterval; - private DateTime _lastAnalysis = DateTime.MinValue; - - bool doCancel = false; - private bool _initialized; - private bool _wasScanned = false; - public bool IsAnalyzing { get; set; } - - private VideoBrush _surface; - - private Dispatcher uiDispatcher; - - //private System.Threading.CancellationTokenSource cancelTokenSource = new System.Threading.CancellationTokenSource(); - - /// - /// Sets how often we should try to decode - /// the camera feed for codes - /// - public double ScanInterval - { - get - { - return _scanInterval.TotalMilliseconds <= 0 ? _scanInterval.TotalMilliseconds : 150; - } - set - { - _scanInterval = TimeSpan.FromMilliseconds(value); - } - } - - /// - /// Gets the number of degrees that the viewfinder brush needs to be rotated - /// clockwise to align with the camera sensor - /// - public double CameraOrientation - { - get - { - return _photoCamera != null ? _photoCamera.Orientation : 0; - } - } - - /// - /// Returns the PhotoCamera instance - /// - public PhotoCamera Camera - { - get - { - return _photoCamera; - } - } - - /// - /// Get or set whether the camera should flash on auto-focus or not - /// - public FlashMode FlashMode - { - get - { - if (_initialized && _photoCamera != null && _photoCamera.IsFlashModeSupported(FlashMode.On)) - return _photoCamera.FlashMode != FlashMode.Off ? _photoCamera.FlashMode : FlashMode.Off; - - return FlashMode.Off; - } - set - { - if (_photoCamera != null && _photoCamera.IsFlashModeSupported(value)) - _photoCamera.FlashMode = value; - } - } - - public MobileBarcodeScanningOptions Options { get; set; } - //public MobileBarcodeScannerBase Scanner { get; set; } - - /// - /// Initializes the SimpleCameraReader - /// - /// Sets whether the camera should scan on completed autofocus or on a timely fashion - public SimpleCameraReader(MobileBarcodeScanningOptions options) - { - this.Options = options ?? MobileBarcodeScanningOptions.Default; - // this.Scanner = scanner; - - Initialize(); - } - - private void Initialize() - { - //ScanOnAutoFocus = true; // scanOnAutoFocus; - - // Gets the Dispatcher for the current application so we can invoke the UI-Thread to get - // preview-image and fire our timer events - uiDispatcher = Application.Current.RootVisual.Dispatcher; - - InitializeCamera(); - - - _reader = this.Options.BuildMultiFormatReader(); - } - - private void InitializeCamera() - { - if (Options.UseFrontCameraIfAvailable.HasValue && Options.UseFrontCameraIfAvailable.Value) - { - try { _photoCamera = new PhotoCamera(CameraType.FrontFacing); } - catch (Exception ex) { - MobileBarcodeScanner.Log ("Failed to create front facing camera: {0}", ex); - } - } - - MobileBarcodeScanner.Log("InitializeCamera"); - - if (_photoCamera == null) - _photoCamera = new PhotoCamera(); - _photoCamera.Initialized += OnPhotoCameraInitialized; - - MobileBarcodeScanner.Log("Wired up Initizialied"); - } - - /// - /// Starts the camera and capture process - /// - public void Start() - { - if (_photoCamera == null) - InitializeCamera(); - - // At this point if application exits etc. without proper stopping of camera - // it will throw an Exception. - try - { - // Invokes these method calls on the UI-thread - uiDispatcher.BeginInvoke(() => - { - _timer = new DispatcherTimer(); - _timer.Interval = _scanInterval; - _timer.Tick += (o, arg) => ScanPreviewBuffer(); - - CameraButtons.ShutterKeyHalfPressed += CameraButtons_ShutterKeyHalfPressed; - - _timer.Start(); - }); - - } - catch (Exception) - { - // Do nothing - } - - Focus(); - } - - private void CameraButtons_ShutterKeyHalfPressed(object sender, EventArgs e) - { - Focus(); - } - - public void Focus() - { - try - { - if (_photoCamera.IsFocusSupported) - _photoCamera.Focus(); - } - catch { } - } - - public void Focus(Point point) - { - try - { - if (_photoCamera.IsFocusAtPointSupported) - _photoCamera.FocusAtPoint(point.X, point.Y); - else - Focus(); - } - catch { } - } - - /// - /// Stops the camera and capture process - /// - public void Stop() - { - doCancel = true; - IsAnalyzing = false; - - if (_timer != null && _timer.IsEnabled) - _timer.Stop(); - - if (_photoCamera != null) - { - CameraButtons.ShutterKeyHalfPressed -= CameraButtons_ShutterKeyHalfPressed; - - _photoCamera.Initialized -= OnPhotoCameraInitialized; - _photoCamera.Dispose(); - _photoCamera = null; - } - - } - - private void OnPhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e) - { - MobileBarcodeScanner.Log("Initialized Camera"); - - if (_photoCamera == null) - return; - IsAnalyzing = true; - - MobileBarcodeScanner.Log("Creating Luminance Source"); - - var width = Convert.ToInt32(_photoCamera.PreviewResolution.Width); - var height = Convert.ToInt32(_photoCamera.PreviewResolution.Height); - - _luminance = new PhotoCameraLuminanceSource(width, height); - - if (_photoCamera.IsFlashModeSupported(FlashMode.On)) - _photoCamera.FlashMode = FlashMode.Off; - - _initialized = true; - - MobileBarcodeScanner.Log("Luminance Source Created"); - - OnCameraInitialized(_initialized); - } - - private void ScanPreviewBuffer() - { - if (_photoCamera == null) return; - if (!_initialized) return; - - // Don't scan too frequently - // Check the minimum time between frames - // as well as the min time between continuous scans - var msSinceLastPreview = (DateTime.UtcNow - _lastAnalysis).TotalMilliseconds; - if ((DateTime.UtcNow - _lastAnalysis).TotalMilliseconds < Options.DelayBetweenAnalyzingFrames - || (_wasScanned && msSinceLastPreview < Options.DelayBetweenContinuousScans)) - return; - - if (!IsAnalyzing) - return; - - _wasScanned = false; - _lastAnalysis = DateTime.UtcNow; - - try - { - _photoCamera.GetPreviewBufferY(_luminance.PreviewBufferY); - var binarizer = new ZXing.Common.HybridBinarizer(_luminance); - - var binBitmap = new BinaryBitmap(binarizer); - - var result = _reader.decode(binBitmap); - - if (result != null) - { - _wasScanned = true; - OnDecodingCompleted(result); - } - } - catch (Exception) - { - // If decoding fails it will throw a ReaderException - // and we're not interested in doing anything with it - } - } - - /// - /// When a decode was successful we get a result back - /// - /// Result of the decoding - protected virtual void OnDecodingCompleted(Result result) - { - if (DecodingCompleted != null) - DecodingCompleted(this, result); - } - - /// - /// When camera is finished initializing and ready to go. Put Start after this event has fired - /// - /// A boolean value indicating whether camera was successfully initialized - protected virtual void OnCameraInitialized(bool initialized) - { - if (CameraInitialized != null) - CameraInitialized(this, initialized); - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/WriteableBitmapRenderer.cs b/Source/ZXing.Net.Mobile.WindowsPhone/WriteableBitmapRenderer.cs deleted file mode 100644 index 694037859..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/WriteableBitmapRenderer.cs +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright 2012 ZXing.Net authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -using System; -using System.Windows; -#if NETFX_CORE -using Windows.UI; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Media.Imaging; -#else -using System.Windows.Media; -using System.Windows.Media.Imaging; -#endif - -using ZXing; -using ZXing.Common; -using ZXing.OneD; -using ZXing.Rendering; - -namespace ZXing.Mobile -{ - /// - /// Renders a to a - /// - public class WriteableBitmapRenderer : IBarcodeRenderer - { - /// - /// Gets or sets the foreground color. - /// - /// - /// The foreground color. - /// - public Color Foreground { get; set; } - /// - /// Gets or sets the background color. - /// - /// - /// The background color. - /// - public Color Background { get; set; } - /// - /// Gets or sets the font family. - /// - /// - /// The font family. - /// - public FontFamily FontFamily { get; set; } - /// - /// Gets or sets the size of the font. - /// - /// - /// The size of the font. - /// - public double FontSize { get; set; } - -#if !NETFX_CORE - /// - /// Gets or sets the font stretch. - /// - /// - /// The font stretch. - /// - public FontStretch FontStretch { get; set; } - /// - /// Gets or sets the font style. - /// - /// - /// The font style. - /// - public FontStyle FontStyle { get; set; } - /// - /// Gets or sets the font weight. - /// - /// - /// The font weight. - /// - public FontWeight FontWeight { get; set; } -#endif - - private static readonly FontFamily DefaultFontFamily = new FontFamily("Arial"); - - /// - /// Initializes a new instance of the class. - /// - public WriteableBitmapRenderer() - { - Foreground = Colors.Black; - Background = Colors.White; - FontFamily = DefaultFontFamily; - FontSize = 10.0; -#if !NETFX_CORE - FontStretch = FontStretches.Normal; - FontStyle = FontStyles.Normal; - FontWeight = FontWeights.Normal; -#endif - } - - /// - /// Renders the specified matrix. - /// - /// The matrix. - /// The format. - /// The content. - /// - public WriteableBitmap Render(BitMatrix matrix, BarcodeFormat format, string content) - { - return Render(matrix, format, content, null); - } - - /// - /// Renders the specified matrix. - /// - /// The matrix. - /// The format. - /// The content. - /// The options. - /// - virtual public WriteableBitmap Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) - { - int width = matrix.Width; - int height = matrix.Height; - bool outputContent = (options == null || !options.PureBarcode) && - !String.IsNullOrEmpty(content) && (format == BarcodeFormat.CODE_39 || - format == BarcodeFormat.CODE_128 || - format == BarcodeFormat.EAN_13 || - format == BarcodeFormat.EAN_8 || - format == BarcodeFormat.CODABAR || - format == BarcodeFormat.ITF || - format == BarcodeFormat.UPC_A || - format == BarcodeFormat.MSI || - format == BarcodeFormat.PLESSEY); - int emptyArea = outputContent ? 16 : 0; - int pixelsize = 1; - - if (options != null) - { - if (options.Width > width) - { - width = options.Width; - } - if (options.Height > height) - { - height = options.Height; - } - // calculating the scaling factor - pixelsize = width / matrix.Width; - if (pixelsize > height / matrix.Height) - { - pixelsize = height / matrix.Height; - } - } - -#if NETFX_CORE - var foreground = new byte[] { Foreground.B, Foreground.G, Foreground.R, Foreground.A }; - var background = new byte[] { Background.B, Background.G, Background.R, Background.A }; - var bmp = new WriteableBitmap(width, height); - var length = width * height; - - // Copy data back - using (var stream = System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions.AsStream(bmp.PixelBuffer)) - { - for (int y = 0; y < matrix.Height - emptyArea; y++) - { - for (var pixelsizeHeight = 0; pixelsizeHeight < pixelsize; pixelsizeHeight++) - { - for (var x = 0; x < matrix.Width; x++) - { - var color = matrix[x, y] ? foreground : background; - for (var pixelsizeWidth = 0; pixelsizeWidth < pixelsize; pixelsizeWidth++) - { - stream.Write(color, 0, 4); - } - } - for (var x = pixelsize * matrix.Width; x < width; x++) - { - stream.Write(background, 0, 4); - } - } - } - for (int y = matrix.Height * pixelsize - emptyArea; y < height; y++) - { - for (var x = 0; x < width; x++) - { - stream.Write(background, 0, 4); - } - } - } - bmp.Invalidate(); -#else - int foreground = Foreground.A << 24 | Foreground.R << 16 | Foreground.G << 8 | Foreground.B; - int background = Background.A << 24 | Background.R << 16 | Background.G << 8 | Background.B; -#if WPF - var bmp = new WriteableBitmap(width, height, 100.0, 100.0, PixelFormats.Bgra32, null); - var pixels = new int[width*height]; -#else - var bmp = new WriteableBitmap(width, height); - var pixels = bmp.Pixels; -#endif - var index = 0; - - for (int y = 0; y < matrix.Height - emptyArea; y++) - { - for (var pixelsizeHeight = 0; pixelsizeHeight < pixelsize; pixelsizeHeight++) - { - for (var x = 0; x < matrix.Width; x++) - { - var color = matrix[x, y] ? foreground : background; - for (var pixelsizeWidth = 0; pixelsizeWidth < pixelsize; pixelsizeWidth++) - { - pixels[index++] = color; - } - } - for (var x = pixelsize * matrix.Width; x < width; x++) - { - pixels[index++] = background; - } - } - } - for (int y = matrix.Height * pixelsize - emptyArea; y < height; y++) - { - for (var x = 0; x < width; x++) - { - pixels[index++] = background; - } - } -#if WPF - bmp.WritePixels(new Int32Rect(0, 0, width, height), pixels, bmp.BackBufferStride, 0); -#else - bmp.Invalidate(); -#endif -#endif - - /* doesn't correctly work at the moment - * renders at the wrong position - if (outputContent) - { - switch (format) - { - case BarcodeFormat.EAN_8: - if (content.Length < 8) - content = OneDimensionalCodeWriter.CalculateChecksumDigitModulo10(content); - content = content.Insert(4, " "); - break; - case BarcodeFormat.EAN_13: - if (content.Length < 13) - content = OneDimensionalCodeWriter.CalculateChecksumDigitModulo10(content); - content = content.Insert(7, " "); - content = content.Insert(1, " "); - break; - } - var txt1 = new TextBlock {Text = content, FontSize = 10, Foreground = new SolidColorBrush(Colors.Black)}; - bmp.Render(txt1, new RotateTransform { Angle = 0, CenterX = width / 2, CenterY = height - 14}); - bmp.Invalidate(); - } - * */ - - return bmp; - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/ZXing.Net.Mobile.WindowsPhone.csproj b/Source/ZXing.Net.Mobile.WindowsPhone/ZXing.Net.Mobile.WindowsPhone.csproj deleted file mode 100644 index fe8219779..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/ZXing.Net.Mobile.WindowsPhone.csproj +++ /dev/null @@ -1,150 +0,0 @@ - - - - Debug - AnyCPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D} - {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - ZXing.Mobile - ZXingNetMobile - v8.0 - - - - - WindowsPhone - false - true - true - 11.0 - - - true - full - false - ..\..\Build\Debug\wp8.0\ - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - false - - - pdbonly - true - ..\..\Build\Release\wp8.0\ - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - false - - - true - Bin\x86\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - full - - - prompt - MinimumRecommendedRules.ruleset - false - - - ..\..\Build\Release\wp8.0\ - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - pdbonly - - - prompt - MinimumRecommendedRules.ruleset - - - true - Bin\ARM\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - full - - - prompt - MinimumRecommendedRules.ruleset - false - - - Bin\ARM\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - pdbonly - - - prompt - MinimumRecommendedRules.ruleset - - - - - - - - - ScanPage.xaml - - - - - ZXingScannerControl.xaml - - - - - {7528dd0a-1781-47f4-adbf-eeddb011f6bb} - ZXing.Net.Mobile.Core - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - - - ..\..\packages\WriteableBitmapEx.1.5.0.0\lib\WindowsPhone8\WriteableBitmapExWinPhone.dll - True - - - ..\..\packages\WriteableBitmapEx.1.5.0.0\lib\WindowsPhone8\WriteableBitmapExWinPhoneXnaDependant.dll - True - - - - - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml b/Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml deleted file mode 100644 index 303f1f8dd..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml.cs b/Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml.cs deleted file mode 100644 index a755db45a..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/ZXingScannerControl.xaml.cs +++ /dev/null @@ -1,224 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Navigation; -using Microsoft.Devices; -using Microsoft.Phone.Controls; -using Microsoft.Phone.Shell; - -namespace ZXing.Mobile -{ - public partial class ZXingScannerControl : UserControl, IDisposable, IScannerView - { - public ZXingScannerControl() : base() - { - InitializeComponent(); - } - - public void StartScanning(Action scanCallback, MobileBarcodeScanningOptions options = null) - { - ScanCallback = scanCallback; - ScanningOptions = options ?? MobileBarcodeScanningOptions.Default; - - this.topText.Text = TopText; - this.bottomText.Text = BottomText; - - if (UseCustomOverlay) - { - gridCustomOverlay.Children.Clear(); - if (CustomOverlay != null) - gridCustomOverlay.Children.Add(CustomOverlay); - - gridCustomOverlay.Visibility = Visibility.Visible; - gridDefaultOverlay.Visibility = Visibility.Collapsed; - } - else - { - gridCustomOverlay.Visibility = Visibility.Collapsed; - gridDefaultOverlay.Visibility = Visibility.Visible; - } - - MobileBarcodeScanner.Log("ZXingScannerControl.StartScanning"); - - // Initialize a new instance of SimpleCameraReader with Auto-Focus mode on - if (_reader == null) - { - MobileBarcodeScanner.Log("Creating SimpleCameraReader"); - - //_reader = new SimpleCameraReader(options); - _reader = new AudioVideoCaptureDeviceCameraReader(options); - _reader.ScanInterval = ScanningOptions.DelayBetweenAnalyzingFrames; - - // AudioVideoCaptureDevice - move this to camera initialized otherwise throws - // We need to set the VideoBrush we're going to display the preview feed on - // IMPORTANT that it gets set before Camera initializes - //_previewVideo.SetSource(_reader.Camera); - - // The reader throws an event when a result is available - _reader.DecodingCompleted += (o, r) => DisplayResult(r); - - // The reader throws an event when the camera is initialized and ready to use - _reader.CameraInitialized += ReaderOnCameraInitialized; - } - } - - public Action ScanCallback { get; set; } - public MobileBarcodeScanningOptions ScanningOptions { get; set; } - public MobileBarcodeScannerBase Scanner { get; set; } - public UIElement CustomOverlay { get; set; } - public string TopText { get; set; } - public string BottomText { get; set; } - public bool UseCustomOverlay { get; set; } - public bool ContinuousScanning { get; set; } - - public Result LastScanResult { get; set; } - - //SimpleCameraReader _reader; - AudioVideoCaptureDeviceCameraReader _reader; - - public bool IsTorchOn - { - get { return _reader.FlashMode == FlashMode.On; } - } - - public void Torch(bool on) - { - _reader.FlashMode = on ? FlashMode.On : FlashMode.Off; - } - - public void ToggleTorch() - { - _reader.FlashMode = _reader.FlashMode == FlashMode.Off ? FlashMode.On : FlashMode.Off; - } - - public bool HasTorch - { - get - { - return _reader.HasTorch; - } - } - - public void AutoFocus() - { - _reader.Focus(); - } - - public void AutoFocus (int x = -1, int y = -1) - { - _reader.Focus(); - } - - public bool IsAnalyzing - { - get { - if (_reader != null) - return _reader.IsAnalyzing; - - return false; - } - } - - public void ResumeAnalysis () - { - if (_reader != null && !_reader.IsAnalyzing) - _reader.IsAnalyzing = false; - } - - public void PauseAnalysis () - { - if (_reader != null && _reader.IsAnalyzing) - _reader.IsAnalyzing = false; - } - - public void StopScanning() - { - if (UseCustomOverlay && CustomOverlay != null) - gridCustomOverlay.Children.Remove(CustomOverlay); - - BlackoutVideoBrush(); - - if (_reader != null) - { - _reader.Stop(); - _reader.CameraInitialized -= ReaderOnCameraInitialized; - _reader.DecodingCompleted -= (o, r) => DisplayResult(r); - _reader = null; - } - } - - private void BlackoutVideoBrush() - { - _previewVideo.SetSource(new MediaElement()); - } - - public void Cancel() - { - LastScanResult = null; - - StopScanning (); - - if (ScanCallback != null) - ScanCallback(null); - } - - private void ReaderOnCameraInitialized(object sender, bool initialized) - { - // We dispatch (invoke) to avoid access exceptions - Dispatcher.BeginInvoke(() => - { - // This must be called here - until now, _reader.Camera is null - _previewVideo.SetSource(_reader.Camera); - - if (_reader != null && _previewTransform != null) - _previewTransform.Rotation = _reader.CameraOrientation; - }); - - MobileBarcodeScanner.Log("ReaderOnCameraInitialized"); - - if (_reader != null) - { - // We can set if Camera should flash or not when focused - _reader.FlashMode = FlashMode.Off; - - // Starts the capturing process - _reader.Start(); - } - } - - private void DisplayResult(Result result) - { - if (!ContinuousScanning) - StopScanning (); - - if (ScanCallback != null) - ScanCallback(result); - } - - public void Dispose() - { - this.gridCustomOverlay.Children.Clear(); - - StopScanning (); - } - - protected override void OnTap(System.Windows.Input.GestureEventArgs e) - { - base.OnTap(e); - - if (_reader != null) - { - //var pos = e.GetPosition(this); - _reader.Focus(); - } - } - - private void buttonToggleFlash_Click(object sender, RoutedEventArgs e) - { - ToggleTorch(); - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsPhone/packages.config b/Source/ZXing.Net.Mobile.WindowsPhone/packages.config deleted file mode 100644 index 8bb6466fa..000000000 --- a/Source/ZXing.Net.Mobile.WindowsPhone/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsRT/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.WindowsRT/AssemblyInfo.cs deleted file mode 100644 index eca4a5753..000000000 --- a/Source/ZXing.Net.Mobile.WindowsRT/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("ZXing.Net.Mobile.WindowsRT")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("redth")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.WindowsRT/NotSupported.cs b/Source/ZXing.Net.Mobile.WindowsRT/NotSupported.cs deleted file mode 100644 index 3344568f3..000000000 --- a/Source/ZXing.Net.Mobile.WindowsRT/NotSupported.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ZXing.Net.Mobile -{ - public class NotSupported - { - // Windows Phone 8.1 Native and Windows 8 RT are not supported - - // Microsoft left out the ability to (easily) marshal Camera Preview frames to managed code - // Which is what ZXing.Net.Mobile needs to work - - // You should upgrade your wpa81 / win8 projects to use Windows Universal (UWP) instead! - } -} - -namespace ZXing.Mobile -{ - public class MobileBarcodeScanner : MobileBarcodeScannerBase - { - NotSupportedException ex = new NotSupportedException("Windows Phone 8.1 Native (wpa81) and Windows 8 Store (win8) are not supported, please use Windows Universal (UWP) instead!"); - - public override Task Scan(MobileBarcodeScanningOptions options) - { - throw ex; - } - - public override void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) - { - throw ex; - } - - public override void Cancel() - { - throw ex; - } - - public override void AutoFocus() - { - throw ex; - } - - public override void Torch(bool on) - { - throw ex; - } - - public override void ToggleTorch() - { - throw ex; - } - - public override void PauseAnalysis() - { - throw ex; - } - - public override void ResumeAnalysis() - { - throw ex; - } - - public override bool IsTorchOn - { - get - { - throw ex; - } - } - } - } - - diff --git a/Source/ZXing.Net.Mobile.WindowsRT/ZXing.Net.Mobile.WindowsRT.csproj b/Source/ZXing.Net.Mobile.WindowsRT/ZXing.Net.Mobile.WindowsRT.csproj deleted file mode 100644 index e264a24cc..000000000 --- a/Source/ZXing.Net.Mobile.WindowsRT/ZXing.Net.Mobile.WindowsRT.csproj +++ /dev/null @@ -1,65 +0,0 @@ - - - - - 12.0 - Debug - AnyCPU - {10EB06B2-7231-40DF-8930-7781C82B65DB} - Library - Properties - ZXing.Net.Mobile - ZXingNetMobile - en-US - 512 - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Profile259 - v4.5 - - - true - full - false - ..\..\Build\Debug\wpa81\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\Build\Release\wpa81\ - TRACE - prompt - 4 - - - - - - - - {7528dd0a-1781-47f4-adbf-eeddb011f6bb} - ZXing.Net.Mobile.Core - - - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} - zxing.portable - - - - - - - - - - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/AssemblyInfo.cs deleted file mode 100644 index 6e16f9dbe..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("ZXing.Net.Mobile.WindowsUniversal")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("redth")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/BarcodeWriter.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/BarcodeWriter.cs deleted file mode 100644 index d702011c0..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/BarcodeWriter.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Windows.UI.Xaml.Media.Imaging; - -namespace ZXing.Mobile -{ - /// - /// A smart class to encode some content to a barcode image - /// - public class BarcodeWriter : BarcodeWriter, IBarcodeWriter - { - /// - /// Initializes a new instance of the class. - /// - public BarcodeWriter() - { - Renderer = new WriteableBitmapRenderer(); - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/MobileBarcodeScanner.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/MobileBarcodeScanner.cs deleted file mode 100644 index 844e2969f..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/MobileBarcodeScanner.cs +++ /dev/null @@ -1,142 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Windows.UI.Core; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; - -namespace ZXing.Mobile -{ - public class MobileBarcodeScanner : MobileBarcodeScannerBase - { - public MobileBarcodeScanner () : base () - { - //this.Dispatcher = Windows.Current.Dispatcher; - } - - public MobileBarcodeScanner(CoreDispatcher dispatcher) : base() - { - this.Dispatcher = dispatcher; - } - - internal ScanPage ScanPage { get; set; } - - public CoreDispatcher Dispatcher { get; set; } - - public Frame RootFrame { get; set; } - - public override async void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) - { - //Navigate: /ZxingSharp.WindowsPhone;component/Scan.xaml - var rootFrame = RootFrame ?? Window.Current.Content as Frame ?? ((FrameworkElement) Window.Current.Content).GetFirstChildOfType(); - var dispatcher = Dispatcher ?? Window.Current.Dispatcher; - - await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => - { - rootFrame.Navigate(typeof(ScanPage), new ScanPageNavigationParameters - { - Options = options, - ResultHandler = scanHandler, - Scanner = this, - ContinuousScanning = true - }); - }); - } - - public override async Task Scan(MobileBarcodeScanningOptions options) - { - var rootFrame = RootFrame ?? Window.Current.Content as Frame ?? ((FrameworkElement) Window.Current.Content).GetFirstChildOfType(); - var dispatcher = Dispatcher ?? Window.Current.Dispatcher; - - var tcsScanResult = new TaskCompletionSource(); - - await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => - { - var pageOptions = new ScanPageNavigationParameters - { - Options = options, - ResultHandler = r => - { - tcsScanResult.SetResult(r); - }, - Scanner = this, - ContinuousScanning = false, - CameraInitialized = () => { OnCameraInitialized?.Invoke(); }, - CameraError = (errors) => { OnCameraError?.Invoke(errors); } - }; - rootFrame.Navigate(typeof(ScanPage), pageOptions); - }); - - var result = await tcsScanResult.Task; - - await dispatcher.RunAsync(CoreDispatcherPriority.High, () => - { - if (rootFrame.CanGoBack) - rootFrame.GoBack(); - }); - - return result; - } - - public event ScannerOpened OnCameraInitialized; - public delegate void ScannerOpened(); - - public event ScannerError OnCameraError; - public delegate void ScannerError(IEnumerable errors); - - public override async void Cancel() - { - var rootFrame = RootFrame ?? Window.Current.Content as Frame ?? ((FrameworkElement)Window.Current.Content).GetFirstChildOfType(); - var dispatcher = Dispatcher ?? Window.Current.Dispatcher; - - ScanPage?.Cancel(); - - await dispatcher.RunAsync(CoreDispatcherPriority.High, () => - { - if (rootFrame.CanGoBack) - rootFrame.GoBack(); - }); - } - - public override void Torch(bool on) - { - ScanPage?.Torch(on); - } - - public override void ToggleTorch() - { - ScanPage?.ToggleTorch(); - } - - public override bool IsTorchOn - { - get { return ScanPage?.IsTorchOn ?? false; } - } - - public override void AutoFocus() - { - ScanPage?.AutoFocus(); - } - - public override void PauseAnalysis() - { - ScanPage?.PauseAnalysis(); - } - - public override void ResumeAnalysis() - { - ScanPage?.ResumeAnalysis(); - } - - public UIElement CustomOverlay - { - get; - set; - } - - internal static void Log(string message, params object[] args) - { - System.Diagnostics.Debug.WriteLine(message, args); - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/Properties/ZXing.Net.Mobile.Universal.rd.xml b/Source/ZXing.Net.Mobile.WindowsUniversal/Properties/ZXing.Net.Mobile.Universal.rd.xml deleted file mode 100644 index 9bae42ab3..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/Properties/ZXing.Net.Mobile.Universal.rd.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/ScanPage.xaml.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/ScanPage.xaml.cs deleted file mode 100644 index 88f8c7206..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/ScanPage.xaml.cs +++ /dev/null @@ -1,205 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using System.Threading.Tasks; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; -using ZXing.Mobile; - -// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 - -namespace ZXing.Mobile -{ - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// - public sealed partial class ScanPage : Page, IMobileBarcodeScanner - { - ScanPageNavigationParameters Parameters { get; set; } - - public ScanPage() - { - InitializeComponent(); - } - - protected override void OnNavigatedTo(NavigationEventArgs e) - { - base.OnNavigatedTo(e); - - // If no parameters were passed, we navigated here for some other reason - // so let's ignore it - if (e.Parameter == null) - return; - - Parameters = e.Parameter as ScanPageNavigationParameters; - scannerControl.OnCameraInitialized += ScannerControl_OnCameraInitialized; - scannerControl.OnScannerError += ScannerControl_OnScannerError; - - if (Parameters != null) - Parameters.Scanner.ScanPage = this; - - scannerControl.TopText = Parameters?.Scanner?.TopText ?? ""; - scannerControl.BottomText = Parameters?.Scanner?.BottomText ?? ""; - - scannerControl.CustomOverlay = Parameters?.Scanner?.CustomOverlay; - scannerControl.UseCustomOverlay = Parameters?.Scanner?.UseCustomOverlay ?? false; - - scannerControl.ScanningOptions = Parameters?.Options ?? new MobileBarcodeScanningOptions (); - scannerControl.ContinuousScanning = Parameters?.ContinuousScanning ?? false; - - scannerControl.StartScanning(Parameters?.ResultHandler, Parameters?.Options); - } - - private void ScannerControl_OnCameraInitialized() - { - Parameters.CameraInitialized?.Invoke(); - } - - private void ScannerControl_OnScannerError(IEnumerable errors) - { - Parameters.CameraError?.Invoke(errors); - } - - - - - protected override async void OnNavigatingFrom(NavigatingCancelEventArgs e) - { - try - { - MobileBarcodeScanner.Log("OnNavigatingFrom, stopping camera..."); - await scannerControl.StopScanningAsync(); - } - catch (Exception ex) - { - MobileBarcodeScanner.Log("OnNavigatingFrom Error: {0}", ex); - } - - base.OnNavigatingFrom(e); - } - - #region IMobileBarcodeScanner Implementation - public bool UseCustomOverlay - { - get { return scannerControl.UseCustomOverlay; } - } - - public string TopText - { - get { return scannerControl.TopText; } - set { scannerControl.TopText = value; } - } - - public string BottomText - { - get { return scannerControl.BottomText; } - set { scannerControl.BottomText = value; } - } - - public string CancelButtonText - { - get { return ""; } - set { } - } - - public string FlashButtonText - { - get { return ""; } - set { } - } - - public string CameraUnsupportedMessage - { - get { return ""; } - set { } - } - - public bool IsTorchOn - { - get { return scannerControl.IsTorchOn; } - } - - public Task Scan(MobileBarcodeScanningOptions options) - { - var tcsResult = new TaskCompletionSource(); - - scannerControl.ContinuousScanning = false; - scannerControl.StartScanning(r => - { - scannerControl.StopScanning(); - - tcsResult.SetResult(r); - }, options ?? Parameters?.Options); - - return tcsResult.Task; - } - - public Task Scan() - { - return Scan(new MobileBarcodeScanningOptions()); - } - - public void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) - { - scannerControl.ContinuousScanning = true; - scannerControl.StartScanning(scanHandler, options ?? Parameters?.Options); - } - - public void ScanContinuously(Action scanHandler) - { - ScanContinuously(new MobileBarcodeScanningOptions(), scanHandler); - } - - public void Cancel() - { - scannerControl?.Cancel(); - } - - public void Torch(bool on) - { - scannerControl?.Torch(on); - } - - public void AutoFocus() - { - scannerControl?.AutoFocus(); - } - - public void ToggleTorch() - { - scannerControl?.ToggleTorch(); - } - - public void PauseAnalysis() - { - scannerControl?.PauseAnalysis(); - } - - public void ResumeAnalysis() - { - scannerControl?.ResumeAnalysis(); - } - - #endregion - } - - public class ScanPageNavigationParameters - { - public MobileBarcodeScanner Scanner { get; set; } - public bool ContinuousScanning { get; set; } - public MobileBarcodeScanningOptions Options { get; set; } - public Action ResultHandler { get; set; } - - public Action CameraInitialized { get; set; } - public Action> CameraError { get; set; } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/SoftwareBitmapLuminanceSource.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/SoftwareBitmapLuminanceSource.cs deleted file mode 100644 index c1673348d..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/SoftwareBitmapLuminanceSource.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; -using Windows.Graphics.Imaging; - -namespace ZXing.Mobile -{ - [ComImport] - [Guid("5b0d3235-4dba-4d44-865e-8f1d0e4fd04d")] - [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - unsafe interface IMemoryBufferByteAccess - { - void GetBuffer(out byte* buffer, out uint capacity); - } - - - public class SoftwareBitmapLuminanceSource : BaseLuminanceSource - { - public SoftwareBitmapLuminanceSource (SoftwareBitmap softwareBitmap) : base (softwareBitmap.PixelWidth, softwareBitmap.PixelHeight) - { - CalculateLuminance(softwareBitmap); - } - - protected SoftwareBitmapLuminanceSource(int width, int height) : base(width, height) - { - } - - protected SoftwareBitmapLuminanceSource(byte[] luminanceArray, int width, int height) : base(luminanceArray, width, height) - { - } - - protected override LuminanceSource CreateLuminanceSource(byte[] newLuminances, int width, int height) - { - return new SoftwareBitmapLuminanceSource(width, height) { luminances = newLuminances }; - } - - private unsafe void CalculateLuminance(SoftwareBitmap bitmap) - { - // Effect is hard-coded to operate on BGRA8 format only - if (bitmap.BitmapPixelFormat == BitmapPixelFormat.Bgra8) - { - // In BGRA8 format, each pixel is defined by 4 bytes - const int BYTES_PER_PIXEL = 4; - - using (var buffer = bitmap.LockBuffer(BitmapBufferAccessMode.Read)) - using (var reference = buffer.CreateReference()) - { - - if (reference is IMemoryBufferByteAccess) - { - - - try - { - // Get a pointer to the pixel buffer - byte* data; - uint capacity; - ((IMemoryBufferByteAccess)reference).GetBuffer(out data, out capacity); - - // Get information about the BitmapBuffer - var desc = buffer.GetPlaneDescription(0); - var luminanceIndex = 0; - - // Iterate over all pixels - for (uint row = 0; row < desc.Height; row++) - { - for (uint col = 0; col < desc.Width; col++) - { - // Index of the current pixel in the buffer (defined by the next 4 bytes, BGRA8) - var currPixel = desc.StartIndex + desc.Stride * row + BYTES_PER_PIXEL * col; - - // Read the current pixel information into b,g,r channels (leave out alpha channel) - var b = data[currPixel + 0]; // Blue - var g = data[currPixel + 1]; // Green - var r = data[currPixel + 2]; // Red - - var luminance = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight); - var alpha = data[currPixel + 3]; - luminance = (byte)(((luminance * alpha) >> 8) + (255 * (255 - alpha) >> 8)); - luminances[luminanceIndex] = luminance; - luminanceIndex++; - } - } - } - catch (Exception ex) - { - System.Diagnostics.Debug.WriteLine("Luminance Source Failed: {0}", ex); - } - } - } - } - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/VisualTreeHelperExt.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/VisualTreeHelperExt.cs deleted file mode 100644 index 0a63cc7a7..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/VisualTreeHelperExt.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Media; - -namespace ZXing.Mobile -{ - public static class VisualTreeHelperExt - { - // The method traverses the visual tree lazily, layer by layer - // and returns the objects of the desired type - public static T GetFirstChildOfType (this DependencyObject start) where T : class - { - var queue = new Queue(); - queue.Enqueue(start); - - while (queue.Count > 0) - { - var item = queue.Dequeue(); - - var realItem = item as T; - if (realItem != null) - { - return realItem; - } - - var count = VisualTreeHelper.GetChildrenCount(item); - for (var i = 0; i < count; i++) - { - queue.Enqueue(VisualTreeHelper.GetChild(item, i)); - } - } - return null; - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/WriteableBitmapRenderer.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/WriteableBitmapRenderer.cs deleted file mode 100644 index 694037859..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/WriteableBitmapRenderer.cs +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright 2012 ZXing.Net authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -using System; -using System.Windows; -#if NETFX_CORE -using Windows.UI; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Media.Imaging; -#else -using System.Windows.Media; -using System.Windows.Media.Imaging; -#endif - -using ZXing; -using ZXing.Common; -using ZXing.OneD; -using ZXing.Rendering; - -namespace ZXing.Mobile -{ - /// - /// Renders a to a - /// - public class WriteableBitmapRenderer : IBarcodeRenderer - { - /// - /// Gets or sets the foreground color. - /// - /// - /// The foreground color. - /// - public Color Foreground { get; set; } - /// - /// Gets or sets the background color. - /// - /// - /// The background color. - /// - public Color Background { get; set; } - /// - /// Gets or sets the font family. - /// - /// - /// The font family. - /// - public FontFamily FontFamily { get; set; } - /// - /// Gets or sets the size of the font. - /// - /// - /// The size of the font. - /// - public double FontSize { get; set; } - -#if !NETFX_CORE - /// - /// Gets or sets the font stretch. - /// - /// - /// The font stretch. - /// - public FontStretch FontStretch { get; set; } - /// - /// Gets or sets the font style. - /// - /// - /// The font style. - /// - public FontStyle FontStyle { get; set; } - /// - /// Gets or sets the font weight. - /// - /// - /// The font weight. - /// - public FontWeight FontWeight { get; set; } -#endif - - private static readonly FontFamily DefaultFontFamily = new FontFamily("Arial"); - - /// - /// Initializes a new instance of the class. - /// - public WriteableBitmapRenderer() - { - Foreground = Colors.Black; - Background = Colors.White; - FontFamily = DefaultFontFamily; - FontSize = 10.0; -#if !NETFX_CORE - FontStretch = FontStretches.Normal; - FontStyle = FontStyles.Normal; - FontWeight = FontWeights.Normal; -#endif - } - - /// - /// Renders the specified matrix. - /// - /// The matrix. - /// The format. - /// The content. - /// - public WriteableBitmap Render(BitMatrix matrix, BarcodeFormat format, string content) - { - return Render(matrix, format, content, null); - } - - /// - /// Renders the specified matrix. - /// - /// The matrix. - /// The format. - /// The content. - /// The options. - /// - virtual public WriteableBitmap Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) - { - int width = matrix.Width; - int height = matrix.Height; - bool outputContent = (options == null || !options.PureBarcode) && - !String.IsNullOrEmpty(content) && (format == BarcodeFormat.CODE_39 || - format == BarcodeFormat.CODE_128 || - format == BarcodeFormat.EAN_13 || - format == BarcodeFormat.EAN_8 || - format == BarcodeFormat.CODABAR || - format == BarcodeFormat.ITF || - format == BarcodeFormat.UPC_A || - format == BarcodeFormat.MSI || - format == BarcodeFormat.PLESSEY); - int emptyArea = outputContent ? 16 : 0; - int pixelsize = 1; - - if (options != null) - { - if (options.Width > width) - { - width = options.Width; - } - if (options.Height > height) - { - height = options.Height; - } - // calculating the scaling factor - pixelsize = width / matrix.Width; - if (pixelsize > height / matrix.Height) - { - pixelsize = height / matrix.Height; - } - } - -#if NETFX_CORE - var foreground = new byte[] { Foreground.B, Foreground.G, Foreground.R, Foreground.A }; - var background = new byte[] { Background.B, Background.G, Background.R, Background.A }; - var bmp = new WriteableBitmap(width, height); - var length = width * height; - - // Copy data back - using (var stream = System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions.AsStream(bmp.PixelBuffer)) - { - for (int y = 0; y < matrix.Height - emptyArea; y++) - { - for (var pixelsizeHeight = 0; pixelsizeHeight < pixelsize; pixelsizeHeight++) - { - for (var x = 0; x < matrix.Width; x++) - { - var color = matrix[x, y] ? foreground : background; - for (var pixelsizeWidth = 0; pixelsizeWidth < pixelsize; pixelsizeWidth++) - { - stream.Write(color, 0, 4); - } - } - for (var x = pixelsize * matrix.Width; x < width; x++) - { - stream.Write(background, 0, 4); - } - } - } - for (int y = matrix.Height * pixelsize - emptyArea; y < height; y++) - { - for (var x = 0; x < width; x++) - { - stream.Write(background, 0, 4); - } - } - } - bmp.Invalidate(); -#else - int foreground = Foreground.A << 24 | Foreground.R << 16 | Foreground.G << 8 | Foreground.B; - int background = Background.A << 24 | Background.R << 16 | Background.G << 8 | Background.B; -#if WPF - var bmp = new WriteableBitmap(width, height, 100.0, 100.0, PixelFormats.Bgra32, null); - var pixels = new int[width*height]; -#else - var bmp = new WriteableBitmap(width, height); - var pixels = bmp.Pixels; -#endif - var index = 0; - - for (int y = 0; y < matrix.Height - emptyArea; y++) - { - for (var pixelsizeHeight = 0; pixelsizeHeight < pixelsize; pixelsizeHeight++) - { - for (var x = 0; x < matrix.Width; x++) - { - var color = matrix[x, y] ? foreground : background; - for (var pixelsizeWidth = 0; pixelsizeWidth < pixelsize; pixelsizeWidth++) - { - pixels[index++] = color; - } - } - for (var x = pixelsize * matrix.Width; x < width; x++) - { - pixels[index++] = background; - } - } - } - for (int y = matrix.Height * pixelsize - emptyArea; y < height; y++) - { - for (var x = 0; x < width; x++) - { - pixels[index++] = background; - } - } -#if WPF - bmp.WritePixels(new Int32Rect(0, 0, width, height), pixels, bmp.BackBufferStride, 0); -#else - bmp.Invalidate(); -#endif -#endif - - /* doesn't correctly work at the moment - * renders at the wrong position - if (outputContent) - { - switch (format) - { - case BarcodeFormat.EAN_8: - if (content.Length < 8) - content = OneDimensionalCodeWriter.CalculateChecksumDigitModulo10(content); - content = content.Insert(4, " "); - break; - case BarcodeFormat.EAN_13: - if (content.Length < 13) - content = OneDimensionalCodeWriter.CalculateChecksumDigitModulo10(content); - content = content.Insert(7, " "); - content = content.Insert(1, " "); - break; - } - var txt1 = new TextBlock {Text = content, FontSize = 10, Foreground = new SolidColorBrush(Colors.Black)}; - bmp.Render(txt1, new RotateTransform { Angle = 0, CenterX = width / 2, CenterY = height - 14}); - bmp.Invalidate(); - } - * */ - - return bmp; - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml b/Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml deleted file mode 100644 index 490d896a9..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml.cs b/Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml.cs deleted file mode 100644 index 007e099e5..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/ZXingScannerControl.xaml.cs +++ /dev/null @@ -1,823 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using System.Threading; -using System.Threading.Tasks; -using Windows.Devices.Enumeration; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Windows.Graphics.Display; -using Windows.Media; -using Windows.Media.Capture; -using Windows.Media.Devices; -using Windows.Media.MediaProperties; -using Windows.System.Display; -using Windows.UI.Core; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Navigation; -using ZXing.Mobile; - -// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236 - -namespace ZXing.Mobile -{ - public sealed partial class ZXingScannerControl : UserControl, IScannerView, IScannerSessionHost, IDisposable - { - public ZXingScannerControl() - { - this.InitializeComponent(); - - displayOrientation = displayInformation.CurrentOrientation; - displayInformation.OrientationChanged += displayInformation_OrientationChanged; - } - public event ScannerOpened OnCameraInitialized; - public delegate void ScannerOpened(); - - public event ScannerError OnScannerError; - public delegate void ScannerError(IEnumerable errors); - async void displayInformation_OrientationChanged(DisplayInformation sender, object args) - { - //This safeguards against a null reference if the device is rotated *before* the first call to StartScanning - if (mediaCapture == null) return; - - displayOrientation = sender.CurrentOrientation; - var props = mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview); - await SetPreviewRotationAsync(props); - } - - // Receive notifications about rotation of the UI and apply any necessary rotation to the preview stream - readonly DisplayInformation displayInformation = DisplayInformation.GetForCurrentView(); - DisplayOrientations displayOrientation = DisplayOrientations.Portrait; - VideoFrame videoFrame; - - // Information about the camera device. - bool mirroringPreview = false; - bool externalCamera = false; - - // Rotation metadata to apply to the preview stream (MF_MT_VIDEO_ROTATION) - // Reference: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868174.aspx - static readonly Guid RotationKey = new Guid("C380465D-2271-428C-9B83-ECEA3B4A85C1"); - - // Prevent the screen from sleeping while the camera is running - readonly DisplayRequest displayRequest = new DisplayRequest(); - - // For listening to media property changes - readonly SystemMediaTransportControls _systemMediaControls = SystemMediaTransportControls.GetForCurrentView(); - - - public async void StartScanning (Action scanCallback, MobileBarcodeScanningOptions options = null) - { - await StartScanningAsync(scanCallback, options); - } - - public async void StopScanning () - { - await StopScanningAsync(); - } - - public void PauseAnalysis () - { - isAnalyzing = false; - } - - public void ResumeAnalysis () - { - - isAnalyzing = true; - } - - public bool IsAnalyzing - { - get { return isAnalyzing; } - } - - public async Task StartScanningAsync(Action scanCallback, MobileBarcodeScanningOptions options = null) - { - if (stopping) - { - var error = "Camera is closing"; - OnScannerError?.Invoke(new[] { error }); - return; - } - - - displayRequest.RequestActive(); - - isAnalyzing = true; - ScanCallback = scanCallback; - ScanningOptions = options ?? MobileBarcodeScanningOptions.Default; - - topText.Text = TopText ?? string.Empty; - bottomText.Text = BottomText ?? string.Empty; - - if (UseCustomOverlay) - { - gridCustomOverlay.Children.Clear(); - if (CustomOverlay != null) - gridCustomOverlay.Children.Add(CustomOverlay); - - gridCustomOverlay.Visibility = Visibility.Visible; - gridDefaultOverlay.Visibility = Visibility.Collapsed; - } - else - { - gridCustomOverlay.Visibility = Visibility.Collapsed; - gridDefaultOverlay.Visibility = Visibility.Visible; - } - - // Find which device to use - var preferredCamera = await GetFilteredCameraOrDefaultAsync(ScanningOptions); - if (preferredCamera == null) - { - var error = "No camera available"; - System.Diagnostics.Debug.WriteLine(error); - isMediaCaptureInitialized = false; - OnScannerError?.Invoke(new[] { error }); - return; - } - - if (preferredCamera.EnclosureLocation == null || preferredCamera.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Unknown) - { - // No information on the location of the camera, assume it's an external camera, not integrated on the device. - externalCamera = true; - } - else - { - // Camera is fixed on the device. - externalCamera = false; - - // Only mirror the preview if the camera is on the front panel. - mirroringPreview = preferredCamera.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Front; - } - - mediaCapture = new MediaCapture(); - - // Initialize the capture with the settings above - try - { - await mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings - { - StreamingCaptureMode = StreamingCaptureMode.Video, - VideoDeviceId = preferredCamera.Id - }); - isMediaCaptureInitialized = true; - } - catch (UnauthorizedAccessException) - { - System.Diagnostics.Debug.WriteLine("Denied access to the camera"); - } - catch (Exception ex) - { - System.Diagnostics.Debug.WriteLine("Exception when init MediaCapture: {0}", ex); - } - - if (!isMediaCaptureInitialized) - { - var error = "Unexpected error on Camera initialisation"; - OnScannerError?.Invoke(new[] { error }); - return; - } - - - // Set the capture element's source to show it in the UI - captureElement.Source = mediaCapture; - captureElement.FlowDirection = mirroringPreview ? FlowDirection.RightToLeft : FlowDirection.LeftToRight; - - // Start the preview - await mediaCapture.StartPreviewAsync(); - - if(mediaCapture.CameraStreamState == CameraStreamState.Streaming) - { - OnCameraInitialized?.Invoke(); - } - - // Get all the available resolutions for preview - var availableProperties = mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoPreview); - var availableResolutions = new List(); - foreach (var ap in availableProperties) - { - var vp = (VideoEncodingProperties)ap; - System.Diagnostics.Debug.WriteLine("Camera Preview Resolution: {0}x{1}", vp.Width, vp.Height); - availableResolutions.Add(new CameraResolution { Width = (int)vp.Width, Height = (int)vp.Height }); - } - CameraResolution previewResolution = null; - if (ScanningOptions.CameraResolutionSelector != null) - previewResolution = ScanningOptions.CameraResolutionSelector(availableResolutions); - - if(availableResolutions == null || availableResolutions.Count < 1) - { - var error = "Camera is busy. Try to close all applications that use camera."; - OnScannerError?.Invoke(new[] { error }); - return; - } - - // If the user did not specify a resolution, let's try and find a suitable one - if (previewResolution == null) - { - // Loop through all supported sizes - foreach (var sps in availableResolutions) - { - // Find one that's >= 640x360 but <= 1000x1000 - // This will likely pick the *smallest* size in that range, which should be fine - if (sps.Width >= 640 && sps.Width <= 1000 && sps.Height >= 360 && sps.Height <= 1000) - { - previewResolution = new CameraResolution - { - Width = sps.Width, - Height = sps.Height - }; - break; - } - } - } - - if (previewResolution == null) - previewResolution = availableResolutions.LastOrDefault(); - - if (previewResolution == null) - { - System.Diagnostics.Debug.WriteLine("No preview resolution available. Camera may be in use by another application."); - return; - } - - MobileBarcodeScanner.Log("Using Preview Resolution: {0}x{1}", previewResolution.Width, previewResolution.Height); - - // Find the matching property based on the selection, again - var chosenProp = availableProperties.FirstOrDefault(ap => ((VideoEncodingProperties)ap).Width == previewResolution.Width && ((VideoEncodingProperties)ap).Height == previewResolution.Height); - - // Pass in the requested preview size properties - // so we can set them at the same time as the preview rotation - // to save an additional set property call - await SetPreviewRotationAsync(chosenProp); - - // *after* the preview is setup, set this so that the UI layout happens - // otherwise the preview gets stuck in a funny place on screen - captureElement.Stretch = Stretch.UniformToFill; - - await SetupAutoFocus(); - - var zxing = ScanningOptions.BuildBarcodeReader(); - - timerPreview = new Timer(async (state) => { - - var delay = ScanningOptions.DelayBetweenAnalyzingFrames; - - if (stopping || processing || !isAnalyzing - || (mediaCapture == null || mediaCapture.CameraStreamState != Windows.Media.Devices.CameraStreamState.Streaming)) - { - timerPreview.Change(delay, Timeout.Infinite); - return; - } - - processing = true; - - SoftwareBitmapLuminanceSource luminanceSource = null; - - try - { - // Get preview - var frame = await mediaCapture.GetPreviewFrameAsync(videoFrame); - - // Create our luminance source - luminanceSource = new SoftwareBitmapLuminanceSource(frame.SoftwareBitmap); - - } catch (Exception ex) - { - MobileBarcodeScanner.Log ("GetPreviewFrame Failed: {0}", ex); - } - - ZXing.Result result = null; - - try - { - // Try decoding the image - if (luminanceSource != null) - result = zxing.Decode(luminanceSource); - } - catch (Exception ex) - { - MobileBarcodeScanner.Log("Warning: zxing.Decode Failed: {0}", ex); - } - - // Check if a result was found - if (result != null && !string.IsNullOrEmpty (result.Text)) - { - if (!ContinuousScanning) - { - delay = Timeout.Infinite; - await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { await StopScanningAsync(); }); - } - else - { - delay = ScanningOptions.DelayBetweenContinuousScans; - } - - LastScanResult = result; - ScanCallback(result); - } - - processing = false; - - timerPreview.Change(delay, Timeout.Infinite); - - }, null, ScanningOptions.InitialDelayBeforeAnalyzingFrames, Timeout.Infinite); - } - - async Task GetFilteredCameraOrDefaultAsync(MobileBarcodeScanningOptions options) - { - var videoCaptureDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); - - var useFront = options.UseFrontCameraIfAvailable.HasValue && options.UseFrontCameraIfAvailable.Value; - - var selectedCamera = videoCaptureDevices.FirstOrDefault(vcd => vcd.EnclosureLocation != null - && ((!useFront && vcd.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back) - || (useFront && vcd.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Front))); - - - // we fall back to the first camera that we can find. - if (selectedCamera == null) - { - var whichCamera = useFront ? "front" : "back"; - System.Diagnostics.Debug.WriteLine("Finding " + whichCamera + " camera failed, opening first available camera"); - selectedCamera = videoCaptureDevices.FirstOrDefault(); - } - - return selectedCamera; - } - - protected override void OnPointerPressed(PointerRoutedEventArgs e) - { - System.Diagnostics.Debug.WriteLine("AutoFocus requested"); - base.OnPointerPressed(e); - var pt = e.GetCurrentPoint(captureElement); - new Task(() => { AutoFocusAsync((int)pt.Position.X, (int)pt.Position.Y, true); }); - } - - Timer timerPreview; - MediaCapture mediaCapture; - - bool stopping = false; - bool isMediaCaptureInitialized = false; - - volatile bool processing = false; - volatile bool isAnalyzing = false; - - public Action ScanCallback { get; set; } - public MobileBarcodeScanningOptions ScanningOptions { get; set; } - public MobileBarcodeScannerBase Scanner { get; set; } - public UIElement CustomOverlay { get; set; } - public string TopText { get; set; } - public string BottomText { get; set; } - public bool UseCustomOverlay { get; set; } - public bool ContinuousScanning { get; set; } - - public Result LastScanResult { get; set; } - - - public bool IsTorchOn - { - get - { - return HasTorch && mediaCapture.VideoDeviceController.TorchControl.Enabled; - } - } - - public bool IsFocusSupported - { - get - { - return mediaCapture != null - && isMediaCaptureInitialized - && mediaCapture.VideoDeviceController != null - && mediaCapture.VideoDeviceController.FocusControl != null - && mediaCapture.VideoDeviceController.FocusControl.Supported; - } - } - - private async Task SetupAutoFocus() - { - if (IsFocusSupported) - { - var focusControl = mediaCapture.VideoDeviceController.FocusControl; - - var focusSettings = new FocusSettings(); - - if (ScanningOptions.DisableAutofocus) - { - focusSettings.Mode = FocusMode.Manual; - focusSettings.Distance = ManualFocusDistance.Nearest; - focusControl.Configure(focusSettings); - return; - } - - focusSettings.AutoFocusRange = focusControl.SupportedFocusRanges.Contains(AutoFocusRange.FullRange) - ? AutoFocusRange.FullRange - : focusControl.SupportedFocusRanges.FirstOrDefault(); - - var supportedFocusModes = focusControl.SupportedFocusModes; - if (supportedFocusModes.Contains(FocusMode.Continuous)) - { - focusSettings.Mode = FocusMode.Continuous; - } - else if (supportedFocusModes.Contains(FocusMode.Auto)) - { - focusSettings.Mode = FocusMode.Auto; - } - - if (focusSettings.Mode == FocusMode.Continuous || focusSettings.Mode == FocusMode.Auto) - { - focusSettings.WaitForFocus = false; - focusControl.Configure(focusSettings); - await focusControl.FocusAsync(); - } - } - } - - public void Torch(bool on) - { - if (HasTorch) - mediaCapture.VideoDeviceController.TorchControl.Enabled = on; - } - - public void ToggleTorch() - { - if (HasTorch) - Torch(!IsTorchOn); - } - - public bool HasTorch - { - get - { - return mediaCapture != null - && mediaCapture.VideoDeviceController != null - && mediaCapture.VideoDeviceController.TorchControl != null - && mediaCapture.VideoDeviceController.TorchControl.Supported; - } - } - - public async void AutoFocus () - { - await AutoFocusAsync(0, 0, false); - } - - public async void AutoFocus (int x, int y) - { - await AutoFocusAsync(x, y, true); - } - - public async Task AutoFocusAsync(int x, int y, bool useCoordinates) - { - if (ScanningOptions.DisableAutofocus) - return; - - if (IsFocusSupported && mediaCapture?.CameraStreamState == CameraStreamState.Streaming) - { - var focusControl = mediaCapture.VideoDeviceController.FocusControl; - var roiControl = mediaCapture.VideoDeviceController.RegionsOfInterestControl; - try - { - if (roiControl.AutoFocusSupported && roiControl.MaxRegions > 0) - { - if (useCoordinates) - { - var props = mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview); - - var previewEncodingProperties = GetPreviewResolution(props); - var previewRect = GetPreviewStreamRectInControl(previewEncodingProperties, captureElement); - var focusPreview = ConvertUiTapToPreviewRect(new Point(x, y), new Size(20, 20), previewRect); - var regionOfInterest = new RegionOfInterest - { - AutoFocusEnabled = true, - BoundsNormalized = true, - Bounds = focusPreview, - Type = RegionOfInterestType.Unknown, - Weight = 100 - }; - await roiControl.SetRegionsAsync(new[] { regionOfInterest }, true); - - var focusRange = focusControl.SupportedFocusRanges.Contains(AutoFocusRange.FullRange) - ? AutoFocusRange.FullRange - : focusControl.SupportedFocusRanges.FirstOrDefault(); - - var focusMode = focusControl.SupportedFocusModes.Contains(FocusMode.Single) - ? FocusMode.Single - : focusControl.SupportedFocusModes.FirstOrDefault(); - - var settings = new FocusSettings - { - Mode = focusMode, - AutoFocusRange = focusRange, - }; - - focusControl.Configure(settings); - } - else - { - // If no region provided, clear any regions and reset focus - await roiControl.ClearRegionsAsync(); - } - } - - await focusControl.FocusAsync(); - } - catch (Exception ex) - { - System.Diagnostics.Debug.WriteLine("AutoFocusAsync Error: {0}", ex); - } - } - } - - public async Task StopScanningAsync() - { - if (stopping) - return; - - stopping = true; - isAnalyzing = false; - - displayRequest.RequestRelease(); - - try - { - if (IsTorchOn) - Torch(false); - if (isMediaCaptureInitialized) - await mediaCapture.StopPreviewAsync(); - if (UseCustomOverlay && CustomOverlay != null) - gridCustomOverlay.Children.Remove(CustomOverlay); - } - catch { } - finally { - //second execution from sample will crash if the object is not properly disposed (always on mobile, sometimes on desktop) - if (mediaCapture != null) - mediaCapture.Dispose(); - } - - //this solves a crash occuring when the user rotates the screen after the QR scanning is closed - displayInformation.OrientationChanged -= displayInformation_OrientationChanged; - - if (timerPreview != null) - timerPreview.Change(Timeout.Infinite, Timeout.Infinite); - stopping = false; - } - - public async Task Cancel() - { - LastScanResult = null; - - await StopScanningAsync(); - - ScanCallback?.Invoke(null); - } - - public async void Dispose() - { - await StopScanningAsync(); - gridCustomOverlay?.Children?.Clear(); - } - - protected override void OnTapped(TappedRoutedEventArgs e) - { - base.OnTapped(e); - - //TODO: Focus - } - //protected override void OnTap(System.Windows.Input.GestureEventArgs e) - //{ - // base.OnTap(e); - - // if (_reader != null) - // { - // //var pos = e.GetPosition(this); - // _reader.Focus(); - // } - //} - - private void buttonToggleFlash_Click(object sender, RoutedEventArgs e) - { - ToggleTorch(); - } - - /// - /// Gets the current orientation of the UI in relation to the device and applies a corrective rotation to the preview - /// - private async Task SetPreviewRotationAsync(IMediaEncodingProperties props) - { - // Only need to update the orientation if the camera is mounted on the device. - if (mediaCapture == null) - return; - - // Calculate which way and how far to rotate the preview. - int rotationDegrees; - VideoRotation sourceRotation; - CalculatePreviewRotation(out sourceRotation, out rotationDegrees); - - // Set preview rotation in the preview source. - mediaCapture.SetPreviewRotation(sourceRotation); - - // Add rotation metadata to the preview stream to make sure the aspect ratio / dimensions match when rendering and getting preview frames - //var props = mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview); - props.Properties.Add(RotationKey, rotationDegrees); - await mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, props); - - var currentPreviewResolution = GetPreviewResolution(props); - // Setup a frame to use as the input settings - videoFrame = new VideoFrame(Windows.Graphics.Imaging.BitmapPixelFormat.Bgra8, (int)currentPreviewResolution.Width, (int)currentPreviewResolution.Height); - } - - private Size GetPreviewResolution(IMediaEncodingProperties props) - { - // Get our preview properties - var previewProperties = props as VideoEncodingProperties; - if (previewProperties != null) - { - var streamWidth = previewProperties.Width; - var streamHeight = previewProperties.Height; - - // For portrait orientations, the width and height need to be swapped - if (displayOrientation == DisplayOrientations.Portrait || displayOrientation == DisplayOrientations.PortraitFlipped) - { - streamWidth = previewProperties.Height; - streamHeight = previewProperties.Width; - } - - return new Size(streamWidth, streamHeight); - } - - return default(Size); - } - - /// - /// Reads the current orientation of the app and calculates the VideoRotation necessary to ensure the preview is rendered in the correct orientation. - /// - /// The rotation value to use in MediaCapture.SetPreviewRotation. - /// The accompanying rotation metadata with which to tag the preview stream. - private void CalculatePreviewRotation(out VideoRotation sourceRotation, out int rotationDegrees) - { - // Note that in some cases, the rotation direction needs to be inverted if the preview is being mirrored. - switch (displayInformation.CurrentOrientation) - { - case DisplayOrientations.Portrait: - if (mirroringPreview) - { - rotationDegrees = 270; - sourceRotation = VideoRotation.Clockwise270Degrees; - } - else - { - rotationDegrees = 90; - sourceRotation = VideoRotation.Clockwise90Degrees; - } - break; - - case DisplayOrientations.LandscapeFlipped: - // No need to invert this rotation, as rotating 180 degrees is the same either way. - rotationDegrees = 180; - sourceRotation = VideoRotation.Clockwise180Degrees; - break; - - case DisplayOrientations.PortraitFlipped: - if (mirroringPreview) - { - rotationDegrees = 90; - sourceRotation = VideoRotation.Clockwise90Degrees; - } - else - { - rotationDegrees = 270; - sourceRotation = VideoRotation.Clockwise270Degrees; - } - break; - - case DisplayOrientations.Landscape: - default: - rotationDegrees = 0; - sourceRotation = VideoRotation.None; - break; - } - } - - /// - /// Applies the necessary rotation to a tap on a CaptureElement (with Stretch mode set to Uniform) to account for device orientation - /// - /// The location, in UI coordinates, of the user tap - /// The size, in UI coordinates, of the desired focus rectangle - /// The area within the CaptureElement that is actively showing the preview, and is not part of the letterboxed area - /// A Rect that can be passed to the MediaCapture Focus and RegionsOfInterest APIs, with normalized bounds in the orientation of the native stream - private Rect ConvertUiTapToPreviewRect(Point tap, Size size, Rect previewRect) - { - // Adjust for the resulting focus rectangle to be centered around the position - double left = tap.X - size.Width / 2, top = tap.Y - size.Height / 2; - - // Get the information about the active preview area within the CaptureElement (in case it's letterboxed) - double previewWidth = previewRect.Width, previewHeight = previewRect.Height; - double previewLeft = previewRect.Left, previewTop = previewRect.Top; - - // Transform the left and top of the tap to account for rotation - switch (displayOrientation) - { - case DisplayOrientations.Portrait: - var tempLeft = left; - - left = top; - top = previewRect.Width - tempLeft; - break; - case DisplayOrientations.LandscapeFlipped: - left = previewRect.Width - left; - top = previewRect.Height - top; - break; - case DisplayOrientations.PortraitFlipped: - var tempTop = top; - - top = left; - left = previewRect.Width - tempTop; - break; - } - - // For portrait orientations, the information about the active preview area needs to be rotated - if (displayOrientation == DisplayOrientations.Portrait || displayOrientation == DisplayOrientations.PortraitFlipped) - { - previewWidth = previewRect.Height; - previewHeight = previewRect.Width; - previewLeft = previewRect.Top; - previewTop = previewRect.Left; - } - - // Normalize width and height of the focus rectangle - var width = size.Width / previewWidth; - var height = size.Height / previewHeight; - - // Shift rect left and top to be relative to just the active preview area - left -= previewLeft; - top -= previewTop; - - // Normalize left and top - left /= previewWidth; - top /= previewHeight; - - // Ensure rectangle is fully contained within the active preview area horizontally - left = Math.Max(left, 0); - left = Math.Min(1 - width, left); - - // Ensure rectangle is fully contained within the active preview area vertically - top = Math.Max(top, 0); - top = Math.Min(1 - height, top); - - // Create and return resulting rectangle - return new Rect(left, top, width, height); - } - - /// - /// Calculates the size and location of the rectangle that contains the preview stream within the preview control, when the scaling mode is Uniform - /// - /// The resolution at which the preview is running - /// The control that is displaying the preview using Uniform as the scaling mode - /// - private static Rect GetPreviewStreamRectInControl(Size previewResolution, CaptureElement previewControl) - { - var result = new Rect(); - - // In case this function is called before everything is initialized correctly, return an empty result - if (previewControl == null || previewControl.ActualHeight < 1 || previewControl.ActualWidth < 1 || - previewResolution.Height < 1 || previewResolution.Width < 1) - { - return result; - } - - var streamWidth = previewResolution.Width; - var streamHeight = previewResolution.Height; - - // Start by assuming the preview display area in the control spans the entire width and height both (this is corrected in the next if for the necessary dimension) - result.Width = previewControl.ActualWidth; - result.Height = previewControl.ActualHeight; - - // If UI is "wider" than preview, letterboxing will be on the sides - if ((previewControl.ActualWidth / previewControl.ActualHeight > streamWidth / (double)streamHeight)) - { - var scale = previewControl.ActualHeight / streamHeight; - var scaledWidth = streamWidth * scale; - - result.X = (previewControl.ActualWidth - scaledWidth) / 2.0; - result.Width = scaledWidth; - } - else // Preview stream is "wider" than UI, so letterboxing will be on the top+bottom - { - var scale = previewControl.ActualWidth / streamWidth; - var scaledHeight = streamHeight * scale; - - result.Y = (previewControl.ActualHeight - scaledHeight) / 2.0; - result.Height = scaledHeight; - } - - return result; - } - } -} diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/project.json b/Source/ZXing.Net.Mobile.WindowsUniversal/project.json deleted file mode 100644 index e7fd3aeca..000000000 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/project.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "dependencies": { - "Microsoft.NETCore.UniversalWindowsPlatform": "6.0.1" - }, - "frameworks": { - "uap10.0": {} - }, - "runtimes": { - "win10-arm": {}, - "win10-arm-aot": {}, - "win10-x86": {}, - "win10-x86-aot": {}, - "win10-x64": {}, - "win10-x64-aot": {} - } -} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.iOS/AVCaptureScannerView.cs b/Source/ZXing.Net.Mobile.iOS/AVCaptureScannerView.cs deleted file mode 100644 index 970f6b05e..000000000 --- a/Source/ZXing.Net.Mobile.iOS/AVCaptureScannerView.cs +++ /dev/null @@ -1,775 +0,0 @@ -using System; -using System.Linq; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; - -using Foundation; -using AVFoundation; -using CoreFoundation; -using CoreGraphics; -using CoreMedia; -using CoreVideo; -using ObjCRuntime; -using UIKit; - -using ZXing.Common; -using ZXing.Mobile; - -namespace ZXing.Mobile -{ - public class AVCaptureScannerView : UIView, IZXingScanner, IScannerSessionHost - { - public AVCaptureScannerView() - { - } - - public AVCaptureScannerView(IntPtr handle) : base(handle) - { - } - - public AVCaptureScannerView (CGRect frame) : base(frame) - { - } - - AVCaptureSession session; - AVCaptureVideoPreviewLayer previewLayer; - //AVCaptureVideoDataOutput output; - //OutputRecorder outputRecorder; - //DispatchQueue queue; - Action resultCallback; - volatile bool stopped = true; - - volatile bool foundResult = false; - CaptureDelegate captureDelegate; - - UIView layerView; - UIView overlayView = null; - - public event Action OnCancelButtonPressed; - - public string CancelButtonText { get;set; } - public string FlashButtonText { get;set; } - - public MobileBarcodeScanningOptions ScanningOptions { get; set; } - - void Setup() - { - if (overlayView != null) - overlayView.RemoveFromSuperview (); - - if (UseCustomOverlayView && CustomOverlayView != null) - overlayView = CustomOverlayView; - else { - overlayView = new ZXingDefaultOverlayView (new CGRect (0, 0, this.Frame.Width, this.Frame.Height), - TopText, BottomText, CancelButtonText, FlashButtonText, - () => { - var evt = OnCancelButtonPressed; - if (evt != null) - evt(); - }, ToggleTorch); - } - - if (overlayView != null) - { - /* UITapGestureRecognizer tapGestureRecognizer = new UITapGestureRecognizer (); - - tapGestureRecognizer.AddTarget (() => { - - var pt = tapGestureRecognizer.LocationInView(overlayView); - - Focus(pt); - - Console.WriteLine("OVERLAY TOUCH: " + pt.X + ", " + pt.Y); - - }); - tapGestureRecognizer.CancelsTouchesInView = false; - tapGestureRecognizer.NumberOfTapsRequired = 1; - tapGestureRecognizer.NumberOfTouchesRequired = 1; - - overlayView.AddGestureRecognizer (tapGestureRecognizer);*/ - - overlayView.Frame = new CGRect(0, 0, this.Frame.Width, this.Frame.Height); - overlayView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - - - } - } - - - bool torch = false; - bool analyzing = true; - DateTime lastAnalysis = DateTime.UtcNow.AddYears (-99); - bool wasScanned = false; - bool working = false; - - - bool SetupCaptureSession () - { - var availableResolutions = new List (); - - var consideredResolutions = new Dictionary { - { AVCaptureSession.Preset352x288, new CameraResolution { Width = 352, Height = 288 } }, - { AVCaptureSession.PresetMedium, new CameraResolution { Width = 480, Height = 360 } }, //480x360 - { AVCaptureSession.Preset640x480, new CameraResolution { Width = 640, Height = 480 } }, - { AVCaptureSession.Preset1280x720, new CameraResolution { Width = 1280, Height = 720 } }, - { AVCaptureSession.Preset1920x1080, new CameraResolution { Width = 1920, Height = 1080 } } - }; - - // configure the capture session for low resolution, change this if your code - // can cope with more data or volume - session = new AVCaptureSession () { - SessionPreset = AVCaptureSession.Preset640x480 - }; - - // create a device input and attach it to the session -// var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType (AVMediaType.Video); - AVCaptureDevice captureDevice = null; - var devices = AVCaptureDevice.DevicesWithMediaType(AVMediaType.Video); - foreach (var device in devices) - { - captureDevice = device; - if (ScanningOptions.UseFrontCameraIfAvailable.HasValue && - ScanningOptions.UseFrontCameraIfAvailable.Value && - device.Position == AVCaptureDevicePosition.Front) - - break; //Front camera successfully set - else if (device.Position == AVCaptureDevicePosition.Back && (!ScanningOptions.UseFrontCameraIfAvailable.HasValue || !ScanningOptions.UseFrontCameraIfAvailable.Value)) - break; //Back camera succesfully set - } - if (captureDevice == null){ - Console.WriteLine ("No captureDevice - this won't work on the simulator, try a physical device"); - if (overlayView != null) - { - this.AddSubview (overlayView); - this.BringSubviewToFront (overlayView); - } - return false; - } - - CameraResolution resolution = null; - - // Find resolution - // Go through the resolutions we can even consider - foreach (var cr in consideredResolutions) { - // Now check to make sure our selected device supports the resolution - // so we can add it to the list to pick from - if (captureDevice.SupportsAVCaptureSessionPreset (cr.Key)) - availableResolutions.Add (cr.Value); - } - - resolution = ScanningOptions.GetResolution (availableResolutions); - - // See if the user selected a resolution - if (resolution != null) { - // Now get the preset string from the resolution chosen - var preset = (from c in consideredResolutions - where c.Value.Width == resolution.Width - && c.Value.Height == resolution.Height - select c.Key).FirstOrDefault (); - - // If we found a matching preset, let's set it on the session - if (!string.IsNullOrEmpty(preset)) - session.SessionPreset = preset; - } - - var input = AVCaptureDeviceInput.FromDevice (captureDevice); - if (input == null){ - Console.WriteLine ("No input - this won't work on the simulator, try a physical device"); - if (overlayView != null) - { - this.AddSubview (overlayView); - this.BringSubviewToFront (overlayView); - } - return false; - } - else - session.AddInput (input); - - - foundResult = false; - //Detect barcodes with built in avcapture stuff - AVCaptureMetadataOutput metadataOutput = new AVCaptureMetadataOutput(); - - captureDelegate = new CaptureDelegate (metaDataObjects => - { - if (!analyzing) - return; - - //Console.WriteLine("Found MetaData Objects"); - - var msSinceLastPreview = (DateTime.UtcNow - lastAnalysis).TotalMilliseconds; - - if (msSinceLastPreview < ScanningOptions.DelayBetweenAnalyzingFrames - || (wasScanned && msSinceLastPreview < ScanningOptions.DelayBetweenContinuousScans) - || working) - //|| CancelTokenSource.IsCancellationRequested) - { - return; - } - - try { - working = true; - wasScanned = false; - lastAnalysis = DateTime.UtcNow; - - var mdo = metaDataObjects.FirstOrDefault(); - - var readableObj = mdo as AVMetadataMachineReadableCodeObject; - - if (readableObj == null) - return; - - wasScanned = true; - - var zxingFormat = ZXingBarcodeFormatFromAVCaptureBarcodeFormat(readableObj.Type.ToString()); - - var rs = new ZXing.Result(readableObj.StringValue, null, null, zxingFormat); - - resultCallback(rs); - } finally { - working = false; - } - }); - - metadataOutput.SetDelegate (captureDelegate, DispatchQueue.MainQueue); - session.AddOutput (metadataOutput); - - //Setup barcode formats - if (ScanningOptions.PossibleFormats != null && ScanningOptions.PossibleFormats.Count > 0) - { - #if __UNIFIED__ - var formats = AVMetadataObjectType.None; - - foreach (var f in ScanningOptions.PossibleFormats) - formats |= AVCaptureBarcodeFormatFromZXingBarcodeFormat (f); - - formats &= ~AVMetadataObjectType.None; - - metadataOutput.MetadataObjectTypes = formats; - #else - var formats = new List (); - - foreach (var f in ScanningOptions.PossibleFormats) - formats.AddRange (AVCaptureBarcodeFormatFromZXingBarcodeFormat (f)); - - metadataOutput.MetadataObjectTypes = (from f in formats.Distinct () select new NSString(f)).ToArray(); - #endif - } - else - metadataOutput.MetadataObjectTypes = metadataOutput.AvailableMetadataObjectTypes; - - - - - - previewLayer = new AVCaptureVideoPreviewLayer(session); - - // //Framerate set here (15 fps) - // if (previewLayer.RespondsToSelector(new Selector("connection"))) - // { - // if (UIDevice.CurrentDevice.CheckSystemVersion (7, 0)) - // { - // var perf1 = PerformanceCounter.Start (); - - // NSError lockForConfigErr = null; - - // captureDevice.LockForConfiguration (out lockForConfigErr); - // if (lockForConfigErr == null) - // { - // captureDevice.ActiveVideoMinFrameDuration = new CMTime (1, 10); - // captureDevice.UnlockForConfiguration (); - // } - - // PerformanceCounter.Stop (perf1, "PERF: ActiveVideoMinFrameDuration Took {0} ms"); - // } - // else - // previewLayer.Connection.VideoMinFrameDuration = new CMTime(1, 10); - // } - - #if __UNIFIED__ - previewLayer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill; - #else - previewLayer.LayerVideoGravity = AVLayerVideoGravity.ResizeAspectFill; - #endif - previewLayer.Frame = new CGRect(0, 0, this.Frame.Width, this.Frame.Height); - previewLayer.Position = new CGPoint(this.Layer.Bounds.Width / 2, (this.Layer.Bounds.Height / 2)); - - layerView = new UIView(new CGRect(0, 0, this.Frame.Width, this.Frame.Height)); - layerView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - layerView.Layer.AddSublayer(previewLayer); - - this.AddSubview(layerView); - - ResizePreview(UIApplication.SharedApplication.StatusBarOrientation); - - if (overlayView != null) - { - this.AddSubview (overlayView); - this.BringSubviewToFront (overlayView); - - //overlayView.LayoutSubviews (); - } - - session.StartRunning (); - - Console.WriteLine ("RUNNING!!!"); - - - - //output.AlwaysDiscardsLateVideoFrames = true; - - - Console.WriteLine("SetupCamera Finished"); - - //session.AddOutput (output); - //session.StartRunning (); - - - if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus)) - { - NSError err = null; - if (captureDevice.LockForConfiguration(out err)) - { - if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus)) - captureDevice.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus; - else if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.AutoFocus)) - captureDevice.FocusMode = AVCaptureFocusMode.AutoFocus; - - if (captureDevice.IsExposureModeSupported (AVCaptureExposureMode.ContinuousAutoExposure)) - captureDevice.ExposureMode = AVCaptureExposureMode.ContinuousAutoExposure; - else if (captureDevice.IsExposureModeSupported(AVCaptureExposureMode.AutoExpose)) - captureDevice.ExposureMode = AVCaptureExposureMode.AutoExpose; - - if (captureDevice.IsWhiteBalanceModeSupported (AVCaptureWhiteBalanceMode.ContinuousAutoWhiteBalance)) - captureDevice.WhiteBalanceMode = AVCaptureWhiteBalanceMode.ContinuousAutoWhiteBalance; - else if (captureDevice.IsWhiteBalanceModeSupported (AVCaptureWhiteBalanceMode.AutoWhiteBalance)) - captureDevice.WhiteBalanceMode = AVCaptureWhiteBalanceMode.AutoWhiteBalance; - - if (UIDevice.CurrentDevice.CheckSystemVersion (7, 0) && captureDevice.AutoFocusRangeRestrictionSupported) - captureDevice.AutoFocusRangeRestriction = AVCaptureAutoFocusRangeRestriction.Near; - - if (captureDevice.FocusPointOfInterestSupported) - captureDevice.FocusPointOfInterest = new CGPoint(0.5f, 0.5f); - - if (captureDevice.ExposurePointOfInterestSupported) - captureDevice.ExposurePointOfInterest = new CGPoint (0.5f, 0.5f); - - captureDevice.UnlockForConfiguration(); - } - else - Console.WriteLine("Failed to Lock for Config: " + err.Description); - } - - return true; - } - - public void DidRotate(UIInterfaceOrientation orientation) - { - ResizePreview (orientation); - - this.LayoutSubviews (); - - // if (overlayView != null) - // overlayView.LayoutSubviews (); - } - - public void ResizePreview (UIInterfaceOrientation orientation) - { - if (previewLayer == null) - return; - - previewLayer.Frame = new CGRect(0, 0, this.Frame.Width, this.Frame.Height); - - if (previewLayer.RespondsToSelector (new Selector ("connection")) && previewLayer.Connection != null) - { - switch (orientation) - { - case UIInterfaceOrientation.LandscapeLeft: - previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.LandscapeLeft; - break; - case UIInterfaceOrientation.LandscapeRight: - previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.LandscapeRight; - break; - case UIInterfaceOrientation.Portrait: - previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.Portrait; - break; - case UIInterfaceOrientation.PortraitUpsideDown: - previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.PortraitUpsideDown; - break; - } - } - } - - public void Focus(CGPoint pointOfInterest) - { - //Get the device - if (AVMediaType.Video == null) - return; - - var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); - - if (device == null) - return; - - //See if it supports focusing on a point - if (device.FocusPointOfInterestSupported && !device.AdjustingFocus) - { - NSError err = null; - - //Lock device to config - if (device.LockForConfiguration(out err)) - { - Console.WriteLine("Focusing at point: " + pointOfInterest.X + ", " + pointOfInterest.Y); - - //Focus at the point touched - device.FocusPointOfInterest = pointOfInterest; - device.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus; - device.UnlockForConfiguration(); - } - } - } - - - - #region IZXingScanner implementation - public void StartScanning (Action scanResultHandler, MobileBarcodeScanningOptions options = null) - { - if (!analyzing) - analyzing = true; - - if (!stopped) - return; - - Setup (); - - this.ScanningOptions = options; - this.resultCallback = scanResultHandler; - - Console.WriteLine("StartScanning"); - - this.InvokeOnMainThread(() => { - if (!SetupCaptureSession()) - { - //Setup 'simulated' view: - Console.WriteLine("Capture Session FAILED"); - - } - - if (Runtime.Arch == Arch.SIMULATOR) - { - var simView = new UIView(new CGRect(0, 0, this.Frame.Width, this.Frame.Height)); - simView.BackgroundColor = UIColor.LightGray; - simView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - this.InsertSubview(simView, 0); - - } - }); - - stopped = false; - } - - - public void StopScanning() - { - if (stopped) - return; - - Console.WriteLine("Stopping..."); - - //Try removing all existing outputs prior to closing the session - try - { - while (session.Outputs.Length > 0) - session.RemoveOutput (session.Outputs [0]); - } - catch { } - - //Try to remove all existing inputs prior to closing the session - try - { - while (session.Inputs.Length > 0) - session.RemoveInput (session.Inputs [0]); - } - catch { } - - if (session.Running) - session.StopRunning(); - - stopped = true; - } - - public void PauseAnalysis () - { - analyzing = false; - } - - public void ResumeAnalysis () - { - analyzing = true; - } - - public void Torch (bool on) - { - try - { - NSError err; - - var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); - if (device.HasFlash || device.HasTorch) { - device.LockForConfiguration(out err); - - if (on) - { - if (device.HasTorch) - device.TorchMode = AVCaptureTorchMode.On; - if (device.HasFlash) - device.FlashMode = AVCaptureFlashMode.On; - } - else - { - if (device.HasTorch) - device.TorchMode = AVCaptureTorchMode.Off; - if (device.HasFlash) - device.FlashMode = AVCaptureFlashMode.Off; - } - - device.UnlockForConfiguration(); - } - device = null; - - torch = on; - } - catch { } - } - - public void ToggleTorch() - { - Torch(!IsTorchOn); - } - - public void AutoFocus () - { - //Doesn't do much on iOS :( - } - - public void AutoFocus (int x, int y) - { - //Doesn't do much on iOS :( - } - - public string TopText { get;set; } - public string BottomText { get;set; } - - - public UIView CustomOverlayView { get; set; } - public bool UseCustomOverlayView { get; set; } - public bool IsAnalyzing { get { return analyzing; } } - public bool IsTorchOn { get { return torch; } } - - bool? hasTorch = null; - public bool HasTorch { - get { - if (hasTorch.HasValue) - return hasTorch.Value; - - var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); - hasTorch = device.HasFlash || device.HasTorch; - return hasTorch.Value; - } - } - #endregion - - public static bool SupportsAllRequestedBarcodeFormats(IEnumerable formats) - { - var supported = new List () { - BarcodeFormat.AZTEC, BarcodeFormat.CODE_128, BarcodeFormat.CODE_39, - BarcodeFormat.CODE_93, BarcodeFormat.EAN_13, BarcodeFormat.EAN_8, - BarcodeFormat.PDF_417, BarcodeFormat.QR_CODE, BarcodeFormat.UPC_E, - BarcodeFormat.DATA_MATRIX, BarcodeFormat.ITF, - BarcodeFormat.All_1D - }; - - return !formats.Any (f => !supported.Contains (f)); - } - - BarcodeFormat ZXingBarcodeFormatFromAVCaptureBarcodeFormat(string avMetadataObjectType) - { - switch(avMetadataObjectType) - { - case "AztecCode": - return BarcodeFormat.AZTEC; - case "Code128Code": - return BarcodeFormat.CODE_128; - case "Code39Code": - return BarcodeFormat.CODE_39; - case "Code39Mod43Code": - return BarcodeFormat.CODE_39; - case "Code93Code": - return BarcodeFormat.CODE_93; - case "EAN13Code": - return BarcodeFormat.EAN_13; - case "EAN8Code": - return BarcodeFormat.EAN_8; - case "PDF417Code": - return BarcodeFormat.PDF_417; - case "QRCode": - return BarcodeFormat.QR_CODE; - case "UPCECode": - return BarcodeFormat.UPC_E; - case "DataMatrixCode": - return BarcodeFormat.DATA_MATRIX; - case "Interleaved2of5Code": - return BarcodeFormat.ITF; - default: - return BarcodeFormat.QR_CODE; - } - } - - #if __UNIFIED__ - AVMetadataObjectType AVCaptureBarcodeFormatFromZXingBarcodeFormat(BarcodeFormat zxingBarcodeFormat) - { - AVMetadataObjectType formats = AVMetadataObjectType.None; - - switch (zxingBarcodeFormat) - { - case BarcodeFormat.AZTEC: - formats |= AVMetadataObjectType.AztecCode; - break; - case BarcodeFormat.CODE_128: - formats |= AVMetadataObjectType.Code128Code; - break; - case BarcodeFormat.CODE_39: - formats |= AVMetadataObjectType.Code39Code; - formats |= AVMetadataObjectType.Code39Mod43Code; - break; - case BarcodeFormat.CODE_93: - formats |= AVMetadataObjectType.Code93Code; - break; - case BarcodeFormat.EAN_13: - formats |= AVMetadataObjectType.EAN13Code; - break; - case BarcodeFormat.EAN_8: - formats |= AVMetadataObjectType.EAN8Code; - break; - case BarcodeFormat.PDF_417: - formats |= AVMetadataObjectType.PDF417Code; - break; - case BarcodeFormat.QR_CODE: - formats |= AVMetadataObjectType.QRCode; - break; - case BarcodeFormat.UPC_E: - formats |= AVMetadataObjectType.UPCECode; - break; - case BarcodeFormat.All_1D: - formats |= AVMetadataObjectType.UPCECode; - formats |= AVMetadataObjectType.EAN13Code; - formats |= AVMetadataObjectType.EAN8Code; - formats |= AVMetadataObjectType.Code39Code; - formats |= AVMetadataObjectType.Code39Mod43Code; - formats |= AVMetadataObjectType.Code93Code; - break; - case BarcodeFormat.DATA_MATRIX: - formats |= AVMetadataObjectType.DataMatrixCode; - break; - case BarcodeFormat.ITF: - formats |= AVMetadataObjectType.ITF14Code; - break; - case BarcodeFormat.CODABAR: - case BarcodeFormat.MAXICODE: - case BarcodeFormat.MSI: - case BarcodeFormat.PLESSEY: - case BarcodeFormat.RSS_14: - case BarcodeFormat.RSS_EXPANDED: - case BarcodeFormat.UPC_A: - //TODO: Throw exception? - break; - } - - return formats; - } - #else - string[] AVCaptureBarcodeFormatFromZXingBarcodeFormat(BarcodeFormat zxingBarcodeFormat) - { - List formats = new List (); - - switch (zxingBarcodeFormat) - { - case BarcodeFormat.AZTEC: - formats.Add (AVMetadataObject.TypeAztecCode); - break; - case BarcodeFormat.CODE_128: - formats.Add (AVMetadataObject.TypeCode128Code); - break; - case BarcodeFormat.CODE_39: - formats.Add (AVMetadataObject.TypeCode39Code); - formats.Add (AVMetadataObject.TypeCode39Mod43Code); - break; - case BarcodeFormat.CODE_93: - formats.Add (AVMetadataObject.TypeCode93Code); - break; - case BarcodeFormat.EAN_13: - formats.Add (AVMetadataObject.TypeEAN13Code); - break; - case BarcodeFormat.EAN_8: - formats.Add (AVMetadataObject.TypeEAN8Code); - break; - case BarcodeFormat.PDF_417: - formats.Add (AVMetadataObject.TypePDF417Code); - break; - case BarcodeFormat.QR_CODE: - formats.Add (AVMetadataObject.TypeQRCode); - break; - case BarcodeFormat.UPC_E: - formats.Add (AVMetadataObject.TypeUPCECode); - break; - case BarcodeFormat.All_1D: - formats.Add (AVMetadataObject.TypeUPCECode); - formats.Add (AVMetadataObject.TypeEAN13Code); - formats.Add (AVMetadataObject.TypeEAN8Code); - formats.Add (AVMetadataObject.TypeCode39Code); - formats.Add (AVMetadataObject.TypeCode39Mod43Code); - formats.Add (AVMetadataObject.TypeCode93Code); - break; - case BarcodeFormat.DATA_MATRIX: - formats.Add (AVMetadataObject.TypeDataMatrixCode); - break; - case BarcodeFormat.ITF: - formats.Add (AVMetadataObject.TypeITF14Code); - break; - case BarcodeFormat.CODABAR: - case BarcodeFormat.MAXICODE: - case BarcodeFormat.MSI: - case BarcodeFormat.PLESSEY: - case BarcodeFormat.RSS_14: - case BarcodeFormat.RSS_EXPANDED: - case BarcodeFormat.UPC_A: - //TODO: Throw exception? - break; - } - - return formats.ToArray(); - } - #endif - } - - - - - class CaptureDelegate : AVCaptureMetadataOutputObjectsDelegate - { - public CaptureDelegate (Action> onCapture) - { - OnCapture = onCapture; - } - - public Action> OnCapture { get;set; } - - public override void DidOutputMetadataObjects (AVCaptureMetadataOutput captureOutput, AVMetadataObject[] metadataObjects, AVCaptureConnection connection) - { - if (OnCapture != null && metadataObjects != null) - OnCapture (metadataObjects); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.iOS/AVCaptureScannerViewController.cs b/Source/ZXing.Net.Mobile.iOS/AVCaptureScannerViewController.cs deleted file mode 100644 index 452a2764d..000000000 --- a/Source/ZXing.Net.Mobile.iOS/AVCaptureScannerViewController.cs +++ /dev/null @@ -1,203 +0,0 @@ -using System; -using System.Drawing; -using System.Text; -using System.Collections.Generic; - -using UIKit; -using Foundation; -using AVFoundation; -using CoreGraphics; - -using ZXing; - -namespace ZXing.Mobile -{ - public class AVCaptureScannerViewController : UIViewController, IScannerViewController - { - AVCaptureScannerView scannerView; - - public event Action OnScannedResult; - - public MobileBarcodeScanningOptions ScanningOptions { get;set; } - public MobileBarcodeScanner Scanner { get;set; } - public bool ContinuousScanning { get;set; } - - UIActivityIndicatorView loadingView; - UIView loadingBg; - - public AVCaptureScannerViewController(MobileBarcodeScanningOptions options, MobileBarcodeScanner scanner) - { - this.ScanningOptions = options; - this.Scanner = scanner; - - var appFrame = UIScreen.MainScreen.ApplicationFrame; - - View.Frame = new CGRect(0, 0, appFrame.Width, appFrame.Height); - View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - } - - public UIViewController AsViewController() - { - return this; - } - - public void Cancel() - { - this.InvokeOnMainThread(() => scannerView.StopScanning()); - } - - UIStatusBarStyle originalStatusBarStyle = UIStatusBarStyle.Default; - - public override void ViewDidLoad () - { - loadingBg = new UIView (this.View.Frame) { - BackgroundColor = UIColor.Black, - AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight - }; - loadingView = new UIActivityIndicatorView (UIActivityIndicatorViewStyle.WhiteLarge) { - AutoresizingMask = UIViewAutoresizing.FlexibleMargins - }; - loadingView.Frame = new CGRect ((this.View.Frame.Width - loadingView.Frame.Width) / 2, - (this.View.Frame.Height - loadingView.Frame.Height) / 2, - loadingView.Frame.Width, - loadingView.Frame.Height); - - loadingBg.AddSubview (loadingView); - View.AddSubview (loadingBg); - loadingView.StartAnimating (); - - scannerView = new AVCaptureScannerView(new CGRect(0, 0, this.View.Frame.Width, this.View.Frame.Height)); - scannerView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - scannerView.UseCustomOverlayView = this.Scanner.UseCustomOverlay; - scannerView.CustomOverlayView = this.Scanner.CustomOverlay; - scannerView.TopText = this.Scanner.TopText; - scannerView.BottomText = this.Scanner.BottomText; - scannerView.CancelButtonText = this.Scanner.CancelButtonText; - scannerView.FlashButtonText = this.Scanner.FlashButtonText; - scannerView.OnCancelButtonPressed += () => { - Scanner.Cancel (); - }; - - this.View.AddSubview(scannerView); - this.View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - } - - public void Torch(bool on) - { - if (scannerView != null) - scannerView.Torch (on); - } - - public void ToggleTorch() - { - if (scannerView != null) - scannerView.ToggleTorch (); - } - - public bool IsTorchOn - { - get { return scannerView.IsTorchOn; } - } - - public void PauseAnalysis () - { - scannerView.PauseAnalysis (); - } - - public void ResumeAnalysis () - { - scannerView.ResumeAnalysis (); - } - - public override void ViewDidAppear (bool animated) - { - originalStatusBarStyle = UIApplication.SharedApplication.StatusBarStyle; - - if (UIDevice.CurrentDevice.CheckSystemVersion (7, 0)) - { - UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.Default; - SetNeedsStatusBarAppearanceUpdate (); - } - else - UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.BlackTranslucent, false); - - Console.WriteLine("Starting to scan..."); - - scannerView.StartScanning(result => { - - if (!ContinuousScanning) { - Console.WriteLine("Stopping scan..."); - scannerView.StopScanning(); - } - - var evt = this.OnScannedResult; - if (evt != null) - evt(result); - }, ScanningOptions); - } - - public override void ViewDidDisappear (bool animated) - { - if (scannerView != null) - scannerView.StopScanning(); - } - - public override void ViewWillDisappear(bool animated) - { - UIApplication.SharedApplication.SetStatusBarStyle(originalStatusBarStyle, false); - - //if (scannerView != null) - // scannerView.StopScanning(); - - //scannerView.RemoveFromSuperview(); - //scannerView.Dispose(); - //scannerView = null; - } - - public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation) - { - if (scannerView != null) - scannerView.DidRotate (this.InterfaceOrientation); - - //overlayView.LayoutSubviews(); - } - public override bool ShouldAutorotate () - { - if (ScanningOptions.AutoRotate != null) - { - return (bool)ScanningOptions.AutoRotate; - } - return false; - } - - public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations () - { - return UIInterfaceOrientationMask.All; - } - - void HandleOnScannerSetupComplete () - { - BeginInvokeOnMainThread (() => - { - if (loadingView != null && loadingBg != null && loadingView.IsAnimating) - { - loadingView.StopAnimating (); - - UIView.BeginAnimations("zoomout"); - - UIView.SetAnimationDuration(2.0f); - UIView.SetAnimationCurve(UIViewAnimationCurve.EaseOut); - - loadingBg.Transform = CGAffineTransform.MakeScale(2.0f, 2.0f); - loadingBg.Alpha = 0.0f; - - UIView.CommitAnimations(); - - - loadingBg.RemoveFromSuperview(); - } - }); - } - } -} - diff --git a/Source/ZXing.Net.Mobile.iOS/AssemblyInfo.cs b/Source/ZXing.Net.Mobile.iOS/AssemblyInfo.cs deleted file mode 100644 index 3f94339d6..000000000 --- a/Source/ZXing.Net.Mobile.iOS/AssemblyInfo.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("ZXing.Net.Mobile.iOS")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("redth")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/Source/ZXing.Net.Mobile.iOS/BitmapRenderer.cs b/Source/ZXing.Net.Mobile.iOS/BitmapRenderer.cs deleted file mode 100644 index 6fd5373a0..000000000 --- a/Source/ZXing.Net.Mobile.iOS/BitmapRenderer.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using ZXing.Rendering; - -using Foundation; -using CoreFoundation; -using CoreGraphics; -using UIKit; - -using ZXing.Common; - -namespace ZXing.Mobile -{ - public class BitmapRenderer : IBarcodeRenderer - { - - public UIImage Render(BitMatrix matrix, BarcodeFormat format, string content) - { - return Render (matrix, format, content, new EncodingOptions()); - } - - public UIImage Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) - { - UIGraphics.BeginImageContext(new CGSize(matrix.Width, matrix.Height)); - var context = UIGraphics.GetCurrentContext(); - - var black = new CGColor(0f,0f,0f); - var white = new CGColor(1.0f, 1.0f, 1.0f); - - for (int x = 0; x < matrix.Width; x++) - { - for (int y = 0; y < matrix.Height; y++) - { - context.SetFillColor(matrix[x, y] ? black : white); - context.FillRect(new CGRect(x, y, 1, 1)); - } - } - - - var img = UIGraphics.GetImageFromCurrentImageContext(); - - UIGraphics.EndImageContext(); - - return img; - } - } -} diff --git a/Source/ZXing.Net.Mobile.iOS/CVPixelBufferBGRA32LuminanceSource.cs b/Source/ZXing.Net.Mobile.iOS/CVPixelBufferBGRA32LuminanceSource.cs deleted file mode 100644 index da4b1f57e..000000000 --- a/Source/ZXing.Net.Mobile.iOS/CVPixelBufferBGRA32LuminanceSource.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using CoreVideo; -using ZXing; - -namespace ZXing.Mobile -{ - public class CVPixelBufferBGRA32LuminanceSource : BaseLuminanceSource - { - public unsafe CVPixelBufferBGRA32LuminanceSource(byte* cvPixelByteArray, int cvPixelByteArrayLength, int width, int height) - : base(width, height) - { - CalculateLuminance(cvPixelByteArray, cvPixelByteArrayLength); - } - - public CVPixelBufferBGRA32LuminanceSource (byte[] luminances, int width, int height) : - base (luminances, width, height) - { - - } - - unsafe void CalculateLuminance(byte* rgbRawBytes, int bytesLen) - { - for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < bytesLen && luminanceIndex < luminances.Length; luminanceIndex++) - { - // Calculate luminance cheaply, favoring green. - var b = rgbRawBytes[rgbIndex++]; - var g = rgbRawBytes[rgbIndex++]; - var r = rgbRawBytes[rgbIndex++]; - var alpha = rgbRawBytes[rgbIndex++]; - var luminance = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight); - luminances[luminanceIndex] = (byte)(((luminance * alpha) >> 8) + (255 * (255 - alpha) >> 8)); - } - } - - protected override LuminanceSource CreateLuminanceSource(byte[] newLuminances, int width, int height) - { - return new CVPixelBufferBGRA32LuminanceSource(newLuminances, width, height); - } - } -} diff --git a/Source/ZXing.Net.Mobile.iOS/MobileBarcodeScanner.cs b/Source/ZXing.Net.Mobile.iOS/MobileBarcodeScanner.cs deleted file mode 100644 index 0210f49a9..000000000 --- a/Source/ZXing.Net.Mobile.iOS/MobileBarcodeScanner.cs +++ /dev/null @@ -1,229 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - -using Foundation; -using CoreFoundation; -using UIKit; - -namespace ZXing.Mobile -{ - public class MobileBarcodeScanner : MobileBarcodeScannerBase - { - //ZxingCameraViewController viewController; - IScannerViewController viewController; - - UIViewController appController; - ManualResetEvent scanResultResetEvent = new ManualResetEvent(false); - - public MobileBarcodeScanner (UIViewController delegateController) - { - appController = delegateController; - } - - public MobileBarcodeScanner () - { - foreach (var window in UIApplication.SharedApplication.Windows) - { - if (window.RootViewController != null) - { - appController = window.RootViewController; - break; - } - } - } - - public Task Scan (bool useAVCaptureEngine) - { - return Scan (new MobileBarcodeScanningOptions (), useAVCaptureEngine); - } - - - public override Task Scan (MobileBarcodeScanningOptions options) - { - return Scan (options, false); - } - - - public override void ScanContinuously (MobileBarcodeScanningOptions options, Action scanHandler) - { - ScanContinuously (options, false, scanHandler); - } - - public void ScanContinuously (MobileBarcodeScanningOptions options, bool useAVCaptureEngine, Action scanHandler) - { - try - { - Version sv = new Version (0, 0, 0); - Version.TryParse (UIDevice.CurrentDevice.SystemVersion, out sv); - - var is7orgreater = sv.Major >= 7; - var allRequestedFormatsSupported = true; - - if (useAVCaptureEngine) - allRequestedFormatsSupported = AVCaptureScannerView.SupportsAllRequestedBarcodeFormats(options.PossibleFormats); - - this.appController.InvokeOnMainThread(() => { - - - if (useAVCaptureEngine && is7orgreater && allRequestedFormatsSupported) - { - viewController = new AVCaptureScannerViewController(options, this); - viewController.ContinuousScanning = true; - } - else - { - if (useAVCaptureEngine && !is7orgreater) - Console.WriteLine("Not iOS 7 or greater, cannot use AVCapture for barcode decoding, using ZXing instead"); - else if (useAVCaptureEngine && !allRequestedFormatsSupported) - Console.WriteLine("Not all requested barcode formats were supported by AVCapture, using ZXing instead"); - - viewController = new ZXing.Mobile.ZXingScannerViewController(options, this); - viewController.ContinuousScanning = true; - } - - viewController.OnScannedResult += barcodeResult => { - - // If null, stop scanning was called - if (barcodeResult == null) { - ((UIViewController)viewController).InvokeOnMainThread(() => { - ((UIViewController)viewController).DismissViewController(true, null); - }); - } - - scanHandler (barcodeResult); - }; - - appController.PresentViewController((UIViewController)viewController, true, null); - }); - } - catch (Exception ex) - { - Console.WriteLine(ex); - } - } - - public Task Scan (MobileBarcodeScanningOptions options, bool useAVCaptureEngine) - { - return Task.Factory.StartNew(() => { - - try - { - scanResultResetEvent.Reset(); - - Result result = null; - - Version sv = new Version (0, 0, 0); - Version.TryParse (UIDevice.CurrentDevice.SystemVersion, out sv); - - var is7orgreater = sv.Major >= 7; - var allRequestedFormatsSupported = true; - - if (useAVCaptureEngine) - allRequestedFormatsSupported = AVCaptureScannerView.SupportsAllRequestedBarcodeFormats(options.PossibleFormats); - - this.appController.InvokeOnMainThread(() => { - - - if (useAVCaptureEngine && is7orgreater && allRequestedFormatsSupported) - { - viewController = new AVCaptureScannerViewController(options, this); - } - else - { - if (useAVCaptureEngine && !is7orgreater) - Console.WriteLine("Not iOS 7 or greater, cannot use AVCapture for barcode decoding, using ZXing instead"); - else if (useAVCaptureEngine && !allRequestedFormatsSupported) - Console.WriteLine("Not all requested barcode formats were supported by AVCapture, using ZXing instead"); - - viewController = new ZXing.Mobile.ZXingScannerViewController(options, this); - } - - viewController.OnScannedResult += barcodeResult => { - - ((UIViewController)viewController).InvokeOnMainThread(() => { - - viewController.Cancel(); - - // Handle error situation that occurs when user manually closes scanner in the same moment that a QR code is detected - try { - ((UIViewController) viewController).DismissViewController(true, () => { - result = barcodeResult; - scanResultResetEvent.Set(); - }); - } catch (ObjectDisposedException) { - // In all likelihood, iOS has decided to close the scanner at this point. But just in case it executes the - // post-scan code instead, set the result so we will not get a NullReferenceException. - result = barcodeResult; - scanResultResetEvent.Set(); - } - }); - }; - - appController.PresentViewController((UIViewController)viewController, true, null); - }); - - scanResultResetEvent.WaitOne(); - ((UIViewController)viewController).Dispose(); - - return result; - } - catch (Exception ex) - { - Console.WriteLine(ex); - return null; - } - }); - - } - - public override void Cancel () - { - if (viewController != null) - { - ((UIViewController)viewController).InvokeOnMainThread(() => { - viewController.Cancel(); - - // Calling with animated:true here will result in a blank screen when the scanner is closed on iOS 7. - ((UIViewController)viewController).DismissViewController(false, null); - }); - } - - scanResultResetEvent.Set(); - } - - public override void Torch (bool on) - { - if (viewController != null) - viewController.Torch (on); - } - - public override void ToggleTorch () - { - viewController.ToggleTorch(); - } - - public override void AutoFocus () - { - //Does nothing on iOS - } - - public override void PauseAnalysis () - { - viewController.PauseAnalysis (); - } - - public override void ResumeAnalysis () - { - viewController.ResumeAnalysis (); - } - - public override bool IsTorchOn { - get { - return viewController.IsTorchOn; - } - } - public UIView CustomOverlay { get;set; } - } -} - diff --git a/Source/ZXing.Net.Mobile.iOS/RGBLuminanceSourceiOS.cs b/Source/ZXing.Net.Mobile.iOS/RGBLuminanceSourceiOS.cs deleted file mode 100644 index d6a057ceb..000000000 --- a/Source/ZXing.Net.Mobile.iOS/RGBLuminanceSourceiOS.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -using UIKit; -using CoreGraphics; - -namespace ZXing.Mobile -{ - public class RGBLuminanceSourceiOS : RGBLuminanceSource - { - public RGBLuminanceSourceiOS (UIImage d) - : base((int)d.CGImage.Width, (int)d.CGImage.Height) - { - CalculateLuminance(d); - } - - void CalculateLuminance(UIImage d) - { - var imageRef = d.CGImage; - var width = (int)imageRef.Width; - var height = (int)imageRef.Height; - var colorSpace = CGColorSpace.CreateDeviceRGB(); - - var rawData = Marshal.AllocHGlobal(height * width * 4); - - try - { - var flags = CGBitmapFlags.PremultipliedFirst | CGBitmapFlags.ByteOrder32Little; - var context = new CGBitmapContext(rawData, width, height, 8, 4 * width, - colorSpace, (CGImageAlphaInfo)flags); - - context.DrawImage(new CGRect(0.0f, 0.0f, (float)width, (float)height), imageRef); - var pixelData = new byte[height * width * 4]; - Marshal.Copy(rawData, pixelData, 0, pixelData.Length); - - CalculateLuminance(pixelData, BitmapFormat.BGRA32); - } - finally - { - Marshal.FreeHGlobal(rawData); - } - } - } -} - diff --git a/Source/ZXing.Net.Mobile.iOS/ZXing.Net.Mobile.iOS.csproj b/Source/ZXing.Net.Mobile.iOS/ZXing.Net.Mobile.iOS.csproj deleted file mode 100644 index 90b5a41b4..000000000 --- a/Source/ZXing.Net.Mobile.iOS/ZXing.Net.Mobile.iOS.csproj +++ /dev/null @@ -1,97 +0,0 @@ - - - - Debug - iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A} - {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - ZXing.Mobile - ZXingNetMobile - - - True - full - False - ..\..\Build\Debug\ios-unified\ - DEBUG - prompt - 4 - False - None - True - obj\unified\$(Platform)\$(Configuration)\ - true - - - none - False - ..\..\Build\Release\ios-unified\ - prompt - 4 - False - None - obj\unified\$(Platform)\$(Configuration)\ - true - - - True - full - False - ..\..\Build\Debug\ios-unified\ - __UNIFIED__;__MOBILE__;__IOS__;DEBUG - prompt - 4 - False - iPhone Developer - True - obj\unified\$(Platform)\$(Configuration)\ - true - - - none - False - ..\..\Build\Release\ios-unified\ - __UNIFIED__;__MOBILE__;__IOS__; - prompt - 4 - False - iPhone Developer - obj\unified\$(Platform)\$(Configuration)\ - true - - - ZXingNetMobile - - - - - - - - - - - - - - - - - - - - - - - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {24b441f2-cbe9-4405-9fd0-72ebcbea0ec3} - zxing.portable - - - \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.iOS/ZXingScannerViewController.cs b/Source/ZXing.Net.Mobile.iOS/ZXingScannerViewController.cs deleted file mode 100644 index 2e1a5e4a5..000000000 --- a/Source/ZXing.Net.Mobile.iOS/ZXingScannerViewController.cs +++ /dev/null @@ -1,216 +0,0 @@ -using System; -using System.Text; -using System.Collections.Generic; -using System.Threading.Tasks; - -using UIKit; -using Foundation; -using AVFoundation; -using CoreGraphics; - -using ZXing; - -namespace ZXing.Mobile -{ - public class ZXingScannerViewController : UIViewController, IScannerViewController - { - ZXingScannerView scannerView; - - public event Action OnScannedResult; - - public MobileBarcodeScanningOptions ScanningOptions { get;set; } - public MobileBarcodeScanner Scanner { get;set; } - public bool ContinuousScanning { get;set; } - - UIActivityIndicatorView loadingView; - UIView loadingBg; - - public UIView CustomLoadingView { get; set; } - - public ZXingScannerViewController(MobileBarcodeScanningOptions options, MobileBarcodeScanner scanner) - { - this.ScanningOptions = options; - this.Scanner = scanner; - - var appFrame = UIScreen.MainScreen.ApplicationFrame; - - this.View.Frame = new CGRect(0, 0, appFrame.Width, appFrame.Height); - this.View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - } - - public UIViewController AsViewController() - { - return this; - } - - public void Cancel() - { - this.InvokeOnMainThread (scannerView.StopScanning); - } - - UIStatusBarStyle originalStatusBarStyle = UIStatusBarStyle.Default; - - public override void ViewDidLoad () - { - loadingBg = new UIView (this.View.Frame) { BackgroundColor = UIColor.Black, AutoresizingMask = UIViewAutoresizing.FlexibleDimensions }; - loadingView = new UIActivityIndicatorView (UIActivityIndicatorViewStyle.WhiteLarge) - { - AutoresizingMask = UIViewAutoresizing.FlexibleMargins - }; - loadingView.Frame = new CGRect ((this.View.Frame.Width - loadingView.Frame.Width) / 2, - (this.View.Frame.Height - loadingView.Frame.Height) / 2, - loadingView.Frame.Width, - loadingView.Frame.Height); - - loadingBg.AddSubview (loadingView); - View.AddSubview (loadingBg); - loadingView.StartAnimating (); - - scannerView = new ZXingScannerView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height)); - scannerView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - scannerView.UseCustomOverlayView = this.Scanner.UseCustomOverlay; - scannerView.CustomOverlayView = this.Scanner.CustomOverlay; - scannerView.TopText = this.Scanner.TopText; - scannerView.BottomText = this.Scanner.BottomText; - scannerView.CancelButtonText = this.Scanner.CancelButtonText; - scannerView.FlashButtonText = this.Scanner.FlashButtonText; - scannerView.OnCancelButtonPressed += delegate { - Scanner.Cancel (); - }; - - //this.View.AddSubview(scannerView); - this.View.InsertSubviewBelow (scannerView, loadingView); - - this.View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - } - - public void Torch(bool on) - { - if (scannerView != null) - scannerView.Torch (on); - } - - public void ToggleTorch() - { - if (scannerView != null) - scannerView.ToggleTorch (); - } - - public void PauseAnalysis () - { - scannerView.PauseAnalysis (); - } - - public void ResumeAnalysis () - { - scannerView.ResumeAnalysis (); - } - - public bool IsTorchOn - { - get { return scannerView.IsTorchOn; } - } - - public override void ViewDidAppear (bool animated) - { - scannerView.OnScannerSetupComplete += HandleOnScannerSetupComplete; - - originalStatusBarStyle = UIApplication.SharedApplication.StatusBarStyle; - - if (UIDevice.CurrentDevice.CheckSystemVersion (7, 0)) - { - UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.Default; - SetNeedsStatusBarAppearanceUpdate (); - } - else - UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.BlackTranslucent, false); - - Console.WriteLine("Starting to scan..."); - - Task.Factory.StartNew (() => - { - BeginInvokeOnMainThread(() => scannerView.StartScanning (result => { - - if (!ContinuousScanning) { - Console.WriteLine ("Stopping scan..."); - scannerView.StopScanning (); - } - - var evt = this.OnScannedResult; - if (evt != null) - evt (result); - - },this.ScanningOptions)); - }); - } - - public override void ViewDidDisappear (bool animated) - { - if (scannerView != null) - scannerView.StopScanning(); - - scannerView.OnScannerSetupComplete -= HandleOnScannerSetupComplete; - } - - public override void ViewWillDisappear(bool animated) - { - UIApplication.SharedApplication.SetStatusBarStyle(originalStatusBarStyle, false); - } - - public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation) - { - if (scannerView != null) - scannerView.DidRotate (this.InterfaceOrientation); - - //overlayView.LayoutSubviews(); - } - public override bool ShouldAutorotate () - { - if (ScanningOptions.AutoRotate != null) - { - return (bool)ScanningOptions.AutoRotate; - } - return false; - } - - public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations () - { - return UIInterfaceOrientationMask.All; - } - - [Obsolete ("Deprecated in iOS6. Replace it with both GetSupportedInterfaceOrientations and PreferredInterfaceOrientationForPresentation")] - public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation) - { - if (ScanningOptions.AutoRotate != null) - { - return (bool)ScanningOptions.AutoRotate; - } - return false; - } - - void HandleOnScannerSetupComplete () - { - BeginInvokeOnMainThread (() => - { - if (loadingView != null && loadingBg != null && loadingView.IsAnimating) - { - loadingView.StopAnimating (); - - UIView.BeginAnimations("zoomout"); - - UIView.SetAnimationDuration(2.0f); - UIView.SetAnimationCurve(UIViewAnimationCurve.EaseOut); - - loadingBg.Transform = CGAffineTransform.MakeScale(2.0f, 2.0f); - loadingBg.Alpha = 0.0f; - - UIView.CommitAnimations(); - - - loadingBg.RemoveFromSuperview(); - } - }); - } - } -} - diff --git a/ZXing.Net.Mobile.Forms.nuspec b/ZXing.Net.Mobile.Forms.nuspec deleted file mode 100644 index fd33a5b94..000000000 --- a/ZXing.Net.Mobile.Forms.nuspec +++ /dev/null @@ -1,85 +0,0 @@ - - - - ZXing.Net.Mobile.Forms - $version$ - ZXing.Net.Mobile Barcode Scanner for Xamarin.Forms - Redth - http://raw.github.com/Redth/ZXing.Net.Mobile/master/License.md - http://github.com/Redth/ZXing.Net.Mobile - http://raw.github.com/Redth/ZXing.Net.Mobile/master/Art/ZXing.Net.Mobile-Icon.png - false - - ZXing.Net.Mobile is a C#/.NET library based on the open source Barcode Library: ZXing (Zebra Crossing), using the ZXing.Net Port. It works with Xamarin.iOS, Xamarin.Android, Windows Phone (Silverlight), and Windows Universal. The goal of ZXing.Net.Mobile is to make scanning barcodes as effortless and painless as possible in your own applications. - - See https://github.com/Redth/ZXing.Net.Mobile/releases for release notes. - - ZXing Barcode Scanning for your Xamarin.iOS, Xamarin.Android, Windows Phone (Silverlight), and Windows Universal apps! - - barcode, zxing, zxing.net, qr, scan, scanning, scanner - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ZXing.Net.Mobile.Forms.sln b/ZXing.Net.Mobile.Forms.sln deleted file mode 100644 index d02f75e2e..000000000 --- a/ZXing.Net.Mobile.Forms.sln +++ /dev/null @@ -1,598 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26228.9 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Android", "Source\ZXing.Net.Mobile.Android\ZXing.Net.Mobile.Android.csproj", "{AC17589E-C817-4FA8-B3EC-CCEB25E55E59}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.iOS", "Source\ZXing.Net.Mobile.iOS\ZXing.Net.Mobile.iOS.csproj", "{6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsUniversal", "Source\ZXing.Net.Mobile.WindowsUniversal\ZXing.Net.Mobile.WindowsUniversal.csproj", "{1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsRT", "Source\ZXing.Net.Mobile.WindowsRT\ZXing.Net.Mobile.WindowsRT.csproj", "{10EB06B2-7231-40DF-8930-7781C82B65DB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Portable", "Source\ZXing.Net.Mobile.Portable\ZXing.Net.Mobile.Portable.csproj", "{78407906-99C6-42B0-A511-973FC78C58CB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Forms Libraries", "Forms Libraries", "{72EC3146-EA1B-4963-9248-55065728AF7F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms", "Source\ZXing.Net.Mobile.Forms\ZXing.Net.Mobile.Forms.csproj", "{8E54DB74-C094-4016-859A-D1C7F2509A58}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms.Android", "Source\ZXing.Net.Mobile.Forms.Android\ZXing.Net.Mobile.Forms.Android.csproj", "{DC2FF2AE-4090-4056-BBE4-087BDE6567BD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms.WindowsUniversal", "Source\ZXing.Net.Mobile.Forms.WindowsUniversal\ZXing.Net.Mobile.Forms.WindowsUniversal.csproj", "{C785F56E-0D1D-492C-850B-4D882314F29B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms.iOS", "Source\ZXing.Net.Mobile.Forms.iOS\ZXing.Net.Mobile.Forms.iOS.csproj", "{8370ADB4-229C-4DEC-908F-B1A8FC155523}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|iPhone = Debug|iPhone - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|iPhone = Release|iPhone - Release|iPhoneSimulator = Release|iPhoneSimulator - Release|x64 = Release|x64 - Release|x86 = Release|x86 - ReleaseMac|Any CPU = ReleaseMac|Any CPU - ReleaseMac|ARM = ReleaseMac|ARM - ReleaseMac|iPhone = ReleaseMac|iPhone - ReleaseMac|iPhoneSimulator = ReleaseMac|iPhoneSimulator - ReleaseMac|x64 = ReleaseMac|x64 - ReleaseMac|x86 = ReleaseMac|x86 - ReleaseWin|Any CPU = ReleaseWin|Any CPU - ReleaseWin|ARM = ReleaseWin|ARM - ReleaseWin|iPhone = ReleaseWin|iPhone - ReleaseWin|iPhoneSimulator = ReleaseWin|iPhoneSimulator - ReleaseWin|x64 = ReleaseWin|x64 - ReleaseWin|x86 = ReleaseWin|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x86.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|ARM.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|ARM.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhone.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x64.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x64.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x86.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x86.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhone.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|x86.Build.0 = Release|Any CPU - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|Any CPU.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|ARM.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|x64.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|x86.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|ARM.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|x64.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|x86.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|ARM.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|ARM.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|x64.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|x64.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|x86.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|x86.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|ARM.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|ARM.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|x64.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|x64.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|x86.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|x86.Build.0 = Release|iPhoneSimulator - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|ARM.ActiveCfg = Debug|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|ARM.Build.0 = Debug|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhone.Build.0 = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x64.ActiveCfg = Debug|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x64.Build.0 = Debug|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x86.ActiveCfg = Debug|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x86.Build.0 = Debug|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|Any CPU.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x86.Build.0 = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x86.Build.0 = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x86.Build.0 = Release|x86 - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|ARM.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhone.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x64.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x64.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x86.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x86.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|ARM.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|ARM.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhone.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x64.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x64.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x86.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x86.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhone.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhone.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x86.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|ARM.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|ARM.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhone.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x64.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x64.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x86.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x86.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|Any CPU.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|ARM.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|ARM.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhone.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhone.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x64.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x64.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x86.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x86.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|x64.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseMac|x86.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|x64.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.ReleaseWin|x86.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|ARM.ActiveCfg = Debug|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|ARM.Build.0 = Debug|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|iPhone.Build.0 = Debug|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|x64.ActiveCfg = Debug|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|x64.Build.0 = Debug|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|x86.ActiveCfg = Debug|x86 - {C785F56E-0D1D-492C-850B-4D882314F29B}.Debug|x86.Build.0 = Debug|x86 - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|Any CPU.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|ARM.ActiveCfg = Release|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|ARM.Build.0 = Release|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|iPhone.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|iPhone.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|x64.ActiveCfg = Release|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|x64.Build.0 = Release|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|x86.ActiveCfg = Release|x86 - {C785F56E-0D1D-492C-850B-4D882314F29B}.Release|x86.Build.0 = Release|x86 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|ARM.ActiveCfg = Release|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|ARM.Build.0 = Release|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|x64.ActiveCfg = Release|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|x64.Build.0 = Release|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|x86.ActiveCfg = Release|x86 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseMac|x86.Build.0 = Release|x86 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|ARM.ActiveCfg = Release|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|ARM.Build.0 = Release|ARM - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|x64.ActiveCfg = Release|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|x64.Build.0 = Release|x64 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|x86.ActiveCfg = Release|x86 - {C785F56E-0D1D-492C-850B-4D882314F29B}.ReleaseWin|x86.Build.0 = Release|x86 - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|ARM.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|ARM.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhone.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x64.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x64.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x86.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x86.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|Any CPU.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|ARM.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|ARM.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhone.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhone.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x64.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x64.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x86.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x86.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|x64.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseMac|x86.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|x64.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.ReleaseWin|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {10EB06B2-7231-40DF-8930-7781C82B65DB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {78407906-99C6-42B0-A511-973FC78C58CB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {8E54DB74-C094-4016-859A-D1C7F2509A58} = {72EC3146-EA1B-4963-9248-55065728AF7F} - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD} = {72EC3146-EA1B-4963-9248-55065728AF7F} - {C785F56E-0D1D-492C-850B-4D882314F29B} = {72EC3146-EA1B-4963-9248-55065728AF7F} - {8370ADB4-229C-4DEC-908F-B1A8FC155523} = {72EC3146-EA1B-4963-9248-55065728AF7F} - EndGlobalSection -EndGlobal diff --git a/ZXing.Net.Mobile.Forms/PermissionsHandler.android.cs b/ZXing.Net.Mobile.Forms/PermissionsHandler.android.cs new file mode 100644 index 000000000..bf157720f --- /dev/null +++ b/ZXing.Net.Mobile.Forms/PermissionsHandler.android.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using ZXing.Mobile; +using System.Linq; +using Android.App; +using System.Threading.Tasks; +using Android.Content.PM; + +namespace ZXing.Net.Mobile.Forms.Android +{ + public static class PermissionsHandler + { + [Obsolete("Use ZXing.Net.Mobile.Android.PermissionsHandler.OnRequestPermissionsResult instead")] + public static void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) + { + // Forward the call to the generic android implementation + Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults); + } + } +} diff --git a/ZXing.Net.Mobile.Forms/Platform.android.cs b/ZXing.Net.Mobile.Forms/Platform.android.cs new file mode 100644 index 000000000..5e76e43e5 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/Platform.android.cs @@ -0,0 +1,13 @@ +using System; + +namespace ZXing.Net.Mobile.Forms.Android +{ + public static class Platform + { + public static void Init() + { + ZXing.Net.Mobile.Forms.Android.ZXingScannerViewRenderer.Init(); + ZXing.Net.Mobile.Forms.Android.ZXingBarcodeImageViewRenderer.Init(); + } + } +} diff --git a/ZXing.Net.Mobile.Forms/Platform.ios.cs b/ZXing.Net.Mobile.Forms/Platform.ios.cs new file mode 100644 index 000000000..a40f16753 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/Platform.ios.cs @@ -0,0 +1,13 @@ +using System; + +namespace ZXing.Net.Mobile.Forms.iOS +{ + public static class Platform + { + public static void Init() + { + ZXing.Net.Mobile.Forms.iOS.ZXingScannerViewRenderer.Init(); + ZXing.Net.Mobile.Forms.iOS.ZXingBarcodeImageViewRenderer.Init(); + } + } +} diff --git a/ZXing.Net.Mobile.Forms/Platform.macos.cs b/ZXing.Net.Mobile.Forms/Platform.macos.cs new file mode 100644 index 000000000..8cd70adcd --- /dev/null +++ b/ZXing.Net.Mobile.Forms/Platform.macos.cs @@ -0,0 +1,12 @@ +using System; + +namespace ZXing.Net.Mobile.Forms +{ + public static class Platform + { + public static void Init() + { + ZXing.Net.Mobile.Forms.MacOS.ZXingBarcodeImageViewRenderer.Init(); + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile.Forms/Platform.tizen.cs b/ZXing.Net.Mobile.Forms/Platform.tizen.cs new file mode 100644 index 000000000..78f5c4e9f --- /dev/null +++ b/ZXing.Net.Mobile.Forms/Platform.tizen.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ZXing.Net.Mobile.Forms.Tizen +{ + public static class Platform + { + public static void Init() + { + ZXingBarcodeImageViewRenderer.Init(); + ZXingScannerViewRenderer.Init(); + } + } +} diff --git a/ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj b/ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj new file mode 100644 index 000000000..0ecbe38cd --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj @@ -0,0 +1,107 @@ + + + netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid90;MonoAndroid10.0;tizen40 + $(TargetFrameworks);uap10.0.16299; + ZXing.Net.Mobile.Forms + ZXing.Net.Mobile.Forms + ZXing.Net.Mobile.Forms + icon.png + ZXing Barcode Scanning for your Xamarin.iOS, Xamarin.Android and Windows Universal apps! + barcode, zxing, zxing.net, qr, scan, scanning, scanner + ZXing.Net.Mobile Barcode Scanner for Xamarin.Forms + + ZXing.Net.Mobile is a C#/.NET library based on the open source Barcode Library: ZXing (Zebra Crossing), using the ZXing.Net Port. It works with Xamarin.iOS, Xamarin.Android, Windows Phone (Silverlight) and Windows Universal. The goal of ZXing.Net.Mobile is to make scanning barcodes as effortless and painless as possible in your own applications. + + See https://github.com/Redth/ZXing.Net.Mobile/releases for release notes. + + $(AssemblyName) ($(TargetFramework)) + 3.0.0.0 + 3.0.0.0 + 3.0.0 + $(Version)$(VersionSuffix) + Redth + Redth + en + © Redth + https://github.com/redth/ZXing.Net.Mobile + See: https://github.com/Redth/ZXing.Net.Mobile/releases + $(DefineConstants); + false + false + MIT + http://github.com/Redth/ZXing.Net.Mobile + portable + Debug;Release + + + true + + + + true + + true + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + + + + + + + + + + + + + + + + + + + Windows Mobile Extensions for the UWP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\ZXing.Net\zxing.dll + + + \ No newline at end of file diff --git a/ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.shared.cs b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.shared.cs new file mode 100644 index 000000000..cdee66397 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageView.shared.cs @@ -0,0 +1,46 @@ +using Xamarin.Forms; +using ZXing.Common; + +namespace ZXing.Net.Mobile.Forms +{ + public class ZXingBarcodeImageView : Image + { + public ZXingBarcodeImageView() : base() + { + } + + public static readonly BindableProperty BarcodeFormatProperty = + BindableProperty.Create(nameof(BarcodeFormat), typeof(BarcodeFormat), typeof(ZXingBarcodeImageView), + defaultValue: BarcodeFormat.QR_CODE, + defaultBindingMode: BindingMode.TwoWay); + + public BarcodeFormat BarcodeFormat + { + get => (BarcodeFormat)GetValue(BarcodeFormatProperty); + set => SetValue(BarcodeFormatProperty, value); + } + + public static readonly BindableProperty BarcodeValueProperty = + BindableProperty.Create(nameof(BarcodeValue), typeof(string), typeof(ZXingBarcodeImageView), + defaultValue: string.Empty, + defaultBindingMode: BindingMode.TwoWay); + + public string BarcodeValue + { + get => (string)GetValue(BarcodeValueProperty); + set => SetValue(BarcodeValueProperty, value); + } + + public static readonly BindableProperty BarcodeOptionsProperty = + BindableProperty.Create(nameof(BarcodeOptions), typeof(EncodingOptions), typeof(ZXingBarcodeImageView), + defaultValue: new EncodingOptions(), + defaultBindingMode: BindingMode.TwoWay); + + public EncodingOptions BarcodeOptions + { + get => (EncodingOptions)GetValue(BarcodeOptionsProperty); + set => SetValue(BarcodeOptionsProperty, value); + } + } +} + diff --git a/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.android.cs b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.android.cs new file mode 100644 index 000000000..a1cd3c095 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.android.cs @@ -0,0 +1,74 @@ +using System; +using Xamarin.Forms; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.Android; +using Android.Runtime; +using Xamarin.Forms.Platform.Android; +using System.ComponentModel; +using Android.Widget; +using ZXing.Mobile; + +[assembly: ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] +namespace ZXing.Net.Mobile.Forms.Android +{ + [Preserve(AllMembers = true)] + public class ZXingBarcodeImageViewRenderer : ViewRenderer + { + public ZXingBarcodeImageViewRenderer(global::Android.Content.Context context) : base(context) + { } + + public static void Init() + { + var temp = DateTime.Now; + } + + ZXingBarcodeImageView formsView; + ImageView imageView; + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + Regenerate(); + + base.OnElementPropertyChanged(sender, e); + } + + protected override void OnElementChanged(ElementChangedEventArgs e) + { + formsView = Element; + + if (imageView == null) + { + imageView = new ImageView(Context); + + base.SetNativeControl(imageView); + } + + Regenerate(); + + base.OnElementChanged(e); + } + + void Regenerate() + { + if (formsView != null && !string.IsNullOrEmpty(formsView.BarcodeValue)) + { + var writer = new ZXing.Mobile.BarcodeWriter(); + + if (formsView != null && formsView.BarcodeOptions != null) + writer.Options = formsView.BarcodeOptions; + if (formsView != null && formsView.BarcodeFormat != null) + writer.Format = formsView.BarcodeFormat; + + var value = formsView != null ? formsView.BarcodeValue : string.Empty; + + Device.BeginInvokeOnMainThread(() => + { + var image = writer.Write(value); + + imageView.SetImageBitmap(image); + }); + } + } + } +} + diff --git a/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.ios.cs b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.ios.cs new file mode 100644 index 000000000..4e268820a --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.ios.cs @@ -0,0 +1,74 @@ +using System; +using Xamarin.Forms; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.iOS; +using System.ComponentModel; +using System.Reflection; +using ZXing.Mobile; +using System.Threading.Tasks; +using Xamarin.Forms.Platform.iOS; +using Foundation; +using UIKit; + +[assembly: ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] +namespace ZXing.Net.Mobile.Forms.iOS +{ + [Preserve(AllMembers = true)] + public class ZXingBarcodeImageViewRenderer : ViewRenderer + { + public static void Init() + { + var temp = DateTime.Now; + } + + ZXingBarcodeImageView formsView; + UIImageView imageView; + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + Regenerate(); + + base.OnElementPropertyChanged(sender, e); + } + + protected override async void OnElementChanged(ElementChangedEventArgs e) + { + formsView = Element; + + if (imageView == null) + { + + imageView = new UIImageView { ContentMode = UIViewContentMode.ScaleAspectFit }; + + base.SetNativeControl(imageView); + } + + Regenerate(); + + base.OnElementChanged(e); + } + + void Regenerate() + { + if (formsView != null && formsView.BarcodeValue != null) + { + var writer = new ZXing.Mobile.BarcodeWriter(); + + if (formsView != null && formsView.BarcodeOptions != null) + writer.Options = formsView.BarcodeOptions; + if (formsView != null && formsView.BarcodeFormat != null) + writer.Format = formsView.BarcodeFormat; + + var value = formsView != null ? formsView.BarcodeValue : string.Empty; + + Device.BeginInvokeOnMainThread(() => + { + var image = writer.Write(value); + + imageView.Image = image; + }); + } + } + } +} + diff --git a/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.macos.cs b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.macos.cs new file mode 100644 index 000000000..263df001d --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.macos.cs @@ -0,0 +1,74 @@ +using System; +using Xamarin.Forms; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.MacOS; +using System.ComponentModel; +using System.Reflection; +using ZXing.Mobile; +using System.Threading.Tasks; +using Xamarin.Forms.Platform.MacOS; +using Foundation; +using AppKit; + +[assembly: ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] + +namespace ZXing.Net.Mobile.Forms.MacOS +{ + [Preserve(AllMembers = true)] + public class ZXingBarcodeImageViewRenderer : ViewRenderer + { + public static void Init() + { + var temp = DateTime.Now; + } + + ZXingBarcodeImageView formsView; + NSImageView imageView; + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + Regenerate(); + + base.OnElementPropertyChanged(sender, e); + } + + protected override async void OnElementChanged(ElementChangedEventArgs e) + { + formsView = Element; + + if (imageView == null) + { + + imageView = new NSImageView(); + + base.SetNativeControl(imageView); + } + + Regenerate(); + + base.OnElementChanged(e); + } + + void Regenerate() + { + if (formsView != null && formsView.BarcodeValue != null) + { + var writer = new ZXing.Mobile.BarcodeWriter(); + + if (formsView != null && formsView.BarcodeOptions != null) + writer.Options = formsView.BarcodeOptions; + if (formsView != null && formsView.BarcodeFormat != null) + writer.Format = formsView.BarcodeFormat; + + var value = formsView != null ? formsView.BarcodeValue : string.Empty; + + Device.BeginInvokeOnMainThread(() => + { + var image = writer.Write(value); + + imageView.Image = image; + }); + } + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.tizen.cs b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.tizen.cs new file mode 100644 index 000000000..e4f993558 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.tizen.cs @@ -0,0 +1,70 @@ +using ElmSharp; +using System; +using System.ComponentModel; +using Xamarin.Forms; +using Xamarin.Forms.Internals; +using Xamarin.Forms.Platform.Tizen; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.Tizen; + +[assembly: ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] +namespace ZXing.Net.Mobile.Forms.Tizen +{ + [Preserve(AllMembers = true)] + class ZXingBarcodeImageViewRenderer : ViewRenderer + { + ZXingBarcodeImageView formsView; + EvasImage imageView; + + public static void Init() + { + var temp = DateTime.Now; + } + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + Regenerate(); + + base.OnElementPropertyChanged(sender, e); + } + + protected override void OnElementChanged(ElementChangedEventArgs e) + { + formsView = Element; + + if (imageView == null) + { + imageView = new EvasImage(Xamarin.Forms.Forms.NativeParent); + base.SetNativeControl(imageView); + } + + Regenerate(); + + base.OnElementChanged(e); + } + + void Regenerate() + { + if (formsView != null && formsView.BarcodeValue != null) + { + var writer = new ZXing.Mobile.BarcodeWriter(Xamarin.Forms.Forms.NativeParent); + + if (formsView != null && formsView.BarcodeOptions != null) + writer.Options = formsView.BarcodeOptions; + if (formsView != null && formsView.BarcodeFormat != null) + writer.Format = formsView.BarcodeFormat; + + var value = formsView != null ? formsView.BarcodeValue : string.Empty; + + Device.BeginInvokeOnMainThread(() => + { + var image = writer.Write(value); + imageView.SetSource(image); + imageView.IsFilled = true; + imageView.Resize(image.Size.Height, image.Size.Width); + imageView.Show(); + }); + } + } + } +} diff --git a/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.uwp.cs b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.uwp.cs new file mode 100644 index 000000000..ca0fffc9a --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingBarcodeImageViewRenderer.uwp.cs @@ -0,0 +1,69 @@ +using System; +using Xamarin.Forms; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.WindowsUniversal; +using Xamarin.Forms.Platform.UWP; +using System.ComponentModel; +using System.Reflection; +using ZXing.Mobile; +using System.Threading.Tasks; + +[assembly: ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))] +namespace ZXing.Net.Mobile.Forms.WindowsUniversal +{ + public class ZXingBarcodeImageViewRenderer : ViewRenderer + { + public static void Init() + { + } + + ZXingBarcodeImageView formsView; + Windows.UI.Xaml.Controls.Image imageView; + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + Regenerate(); + + base.OnElementPropertyChanged(sender, e); + } + + protected override void OnElementChanged(ElementChangedEventArgs e) + { + formsView = Element; + + if (imageView == null) + { + + imageView = new Windows.UI.Xaml.Controls.Image(); + + base.SetNativeControl(imageView); + } + + Regenerate(); + + base.OnElementChanged(e); + } + + void Regenerate() + { + if (formsView != null && formsView.BarcodeValue != null) + { + var writer = new ZXing.Mobile.BarcodeWriter(); + + if (formsView != null && formsView.BarcodeOptions != null) + writer.Options = formsView.BarcodeOptions; + if (formsView != null && formsView.BarcodeFormat != null) + writer.Format = formsView.BarcodeFormat; + + var value = formsView != null ? formsView.BarcodeValue : string.Empty; + + Device.BeginInvokeOnMainThread(() => + { + var image = writer.Write(value); + + imageView.Source = image; + }); + } + } + } +} diff --git a/ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.shared.cs b/ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.shared.cs new file mode 100644 index 000000000..730d8b502 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingDefaultOverlay.shared.cs @@ -0,0 +1,134 @@ +using System; +using System.Windows.Input; +using Xamarin.Forms; + +namespace ZXing.Net.Mobile.Forms +{ + public class ZXingDefaultOverlay : Grid + { + readonly Label topText; + readonly Label botText; + readonly Button flash; + + public delegate void FlashButtonClickedDelegate(Button sender, EventArgs e); + public event FlashButtonClickedDelegate FlashButtonClicked; + + public ZXingDefaultOverlay() + { + BindingContext = this; + + VerticalOptions = LayoutOptions.FillAndExpand; + HorizontalOptions = LayoutOptions.FillAndExpand; + + RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); + RowDefinitions.Add(new RowDefinition { Height = new GridLength(2, GridUnitType.Star) }); + RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); + ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); + + + Children.Add(new BoxView + { + VerticalOptions = LayoutOptions.Fill, + HorizontalOptions = LayoutOptions.FillAndExpand, + BackgroundColor = Color.Black, + Opacity = 0.7, + }, 0, 0); + + Children.Add(new BoxView + { + VerticalOptions = LayoutOptions.Fill, + HorizontalOptions = LayoutOptions.FillAndExpand, + BackgroundColor = Color.Black, + Opacity = 0.7, + }, 0, 2); + + Children.Add(new BoxView + { + VerticalOptions = LayoutOptions.Center, + HorizontalOptions = LayoutOptions.FillAndExpand, + HeightRequest = 3, + BackgroundColor = Color.Red, + Opacity = 0.6, + }, 0, 1); + + topText = new Label + { + VerticalOptions = LayoutOptions.Center, + HorizontalOptions = LayoutOptions.Center, + TextColor = Color.White, + AutomationId = "zxingDefaultOverlay_TopTextLabel", + }; + topText.SetBinding(Label.TextProperty, new Binding(nameof(TopText))); + Children.Add(topText, 0, 0); + + botText = new Label + { + VerticalOptions = LayoutOptions.Center, + HorizontalOptions = LayoutOptions.Center, + TextColor = Color.White, + AutomationId = "zxingDefaultOverlay_BottomTextLabel", + }; + botText.SetBinding(Label.TextProperty, new Binding(nameof(BottomText))); + Children.Add(botText, 0, 2); + + flash = new Button + { + HorizontalOptions = LayoutOptions.End, + VerticalOptions = LayoutOptions.Start, + Text = "Flash", + TextColor = Color.White, + AutomationId = "zxingDefaultOverlay_FlashButton", + }; + flash.SetBinding(Button.IsVisibleProperty, new Binding(nameof(ShowFlashButton))); + flash.Clicked += (sender, e) => + { + FlashButtonClicked?.Invoke(flash, e); + }; + + Children.Add(flash, 0, 0); + } + + public static readonly BindableProperty TopTextProperty = + BindableProperty.Create(nameof(TopText), typeof(string), typeof(ZXingDefaultOverlay), string.Empty); + public string TopText + { + get => (string)GetValue(TopTextProperty); + set => SetValue(TopTextProperty, value); + } + + public static readonly BindableProperty BottomTextProperty = + BindableProperty.Create(nameof(BottomText), typeof(string), typeof(ZXingDefaultOverlay), string.Empty); + public string BottomText + { + get => (string)GetValue(BottomTextProperty); + set => SetValue(BottomTextProperty, value); + } + + public static readonly BindableProperty ShowFlashButtonProperty = + BindableProperty.Create(nameof(ShowFlashButton), typeof(bool), typeof(ZXingDefaultOverlay), false); + public bool ShowFlashButton + { + get => (bool)GetValue(ShowFlashButtonProperty); + set => SetValue(ShowFlashButtonProperty, value); + } + + public static BindableProperty FlashCommandProperty = + BindableProperty.Create(nameof(FlashCommand), typeof(ICommand), typeof(ZXingDefaultOverlay), + defaultValue: default(ICommand), + propertyChanged: OnFlashCommandChanged); + + public ICommand FlashCommand + { + get => (ICommand)GetValue(FlashCommandProperty); + set => SetValue(FlashCommandProperty, value); + } + + static void OnFlashCommandChanged(BindableObject bindable, object oldvalue, object newValue) + { + var overlay = bindable as ZXingDefaultOverlay; + if (overlay?.flash == null) + return; + overlay.flash.Command = newValue as Command; + } + } +} diff --git a/ZXing.Net.Mobile.Forms/ZXingScannerPage.shared.cs b/ZXing.Net.Mobile.Forms/ZXingScannerPage.shared.cs new file mode 100644 index 000000000..21d853f5e --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingScannerPage.shared.cs @@ -0,0 +1,183 @@ +using Xamarin.Forms; +using ZXing.Mobile; + +namespace ZXing.Net.Mobile.Forms +{ + public class ZXingScannerPage : ContentPage + { + readonly ZXingScannerView zxing; + readonly ZXingDefaultOverlay defaultOverlay = null; + + public ZXingScannerPage(MobileBarcodeScanningOptions options = null, View customOverlay = null) + : base() + { + zxing = new ZXingScannerView + { + HorizontalOptions = LayoutOptions.FillAndExpand, + VerticalOptions = LayoutOptions.FillAndExpand, + Options = options, + AutomationId = "zxingScannerView" + }; + + zxing.SetBinding(ZXingScannerView.IsTorchOnProperty, new Binding(nameof(IsTorchOn))); + zxing.SetBinding(ZXingScannerView.IsAnalyzingProperty, new Binding(nameof(IsAnalyzing))); + zxing.SetBinding(ZXingScannerView.IsScanningProperty, new Binding(nameof(IsScanning))); + zxing.SetBinding(ZXingScannerView.HasTorchProperty, new Binding(nameof(HasTorch))); + zxing.SetBinding(ZXingScannerView.ResultProperty, new Binding(nameof(Result))); + + zxing.OnScanResult += (result) + => OnScanResult?.Invoke(result); + + if (customOverlay == null) + { + defaultOverlay = new ZXingDefaultOverlay() { AutomationId = "zxingDefaultOverlay" }; + + defaultOverlay.SetBinding(ZXingDefaultOverlay.TopTextProperty, new Binding(nameof(DefaultOverlayTopText))); + defaultOverlay.SetBinding(ZXingDefaultOverlay.BottomTextProperty, new Binding(nameof(DefaultOverlayBottomText))); + defaultOverlay.SetBinding(ZXingDefaultOverlay.ShowFlashButtonProperty, new Binding(nameof(DefaultOverlayShowFlashButton))); + + DefaultOverlayTopText = "Hold your phone up to the barcode"; + DefaultOverlayBottomText = "Scanning will happen automatically"; + DefaultOverlayShowFlashButton = HasTorch; + + defaultOverlay.FlashButtonClicked += (sender, e) => + zxing.IsTorchOn = !zxing.IsTorchOn; + + Overlay = defaultOverlay; + } + else + { + Overlay = customOverlay; + } + + var grid = new Grid + { + VerticalOptions = LayoutOptions.FillAndExpand, + HorizontalOptions = LayoutOptions.FillAndExpand, + }; + grid.Children.Add(zxing); + grid.Children.Add(Overlay); + + // The root page of your application + Content = grid; + } + + #region Default Overlay Properties + + public static readonly BindableProperty DefaultOverlayTopTextProperty = + BindableProperty.Create(nameof(DefaultOverlayTopText), typeof(string), typeof(ZXingScannerPage), string.Empty); + public string DefaultOverlayTopText + { + get => (string)GetValue(DefaultOverlayTopTextProperty); + set => SetValue(DefaultOverlayTopTextProperty, value); + } + + public static readonly BindableProperty DefaultOverlayBottomTextProperty = + BindableProperty.Create(nameof(DefaultOverlayBottomText), typeof(string), typeof(ZXingScannerPage), string.Empty); + + public string DefaultOverlayBottomText + { + get => (string)GetValue(DefaultOverlayBottomTextProperty); + set => SetValue(DefaultOverlayBottomTextProperty, value); + } + + public static readonly BindableProperty DefaultOverlayShowFlashButtonProperty = + BindableProperty.Create(nameof(DefaultOverlayShowFlashButton), typeof(bool), typeof(ZXingScannerPage), false); + + public bool DefaultOverlayShowFlashButton + { + get => (bool)GetValue(DefaultOverlayShowFlashButtonProperty); + set => SetValue(DefaultOverlayShowFlashButtonProperty, value); + } + + #endregion + + public delegate void ScanResultDelegate(Result result); + public event ScanResultDelegate OnScanResult; + + public View Overlay { get; private set; } + + #region Functions + + public void ToggleTorch() + => zxing?.ToggleTorch(); + + protected override void OnAppearing() + { + base.OnAppearing(); + + zxing.IsScanning = true; + } + + protected override void OnDisappearing() + { + zxing.IsScanning = false; + + base.OnDisappearing(); + } + + public void PauseAnalysis() + { + if (zxing != null) + zxing.IsAnalyzing = false; + } + + public void ResumeAnalysis() + { + if (zxing != null) + zxing.IsAnalyzing = true; + } + + public void AutoFocus() + => zxing?.AutoFocus(); + + public void AutoFocus(int x, int y) + => zxing?.AutoFocus(x, y); + #endregion + + public static readonly BindableProperty IsTorchOnProperty = + BindableProperty.Create(nameof(IsTorchOn), typeof(bool), typeof(ZXingScannerPage), false); + + public bool IsTorchOn + { + get => (bool)GetValue(IsTorchOnProperty); + set => SetValue(IsTorchOnProperty, value); + } + + public static readonly BindableProperty IsAnalyzingProperty = + BindableProperty.Create(nameof(IsAnalyzing), typeof(bool), typeof(ZXingScannerPage), false); + + public bool IsAnalyzing + { + get => (bool)GetValue(IsAnalyzingProperty); + set => SetValue(IsAnalyzingProperty, value); + } + + public static readonly BindableProperty IsScanningProperty = + BindableProperty.Create(nameof(IsScanning), typeof(bool), typeof(ZXingScannerPage), false); + + public bool IsScanning + { + get => (bool)GetValue(IsScanningProperty); + set => SetValue(IsScanningProperty, value); + } + + public static readonly BindableProperty HasTorchProperty = + BindableProperty.Create(nameof(HasTorch), typeof(bool), typeof(ZXingScannerPage), false); + + public bool HasTorch + { + get => (bool)GetValue(HasTorchProperty); + set => SetValue(HasTorchProperty, value); + } + + public static readonly BindableProperty ResultProperty = + BindableProperty.Create(nameof(Result), typeof(Result), typeof(ZXingScannerPage), default(Result)); + + public Result Result + { + get => (Result)GetValue(ResultProperty); + set => SetValue(ResultProperty, value); + } + } +} diff --git a/ZXing.Net.Mobile.Forms/ZXingScannerView.shared.cs b/ZXing.Net.Mobile.Forms/ZXingScannerView.shared.cs new file mode 100644 index 000000000..84c7d610f --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingScannerView.shared.cs @@ -0,0 +1,94 @@ +using System; +using System.Windows.Input; +using Xamarin.Forms; +using ZXing.Mobile; + +namespace ZXing.Net.Mobile.Forms +{ + public class ZXingScannerView : View + { + public delegate void ScanResultDelegate(Result result); + public event ScanResultDelegate OnScanResult; + + public event Action AutoFocusRequested; + + public ZXingScannerView() + { + VerticalOptions = LayoutOptions.FillAndExpand; + HorizontalOptions = LayoutOptions.FillAndExpand; + } + + public void RaiseScanResult(Result result) + { + Result = result; + OnScanResult?.Invoke(Result); + ScanResultCommand?.Execute(Result); + } + + public void ToggleTorch() + => IsTorchOn = !IsTorchOn; + + public void AutoFocus() + => AutoFocusRequested?.Invoke(-1, -1); + + public void AutoFocus(int x, int y) + => AutoFocusRequested?.Invoke(x, y); + + public static readonly BindableProperty OptionsProperty = + BindableProperty.Create(nameof(Options), typeof(MobileBarcodeScanningOptions), typeof(ZXingScannerView), MobileBarcodeScanningOptions.Default); + + public MobileBarcodeScanningOptions Options + { + get => (MobileBarcodeScanningOptions)GetValue(OptionsProperty); + set => SetValue(OptionsProperty, value); + } + + public static readonly BindableProperty IsScanningProperty = + BindableProperty.Create(nameof(IsScanning), typeof(bool), typeof(ZXingScannerView), false); + + public bool IsScanning + { + get => (bool)GetValue(IsScanningProperty); + set => SetValue(IsScanningProperty, value); + } + + public static readonly BindableProperty IsTorchOnProperty = + BindableProperty.Create(nameof(IsTorchOn), typeof(bool), typeof(ZXingScannerView), false); + public bool IsTorchOn + { + get => (bool)GetValue(IsTorchOnProperty); + set => SetValue(IsTorchOnProperty, value); + } + + public static readonly BindableProperty HasTorchProperty = + BindableProperty.Create(nameof(HasTorch), typeof(bool), typeof(ZXingScannerView), false); + + public bool HasTorch + => (bool)GetValue(HasTorchProperty); + + public static readonly BindableProperty IsAnalyzingProperty = + BindableProperty.Create(nameof(IsAnalyzing), typeof(bool), typeof(ZXingScannerView), true); + + public bool IsAnalyzing + { + get => (bool)GetValue(IsAnalyzingProperty); + set => SetValue(IsAnalyzingProperty, value); + } + + public static readonly BindableProperty ResultProperty = + BindableProperty.Create(nameof(Result), typeof(Result), typeof(ZXingScannerView), default(Result)); + public Result Result + { + get => (Result)GetValue(ResultProperty); + set => SetValue(ResultProperty, value); + } + + public static readonly BindableProperty ScanResultCommandProperty = + BindableProperty.Create(nameof(ScanResultCommand), typeof(ICommand), typeof(ZXingScannerView), default(ICommand)); + public ICommand ScanResultCommand + { + get => (ICommand)GetValue(ScanResultCommandProperty); + set => SetValue(ScanResultCommandProperty, value); + } + } +} diff --git a/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.android.cs b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.android.cs new file mode 100644 index 000000000..71e071bf3 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.android.cs @@ -0,0 +1,130 @@ +using System; +using Xamarin.Forms; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.Android; +using Android.Runtime; +using Android.App; +using Xamarin.Forms.Platform.Android; +using Android.Views; +using System.ComponentModel; +using System.Reflection; +using Android.Widget; +using ZXing.Mobile; +using System.Threading.Tasks; +using System.Linq.Expressions; + +[assembly: ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] +namespace ZXing.Net.Mobile.Forms.Android +{ + [Preserve(AllMembers = true)] + public class ZXingScannerViewRenderer : ViewRenderer + { + public ZXingScannerViewRenderer(global::Android.Content.Context context) + : base(context) + { + } + + public static void Init() + { + // Keep linker from stripping empty method + var temp = DateTime.Now; + } + + protected ZXingScannerView formsView; + + protected ZXingSurfaceView zxingSurface; + internal Task requestPermissionsTask; + + protected override async void OnElementChanged(ElementChangedEventArgs e) + { + base.OnElementChanged(e); + + formsView = Element; + + if (zxingSurface == null) + { + + // Process requests for autofocus + formsView.AutoFocusRequested += (x, y) => + { + if (zxingSurface != null) + { + if (x < 0 && y < 0) + zxingSurface.AutoFocus(); + else + zxingSurface.AutoFocus(x, y); + } + }; + + var cameraPermission = await Xamarin.Essentials.Permissions.RequestAsync(); + if (cameraPermission != Xamarin.Essentials.PermissionStatus.Granted) + { + Console.WriteLine("Missing Camera Permission"); + return; + } + + if (Xamarin.Essentials.Permissions.IsDeclaredInManifest("android.permission.FLASHLIGHT")) + { + var fp = await Xamarin.Essentials.Permissions.RequestAsync(); + if (fp != Xamarin.Essentials.PermissionStatus.Granted) + { + Console.WriteLine("Missing Flashlight Permission"); + return; + } + } + + zxingSurface = new ZXingSurfaceView(Context as Activity, formsView.Options); + zxingSurface.LayoutParameters = new LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent); + + base.SetNativeControl(zxingSurface); + + if (formsView.IsScanning) + zxingSurface.StartScanning(formsView.RaiseScanResult, formsView.Options); + + if (formsView.IsTorchOn) + zxingSurface.Torch(true); + } + } + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + base.OnElementPropertyChanged(sender, e); + + if (zxingSurface == null) + return; + + switch (e.PropertyName) + { + case nameof(ZXingScannerView.IsTorchOn): + zxingSurface.Torch(formsView.IsTorchOn); + break; + case nameof(ZXingScannerView.IsScanning): + if (formsView.IsScanning) + zxingSurface.StartScanning(formsView.RaiseScanResult, formsView.Options); + else + zxingSurface.StopScanning(); + break; + case nameof(ZXingScannerView.IsAnalyzing): + if (formsView.IsAnalyzing) + zxingSurface.ResumeAnalysis(); + else + zxingSurface.PauseAnalysis(); + break; + } + } + + public override bool OnTouchEvent(MotionEvent e) + { + var x = e.GetX(); + var y = e.GetY(); + + if (zxingSurface != null) + { + zxingSurface.AutoFocus((int)x, (int)y); + System.Diagnostics.Debug.WriteLine("Touch: x={0}, y={1}", x, y); + } + return base.OnTouchEvent(e); + } + } +} + diff --git a/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.ios.cs b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.ios.cs new file mode 100644 index 000000000..18d4e0465 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.ios.cs @@ -0,0 +1,121 @@ +using System; +using Xamarin.Forms; +using ZXing.Net.Mobile.Forms; +using Xamarin.Forms.Platform.iOS; +using System.ComponentModel; +using System.Reflection; +using Foundation; +using ZXing.Net.Mobile.Forms.iOS; +using UIKit; + +[assembly: ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] +namespace ZXing.Net.Mobile.Forms.iOS +{ + [Preserve(AllMembers = true)] + public class ZXingScannerViewRenderer : ViewRenderer + { + // No-op to be called from app to prevent linker from stripping this out + public static void Init() + { + var _ = DateTime.Now; + } + + protected ZXingScannerView formsView; + protected ZXing.Mobile.ZXingScannerView zxingView; + + protected override async void OnElementChanged(ElementChangedEventArgs e) + { + AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + + formsView = Element; + + if (zxingView == null) + { + + // Process requests for autofocus + formsView.AutoFocusRequested += (x, y) => + { + if (zxingView != null) + { + if (x < 0 && y < 0) + zxingView.AutoFocus(); + else + zxingView.AutoFocus(x, y); + } + }; + + var cameraPermission = await Xamarin.Essentials.Permissions.RequestAsync(); + if (cameraPermission != Xamarin.Essentials.PermissionStatus.Granted) + { + Console.WriteLine("Missing Camera Permission"); + return; + } + + zxingView = new ZXing.Mobile.ZXingScannerView(); + zxingView.UseCustomOverlayView = true; + zxingView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + + base.SetNativeControl(zxingView); + + if (formsView.IsScanning) + zxingView.StartScanning(formsView.RaiseScanResult, formsView.Options); + + if (!formsView.IsAnalyzing) + zxingView.PauseAnalysis(); + + if (formsView.IsTorchOn) + zxingView.Torch(formsView.IsTorchOn); + } + + base.OnElementChanged(e); + } + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + base.OnElementPropertyChanged(sender, e); + + if (zxingView == null) + return; + + switch (e.PropertyName) + { + case nameof(ZXingScannerView.IsTorchOn): + zxingView.Torch(formsView.IsTorchOn); + break; + case nameof(ZXingScannerView.IsScanning): + if (formsView.IsScanning) + zxingView.StartScanning(formsView.RaiseScanResult, formsView.Options); + else + zxingView.StopScanning(); + break; + case nameof(ZXingScannerView.IsAnalyzing): + if (formsView.IsAnalyzing) + zxingView.ResumeAnalysis(); + else + zxingView.PauseAnalysis(); + break; + } + } + + public override void TouchesEnded(NSSet touches, UIKit.UIEvent evt) + { + base.TouchesEnded(touches, evt); + + zxingView?.AutoFocus(); + } + + public override void LayoutSubviews() + { + base.LayoutSubviews(); + + // Find the best guess at current orientation + var o = UIApplication.SharedApplication.StatusBarOrientation; + if (ViewController != null) + o = ViewController.InterfaceOrientation; + + // Tell the native view to rotate + zxingView?.DidRotate(o); + } + } +} + diff --git a/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.tizen.cs b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.tizen.cs new file mode 100644 index 000000000..65c17b054 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.tizen.cs @@ -0,0 +1,88 @@ +using System; +using System.ComponentModel; +using Xamarin.Forms; +using Xamarin.Forms.Platform.Tizen; +using ZXing.Mobile; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.Tizen; + +[assembly: ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] + +namespace ZXing.Net.Mobile.Forms.Tizen +{ + class ZXingScannerViewRenderer : ViewRenderer + { + protected ZXingScannerView formsView; + protected ZXingMediaView zxingWindow; + + public static void Init() + { + // Keep linker from stripping empty method + var temp = DateTime.Now; + } + + protected override void Dispose(bool disposing) + { + zxingWindow?.StopScanning(); + base.Dispose(disposing); + } + + protected override void OnElementChanged(ElementChangedEventArgs e) + { + base.OnElementChanged(e); + formsView = Element; + + if (zxingWindow == null) + { + formsView.AutoFocusRequested += (x, y) => + { + if (zxingWindow != null) + { + if (x < 0 && y < 0) + zxingWindow.AutoFocus(); + else + zxingWindow.AutoFocus(x, y); + } + }; + + zxingWindow = new ZXing.Mobile.ZXingMediaView(Xamarin.Forms.Forms.NativeParent); + zxingWindow.Show(); + base.SetNativeControl(zxingWindow); + + if (formsView.IsScanning) + zxingWindow.StartScanning(formsView.RaiseScanResult, formsView.Options); + if (!formsView.IsAnalyzing) + zxingWindow.PauseAnalysis(); + if (formsView.IsTorchOn) + zxingWindow.Torch(formsView.IsTorchOn); + } + } + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + base.OnElementPropertyChanged(sender, e); + + if (zxingWindow != null) + { + switch (e.PropertyName) + { + case nameof(ZXingScannerView.IsTorchOn): + zxingWindow.Torch(formsView.IsTorchOn); + break; + case nameof(ZXingScannerView.IsScanning): + if (formsView.IsScanning) + zxingWindow.StartScanning(formsView.RaiseScanResult, formsView.Options); + else + zxingWindow.StopScanning(); + break; + case nameof(ZXingScannerView.IsAnalyzing): + if (formsView.IsAnalyzing) + zxingWindow.ResumeAnalysis(); + else + zxingWindow.PauseAnalysis(); + break; + } + } + } + } +} diff --git a/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.uwp.cs b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.uwp.cs new file mode 100644 index 000000000..171529ba7 --- /dev/null +++ b/ZXing.Net.Mobile.Forms/ZXingScannerViewRenderer.uwp.cs @@ -0,0 +1,100 @@ +using System; +using Xamarin.Forms; +using ZXing.Net.Mobile.Forms; +using ZXing.Net.Mobile.Forms.WindowsUniversal; +using Xamarin.Forms.Platform.UWP; +using System.ComponentModel; +using System.Reflection; + +[assembly: ExportRenderer(typeof(ZXingScannerView), typeof(ZXingScannerViewRenderer))] +namespace ZXing.Net.Mobile.Forms.WindowsUniversal +{ + //[Preserve(AllMembers = true)] + public class ZXingScannerViewRenderer : ViewRenderer + { + public static void Init() + { + // Cause the assembly to load + } + + protected ZXingScannerView formsView; + + protected ZXing.Mobile.ZXingScannerControl zxingControl; + + protected override async void OnElementChanged(ElementChangedEventArgs e) + { + formsView = Element; + + if (formsView != null && zxingControl == null) + { + formsView.AutoFocusRequested += FormsView_AutoFocusRequested; + + var cameraPermission = await Xamarin.Essentials.Permissions.RequestAsync(); + if (cameraPermission != Xamarin.Essentials.PermissionStatus.Granted) + { + Console.WriteLine("Missing Camera Permission"); + return; + } + + zxingControl = new ZXing.Mobile.ZXingScannerControl(); + zxingControl.ContinuousScanning = true; + zxingControl.UseCustomOverlay = true; + + base.SetNativeControl(zxingControl); + + if (formsView.IsScanning) + zxingControl.StartScanning(formsView.RaiseScanResult, formsView.Options); + + if (!formsView.IsAnalyzing) + zxingControl.PauseAnalysis(); + + if (formsView.IsTorchOn) + zxingControl.Torch(formsView.IsTorchOn); + } + + // Shut the scanner down if necessary + if (formsView == null && e.NewElement == null && zxingControl != null) + { + zxingControl.StopScanning(); + } + + base.OnElementChanged(e); + } + + protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) + { + base.OnElementPropertyChanged(sender, e); + + if (zxingControl == null) + return; + + switch (e.PropertyName) + { + case nameof(ZXingScannerView.IsTorchOn): + zxingControl.Torch(formsView.IsTorchOn); + break; + case nameof(ZXingScannerView.IsScanning): + if (formsView.IsScanning) + zxingControl.StartScanning(formsView.RaiseScanResult, formsView.Options); + else + zxingControl.StopScanning(); + break; + case nameof(ZXingScannerView.IsAnalyzing): + if (formsView.IsAnalyzing) + zxingControl.ResumeAnalysis(); + else + zxingControl.PauseAnalysis(); + break; + } + } + + void FormsView_AutoFocusRequested(int x, int y) + => zxingControl.AutoFocus(x, y); + + protected override async void OnDisconnectVisualChildren() + { + await zxingControl?.StopScanningAsync(); + base.OnDisconnectVisualChildren(); + } + } +} diff --git a/ZXing.Net.Mobile.UITests.sln b/ZXing.Net.Mobile.UITests.sln deleted file mode 100644 index c153b72e2..000000000 --- a/ZXing.Net.Mobile.UITests.sln +++ /dev/null @@ -1,870 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26228.9 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Android", "Source\ZXing.Net.Mobile.Android\ZXing.Net.Mobile.Android.csproj", "{AC17589E-C817-4FA8-B3EC-CCEB25E55E59}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.iOS", "Source\ZXing.Net.Mobile.iOS\ZXing.Net.Mobile.iOS.csproj", "{6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Portable", "Source\ZXing.Net.Mobile.Portable\ZXing.Net.Mobile.Portable.csproj", "{78407906-99C6-42B0-A511-973FC78C58CB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Forms Libraries", "Forms Libraries", "{72EC3146-EA1B-4963-9248-55065728AF7F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms", "Source\ZXing.Net.Mobile.Forms\ZXing.Net.Mobile.Forms.csproj", "{8E54DB74-C094-4016-859A-D1C7F2509A58}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms.Android", "Source\ZXing.Net.Mobile.Forms.Android\ZXing.Net.Mobile.Forms.Android.csproj", "{DC2FF2AE-4090-4056-BBE4-087BDE6567BD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms.iOS", "Source\ZXing.Net.Mobile.Forms.iOS\ZXing.Net.Mobile.Forms.iOS.csproj", "{8370ADB4-229C-4DEC-908F-B1A8FC155523}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UITests", "UITests", "{FD73555C-A6FF-4BFB-86FF-D4333DF2AA3B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{E5ED436F-3AC5-4A3E-AD32-AAAF9C16A782}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Android", "Samples\Android\Sample.Android\Sample.Android.csproj", "{660D9346-D70B-4C54-8402-E5F6DF48E9AC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Android.UITests", "UITests\Sample.Android.UITests\Sample.Android.UITests.csproj", "{BFA131F2-086F-4B18-9920-81EBE09F0D6A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsSample", "Samples\Forms\Core\FormsSample.csproj", "{0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsSample.Droid", "Samples\Forms\Droid\FormsSample.Droid.csproj", "{D8248617-D905-4F82-95B4-D4027C20278A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsSample.UITests", "UITests\FormsSample.UITests\FormsSample.UITests.csproj", "{A0E994BB-0C73-4B4E-9133-D7DDD7866427}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsSample.iOS", "Samples\Forms\iOS\FormsSample.iOS.csproj", "{776B89DF-2915-4701-B8A3-127D3340C77F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.iOS.UITests", "UITests\Sample.iOS.UITests\Sample.iOS.UITests.csproj", "{F60C523B-54E7-4283-95A8-01E405E55024}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.iOS", "Samples\iOS\Sample.iOS\Sample.iOS.csproj", "{D119965B-BA8F-40D7-86B4-E9654E1014E2}" -EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "UITests.Shared", "UITests\UITests.Shared\UITests.Shared.shproj", "{EB5B7B11-23D4-4427-B016-DAE1E79A77FD}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - UITests\UITests.Shared\UITests.Shared.projitems*{a0e994bb-0c73-4b4e-9133-d7ddd7866427}*SharedItemsImports = 4 - UITests\UITests.Shared\UITests.Shared.projitems*{bfa131f2-086f-4b18-9920-81ebe09f0d6a}*SharedItemsImports = 4 - UITests\UITests.Shared\UITests.Shared.projitems*{eb5b7b11-23d4-4427-b016-dae1e79a77fd}*SharedItemsImports = 13 - UITests\UITests.Shared\UITests.Shared.projitems*{f60c523b-54e7-4283-95a8-01e405e55024}*SharedItemsImports = 4 - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Ad-Hoc|Any CPU = Ad-Hoc|Any CPU - Ad-Hoc|ARM = Ad-Hoc|ARM - Ad-Hoc|iPhone = Ad-Hoc|iPhone - Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator - Ad-Hoc|x64 = Ad-Hoc|x64 - Ad-Hoc|x86 = Ad-Hoc|x86 - AppStore|Any CPU = AppStore|Any CPU - AppStore|ARM = AppStore|ARM - AppStore|iPhone = AppStore|iPhone - AppStore|iPhoneSimulator = AppStore|iPhoneSimulator - AppStore|x64 = AppStore|x64 - AppStore|x86 = AppStore|x86 - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|iPhone = Debug|iPhone - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|iPhone = Release|iPhone - Release|iPhoneSimulator = Release|iPhoneSimulator - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhone.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhone.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|ARM.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|ARM.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhone.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x64.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x64.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x86.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x86.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhone.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x86.Build.0 = Release|Any CPU - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|Any CPU.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|Any CPU.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|ARM.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|ARM.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhone.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhone.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x64.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x64.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x86.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x86.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|Any CPU.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|Any CPU.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|ARM.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|ARM.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhone.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhone.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x64.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x64.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x86.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x86.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|Any CPU.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|ARM.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|x64.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|x86.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|ARM.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|x64.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|x86.ActiveCfg = Release|iPhone - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhone.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhone.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|iPhone.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.AppStore|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|ARM.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|ARM.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhone.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x64.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x64.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x86.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x86.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhone.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhone.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x86.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|Any CPU.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|ARM.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|ARM.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|iPhone.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|x64.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|x64.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|x86.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.AppStore|x86.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|ARM.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|ARM.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhone.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x64.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x64.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x86.ActiveCfg = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Debug|x86.Build.0 = Debug|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|Any CPU.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|ARM.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|ARM.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhone.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhone.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x64.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x64.Build.0 = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x86.ActiveCfg = Release|Any CPU - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD}.Release|x86.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|Any CPU.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|ARM.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|ARM.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|iPhone.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|x64.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|x64.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|x86.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.AppStore|x86.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|ARM.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|ARM.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhone.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x64.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x64.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x86.ActiveCfg = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Debug|x86.Build.0 = Debug|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|Any CPU.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|ARM.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|ARM.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhone.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhone.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x64.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x64.Build.0 = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x86.ActiveCfg = Release|Any CPU - {8370ADB4-229C-4DEC-908F-B1A8FC155523}.Release|x86.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|Any CPU.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|Any CPU.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhone.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x64.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x64.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x64.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.Deploy.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhone.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x64.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x64.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x86.ActiveCfg = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x86.Build.0 = Debug|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|Any CPU.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhone.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhone.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x64.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x64.Build.0 = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x86.ActiveCfg = Release|Any CPU - {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x86.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|Any CPU.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|ARM.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|ARM.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|iPhone.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|x64.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|x64.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|x86.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.AppStore|x86.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|ARM.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|ARM.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|iPhone.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|x64.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|x64.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|x86.ActiveCfg = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Debug|x86.Build.0 = Debug|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|Any CPU.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|ARM.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|ARM.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|iPhone.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|iPhone.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|x64.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|x64.Build.0 = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|x86.ActiveCfg = Release|Any CPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A}.Release|x86.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|Any CPU.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|ARM.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|ARM.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|iPhone.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|x64.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|x64.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|x86.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.AppStore|x86.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|ARM.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|ARM.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|iPhone.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|x64.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|x64.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|x86.ActiveCfg = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Debug|x86.Build.0 = Debug|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|Any CPU.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|ARM.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|ARM.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|iPhone.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|iPhone.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|x64.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|x64.Build.0 = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|x86.ActiveCfg = Release|Any CPU - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90}.Release|x86.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|Any CPU.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|Any CPU.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|ARM.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|ARM.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|ARM.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|iPhone.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|x64.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|x64.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|x64.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|x86.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|x86.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.AppStore|x86.Deploy.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|ARM.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|ARM.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|iPhone.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|x64.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|x64.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|x86.ActiveCfg = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Debug|x86.Build.0 = Debug|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|Any CPU.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|ARM.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|ARM.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|iPhone.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|iPhone.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|x64.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|x64.Build.0 = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|x86.ActiveCfg = Release|Any CPU - {D8248617-D905-4F82-95B4-D4027C20278A}.Release|x86.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|Any CPU.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|ARM.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|ARM.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|iPhone.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|x64.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|x64.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|x86.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.AppStore|x86.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|ARM.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|ARM.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|iPhone.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|x64.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|x64.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|x86.ActiveCfg = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Debug|x86.Build.0 = Debug|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|Any CPU.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|ARM.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|ARM.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|iPhone.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|iPhone.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|x64.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|x64.Build.0 = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|x86.ActiveCfg = Release|Any CPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427}.Release|x86.Build.0 = Release|Any CPU - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|Any CPU.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|Any CPU.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|ARM.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|ARM.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|iPhone.Build.0 = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|x64.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|x64.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|x86.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Ad-Hoc|x86.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|Any CPU.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|Any CPU.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|ARM.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|ARM.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|iPhone.ActiveCfg = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|iPhone.Build.0 = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|x64.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|x64.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|x86.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.AppStore|x86.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|ARM.Build.0 = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|iPhone.ActiveCfg = Debug|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|iPhone.Build.0 = Debug|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|x64.Build.0 = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Debug|x86.Build.0 = Debug|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|Any CPU.ActiveCfg = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|Any CPU.Build.0 = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|ARM.ActiveCfg = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|ARM.Build.0 = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|iPhone.ActiveCfg = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|iPhone.Build.0 = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|x64.ActiveCfg = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|x64.Build.0 = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|x86.ActiveCfg = Release|iPhone - {776B89DF-2915-4701-B8A3-127D3340C77F}.Release|x86.Build.0 = Release|iPhone - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|Any CPU.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|ARM.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|ARM.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|iPhone.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|x64.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|x64.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|x86.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.AppStore|x86.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|ARM.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|ARM.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|iPhone.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|x64.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|x64.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|x86.ActiveCfg = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Debug|x86.Build.0 = Debug|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|Any CPU.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|ARM.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|ARM.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|iPhone.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|iPhone.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|x64.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|x64.Build.0 = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|x86.ActiveCfg = Release|Any CPU - {F60C523B-54E7-4283-95A8-01E405E55024}.Release|x86.Build.0 = Release|Any CPU - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|Any CPU.ActiveCfg = AppStore|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|ARM.ActiveCfg = AppStore|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhone.ActiveCfg = AppStore|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhone.Build.0 = AppStore|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|x64.ActiveCfg = AppStore|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|x86.ActiveCfg = AppStore|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|ARM.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhone.ActiveCfg = Debug|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhone.Build.0 = Debug|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|x64.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|x86.Build.0 = Debug|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|Any CPU.ActiveCfg = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|Any CPU.Build.0 = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|ARM.ActiveCfg = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|ARM.Build.0 = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhone.ActiveCfg = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhone.Build.0 = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|x64.ActiveCfg = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|x64.Build.0 = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|x86.ActiveCfg = Release|iPhone - {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|x86.Build.0 = Release|iPhone - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {78407906-99C6-42B0-A511-973FC78C58CB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {8E54DB74-C094-4016-859A-D1C7F2509A58} = {72EC3146-EA1B-4963-9248-55065728AF7F} - {DC2FF2AE-4090-4056-BBE4-087BDE6567BD} = {72EC3146-EA1B-4963-9248-55065728AF7F} - {8370ADB4-229C-4DEC-908F-B1A8FC155523} = {72EC3146-EA1B-4963-9248-55065728AF7F} - {660D9346-D70B-4C54-8402-E5F6DF48E9AC} = {E5ED436F-3AC5-4A3E-AD32-AAAF9C16A782} - {BFA131F2-086F-4B18-9920-81EBE09F0D6A} = {FD73555C-A6FF-4BFB-86FF-D4333DF2AA3B} - {0DAF97CA-02DB-4E4F-9163-B8F14EAE2D90} = {E5ED436F-3AC5-4A3E-AD32-AAAF9C16A782} - {D8248617-D905-4F82-95B4-D4027C20278A} = {E5ED436F-3AC5-4A3E-AD32-AAAF9C16A782} - {A0E994BB-0C73-4B4E-9133-D7DDD7866427} = {FD73555C-A6FF-4BFB-86FF-D4333DF2AA3B} - {776B89DF-2915-4701-B8A3-127D3340C77F} = {E5ED436F-3AC5-4A3E-AD32-AAAF9C16A782} - {F60C523B-54E7-4283-95A8-01E405E55024} = {FD73555C-A6FF-4BFB-86FF-D4333DF2AA3B} - {D119965B-BA8F-40D7-86B4-E9654E1014E2} = {E5ED436F-3AC5-4A3E-AD32-AAAF9C16A782} - {EB5B7B11-23D4-4427-B016-DAE1E79A77FD} = {FD73555C-A6FF-4BFB-86FF-D4333DF2AA3B} - EndGlobalSection -EndGlobal diff --git a/ZXing.Net.Mobile.WP8.sln b/ZXing.Net.Mobile.WP8.sln deleted file mode 100644 index 92f0ebc04..000000000 --- a/ZXing.Net.Mobile.WP8.sln +++ /dev/null @@ -1,401 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsRT", "Source\ZXing.Net.Mobile.WindowsRT\ZXing.Net.Mobile.WindowsRT.csproj", "{10EB06B2-7231-40DF-8930-7781C82B65DB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Portable", "Source\ZXing.Net.Mobile.Portable\ZXing.Net.Mobile.Portable.csproj", "{78407906-99C6-42B0-A511-973FC78C58CB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Forms Libraries", "Forms Libraries", "{72EC3146-EA1B-4963-9248-55065728AF7F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsPhone", "Source\ZXing.Net.Mobile.WindowsPhone\ZXing.Net.Mobile.WindowsPhone.csproj", "{C9EFC2F6-AC4C-446C-8FBF-91824B00431D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms", "Source\ZXing.Net.Mobile.Forms\ZXing.Net.Mobile.Forms.csproj", "{8E54DB74-C094-4016-859A-D1C7F2509A58}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Forms.WindowsPhone", "Source\ZXing.Net.Mobile.Forms.WindowsPhone\ZXing.Net.Mobile.Forms.WindowsPhone.csproj", "{9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|iPhone = Debug|iPhone - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|iPhone = Release|iPhone - Release|iPhoneSimulator = Release|iPhoneSimulator - Release|x64 = Release|x64 - Release|x86 = Release|x86 - ReleaseMac|Any CPU = ReleaseMac|Any CPU - ReleaseMac|ARM = ReleaseMac|ARM - ReleaseMac|iPhone = ReleaseMac|iPhone - ReleaseMac|iPhoneSimulator = ReleaseMac|iPhoneSimulator - ReleaseMac|x64 = ReleaseMac|x64 - ReleaseMac|x86 = ReleaseMac|x86 - ReleaseWin|Any CPU = ReleaseWin|Any CPU - ReleaseWin|ARM = ReleaseWin|ARM - ReleaseWin|iPhone = ReleaseWin|iPhone - ReleaseWin|iPhoneSimulator = ReleaseWin|iPhoneSimulator - ReleaseWin|x64 = ReleaseWin|x64 - ReleaseWin|x86 = ReleaseWin|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x86.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|ARM.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhone.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x64.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x64.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x86.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x86.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x86.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|ARM.ActiveCfg = Debug|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|ARM.Build.0 = Debug|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|iPhone.Build.0 = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|x64.ActiveCfg = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|x64.Build.0 = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|x86.ActiveCfg = Debug|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|x86.Build.0 = Debug|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|Any CPU.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|ARM.ActiveCfg = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|ARM.Build.0 = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|iPhone.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|iPhone.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|x64.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|x64.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|x86.ActiveCfg = Release|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|x86.Build.0 = Release|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|ARM.ActiveCfg = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|ARM.Build.0 = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|x64.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|x86.ActiveCfg = Release|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseMac|x86.Build.0 = Release|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|ARM.ActiveCfg = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|ARM.Build.0 = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|x64.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|x86.ActiveCfg = Release|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.ReleaseWin|x86.Build.0 = Release|x86 - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|ARM.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|ARM.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhone.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x64.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x64.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x86.ActiveCfg = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Debug|x86.Build.0 = Debug|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhone.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhone.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.Release|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseMac|x86.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|ARM.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x64.Build.0 = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {8E54DB74-C094-4016-859A-D1C7F2509A58}.ReleaseWin|x86.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|ARM.ActiveCfg = Debug|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|ARM.Build.0 = Debug|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|iPhone.Build.0 = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|x64.ActiveCfg = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|x64.Build.0 = Debug|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|x86.ActiveCfg = Debug|x86 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Debug|x86.Build.0 = Debug|x86 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|Any CPU.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|ARM.ActiveCfg = Release|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|ARM.Build.0 = Release|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|iPhone.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|iPhone.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|x64.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|x64.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|x86.ActiveCfg = Release|x86 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.Release|x86.Build.0 = Release|x86 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|ARM.ActiveCfg = Release|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|ARM.Build.0 = Release|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|x64.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|x86.ActiveCfg = Release|x86 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseMac|x86.Build.0 = Release|x86 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|ARM.ActiveCfg = Release|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|ARM.Build.0 = Release|ARM - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|x64.Build.0 = Release|Any CPU - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|x86.ActiveCfg = Release|x86 - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF}.ReleaseWin|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {10EB06B2-7231-40DF-8930-7781C82B65DB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {78407906-99C6-42B0-A511-973FC78C58CB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D} = {2DC0C8D5-DF7F-4D96-886D-D7E83522C9BF} - {8E54DB74-C094-4016-859A-D1C7F2509A58} = {72EC3146-EA1B-4963-9248-55065728AF7F} - {9A761ACB-26DA-4185-8008-D4CDE7D2F0BF} = {72EC3146-EA1B-4963-9248-55065728AF7F} - EndGlobalSection -EndGlobal diff --git a/ZXing.Net.Mobile.nuspec b/ZXing.Net.Mobile.nuspec deleted file mode 100644 index 1ae4aadfc..000000000 --- a/ZXing.Net.Mobile.nuspec +++ /dev/null @@ -1,83 +0,0 @@ - - - - ZXing.Net.Mobile - $version$ - ZXing.Net.Mobile Barcode Scanner - Redth - http://raw.github.com/Redth/ZXing.Net.Mobile/master/License.md - http://github.com/Redth/ZXing.Net.Mobile - http://raw.github.com/Redth/ZXing.Net.Mobile/master/Art/ZXing.Net.Mobile-Icon.png - false - - ZXing.Net.Mobile is a C#/.NET library based on the open source Barcode Library: ZXing (Zebra Crossing), using the ZXing.Net Port. It works with Xamarin.iOS, Xamarin.Android, Windows Phone (Silverlight) and Windows Universal. The goal of ZXing.Net.Mobile is to make scanning barcodes as effortless and painless as possible in your own applications. - - See https://github.com/Redth/ZXing.Net.Mobile/releases for release notes. - - ZXing Barcode Scanning for your Xamarin.iOS, Xamarin.Android, Windows Phone (Silverlight) and Windows Universal apps! - - barcode, zxing, zxing.net, qr, scan, scanning, scanner - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ZXing.Net.Mobile.sln b/ZXing.Net.Mobile.sln index 61a8c38c7..86edaa3b2 100644 --- a/ZXing.Net.Mobile.sln +++ b/ZXing.Net.Mobile.sln @@ -1,510 +1,698 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26228.9 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29806.167 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZXing.Net.Mobile", "ZXing.Net.Mobile\ZXing.Net.Mobile.csproj", "{8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Portable", "Source\ZXing.Net.Mobile.Portable\ZXing.Net.Mobile.Portable.csproj", "{78407906-99C6-42B0-A511-973FC78C58CB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZXing.Net.Mobile.Forms", "ZXing.Net.Mobile.Forms\ZXing.Net.Mobile.Forms.csproj", "{BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Android", "Source\ZXing.Net.Mobile.Android\ZXing.Net.Mobile.Android.csproj", "{AC17589E-C817-4FA8-B3EC-CCEB25E55E59}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4DE853DC-8EDA-44D4-8B67-BAF575B70E6F}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.iOS", "Source\ZXing.Net.Mobile.iOS\ZXing.Net.Mobile.iOS.csproj", "{6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{5BE76DF7-1002-4733-9905-45BE08E377A5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsUniversal", "Source\ZXing.Net.Mobile.WindowsUniversal\ZXing.Net.Mobile.WindowsUniversal.csproj", "{1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Android", "Samples\Sample.Android\Sample.Android.csproj", "{660D9346-D70B-4C54-8402-E5F6DF48E9AC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsRT", "Source\ZXing.Net.Mobile.WindowsRT\ZXing.Net.Mobile.WindowsRT.csproj", "{10EB06B2-7231-40DF-8930-7781C82B65DB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.iOS", "Samples\Sample.iOS\Sample.iOS.csproj", "{D119965B-BA8F-40D7-86B4-E9654E1014E2}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Forms Sample", "Forms Sample", "{E0DF8E5D-AF49-43C9-9921-D67268E75964}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Uwp", "Samples\Sample.Uwp\Sample.Uwp.csproj", "{2D97B30F-94A0-4631-9276-3ED17F392184}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Forms", "Samples\Sample.Forms\Sample.Forms\Sample.Forms.csproj", "{CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Forms.Android", "Samples\Sample.Forms\Sample.Forms.Android\Sample.Forms.Android.csproj", "{C63CCA38-6CC2-480B-9CDA-A64074C7CC46}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Forms.iOS", "Samples\Sample.Forms\Sample.Forms.iOS\Sample.Forms.iOS.csproj", "{CFF9673E-1188-4646-BCC7-F7601F3A1D1A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.Forms.UWP", "Samples\Sample.Forms\Sample.Forms.UWP\Sample.Forms.UWP.csproj", "{96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Forms.Tizen", "Samples\Sample.Forms\Sample.Forms.Tizen\Sample.Forms.Tizen.csproj", "{9CBD2F34-9649-48DE-9B35-0D1291F4E714}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Ad-Hoc|Any CPU = Ad-Hoc|Any CPU Ad-Hoc|ARM = Ad-Hoc|ARM + Ad-Hoc|ARM64 = Ad-Hoc|ARM64 Ad-Hoc|iPhone = Ad-Hoc|iPhone Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator Ad-Hoc|x64 = Ad-Hoc|x64 Ad-Hoc|x86 = Ad-Hoc|x86 AppStore|Any CPU = AppStore|Any CPU AppStore|ARM = AppStore|ARM + AppStore|ARM64 = AppStore|ARM64 AppStore|iPhone = AppStore|iPhone AppStore|iPhoneSimulator = AppStore|iPhoneSimulator AppStore|x64 = AppStore|x64 AppStore|x86 = AppStore|x86 Debug|Any CPU = Debug|Any CPU Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 Debug|iPhone = Debug|iPhone Debug|iPhoneSimulator = Debug|iPhoneSimulator Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 Release|iPhone = Release|iPhone Release|iPhoneSimulator = Release|iPhoneSimulator Release|x64 = Release|x64 Release|x86 = Release|x86 - ReleaseMac|Any CPU = ReleaseMac|Any CPU - ReleaseMac|ARM = ReleaseMac|ARM - ReleaseMac|iPhone = ReleaseMac|iPhone - ReleaseMac|iPhoneSimulator = ReleaseMac|iPhoneSimulator - ReleaseMac|x64 = ReleaseMac|x64 - ReleaseMac|x86 = ReleaseMac|x86 - ReleaseWin|Any CPU = ReleaseWin|Any CPU - ReleaseWin|ARM = ReleaseWin|ARM - ReleaseWin|iPhone = ReleaseWin|iPhone - ReleaseWin|iPhoneSimulator = ReleaseWin|iPhoneSimulator - ReleaseWin|x64 = ReleaseWin|x64 - ReleaseWin|x86 = ReleaseWin|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.AppStore|x86.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhone.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x64.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhone.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x64.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.AppStore|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|ARM.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhone.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x64.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Debug|x86.Build.0 = Debug|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|ARM.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhone.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x64.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.Release|x86.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {78407906-99C6-42B0-A511-973FC78C58CB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhone.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.AppStore|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|ARM.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|ARM.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhone.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x64.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x64.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x86.ActiveCfg = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Debug|x86.Build.0 = Debug|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|ARM.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhone.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x64.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.Release|x86.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|ARM.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|ARM.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x64.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x64.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x86.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Ad-Hoc|x86.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|ARM.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|ARM.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x64.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x64.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x86.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.AppStore|x86.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|Any CPU.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|ARM.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhone.Build.0 = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|x64.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Debug|x86.ActiveCfg = Debug|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|ARM.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhone.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|x64.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.Release|x86.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|ARM.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|x64.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseMac|x86.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|Any CPU.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|Any CPU.Build.0 = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|ARM.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|iPhone.ActiveCfg = Release|iPhone - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|x64.ActiveCfg = Debug|iPhoneSimulator - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A}.ReleaseWin|x86.ActiveCfg = Debug|iPhoneSimulator - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Ad-Hoc|x86.Build.0 = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|Any CPU.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.AppStore|x86.Build.0 = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|ARM.ActiveCfg = Debug|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|ARM.Build.0 = Debug|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhone.Build.0 = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x64.ActiveCfg = Debug|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x64.Build.0 = Debug|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x86.ActiveCfg = Debug|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Debug|x86.Build.0 = Debug|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|Any CPU.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.Release|x86.Build.0 = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseMac|x86.Build.0 = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|ARM.ActiveCfg = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|ARM.Build.0 = Release|ARM - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhone.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|iPhoneSimulator.Build.0 = Release|Any CPU - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x64.ActiveCfg = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x64.Build.0 = Release|x64 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x86.ActiveCfg = Release|x86 - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2}.ReleaseWin|x86.Build.0 = Release|x86 - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.AppStore|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|ARM.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhone.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x64.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x64.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x86.ActiveCfg = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Debug|x86.Build.0 = Debug|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|ARM.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhone.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x64.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.Release|x86.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {10EB06B2-7231-40DF-8930-7781C82B65DB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Ad-Hoc|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.AppStore|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhone.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x64.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhone.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x64.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseMac|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhone.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x64.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.ReleaseWin|x86.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|Any CPU.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|ARM.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|ARM.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|ARM64.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|ARM64.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|iPhone.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|x64.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|x64.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|x86.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.AppStore|x86.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|ARM.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|ARM64.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|iPhone.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|x64.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|x64.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|x86.ActiveCfg = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Debug|x86.Build.0 = Debug|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|Any CPU.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|ARM.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|ARM.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|ARM64.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|ARM64.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|iPhone.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|iPhone.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|x64.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|x64.Build.0 = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|x86.ActiveCfg = Release|Any CPU + {8B7A8AB6-35A4-4C9C-83E1-96BA8BE3C941}.Release|x86.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|Any CPU.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|ARM.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|ARM.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|ARM64.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|ARM64.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|iPhone.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|x64.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|x64.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|x86.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.AppStore|x86.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|ARM.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|ARM.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|ARM64.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|iPhone.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|x64.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|x64.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|x86.ActiveCfg = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Debug|x86.Build.0 = Debug|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|Any CPU.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|ARM.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|ARM.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|ARM64.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|ARM64.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|iPhone.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|iPhone.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|x64.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|x64.Build.0 = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|x86.ActiveCfg = Release|Any CPU + {BC6F43C4-0FFA-487B-B74F-B26A8C8B3809}.Release|x86.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|ARM64.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|Any CPU.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|Any CPU.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM64.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM64.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|ARM64.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhone.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhone.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x64.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x64.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x64.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.AppStore|x86.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM64.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|ARM64.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhone.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x64.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x64.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x64.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x86.ActiveCfg = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x86.Build.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Debug|x86.Deploy.0 = Debug|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|Any CPU.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|Any CPU.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM64.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM64.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|ARM64.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhone.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhone.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhone.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x64.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x64.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x64.Deploy.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x86.ActiveCfg = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x86.Build.0 = Release|Any CPU + {660D9346-D70B-4C54-8402-E5F6DF48E9AC}.Release|x86.Deploy.0 = Release|Any CPU + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|ARM64.ActiveCfg = Ad-Hoc|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|ARM.ActiveCfg = AppStore|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|ARM64.ActiveCfg = AppStore|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhone.ActiveCfg = AppStore|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhone.Build.0 = AppStore|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|x64.ActiveCfg = AppStore|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.AppStore|x86.ActiveCfg = AppStore|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|ARM.ActiveCfg = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhone.ActiveCfg = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhone.Build.0 = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|x64.ActiveCfg = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Debug|x86.ActiveCfg = Debug|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|Any CPU.ActiveCfg = Release|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|ARM.ActiveCfg = Release|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhone.ActiveCfg = Release|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhone.Build.0 = Release|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|x64.ActiveCfg = Release|iPhone + {D119965B-BA8F-40D7-86B4-E9654E1014E2}.Release|x86.ActiveCfg = Release|iPhone + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|Any CPU.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|ARM.ActiveCfg = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|ARM.Build.0 = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|ARM.Deploy.0 = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|ARM64.ActiveCfg = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|ARM64.Build.0 = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|ARM64.Deploy.0 = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|iPhone.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|iPhone.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|iPhone.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|x64.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|x64.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|x64.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|x86.ActiveCfg = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|x86.Build.0 = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Ad-Hoc|x86.Deploy.0 = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|Any CPU.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|Any CPU.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|Any CPU.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|ARM.ActiveCfg = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|ARM.Build.0 = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|ARM.Deploy.0 = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|ARM64.ActiveCfg = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|ARM64.Build.0 = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|ARM64.Deploy.0 = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|iPhone.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|iPhone.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|iPhone.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|iPhoneSimulator.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x64.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x64.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x64.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x86.ActiveCfg = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x86.Build.0 = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.AppStore|x86.Deploy.0 = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|Any CPU.ActiveCfg = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|ARM.ActiveCfg = Debug|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|ARM.Build.0 = Debug|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|ARM.Deploy.0 = Debug|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|ARM64.Build.0 = Debug|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|iPhone.ActiveCfg = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|x64.ActiveCfg = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|x64.Build.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|x64.Deploy.0 = Debug|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|x86.ActiveCfg = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|x86.Build.0 = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Debug|x86.Deploy.0 = Debug|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|Any CPU.ActiveCfg = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|ARM.ActiveCfg = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|ARM.Build.0 = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|ARM.Deploy.0 = Release|ARM + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|ARM64.ActiveCfg = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|ARM64.Build.0 = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|ARM64.Deploy.0 = Release|ARM64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|iPhone.ActiveCfg = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|x64.ActiveCfg = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|x64.Build.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|x64.Deploy.0 = Release|x64 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|x86.ActiveCfg = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|x86.Build.0 = Release|x86 + {2D97B30F-94A0-4631-9276-3ED17F392184}.Release|x86.Deploy.0 = Release|x86 + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|ARM.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|ARM64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|ARM64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|iPhone.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|x64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|x64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|x86.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.AppStore|x86.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|ARM.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|ARM.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|ARM64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|iPhone.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|x64.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|x64.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|x86.ActiveCfg = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Debug|x86.Build.0 = Debug|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|Any CPU.Build.0 = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|ARM.ActiveCfg = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|ARM.Build.0 = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|ARM64.ActiveCfg = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|ARM64.Build.0 = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|iPhone.ActiveCfg = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|iPhone.Build.0 = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|x64.ActiveCfg = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|x64.Build.0 = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|x86.ActiveCfg = Release|Any CPU + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854}.Release|x86.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|ARM64.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|ARM64.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|ARM64.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|Any CPU.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|Any CPU.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|ARM.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|ARM.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|ARM.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|ARM64.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|ARM64.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|ARM64.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|iPhone.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|iPhone.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x64.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x64.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x64.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x86.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x86.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.AppStore|x86.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|ARM.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|ARM.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|ARM64.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|ARM64.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|iPhone.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|x64.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|x64.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|x64.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|x86.ActiveCfg = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|x86.Build.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Debug|x86.Deploy.0 = Debug|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|Any CPU.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|Any CPU.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|ARM.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|ARM.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|ARM.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|ARM64.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|ARM64.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|ARM64.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|iPhone.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|iPhone.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|iPhone.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|x64.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|x64.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|x64.Deploy.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|x86.ActiveCfg = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|x86.Build.0 = Release|Any CPU + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46}.Release|x86.Deploy.0 = Release|Any CPU + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|Any CPU.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|Any CPU.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|ARM.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|ARM.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|ARM64.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|ARM64.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|iPhone.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|x64.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|x64.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|x86.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Ad-Hoc|x86.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|Any CPU.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|Any CPU.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|ARM.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|ARM.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|ARM64.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|ARM64.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|iPhone.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|iPhone.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|x64.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|x64.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|x86.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.AppStore|x86.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|ARM.ActiveCfg = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|ARM64.ActiveCfg = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|iPhone.ActiveCfg = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|iPhone.Build.0 = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|x64.ActiveCfg = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Debug|x86.ActiveCfg = Debug|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|Any CPU.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|ARM.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|ARM64.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|iPhone.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|iPhone.Build.0 = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|x64.ActiveCfg = Release|iPhone + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A}.Release|x86.ActiveCfg = Release|iPhone + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|Any CPU.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|ARM.ActiveCfg = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|ARM.Build.0 = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|ARM.Deploy.0 = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|ARM64.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|ARM64.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|ARM64.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|iPhone.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|iPhone.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|iPhone.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|x64.ActiveCfg = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|x64.Build.0 = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|x64.Deploy.0 = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|x86.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|x86.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Ad-Hoc|x86.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|Any CPU.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|Any CPU.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|Any CPU.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|ARM.ActiveCfg = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|ARM.Build.0 = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|ARM.Deploy.0 = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|ARM64.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|ARM64.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|ARM64.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|iPhone.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|iPhone.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|iPhone.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|iPhoneSimulator.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x64.ActiveCfg = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x64.Build.0 = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x64.Deploy.0 = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x86.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x86.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.AppStore|x86.Deploy.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|Any CPU.ActiveCfg = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|ARM.ActiveCfg = Debug|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|ARM.Build.0 = Debug|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|ARM.Deploy.0 = Debug|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|ARM64.ActiveCfg = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|iPhone.ActiveCfg = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|x64.ActiveCfg = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|x64.Build.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|x64.Deploy.0 = Debug|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|x86.ActiveCfg = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|x86.Build.0 = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Debug|x86.Deploy.0 = Debug|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|Any CPU.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|ARM.ActiveCfg = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|ARM.Build.0 = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|ARM.Deploy.0 = Release|ARM + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|ARM64.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|iPhone.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|x64.ActiveCfg = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|x64.Build.0 = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|x64.Deploy.0 = Release|x64 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|x86.ActiveCfg = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|x86.Build.0 = Release|x86 + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63}.Release|x86.Deploy.0 = Release|x86 + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|ARM64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|ARM64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|ARM.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|ARM64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|ARM64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|iPhone.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|x64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|x64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|x86.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.AppStore|x86.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|ARM.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|ARM64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|iPhone.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|x64.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|x64.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|x86.ActiveCfg = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Debug|x86.Build.0 = Debug|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|Any CPU.Build.0 = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|ARM.ActiveCfg = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|ARM.Build.0 = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|ARM64.ActiveCfg = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|ARM64.Build.0 = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|iPhone.ActiveCfg = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|iPhone.Build.0 = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|x64.ActiveCfg = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|x64.Build.0 = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|x86.ActiveCfg = Release|Any CPU + {9CBD2F34-9649-48DE-9B35-0D1291F4E714}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} = {EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1} - {78407906-99C6-42B0-A511-973FC78C58CB} = {EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1} - {AC17589E-C817-4FA8-B3EC-CCEB25E55E59} = {EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1} - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A} = {EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1} - {1B000BCA-4895-4ACF-A0C6-3ADF3A9BEDF2} = {EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1} - {10EB06B2-7231-40DF-8930-7781C82B65DB} = {EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1} - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} = {EC2F2D7F-EA57-45A9-BD3E-7D8DA5A78FB1} + {660D9346-D70B-4C54-8402-E5F6DF48E9AC} = {5BE76DF7-1002-4733-9905-45BE08E377A5} + {D119965B-BA8F-40D7-86B4-E9654E1014E2} = {5BE76DF7-1002-4733-9905-45BE08E377A5} + {2D97B30F-94A0-4631-9276-3ED17F392184} = {5BE76DF7-1002-4733-9905-45BE08E377A5} + {CDF8AA59-65AB-4F2C-8DE0-D9D13F84E854} = {E0DF8E5D-AF49-43C9-9921-D67268E75964} + {C63CCA38-6CC2-480B-9CDA-A64074C7CC46} = {E0DF8E5D-AF49-43C9-9921-D67268E75964} + {CFF9673E-1188-4646-BCC7-F7601F3A1D1A} = {E0DF8E5D-AF49-43C9-9921-D67268E75964} + {96FBFDD1-F91A-44F6-962A-51E1AC7AAC63} = {E0DF8E5D-AF49-43C9-9921-D67268E75964} + {9CBD2F34-9649-48DE-9B35-0D1291F4E714} = {E0DF8E5D-AF49-43C9-9921-D67268E75964} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {887F72FF-99D0-4882-A73A-A913A0534F0C} EndGlobalSection EndGlobal diff --git a/ZXing.Net.Mobile/Android/BitmapRenderer.android.cs b/ZXing.Net.Mobile/Android/BitmapRenderer.android.cs new file mode 100644 index 000000000..b078e43c7 --- /dev/null +++ b/ZXing.Net.Mobile/Android/BitmapRenderer.android.cs @@ -0,0 +1,91 @@ +/* + * Copyright 2012 ZXing.Net authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using Android.Graphics; + +using ZXing.Common; +using ZXing.Rendering; + +namespace ZXing.Mobile +{ + /// + /// Renders a to a image + /// + public class BitmapRenderer : IBarcodeRenderer + { + /// + /// Gets or sets the foreground color. + /// + /// The foreground color. + public Color Foreground { get; set; } + + /// + /// Gets or sets the background color. + /// + /// The background color. + public Color Background { get; set; } + + /// + /// Initializes a new instance of the class. + /// + public BitmapRenderer() + { + Foreground = Color.Black; + Background = Color.White; + } + + /// + /// Renders the specified matrix. + /// + /// The matrix. + /// The format. + /// The content. + /// + public Bitmap Render(BitMatrix matrix, BarcodeFormat format, string content) + => Render(matrix, format, content, new EncodingOptions()); + + /// + /// Renders the specified matrix. + /// + /// The matrix. + /// The format. + /// The content. + /// The options. + /// + public Bitmap Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) + { + var width = matrix.Width; + var height = matrix.Height; + var pixels = new int[width * height]; + var outputIndex = 0; + var fColor = Foreground.ToArgb(); + var bColor = Background.ToArgb(); + + for (var y = 0; y < height; y++) + { + for (var x = 0; x < width; x++) + { + pixels[outputIndex] = matrix[x, y] ? fColor : bColor; + outputIndex++; + } + } + + var bitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); + bitmap.SetPixels(pixels, 0, width, 0, 0, width, height); + return bitmap; + } + } +} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/BitmapWriter.cs b/ZXing.Net.Mobile/Android/BitmapWriter.android.cs similarity index 60% rename from Source/ZXing.Net.Mobile.Android/BitmapWriter.cs rename to ZXing.Net.Mobile/Android/BitmapWriter.android.cs index 5c5c31711..6753f8448 100644 --- a/Source/ZXing.Net.Mobile.Android/BitmapWriter.cs +++ b/ZXing.Net.Mobile/Android/BitmapWriter.android.cs @@ -17,18 +17,16 @@ using ZXing.Rendering; namespace ZXing.Mobile -{ - /// - /// A smart class to encode some content to a barcode image - /// - public class BarcodeWriter : BarcodeWriter, IBarcodeWriter - { - /// - /// Initializes a new instance of the class. - /// - public BarcodeWriter() - { - Renderer = new BitmapRenderer(); - } - } +{ + /// + /// A smart class to encode some content to a barcode image + /// + public class BarcodeWriter : BarcodeWriter, IBarcodeWriter + { + /// + /// Initializes a new instance of the class. + /// + public BarcodeWriter() + => Renderer = new BitmapRenderer(); + } } diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs new file mode 100644 index 000000000..6d4f5c2be --- /dev/null +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraAnalyzer.android.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Android.Views; +using ApxLabs.FastAndroidCamera; + +namespace ZXing.Mobile.CameraAccess +{ + public class CameraAnalyzer + { + readonly CameraController cameraController; + readonly CameraEventsListener cameraEventListener; + Task processingTask; + DateTime lastPreviewAnalysis = DateTime.UtcNow; + bool wasScanned; + IScannerSessionHost scannerHost; + + public CameraAnalyzer(SurfaceView surfaceView, IScannerSessionHost scannerHost) + { + this.scannerHost = scannerHost; + cameraEventListener = new CameraEventsListener(); + cameraController = new CameraController(surfaceView, cameraEventListener, scannerHost); + Torch = new Torch(cameraController, surfaceView.Context); + } + + public Action BarcodeFound; + + public Torch Torch { get; } + + public bool IsAnalyzing { get; private set; } + + public void PauseAnalysis() + => IsAnalyzing = false; + + public void ResumeAnalysis() + => IsAnalyzing = true; + + public void ShutdownCamera() + { + IsAnalyzing = false; + cameraEventListener.OnPreviewFrameReady -= HandleOnPreviewFrameReady; + cameraController.ShutdownCamera(); + } + + public void SetupCamera() + { + cameraEventListener.OnPreviewFrameReady += HandleOnPreviewFrameReady; + cameraController.SetupCamera(); + } + + public void AutoFocus() + => cameraController.AutoFocus(); + + public void AutoFocus(int x, int y) + => cameraController.AutoFocus(x, y); + + public void RefreshCamera() + => cameraController.RefreshCamera(); + + bool CanAnalyzeFrame + { + get + { + if (!IsAnalyzing) + return false; + + //Check and see if we're still processing a previous frame + // todo: check if we can run as many as possible or mby run two analyzers at once (Vision + ZXing) + if (processingTask != null && !processingTask.IsCompleted) + return false; + + var elapsedTimeMs = (DateTime.UtcNow - lastPreviewAnalysis).TotalMilliseconds; + if (elapsedTimeMs < scannerHost.ScanningOptions.DelayBetweenAnalyzingFrames) + return false; + + // Delay a minimum between scans + if (wasScanned && elapsedTimeMs < scannerHost.ScanningOptions.DelayBetweenContinuousScans) + return false; + + return true; + } + } + + void HandleOnPreviewFrameReady(object sender, FastJavaByteArray fastArray) + { + if (!CanAnalyzeFrame) + return; + + wasScanned = false; + lastPreviewAnalysis = DateTime.UtcNow; + + processingTask = Task.Run(() => + { + try + { + DecodeFrame(fastArray); + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + }).ContinueWith(task => + { + if (task.IsFaulted) + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "DecodeFrame exception occurs"); + }, TaskContinuationOptions.OnlyOnFaulted); + } + + void DecodeFrame(FastJavaByteArray fastArray) + { + var cameraParameters = cameraController.Camera.GetParameters(); + var width = cameraParameters.PreviewSize.Width; + var height = cameraParameters.PreviewSize.Height; + + var barcodeReader = scannerHost.ScanningOptions.BuildBarcodeReader(); + + var rotate = false; + var newWidth = width; + var newHeight = height; + + // use last value for performance gain + var cDegrees = cameraController.LastCameraDisplayOrientationDegree; + + if (cDegrees == 90 || cDegrees == 270) + { + rotate = true; + newWidth = height; + newHeight = width; + } + + ZXing.Result result = null; + var start = PerformanceCounter.Start(); + + LuminanceSource fast = new FastJavaByteArrayYUVLuminanceSource(fastArray, width, height, 0, 0, width, height); // _area.Left, _area.Top, _area.Width, _area.Height); + if (rotate) + fast = fast.rotateCounterClockwise(); + + result = barcodeReader.Decode(fast); + + fastArray.Dispose(); + fastArray = null; + + PerformanceCounter.Stop(start, + "Decode Time: {0} ms (width: " + width + ", height: " + height + ", degrees: " + cDegrees + ", rotate: " + + rotate + ")"); + + if (result != null) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Barcode Found"); + + wasScanned = true; + BarcodeFound?.Invoke(result); + return; + } + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs new file mode 100644 index 000000000..484be6074 --- /dev/null +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraController.android.cs @@ -0,0 +1,432 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Android.Content; +using Android.Graphics; +using Android.Hardware; +using Android.OS; +using Android.Runtime; +using Android.Views; +using ApxLabs.FastAndroidCamera; +using Camera = Android.Hardware.Camera; + +namespace ZXing.Mobile.CameraAccess +{ + public class CameraController + { + readonly Context context; + readonly ISurfaceHolder holder; + readonly SurfaceView surfaceView; + readonly CameraEventsListener cameraEventListener; + int cameraId; + IScannerSessionHost scannerHost; + + public CameraController(SurfaceView surfaceView, CameraEventsListener cameraEventListener, IScannerSessionHost scannerHost) + { + context = surfaceView.Context; + holder = surfaceView.Holder; + this.surfaceView = surfaceView; + this.cameraEventListener = cameraEventListener; + this.scannerHost = scannerHost; + } + + public Camera Camera { get; private set; } + + public int LastCameraDisplayOrientationDegree { get; private set; } + + public void RefreshCamera() + { + if (holder == null) return; + + ApplyCameraSettings(); + + try + { + Camera.SetPreviewDisplay(holder); + Camera.StartPreview(); + } + catch (Exception ex) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, ex.ToString()); + } + } + + public void SetupCamera() + { + if (Camera != null) + return; + + var perf = PerformanceCounter.Start(); + OpenCamera(); + PerformanceCounter.Stop(perf, "Setup Camera took {0}ms"); + + if (Camera == null) return; + + perf = PerformanceCounter.Start(); + ApplyCameraSettings(); + + try + { + Camera.SetPreviewDisplay(holder); + + + var previewParameters = Camera.GetParameters(); + var previewSize = previewParameters.PreviewSize; + var bitsPerPixel = ImageFormat.GetBitsPerPixel(previewParameters.PreviewFormat); + + + var bufferSize = (previewSize.Width * previewSize.Height * bitsPerPixel) / 8; + const int NUM_PREVIEW_BUFFERS = 5; + for (uint i = 0; i < NUM_PREVIEW_BUFFERS; ++i) + { + using (var buffer = new FastJavaByteArray(bufferSize)) + Camera.AddCallbackBuffer(buffer); + } + + Camera.StartPreview(); + + Camera.SetNonMarshalingPreviewCallback(cameraEventListener); + } + catch (Exception ex) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, ex.ToString()); + return; + } + finally + { + PerformanceCounter.Stop(perf, "Setup Camera Parameters took {0}ms"); + } + + // Docs suggest if Auto or Macro modes, we should invoke AutoFocus at least once + var currentFocusMode = Camera.GetParameters().FocusMode; + if (currentFocusMode == Camera.Parameters.FocusModeAuto + || currentFocusMode == Camera.Parameters.FocusModeMacro) + AutoFocus(); + } + + public void AutoFocus() + { + AutoFocus(0, 0, false); + } + + public void AutoFocus(int x, int y) + { + // The bounds for focus areas are actually -1000 to 1000 + // So we need to translate the touch coordinates to this scale + var focusX = x / surfaceView.Width * 2000 - 1000; + var focusY = y / surfaceView.Height * 2000 - 1000; + + // Call the autofocus with our coords + AutoFocus(focusX, focusY, true); + } + + public void ShutdownCamera() + { + if (Camera == null) return; + + // camera release logic takes about 0.005 sec so there is no need in async releasing + var perf = PerformanceCounter.Start(); + try + { + try + { + Camera.StopPreview(); + Camera.SetNonMarshalingPreviewCallback(null); + + //Camera.SetPreviewCallback(null); + + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, $"Calling SetPreviewDisplay: null"); + Camera.SetPreviewDisplay(null); + } + catch (Exception ex) + { + Android.Util.Log.Error(MobileBarcodeScanner.TAG, ex.ToString()); + } + Camera.Release(); + Camera = null; + } + catch (Exception e) + { + Android.Util.Log.Error(MobileBarcodeScanner.TAG, e.ToString()); + } + + PerformanceCounter.Stop(perf, "Shutdown camera took {0}ms"); + } + + void OpenCamera() + { + try + { + var version = Build.VERSION.SdkInt; + + if (version >= BuildVersionCodes.Gingerbread) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Checking Number of cameras..."); + + var numCameras = Camera.NumberOfCameras; + var camInfo = new Camera.CameraInfo(); + var found = false; + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Found " + numCameras + " cameras..."); + + var whichCamera = CameraFacing.Back; + + if (scannerHost.ScanningOptions.UseFrontCameraIfAvailable.HasValue && + scannerHost.ScanningOptions.UseFrontCameraIfAvailable.Value) + whichCamera = CameraFacing.Front; + + for (var i = 0; i < numCameras; i++) + { + Camera.GetCameraInfo(i, camInfo); + if (camInfo.Facing == whichCamera) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, + "Found " + whichCamera + " Camera, opening..."); + Camera = Camera.Open(i); + cameraId = i; + found = true; + break; + } + } + + if (!found) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, + "Finding " + whichCamera + " camera failed, opening camera 0..."); + Camera = Camera.Open(0); + cameraId = 0; + } + } + else + { + Camera = Camera.Open(); + } + + //if (Camera != null) + // Camera.SetPreviewCallback(_cameraEventListener); + //else + // MobileBarcodeScanner.LogWarn(MobileBarcodeScanner.TAG, "Camera is null :("); + } + catch (Exception ex) + { + ShutdownCamera(); + MobileBarcodeScanner.LogError("Setup Error: {0}", ex); + } + } + + void ApplyCameraSettings() + { + if (Camera == null) + { + OpenCamera(); + } + + // do nothing if something wrong with camera + if (Camera == null) return; + + var parameters = Camera.GetParameters(); + parameters.PreviewFormat = ImageFormatType.Nv21; + + var supportedFocusModes = parameters.SupportedFocusModes; + if (scannerHost.ScanningOptions.DisableAutofocus) + parameters.FocusMode = Camera.Parameters.FocusModeFixed; + else if (Build.VERSION.SdkInt >= BuildVersionCodes.IceCreamSandwich && + supportedFocusModes.Contains(Camera.Parameters.FocusModeContinuousPicture)) + parameters.FocusMode = Camera.Parameters.FocusModeContinuousPicture; + else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeContinuousVideo)) + parameters.FocusMode = Camera.Parameters.FocusModeContinuousVideo; + else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeAuto)) + parameters.FocusMode = Camera.Parameters.FocusModeAuto; + else if (supportedFocusModes.Contains(Camera.Parameters.FocusModeFixed)) + parameters.FocusMode = Camera.Parameters.FocusModeFixed; + + var selectedFps = parameters.SupportedPreviewFpsRange.FirstOrDefault(); + if (selectedFps != null) + { + // This will make sure we select a range with the lowest minimum FPS + // and maximum FPS which still has the lowest minimum + // This should help maximize performance / support for hardware + foreach (var fpsRange in parameters.SupportedPreviewFpsRange) + { + if (fpsRange[0] <= selectedFps[0] && fpsRange[1] > selectedFps[1]) + selectedFps = fpsRange; + } + parameters.SetPreviewFpsRange(selectedFps[0], selectedFps[1]); + } + + CameraResolution resolution = null; + var supportedPreviewSizes = parameters.SupportedPreviewSizes; + if (supportedPreviewSizes != null) + { + var availableResolutions = supportedPreviewSizes.Select(sps => new CameraResolution + { + Width = sps.Width, + Height = sps.Height + }); + + // Try and get a desired resolution from the options selector + resolution = scannerHost.ScanningOptions.GetResolution(availableResolutions.ToList()); + + // If the user did not specify a resolution, let's try and find a suitable one + if (resolution == null) + { + foreach (var sps in supportedPreviewSizes) + { + if (sps.Width >= 640 && sps.Width <= 1000 && sps.Height >= 360 && sps.Height <= 1000) + { + resolution = new CameraResolution + { + Width = sps.Width, + Height = sps.Height + }; + break; + } + } + } + } + + // Google Glass requires this fix to display the camera output correctly + if (Build.Model.Contains("Glass")) + { + resolution = new CameraResolution + { + Width = 640, + Height = 360 + }; + // Glass requires 30fps + parameters.SetPreviewFpsRange(30000, 30000); + } + + // Hopefully a resolution was selected at some point + if (resolution != null) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, + "Selected Resolution: " + resolution.Width + "x" + resolution.Height); + parameters.SetPreviewSize(resolution.Width, resolution.Height); + } + + Camera.SetParameters(parameters); + + SetCameraDisplayOrientation(); + } + + void AutoFocus(int x, int y, bool useCoordinates) + { + if (Camera == null) return; + + if (scannerHost.ScanningOptions.DisableAutofocus) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus Disabled"); + return; + } + + var cameraParams = Camera.GetParameters(); + + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus Requested"); + + // Cancel any previous requests + Camera.CancelAutoFocus(); + + try + { + // If we want to use coordinates + // Also only if our camera supports Auto focus mode + // Since FocusAreas only really work with FocusModeAuto set + if (useCoordinates + && cameraParams.SupportedFocusModes.Contains(Camera.Parameters.FocusModeAuto)) + { + // Let's give the touched area a 20 x 20 minimum size rect to focus on + // So we'll offset -10 from the center of the touch and then + // make a rect of 20 to give an area to focus on based on the center of the touch + x = x - 10; + y = y - 10; + + // Ensure we don't go over the -1000 to 1000 limit of focus area + if (x >= 1000) + x = 980; + if (x < -1000) + x = -1000; + if (y >= 1000) + y = 980; + if (y < -1000) + y = -1000; + + // Explicitly set FocusModeAuto since Focus areas only work with this setting + cameraParams.FocusMode = Camera.Parameters.FocusModeAuto; + // Add our focus area + cameraParams.FocusAreas = new List + { + new Camera.Area(new Rect(x, y, x + 20, y + 20), 1000) + }; + Camera.SetParameters(cameraParams); + } + + // Finally autofocus (weather we used focus areas or not) + Camera.AutoFocus(cameraEventListener); + } + catch (Exception ex) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus Failed: {0}", ex); + } + } + + void SetCameraDisplayOrientation() + { + var degrees = GetCameraDisplayOrientation(); + LastCameraDisplayOrientationDegree = degrees; + + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Changing Camera Orientation to: " + degrees); + + try + { + Camera.SetDisplayOrientation(degrees); + } + catch (Exception ex) + { + Android.Util.Log.Error(MobileBarcodeScanner.TAG, ex.ToString()); + } + } + + int GetCameraDisplayOrientation() + { + int degrees; + var windowManager = context.GetSystemService(Context.WindowService).JavaCast(); + var display = windowManager.DefaultDisplay; + var rotation = display.Rotation; + + switch (rotation) + { + case SurfaceOrientation.Rotation0: + degrees = 0; + break; + case SurfaceOrientation.Rotation90: + degrees = 90; + break; + case SurfaceOrientation.Rotation180: + degrees = 180; + break; + case SurfaceOrientation.Rotation270: + degrees = 270; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + var info = new Camera.CameraInfo(); + Camera.GetCameraInfo(cameraId, info); + + int correctedDegrees; + if (info.Facing == CameraFacing.Front) + { + correctedDegrees = (info.Orientation + degrees) % 360; + correctedDegrees = (360 - correctedDegrees) % 360; // compensate the mirror + } + else + { + // back-facing + correctedDegrees = (info.Orientation - degrees + 360) % 360; + } + + return correctedDegrees; + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs new file mode 100644 index 000000000..78f9cd57c --- /dev/null +++ b/ZXing.Net.Mobile/Android/CameraAccess/CameraEventsListener.android.cs @@ -0,0 +1,26 @@ +using System; +using Android.Hardware; +using ApxLabs.FastAndroidCamera; + +namespace ZXing.Mobile.CameraAccess +{ + public class CameraEventsListener : Java.Lang.Object, INonMarshalingPreviewCallback, Camera.IAutoFocusCallback + { + public event EventHandler OnPreviewFrameReady; + + public void OnPreviewFrame(IntPtr data, Camera camera) + { + using (var fastArray = new FastJavaByteArray(data)) + { + OnPreviewFrameReady?.Invoke(this, fastArray); + + camera.AddCallbackBuffer(fastArray); + } + } + + public void OnAutoFocus(bool success, Camera camera) + { + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "AutoFocus {0}", success ? "Succeeded" : "Failed"); + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/Android/CameraAccess/Torch.android.cs b/ZXing.Net.Mobile/Android/CameraAccess/Torch.android.cs new file mode 100644 index 000000000..faacb42f5 --- /dev/null +++ b/ZXing.Net.Mobile/Android/CameraAccess/Torch.android.cs @@ -0,0 +1,94 @@ +using Android.Content; +using Android.Content.PM; +using Android.Hardware; + +namespace ZXing.Mobile.CameraAccess +{ + public class Torch + { + readonly CameraController cameraController; + readonly Context context; + bool? hasTorch; + + public Torch(CameraController cameraController, Context context) + { + this.cameraController = cameraController; + this.context = context; + } + + public bool IsSupported + { + get + { + if (hasTorch.HasValue) + return hasTorch.Value; + + if (!context.PackageManager.HasSystemFeature(PackageManager.FeatureCameraFlash)) + { + Android.Util.Log.Info(MobileBarcodeScanner.TAG, "Flash not supported on this device"); + return false; + } + + if (cameraController.Camera == null) + { + Android.Util.Log.Info(MobileBarcodeScanner.TAG, "Run camera first"); + return false; + } + + var p = cameraController.Camera.GetParameters(); + var supportedFlashModes = p.SupportedFlashModes; + + if ((supportedFlashModes != null) + && (supportedFlashModes.Contains(Camera.Parameters.FlashModeTorch) + || supportedFlashModes.Contains(Camera.Parameters.FlashModeOn))) + hasTorch = ZXing.Net.Mobile.Android.PermissionsHandler.IsTorchPermissionDeclared(); + + return hasTorch != null && hasTorch.Value; + } + } + + public bool IsEnabled { get; private set; } + + public void TurnOn() => Enable(true); + + public void TurnOff() => Enable(false); + + public void Toggle() => Enable(!IsEnabled); + + private void Enable(bool state) + { + if (!IsSupported || IsEnabled == state) + return; + + if (cameraController.Camera == null) + { + Android.Util.Log.Info(MobileBarcodeScanner.TAG, "NULL Camera, cannot toggle torch"); + return; + } + + var parameters = cameraController.Camera.GetParameters(); + var supportedFlashModes = parameters.SupportedFlashModes; + + var flashMode = string.Empty; + if (state) + { + if (supportedFlashModes.Contains(Camera.Parameters.FlashModeTorch)) + flashMode = Camera.Parameters.FlashModeTorch; + else if (supportedFlashModes.Contains(Camera.Parameters.FlashModeOn)) + flashMode = Camera.Parameters.FlashModeOn; + } + else + { + if (supportedFlashModes != null && supportedFlashModes.Contains(Camera.Parameters.FlashModeOff)) + flashMode = Camera.Parameters.FlashModeOff; + } + + if (!string.IsNullOrEmpty(flashMode)) + { + parameters.FlashMode = flashMode; + cameraController.Camera.SetParameters(parameters); + IsEnabled = state; + } + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/Android/FastJavaArrayEx.android.cs b/ZXing.Net.Mobile/Android/FastJavaArrayEx.android.cs new file mode 100644 index 000000000..14584e001 --- /dev/null +++ b/ZXing.Net.Mobile/Android/FastJavaArrayEx.android.cs @@ -0,0 +1,17 @@ +using System; +using System.Runtime.InteropServices; +using ApxLabs.FastAndroidCamera; + +namespace ZXing.Mobile +{ + public static class FastJavaArrayEx + { + public static void BlockCopyTo(this FastJavaByteArray self, int sourceIndex, byte[] array, int arrayIndex, int length) + { + unsafe + { + Marshal.Copy(new IntPtr(self.Raw + sourceIndex), array, arrayIndex, Math.Min(length, Math.Min(self.Count, array.Length - arrayIndex))); + } + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/Android/FastJavaByteArrayYUVLuminanceSource.android.cs b/ZXing.Net.Mobile/Android/FastJavaByteArrayYUVLuminanceSource.android.cs new file mode 100644 index 000000000..1137377ac --- /dev/null +++ b/ZXing.Net.Mobile/Android/FastJavaByteArrayYUVLuminanceSource.android.cs @@ -0,0 +1,173 @@ +/* + * Copyright 2009 ZXing authors + * Modifications copyright 2016 kasper@byolimit.com + * + * 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. + */ + +using ApxLabs.FastAndroidCamera; + +using System; + +namespace ZXing.Mobile +{ + /// + /// This object extends LuminanceSource around an array of YUV data returned from the camera driver, + /// with the option to crop to a rectangle within the full data. This can be used to exclude + /// superfluous pixels around the perimeter and speed up decoding. + /// It works for any pixel format where the Y channel is planar and appears first, including + /// YCbCr_420_SP and YCbCr_422_SP. + /// + /// + /// Builds upon PlanarYUVLuminanceSource from ZXing.NET, which is a .Net port of ZXing. The original code + /// was authored by + /// @author dswitkin@google.com (Daniel Switkin) + /// + public sealed class FastJavaByteArrayYUVLuminanceSource : BaseLuminanceSource + { + private readonly FastJavaByteArray _yuv; + private readonly int _dataWidth; + private readonly int _dataHeight; + private readonly int _left; + private readonly int _top; + + /// + /// Initializes a new instance of the class. + /// + /// The yuv data. + /// Width of the data. + /// Height of the data. + /// The left. + /// The top. + /// The width. + /// The height. + /// if set to true [reverse horiz]. + public FastJavaByteArrayYUVLuminanceSource(FastJavaByteArray yuv, + int dataWidth, + int dataHeight, + int left, + int top, + int width, + int height) + : base(width, height) + { + if (left < 0) + throw new ArgumentException("Negative value", nameof(left)); + + if (top < 0) + throw new ArgumentException("Negative value", nameof(top)); + + if (width < 0) + throw new ArgumentException("Negative value", nameof(width)); + + if (height < 0) + throw new ArgumentException("Negative value", nameof(height)); + + if (left + width > dataWidth || top + height > dataHeight) + { + throw new ArgumentException("Crop rectangle does not fit within image data."); + } + + _yuv = yuv; + _dataWidth = dataWidth; + _dataHeight = dataHeight; + _left = left; + _top = top; + } + + /// + /// Fetches one row of luminance data from the underlying platform's bitmap. Values range from + /// 0 (black) to 255 (white). Because Java does not have an unsigned byte type, callers will have + /// to bitwise and with 0xff for each value. It is preferable for implementations of this method + /// to only fetch this row rather than the whole image, since no 2D Readers may be installed and + /// getMatrix() may never be called. + /// + /// The row to fetch, 0 <= y < Height. + /// An optional preallocated array. If null or too small, it will be ignored. + /// Always use the returned object, and ignore the .length of the array. + /// + /// An array containing the luminance data of the requested row. + /// + override public byte[] getRow(int y, byte[] row) + { + if (y < 0 || y >= Height) + throw new ArgumentException("Requested row is outside the image: " + y, nameof(y)); + + var width = Width; + if (row == null || row.Length < width) + row = new byte[width]; // ensure we have room for the row + + var offset = (y + _top) * _dataWidth + _left; + _yuv.BlockCopyTo(offset, row, 0, width); + return row; + } + + override public byte[] Matrix + { + get + { + var width = Width; + var height = Height; + + var area = width * height; + var matrix = new byte[area]; + var inputOffset = _top * _dataWidth + _left; + + // If the width matches the full width of the underlying data, perform a single copy. + if (width == _dataWidth) + { + _yuv.BlockCopyTo(inputOffset, matrix, 0, area); + return matrix; + } + + // Otherwise copy one cropped row at a time. + for (var y = 0; y < height; y++) + { + var outputOffset = y * width; + _yuv.BlockCopyTo(inputOffset, matrix, outputOffset, width); + inputOffset += _dataWidth; + } + return matrix; + } + } + + /// Whether this subclass supports cropping. + override public bool CropSupported + => true; + + /// + /// Returns a new object with cropped image data. Implementations may keep a reference to the + /// original data rather than a copy. Only callable if CropSupported is true. + /// + /// The left coordinate, 0 <= left < Width. + /// The top coordinate, 0 <= top <= Height. + /// The width of the rectangle to crop. + /// The height of the rectangle to crop. + /// + /// A cropped version of this object. + /// + override public LuminanceSource crop(int left, int top, int width, int height) + => new FastJavaByteArrayYUVLuminanceSource(_yuv, + _dataWidth, + _dataHeight, + _left + left, + _top + top, + width, + height); + + // Called when rotating. + // todo: This partially defeats the purpose as we traffic in byte[] luminances + protected override LuminanceSource CreateLuminanceSource(byte[] newLuminances, int width, int height) + => new PlanarYUVLuminanceSource(newLuminances, width, height, 0, 0, width, height, false); + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/Android/MobileBarcodeScanner.android.cs b/ZXing.Net.Mobile/Android/MobileBarcodeScanner.android.cs new file mode 100644 index 000000000..28a7f6af7 --- /dev/null +++ b/ZXing.Net.Mobile/Android/MobileBarcodeScanner.android.cs @@ -0,0 +1,132 @@ +using System; +using System.Threading.Tasks; +using Android.Content; +using ZXing; +using Android.OS; + +namespace ZXing.Mobile +{ + + public partial class MobileBarcodeScanner : MobileBarcodeScannerBase + { + public const string TAG = "ZXing.Net.Mobile"; + + [Obsolete("Use Xamarin.Essentials.Platform.Init instead")] + public static void Initialize(Android.App.Application app) + => Xamarin.Essentials.Platform.Init(app); + + [Obsolete("No longer necessary.")] + public static void Uninitialize(Android.App.Application app) + { + } + + public Android.Views.View CustomOverlay { get; set; } + + bool torch = false; + + Context GetContext(Context context) + => Xamarin.Essentials.Platform.CurrentActivity ?? Xamarin.Essentials.Platform.AppContext; + + internal void PlatformScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + => ScanContinuously(null, options, scanHandler); + + public void ScanContinuously(Context context, MobileBarcodeScanningOptions options, Action scanHandler) + { + var ctx = GetContext(context); + var scanIntent = new Intent(ctx, typeof(ZxingActivity)); + + scanIntent.AddFlags(ActivityFlags.NewTask); + + ZxingActivity.UseCustomOverlayView = this.UseCustomOverlay; + ZxingActivity.CustomOverlayView = this.CustomOverlay; + ZxingActivity.ScanningOptions = options; + ZxingActivity.ScanContinuously = true; + ZxingActivity.TopText = TopText; + ZxingActivity.BottomText = BottomText; + + ZxingActivity.ScanCompletedHandler = (Result result) + => scanHandler?.Invoke(result); + + ctx.StartActivity(scanIntent); + } + + internal Task PlatformScan(MobileBarcodeScanningOptions options) + => Scan(null, options); + + public Task Scan(Context context, MobileBarcodeScanningOptions options) + { + var ctx = GetContext(context); + + var task = Task.Factory.StartNew(() => + { + + var waitScanResetEvent = new System.Threading.ManualResetEvent(false); + + var scanIntent = new Intent(ctx, typeof(ZxingActivity)); + + scanIntent.AddFlags(ActivityFlags.NewTask); + + ZxingActivity.UseCustomOverlayView = this.UseCustomOverlay; + ZxingActivity.CustomOverlayView = this.CustomOverlay; + ZxingActivity.ScanningOptions = options; + ZxingActivity.ScanContinuously = false; + ZxingActivity.TopText = TopText; + ZxingActivity.BottomText = BottomText; + + Result scanResult = null; + + ZxingActivity.CanceledHandler = () => waitScanResetEvent.Set(); + + ZxingActivity.ScanCompletedHandler = (Result result) => + { + scanResult = result; + waitScanResetEvent.Set(); + }; + + ctx.StartActivity(scanIntent); + + waitScanResetEvent.WaitOne(); + + return scanResult; + }); + + return task; + } + + internal void PlatformCancel() + => ZxingActivity.RequestCancel(); + + internal void PlatformAutoFocus() + => ZxingActivity.RequestAutoFocus(); + + internal void PlatformTorch(bool on) + { + torch = on; + ZxingActivity.RequestTorch(on); + } + + internal void PlatformToggleTorch() + => Torch(!torch); + + internal void PlatformPauseAnalysis() + => ZxingActivity.RequestPauseAnalysis(); + + internal void PlatformResumeAnalysis() + => ZxingActivity.RequestResumeAnalysis(); + + internal bool PlatformIsTorchOn + => torch; + + internal static void LogDebug(string format, params object[] args) + => Android.Util.Log.Debug("ZXING", format, args); + + internal static void LogError(string format, params object[] args) + => Android.Util.Log.Error("ZXING", format, args); + + internal static void LogInfo(string format, params object[] args) + => Android.Util.Log.Info("ZXING", format, args); + + internal static void LogWarn(string format, params object[] args) + => Android.Util.Log.Warn("ZXING", format, args); + } +} diff --git a/ZXing.Net.Mobile/Android/Permissions.android.cs b/ZXing.Net.Mobile/Android/Permissions.android.cs new file mode 100644 index 000000000..be1219a45 --- /dev/null +++ b/ZXing.Net.Mobile/Android/Permissions.android.cs @@ -0,0 +1,3 @@ +using Android.App; + +[assembly: UsesPermission(Android.Manifest.Permission.Camera)] diff --git a/ZXing.Net.Mobile/Android/PermissionsHandler.android.cs b/ZXing.Net.Mobile/Android/PermissionsHandler.android.cs new file mode 100644 index 000000000..f3e01c2d5 --- /dev/null +++ b/ZXing.Net.Mobile/Android/PermissionsHandler.android.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using ZXing.Mobile; +using System.Linq; +using Android.App; +using System.Threading.Tasks; +using Android.Content.PM; +using Android.Content; +using Xamarin.Essentials; + +namespace ZXing.Net.Mobile.Android +{ + public static class PermissionsHandler + { + [Obsolete("Use Xamarin.Essentials.Platform.OnRequestPermissionsResult instead.")] + public static void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) + => Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); + + public static async Task RequestPermissionsAsync() + { + var camera = await Permissions.RequestAsync(); + + if (camera != PermissionStatus.Granted) + return false; + + // Only check if it's in the manifest already + if (Permissions.IsDeclaredInManifest(global::Android.Manifest.Permission.Flashlight)) + { + var flashlight = await Permissions.RequestAsync(); + if (flashlight != PermissionStatus.Granted) + return false; + } + + return true; + } + + internal static bool IsTorchPermissionDeclared() + => Permissions.IsDeclaredInManifest(global::Android.Manifest.Permission.Flashlight); + + [Obsolete("Use Xamarin.Essentials.Permissions instead.")] + public static bool NeedsPermissionRequest(Activity activity = null) + => true; + } +} diff --git a/ZXing.Net.Mobile/Android/ZXingScannerFragment.android.cs b/ZXing.Net.Mobile/Android/ZXingScannerFragment.android.cs new file mode 100644 index 000000000..5d5895d5c --- /dev/null +++ b/ZXing.Net.Mobile/Android/ZXingScannerFragment.android.cs @@ -0,0 +1,154 @@ +using System; +using Android.OS; +using Android.Views; +using Android.Widget; +#if __ANDROID_29__ +using AndroidX.Fragment.App; +#else +using Android.Support.V4.App; +#endif + +namespace ZXing.Mobile +{ + public class ZXingScannerFragment : Fragment, IZXingScanner, IScannerView + { + public ZXingScannerFragment() + { + UseCustomOverlayView = false; + } + + FrameLayout frame; + + public override View OnCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) + { + frame = (FrameLayout)layoutInflater.Inflate(ZXing.Net.Mobile.Resource.Layout.zxingscannerfragmentlayout, viewGroup, false); + + var layoutParams = GetChildLayoutParams(); + + try + { + scanner = new ZXingSurfaceView(Activity, ScanningOptions); + + frame.AddView(scanner, layoutParams); + + + if (!UseCustomOverlayView) + { + zxingOverlay = new ZxingOverlayView(Activity); + zxingOverlay.TopText = TopText ?? ""; + zxingOverlay.BottomText = BottomText ?? ""; + + frame.AddView(zxingOverlay, layoutParams); + } + else if (CustomOverlayView != null) + { + frame.AddView(CustomOverlayView, layoutParams); + } + } + catch (Exception ex) + { + Console.WriteLine("Create Surface View Failed: " + ex); + } + + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "ZXingScannerFragment->OnResume exit"); + + return frame; + } + + public override void OnStart() + { + base.OnStart(); + // won't be 0 if OnCreateView has been called before. + if (frame.ChildCount == 0) + { + var layoutParams = GetChildLayoutParams(); + // reattach scanner and overlay views. + frame.AddView(scanner, layoutParams); + + if (!UseCustomOverlayView) + frame.AddView(zxingOverlay, layoutParams); + else if (CustomOverlayView != null) + frame.AddView(CustomOverlayView, layoutParams); + } + } + + public override void OnStop() + { + if (scanner != null) + { + scanner.StopScanning(); + + frame.RemoveView(scanner); + } + + if (!UseCustomOverlayView) + frame.RemoveView(zxingOverlay); + else if (CustomOverlayView != null) + frame.RemoveView(CustomOverlayView); + + base.OnStop(); + } + + LinearLayout.LayoutParams GetChildLayoutParams() + { + var layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); + layoutParams.Weight = 1; + return layoutParams; + } + + public View CustomOverlayView { get; set; } + public bool UseCustomOverlayView { get; set; } + public MobileBarcodeScanningOptions ScanningOptions { get; set; } + public string TopText { get; set; } + public string BottomText { get; set; } + + ZXingSurfaceView scanner; + ZxingOverlayView zxingOverlay; + + public void Torch(bool on) + => scanner?.Torch(on); + + public void AutoFocus() + => scanner?.AutoFocus(); + + public void AutoFocus(int x, int y) + => scanner?.AutoFocus(x, y); + + Action scanCallback; + + public void StartScanning(Action scanResultHandler, MobileBarcodeScanningOptions options = null) + { + ScanningOptions = options; + scanCallback = scanResultHandler; + + if (scanner == null) + return; + + Scan(); + } + + void Scan() + => scanner?.StartScanning(scanCallback, ScanningOptions); + + public void StopScanning() + => scanner?.StopScanning(); + + public void PauseAnalysis() + => scanner?.PauseAnalysis(); + + public void ResumeAnalysis() + => scanner?.ResumeAnalysis(); + + public void ToggleTorch() + => scanner?.ToggleTorch(); + + public bool IsTorchOn + => scanner?.IsTorchOn ?? false; + + public bool IsAnalyzing + => scanner?.IsAnalyzing ?? false; + + public bool HasTorch + => scanner?.HasTorch ?? false; + } +} diff --git a/ZXing.Net.Mobile/Android/ZXingSurfaceView.android.cs b/ZXing.Net.Mobile/Android/ZXingSurfaceView.android.cs new file mode 100644 index 000000000..0fe0c87f1 --- /dev/null +++ b/ZXing.Net.Mobile/Android/ZXingSurfaceView.android.cs @@ -0,0 +1,160 @@ +using System; +using Android.Content; +using Android.Runtime; +using Android.Views; +using Android.Graphics; +using ZXing.Mobile.CameraAccess; +using ZXing.Net.Mobile.Android; + +namespace ZXing.Mobile +{ + public class ZXingSurfaceView : SurfaceView, ISurfaceHolderCallback, IScannerView, IScannerSessionHost + { + public ZXingSurfaceView(Context context, MobileBarcodeScanningOptions options) + : base(context) + { + ScanningOptions = options ?? new MobileBarcodeScanningOptions(); + Init(); + } + + protected ZXingSurfaceView(IntPtr javaReference, JniHandleOwnership transfer) + : base(javaReference, transfer) => Init(); + + bool addedHolderCallback = false; + + void Init() + { + if (cameraAnalyzer == null) + cameraAnalyzer = new CameraAnalyzer(this, this); + + cameraAnalyzer.ResumeAnalysis(); + + if (!addedHolderCallback) + { + Holder.AddCallback(this); + Holder.SetType(SurfaceType.PushBuffers); + addedHolderCallback = true; + } + } + + public async void SurfaceCreated(ISurfaceHolder holder) + { + await PermissionsHandler.RequestPermissionsAsync(); + + cameraAnalyzer.SetupCamera(); + + surfaceCreated = true; + } + + public async void SurfaceChanged(ISurfaceHolder holder, Format format, int wx, int hx) + => cameraAnalyzer.RefreshCamera(); + + public async void SurfaceDestroyed(ISurfaceHolder holder) + { + try + { + if (addedHolderCallback) + { + Holder.RemoveCallback(this); + addedHolderCallback = false; + } + } + catch { } + + cameraAnalyzer.ShutdownCamera(); + } + + public override bool OnTouchEvent(MotionEvent e) + { + var r = base.OnTouchEvent(e); + + switch (e.Action) + { + case MotionEventActions.Down: + return true; + case MotionEventActions.Up: + var touchX = e.GetX(); + var touchY = e.GetY(); + AutoFocus((int)touchX, (int)touchY); + break; + } + + return r; + } + + public void AutoFocus() + => cameraAnalyzer.AutoFocus(); + + public void AutoFocus(int x, int y) + => cameraAnalyzer.AutoFocus(x, y); + + public void StartScanning(Action scanResultCallback, MobileBarcodeScanningOptions options = null) + { + cameraAnalyzer.SetupCamera(); + + ScanningOptions = options ?? MobileBarcodeScanningOptions.Default; + + cameraAnalyzer.BarcodeFound = (result) => + scanResultCallback?.Invoke(result); + cameraAnalyzer.ResumeAnalysis(); + } + + public void StopScanning() + => cameraAnalyzer.ShutdownCamera(); + + public void PauseAnalysis() + => cameraAnalyzer.PauseAnalysis(); + + public void ResumeAnalysis() + => cameraAnalyzer.ResumeAnalysis(); + + public void Torch(bool on) + { + if (on) + cameraAnalyzer.Torch.TurnOn(); + else + cameraAnalyzer.Torch.TurnOff(); + } + + public void ToggleTorch() + => cameraAnalyzer.Torch.Toggle(); + + public MobileBarcodeScanningOptions ScanningOptions { get; set; } + + public bool IsTorchOn => cameraAnalyzer.Torch.IsEnabled; + + public bool IsAnalyzing => cameraAnalyzer.IsAnalyzing; + + CameraAnalyzer cameraAnalyzer; + bool surfaceCreated; + + public bool HasTorch => cameraAnalyzer.Torch.IsSupported; + + protected override void OnAttachedToWindow() + { + base.OnAttachedToWindow(); + + // Reinit things + Init(); + } + + protected override void OnWindowVisibilityChanged(ViewStates visibility) + { + base.OnWindowVisibilityChanged(visibility); + if (visibility == ViewStates.Visible) + Init(); + } + + public override async void OnWindowFocusChanged(bool hasWindowFocus) + { + base.OnWindowFocusChanged(hasWindowFocus); + + if (!hasWindowFocus) + return; + + //only refresh the camera if the surface has already been created. Fixed #569 + if (surfaceCreated) + cameraAnalyzer.RefreshCamera(); + } + } +} diff --git a/ZXing.Net.Mobile/Android/ZxingActivity.android.cs b/ZXing.Net.Mobile/Android/ZxingActivity.android.cs new file mode 100644 index 000000000..23b54bc75 --- /dev/null +++ b/ZXing.Net.Mobile/Android/ZxingActivity.android.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Drawing; + +using Android.App; +using Android.Content.PM; +using Android.Views; +using Android.OS; +using Android.Hardware; +using Android.Graphics; + +using Android.Content; +using Android.Runtime; +using Android.Widget; + +using ZXing; +#if __ANDROID_29__ +using AndroidX.Fragment.App; +#else +using Android.Support.V4.App; +#endif + +using System.Linq; +using System.Threading.Tasks; + +namespace ZXing.Mobile +{ + [Activity(Label = "Scanner", ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenLayout)] + public class ZxingActivity : FragmentActivity + { + public static readonly string[] RequiredPermissions = new[] { + Android.Manifest.Permission.Camera, + Android.Manifest.Permission.Flashlight + }; + + public static Action ScanCompletedHandler; + public static Action CanceledHandler; + + public static Action CancelRequestedHandler; + public static Action TorchRequestedHandler; + public static Action AutoFocusRequestedHandler; + public static Action PauseAnalysisHandler; + public static Action ResumeAnalysisHandler; + + public static void RequestCancel() + => CancelRequestedHandler?.Invoke(); + + public static void RequestTorch(bool torchOn) + => TorchRequestedHandler?.Invoke(torchOn); + + public static void RequestAutoFocus() + => AutoFocusRequestedHandler?.Invoke(); + + public static void RequestPauseAnalysis() + => PauseAnalysisHandler?.Invoke(); + + public static void RequestResumeAnalysis() + => ResumeAnalysisHandler?.Invoke(); + + public static View CustomOverlayView { get; set; } + + public static bool UseCustomOverlayView { get; set; } + + public static MobileBarcodeScanningOptions ScanningOptions { get; set; } + + public static string TopText { get; set; } + + public static string BottomText { get; set; } + + public static bool ScanContinuously { get; set; } + + ZXingScannerFragment scannerFragment; + + protected override void OnCreate(Bundle bundle) + { + base.OnCreate(bundle); + + RequestWindowFeature(WindowFeatures.NoTitle); + + Window.AddFlags(WindowManagerFlags.Fullscreen); //to show + Window.AddFlags(WindowManagerFlags.KeepScreenOn); //Don't go to sleep while scanning + + if (ScanningOptions.AutoRotate.HasValue && !ScanningOptions.AutoRotate.Value) + RequestedOrientation = ScreenOrientation.Nosensor; + + SetContentView(ZXing.Net.Mobile.Resource.Layout.zxingscanneractivitylayout); + + scannerFragment = new ZXingScannerFragment(); + scannerFragment.CustomOverlayView = CustomOverlayView; + scannerFragment.UseCustomOverlayView = UseCustomOverlayView; + scannerFragment.TopText = TopText; + scannerFragment.BottomText = BottomText; + + SupportFragmentManager.BeginTransaction() + .Replace(ZXing.Net.Mobile.Resource.Id.contentFrame, scannerFragment, "ZXINGFRAGMENT") + .Commit(); + + CancelRequestedHandler = CancelScan; + AutoFocusRequestedHandler = AutoFocus; + TorchRequestedHandler = SetTorch; + PauseAnalysisHandler = scannerFragment.PauseAnalysis; + ResumeAnalysisHandler = scannerFragment.ResumeAnalysis; + } + + protected override async void OnResume() + { + base.OnResume(); + + + StartScanning(); + } + + public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults) + => Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); + + void StartScanning() + { + scannerFragment.StartScanning(result => + { + ScanCompletedHandler?.Invoke(result); + + if (!ZxingActivity.ScanContinuously) + Finish(); + }, ScanningOptions); + } + + public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig) + { + base.OnConfigurationChanged(newConfig); + + Android.Util.Log.Debug(MobileBarcodeScanner.TAG, "Configuration Changed"); + } + + public void SetTorch(bool on) + => scannerFragment.Torch(on); + + public void AutoFocus() + => scannerFragment.AutoFocus(); + + public void CancelScan() + { + Finish(); + CanceledHandler?.Invoke(); + } + + public override bool OnKeyDown(Keycode keyCode, KeyEvent e) + { + switch (keyCode) + { + case Keycode.Back: + CancelScan(); + break; + case Keycode.Focus: + return true; + } + + return base.OnKeyDown(keyCode, e); + } + } +} \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/ZxingOverlayView.cs b/ZXing.Net.Mobile/Android/ZxingOverlayView.android.cs similarity index 73% rename from Source/ZXing.Net.Mobile.Android/ZxingOverlayView.cs rename to ZXing.Net.Mobile/Android/ZxingOverlayView.android.cs index 885de2e0d..d66993748 100644 --- a/Source/ZXing.Net.Mobile.Android/ZxingOverlayView.cs +++ b/ZXing.Net.Mobile/Android/ZxingOverlayView.android.cs @@ -16,62 +16,60 @@ namespace ZXing.Mobile { - public class ZxingOverlayView : View + public class ZxingOverlayView : View { - private int[] SCANNER_ALPHA = {0, 64, 128, 192, 255, 192, 128, 64}; - private const long ANIMATION_DELAY = 80L; - private const int CURRENT_POINT_OPACITY = 0xA0; - private const int MAX_RESULT_POINTS = 20; - private const int POINT_SIZE = 6; - - private Paint paint; - private Android.Graphics.Bitmap resultBitmap; - private Color maskColor; - private Color resultColor; - private Color frameColor; - private Color laserColor; - //private Color resultPointColor; - private int scannerAlpha; - private List possibleResultPoints; - //private List lastPossibleResultPoints; + int[] SCANNER_ALPHA = { 0, 64, 128, 192, 255, 192, 128, 64 }; + const long ANIMATION_DELAY = 80L; + const int CURRENT_POINT_OPACITY = 0xA0; + const int MAX_RESULT_POINTS = 20; + const int POINT_SIZE = 6; + + Paint paint; + Bitmap resultBitmap; + Color maskColor; + Color resultColor; + Color frameColor; + Color laserColor; + + int scannerAlpha; + List possibleResultPoints; public ZxingOverlayView(Context context) : base(context) { // Initialize these once for performance rather than calling them every time in onDraw(). paint = new Paint(PaintFlags.AntiAlias); + //Resources resources = getResources(); maskColor = Color.Gray; // resources.getColor(R.color.viewfinder_mask); resultColor = Color.Red; // resources.getColor(R.color.result_view); frameColor = Color.Black; // resources.getColor(R.color.viewfinder_frame); laserColor = Color.Red; // resources.getColor(R.color.viewfinder_laser); - //resultPointColor = Color.LightCoral; // resources.getColor(R.color.possible_result_points); + //resultPointColor = Color.LightCoral; // resources.getColor(R.color.possible_result_points); scannerAlpha = 0; possibleResultPoints = new List(5); - //lastPossibleResultPoints = null; - this.SetBackgroundColor(Color.Transparent); - //scanner = scannerInstance; + SetBackgroundColor(Color.Transparent); } Rect GetFramingRect(Canvas canvas) { - int width = canvas.Width * 15 / 16; + var width = canvas.Width * 15 / 16; - int height = canvas.Height * 4/ 10; + var height = canvas.Height * 4 / 10; - int leftOffset = (canvas.Width - width) / 2; - int topOffset = (canvas.Height - height) / 2; + var leftOffset = (canvas.Width - width) / 2; + var topOffset = (canvas.Height - height) / 2; var framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height); return framingRect; } - public string TopText { get;set; } - public string BottomText { get;set; } + public string TopText { get; set; } + public string BottomText { get; set; } - protected override void OnDraw (Canvas canvas) + protected override void OnDraw(Canvas canvas) { - + var scale = this.Context.Resources.DisplayMetrics.Density; var frame = GetFramingRect(canvas); @@ -89,14 +87,14 @@ protected override void OnDraw (Canvas canvas) //canvas.DrawRect(frame.Right + 1, frame.Top, width, frame.Bottom + 1, paint); canvas.DrawRect(0, frame.Bottom + 1, width, height, paint); - + var textPaint = new TextPaint(); textPaint.Color = Color.White; textPaint.TextSize = 16 * scale; var topTextLayout = new StaticLayout(this.TopText, textPaint, canvas.Width, Android.Text.Layout.Alignment.AlignCenter, 1.0f, 0.0f, false); canvas.Save(); - Rect topBounds = new Rect(); + var topBounds = new Rect(); textPaint.GetTextBounds(this.TopText, 0, this.TopText.Length, topBounds); canvas.Translate(0, frame.Top / 2 - (topTextLayout.Height / 2)); @@ -109,14 +107,14 @@ protected override void OnDraw (Canvas canvas) var botTextLayout = new StaticLayout(this.BottomText, textPaint, canvas.Width, Android.Text.Layout.Alignment.AlignCenter, 1.0f, 0.0f, false); canvas.Save(); - Rect botBounds = new Rect(); - + var botBounds = new Rect(); + textPaint.GetTextBounds(this.BottomText, 0, this.BottomText.Length, botBounds); canvas.Translate(0, (frame.Bottom + (canvas.Height - frame.Bottom) / 2) - (botTextLayout.Height / 2)); - + //canvas.Translate(topBounds.Left, topBounds.Bottom); botTextLayout.Draw(canvas); - + canvas.Restore(); @@ -130,7 +128,7 @@ protected override void OnDraw (Canvas canvas) } else { - // Draw a two pixel solid black border inside the framing rect + // Draw a two pixel solid black border inside the framing rect paint.Color = frameColor; //canvas.DrawRect(frame.Left, frame.Top, frame.Right + 1, frame.Top + 2, paint); //canvas.DrawRect(frame.Left, frame.Top + 2, frame.Left + 2, frame.Bottom - 1, paint); @@ -141,7 +139,7 @@ protected override void OnDraw (Canvas canvas) paint.Color = laserColor; paint.Alpha = SCANNER_ALPHA[scannerAlpha]; scannerAlpha = (scannerAlpha + 1) % SCANNER_ALPHA.Length; - int middle = frame.Height() / 2 + frame.Top; + var middle = frame.Height() / 2 + frame.Top; //int middle = frame.Width() / 2 + frame.Left; //canvas.DrawRect(frame.Left + 2, middle - 1, frame.Right - 1, middle + 2, paint); @@ -150,8 +148,8 @@ protected override void OnDraw (Canvas canvas) //canvas.DrawRect(middle - 1, frame.Top + 2, middle + 2, frame.Bottom - 1, paint); //frame.Top + 2, middle - 1, frame.Bottom - 1, middle + 2, paint); //var previewFrame = scanner.GetFramingRectInPreview(); - //float scaleX = frame.Width() / (float) previewFrame.Width(); - //float scaleY = frame.Height() / (float) previewFrame.Height(); + //float scaleX = frame.Width() / (float) previewFrame.Width(); + //float scaleY = frame.Height() / (float) previewFrame.Height(); /*var currentPossible = possibleResultPoints; var currentLast = lastPossibleResultPoints; @@ -161,7 +159,7 @@ protected override void OnDraw (Canvas canvas) if (currentPossible == null || currentPossible.Count <= 0) { - lastPossibleResultPoints = null; + lastPossibleResultPoints = null; } else { @@ -175,7 +173,7 @@ protected override void OnDraw (Canvas canvas) foreach (var point in currentPossible) { canvas.DrawCircle(frameLeft + (int) (point.X * scaleX), - frameTop + (int) (point.Y * scaleY), POINT_SIZE, paint); + frameTop + (int) (point.Y * scaleY), POINT_SIZE, paint); } } } @@ -191,7 +189,7 @@ protected override void OnDraw (Canvas canvas) foreach (var point in currentLast) { canvas.DrawCircle(frameLeft + (int) (point.X * scaleX), - frameTop + (int) (point.Y * scaleY), radius, paint); + frameTop + (int) (point.Y * scaleY), radius, paint); } } } @@ -200,13 +198,13 @@ protected override void OnDraw (Canvas canvas) // Request another update at the animation interval, but only repaint the laser line, // not the entire viewfinder mask. PostInvalidateDelayed(ANIMATION_DELAY, - frame.Left - POINT_SIZE, - frame.Top - POINT_SIZE, - frame.Right + POINT_SIZE, - frame.Bottom + POINT_SIZE); + frame.Left - POINT_SIZE, + frame.Top - POINT_SIZE, + frame.Right + POINT_SIZE, + frame.Bottom + POINT_SIZE); } - base.OnDraw (canvas); + base.OnDraw(canvas); } public void DrawResultBitmap(Android.Graphics.Bitmap barcode) @@ -223,7 +221,7 @@ public void AddPossibleResultPoint(ZXing.ResultPoint point) { points.Add(point); var size = points.Count; - if (size > MAX_RESULT_POINTS) + if (size > MAX_RESULT_POINTS) { points.RemoveRange(0, size - MAX_RESULT_POINTS / 2); } diff --git a/Source/ZXing.Net.Mobile.Core/CameraResolution.cs b/ZXing.Net.Mobile/CameraResolution.shared.cs similarity index 55% rename from Source/ZXing.Net.Mobile.Core/CameraResolution.cs rename to ZXing.Net.Mobile/CameraResolution.shared.cs index f44b5594a..222a3b567 100644 --- a/Source/ZXing.Net.Mobile.Core/CameraResolution.cs +++ b/ZXing.Net.Mobile/CameraResolution.shared.cs @@ -4,8 +4,7 @@ namespace ZXing.Mobile { public class CameraResolution { - public int Width { get;set; } - public int Height { get;set; } + public int Width { get; set; } + public int Height { get; set; } } } - diff --git a/ZXing.Net.Mobile/IMobileBarcodeScanner.shared.cs b/ZXing.Net.Mobile/IMobileBarcodeScanner.shared.cs new file mode 100644 index 000000000..3adc26c16 --- /dev/null +++ b/ZXing.Net.Mobile/IMobileBarcodeScanner.shared.cs @@ -0,0 +1,90 @@ +using System; +using System.Threading.Tasks; +using ZXing; + +namespace ZXing.Mobile +{ + public interface IZXingScanner : IScannerView + { + TOverlayViewType CustomOverlayView { get; set; } + bool UseCustomOverlayView { get; set; } + string TopText { get; set; } + string BottomText { get; set; } + } + + public interface IMobileBarcodeScanner + { + Task Scan(MobileBarcodeScanningOptions options); + Task Scan(); + + void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler); + void ScanContinuously(Action scanHandler); + + void Cancel(); + + void Torch(bool on); + void AutoFocus(); + void ToggleTorch(); + + void PauseAnalysis(); + void ResumeAnalysis(); + + bool UseCustomOverlay { get; } + string TopText { get; set; } + string BottomText { get; set; } + + string CancelButtonText { get; set; } + string FlashButtonText { get; set; } + string CameraUnsupportedMessage { get; set; } + + bool IsTorchOn { get; } + } + + public abstract class MobileBarcodeScannerBase : IMobileBarcodeScanner + { + public MobileBarcodeScannerBase() + { + CancelButtonText = "Cancel"; + FlashButtonText = "Flash"; + CameraUnsupportedMessage = "Unable to start Camera for Scanning"; + } + + public bool UseCustomOverlay { get; set; } + public string TopText { get; set; } + public string BottomText { get; set; } + public string CancelButtonText { get; set; } + public string FlashButtonText { get; set; } + public string CameraUnsupportedMessage { get; set; } + + public abstract Task Scan(MobileBarcodeScanningOptions options); + + public Task Scan() + => Scan(MobileBarcodeScanningOptions.Default); + + public void ScanContinuously(Action scanHandler) + => ScanContinuously(MobileBarcodeScanningOptions.Default, scanHandler); + + public abstract void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler); + + public abstract void Cancel(); + + public abstract void Torch(bool on); + + public abstract void ToggleTorch(); + + public abstract bool IsTorchOn { get; } + + public abstract void AutoFocus(); + + public abstract void PauseAnalysis(); + public abstract void ResumeAnalysis(); + } + + public class CancelScanRequestEventArgs : EventArgs + { + public CancelScanRequestEventArgs() + => Cancel = false; + + public bool Cancel { get; set; } + } +} diff --git a/Source/ZXing.Net.Mobile.Core/IScannerSessionHost.cs b/ZXing.Net.Mobile/IScannerSessionHost.shared.cs similarity index 100% rename from Source/ZXing.Net.Mobile.Core/IScannerSessionHost.cs rename to ZXing.Net.Mobile/IScannerSessionHost.shared.cs diff --git a/ZXing.Net.Mobile/IScannerView.shared.cs b/ZXing.Net.Mobile/IScannerView.shared.cs new file mode 100644 index 000000000..cf43a60c2 --- /dev/null +++ b/ZXing.Net.Mobile/IScannerView.shared.cs @@ -0,0 +1,22 @@ +using System; + +namespace ZXing.Mobile +{ + public interface IScannerView + { + void StartScanning(Action scanResultHandler, MobileBarcodeScanningOptions options = null); + void StopScanning(); + + void PauseAnalysis(); + void ResumeAnalysis(); + + void Torch(bool on); + void AutoFocus(); + void AutoFocus(int x, int y); + void ToggleTorch(); + bool IsTorchOn { get; } + bool IsAnalyzing { get; } + + bool HasTorch { get; } + } +} diff --git a/ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs b/ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs new file mode 100644 index 000000000..00f1c75c0 --- /dev/null +++ b/ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs @@ -0,0 +1,43 @@ +using System; +using ZXing.Rendering; + +using Foundation; +using CoreFoundation; +using CoreGraphics; +using AppKit; + +using ZXing.Common; + +namespace ZXing.Mobile +{ + public class BitmapRenderer : IBarcodeRenderer + { + + public NSImage Render(BitMatrix matrix, BarcodeFormat format, string content) + { + return Render(matrix, format, content, new EncodingOptions()); + } + + public NSImage Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) + { + var context = new CGBitmapContext(null, matrix.Width, matrix.Height, 8, 0, CGColorSpace.CreateGenericGray(), CGBitmapFlags.None); + + var black = new CGColor(0f, 0f, 0f); + var white = new CGColor(1.0f, 1.0f, 1.0f); + + for (var x = 0; x < matrix.Width; x++) + { + for (var y = 0; y < matrix.Height; y++) + { + context.SetFillColor(matrix[x, y] ? black : white); + context.FillRect(new CGRect(x, y, 1, 1)); + } + } + + var img = new NSImage(context.ToImage(), new CGSize(matrix.Width, matrix.Height)); + context.Dispose(); + + return img; + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/MacOS/BitmapWriter.macos.cs b/ZXing.Net.Mobile/MacOS/BitmapWriter.macos.cs new file mode 100644 index 000000000..37d107ad2 --- /dev/null +++ b/ZXing.Net.Mobile/MacOS/BitmapWriter.macos.cs @@ -0,0 +1,17 @@ +using System; +using AppKit; +using ZXing.Mobile; + +namespace ZXing.Mobile +{ + public class BarcodeWriter : BarcodeWriter, IBarcodeWriter + { + /// + /// Initializes a new instance of the class. + /// + public BarcodeWriter() + { + Renderer = new BitmapRenderer(); + } + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/MacOS/MobileBarcodeScanner.macos.cs b/ZXing.Net.Mobile/MacOS/MobileBarcodeScanner.macos.cs new file mode 100644 index 000000000..cb932935d --- /dev/null +++ b/ZXing.Net.Mobile/MacOS/MobileBarcodeScanner.macos.cs @@ -0,0 +1,37 @@ +using System; +using System.Threading.Tasks; + +namespace ZXing.Mobile +{ + public partial class MobileBarcodeScanner : MobileBarcodeScannerBase + { + NotSupportedException ex = new NotSupportedException("MobileBarcodeScanner is unsupported on this platform."); + + Task PlatformScan(MobileBarcodeScanningOptions options) + => throw ex; + + void PlatformScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + => throw ex; + + void PlatformCancel() + => throw ex; + + void PlatformAutoFocus() + => throw ex; + + void PlatformTorch(bool on) + => throw ex; + + void PlatformToggleTorch() + => throw ex; + + void PlatformPauseAnalysis() + => throw ex; + + void PlatformResumeAnalysis() + => throw ex; + + bool PlatformIsTorchOn + => throw ex; + } +} diff --git a/ZXing.Net.Mobile/MobileBarcodeScanner.netstandard.cs b/ZXing.Net.Mobile/MobileBarcodeScanner.netstandard.cs new file mode 100644 index 000000000..cb932935d --- /dev/null +++ b/ZXing.Net.Mobile/MobileBarcodeScanner.netstandard.cs @@ -0,0 +1,37 @@ +using System; +using System.Threading.Tasks; + +namespace ZXing.Mobile +{ + public partial class MobileBarcodeScanner : MobileBarcodeScannerBase + { + NotSupportedException ex = new NotSupportedException("MobileBarcodeScanner is unsupported on this platform."); + + Task PlatformScan(MobileBarcodeScanningOptions options) + => throw ex; + + void PlatformScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + => throw ex; + + void PlatformCancel() + => throw ex; + + void PlatformAutoFocus() + => throw ex; + + void PlatformTorch(bool on) + => throw ex; + + void PlatformToggleTorch() + => throw ex; + + void PlatformPauseAnalysis() + => throw ex; + + void PlatformResumeAnalysis() + => throw ex; + + bool PlatformIsTorchOn + => throw ex; + } +} diff --git a/ZXing.Net.Mobile/MobileBarcodeScanner.shared.cs b/ZXing.Net.Mobile/MobileBarcodeScanner.shared.cs new file mode 100644 index 000000000..3109c3bc6 --- /dev/null +++ b/ZXing.Net.Mobile/MobileBarcodeScanner.shared.cs @@ -0,0 +1,35 @@ +using System; +using System.Threading.Tasks; + +namespace ZXing.Mobile +{ + public partial class MobileBarcodeScanner : MobileBarcodeScannerBase + { + public override Task Scan(MobileBarcodeScanningOptions options) + => PlatformScan(options); + + public override void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + => PlatformScanContinuously(options, scanHandler); + + public override void Cancel() + => PlatformCancel(); + + public override void AutoFocus() + => PlatformAutoFocus(); + + public override void Torch(bool on) + => PlatformTorch(on); + + public override void ToggleTorch() + => PlatformToggleTorch(); + + public override void PauseAnalysis() + => PlatformPauseAnalysis(); + + public override void ResumeAnalysis() + => PlatformResumeAnalysis(); + + public override bool IsTorchOn + => PlatformIsTorchOn; + } +} diff --git a/ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs b/ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs new file mode 100644 index 000000000..4fe1a62f8 --- /dev/null +++ b/ZXing.Net.Mobile/MobileBarcodeScanningOptions.shared.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using ZXing; + +namespace ZXing.Mobile +{ + public class MobileBarcodeScanningOptions + { + /// + /// Camera resolution selector delegate, must return the selected Resolution from the list of available resolutions + /// + public delegate CameraResolution CameraResolutionSelectorDelegate(List availableResolutions); + + public MobileBarcodeScanningOptions() + { + PossibleFormats = new List(); + //this.AutoRotate = true; + DelayBetweenAnalyzingFrames = 150; + InitialDelayBeforeAnalyzingFrames = 300; + DelayBetweenContinuousScans = 1000; + UseNativeScanning = false; + } + + public CameraResolutionSelectorDelegate CameraResolutionSelector { get; set; } + + public List PossibleFormats { get; set; } + + public bool? TryHarder { get; set; } + + public bool? PureBarcode { get; set; } + + public bool? AutoRotate { get; set; } + + public bool? UseCode39ExtendedMode { get; set; } + + public string CharacterSet { get; set; } + + public bool? TryInverted { get; set; } + + public bool? UseFrontCameraIfAvailable { get; set; } + + public bool? AssumeGS1 { get; set; } + + + public bool DisableAutofocus { get; set; } + + public bool UseNativeScanning { get; set; } + + public int DelayBetweenContinuousScans { get; set; } + + public int DelayBetweenAnalyzingFrames { get; set; } + public int InitialDelayBeforeAnalyzingFrames { get; set; } + + public static MobileBarcodeScanningOptions Default + { + get { return new MobileBarcodeScanningOptions(); } + } + + public BarcodeReader BuildBarcodeReader() + { + var reader = new BarcodeReader(); + if (TryHarder.HasValue) + reader.Options.TryHarder = TryHarder.Value; + if (PureBarcode.HasValue) + reader.Options.PureBarcode = PureBarcode.Value; + if (AutoRotate.HasValue) + reader.AutoRotate = AutoRotate.Value; + if (UseCode39ExtendedMode.HasValue) + reader.Options.UseCode39ExtendedMode = UseCode39ExtendedMode.Value; + if (!string.IsNullOrEmpty(CharacterSet)) + reader.Options.CharacterSet = CharacterSet; + if (TryInverted.HasValue) + reader.TryInverted = TryInverted.Value; + if (AssumeGS1.HasValue) + reader.Options.AssumeGS1 = AssumeGS1.Value; + + if (PossibleFormats != null && PossibleFormats.Count > 0) + { + reader.Options.PossibleFormats = new List(); + + foreach (var pf in PossibleFormats) + reader.Options.PossibleFormats.Add(pf); + } + + return reader; + } + + public MultiFormatReader BuildMultiFormatReader() + { + var reader = new MultiFormatReader(); + + var hints = new Dictionary(); + + if (TryHarder.HasValue && TryHarder.Value) + hints.Add(DecodeHintType.TRY_HARDER, TryHarder.Value); + if (PureBarcode.HasValue && PureBarcode.Value) + hints.Add(DecodeHintType.PURE_BARCODE, PureBarcode.Value); + + if (PossibleFormats != null && PossibleFormats.Count > 0) + hints.Add(DecodeHintType.POSSIBLE_FORMATS, PossibleFormats); + + reader.Hints = hints; + + return reader; + } + + public CameraResolution GetResolution(List availableResolutions) + { + CameraResolution r = null; + + var dg = CameraResolutionSelector; + + if (dg != null) + r = dg(availableResolutions); + + return r; + } + } +} diff --git a/Source/ZXing.Net.Mobile.Core/Performance.cs b/ZXing.Net.Mobile/Performance.shared.cs similarity index 58% rename from Source/ZXing.Net.Mobile.Core/Performance.cs rename to ZXing.Net.Mobile/Performance.shared.cs index 2cefdbdd4..b738644c0 100644 --- a/Source/ZXing.Net.Mobile.Core/Performance.cs +++ b/ZXing.Net.Mobile/Performance.shared.cs @@ -10,41 +10,40 @@ public class PerformanceCounter public static string Start() { - var guid = Guid.NewGuid ().ToString (); + var guid = Guid.NewGuid().ToString(); - var sw = new Stopwatch (); + var sw = new Stopwatch(); - counters.Add (guid, sw); + counters.Add(guid, sw); - sw.Start (); + sw.Start(); return guid; } public static TimeSpan Stop(string guid) { - if (!counters.ContainsKey (guid)) + if (!counters.ContainsKey(guid)) return TimeSpan.Zero; - var sw = counters [guid]; + var sw = counters[guid]; - sw.Stop (); + sw.Stop(); - counters.Remove (guid); + counters.Remove(guid); return sw.Elapsed; } public static void Stop(string guid, string msg) { - var elapsed = Stop (guid); + var elapsed = Stop(guid); - if (!msg.Contains ("{0}")) + if (!msg.Contains("{0}")) msg += " {0}"; if (Debugger.IsAttached) - System.Diagnostics.Debug.WriteLine (msg, elapsed.TotalMilliseconds); + System.Diagnostics.Debug.WriteLine(msg, elapsed.TotalMilliseconds); } } - } \ No newline at end of file diff --git a/Source/ZXing.Net.Mobile.Android/Resources/layout/zxingscanneractivitylayout.axml b/ZXing.Net.Mobile/Resources/layout/zxingscanneractivitylayout.axml similarity index 100% rename from Source/ZXing.Net.Mobile.Android/Resources/layout/zxingscanneractivitylayout.axml rename to ZXing.Net.Mobile/Resources/layout/zxingscanneractivitylayout.axml diff --git a/Source/ZXing.Net.Mobile.Android/Resources/layout/zxingscannerfragmentlayout.axml b/ZXing.Net.Mobile/Resources/layout/zxingscannerfragmentlayout.axml similarity index 100% rename from Source/ZXing.Net.Mobile.Android/Resources/layout/zxingscannerfragmentlayout.axml rename to ZXing.Net.Mobile/Resources/layout/zxingscannerfragmentlayout.axml diff --git a/Source/ZXing.Net.Mobile.WindowsUniversal/ScanPage.xaml b/ZXing.Net.Mobile/ScanPage.xaml similarity index 65% rename from Source/ZXing.Net.Mobile.WindowsUniversal/ScanPage.xaml rename to ZXing.Net.Mobile/ScanPage.xaml index 1911fb07d..cb05436cb 100644 --- a/Source/ZXing.Net.Mobile.WindowsUniversal/ScanPage.xaml +++ b/ZXing.Net.Mobile/ScanPage.xaml @@ -7,9 +7,9 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> - - - - - + + + + + diff --git a/ZXing.Net.Mobile/ScanPage.xaml.cs b/ZXing.Net.Mobile/ScanPage.xaml.cs new file mode 100644 index 000000000..f9f17310d --- /dev/null +++ b/ZXing.Net.Mobile/ScanPage.xaml.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Threading.Tasks; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; +using ZXing.Mobile; + +// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 + +namespace ZXing.Mobile +{ + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + public sealed partial class ScanPage : Page, IMobileBarcodeScanner + { + ScanPageNavigationParameters Parameters { get; set; } + + public ScanPage() + { + InitializeComponent(); + } + + protected override void OnNavigatedTo(NavigationEventArgs e) + { + base.OnNavigatedTo(e); + + // If no parameters were passed, we navigated here for some other reason + // so let's ignore it + if (e.Parameter == null) + return; + + Parameters = e.Parameter as ScanPageNavigationParameters; + scannerControl.OnCameraInitialized += ScannerControl_OnCameraInitialized; + scannerControl.OnScannerError += ScannerControl_OnScannerError; + + if (Parameters != null) + Parameters.Scanner.ScanPage = this; + + scannerControl.TopText = Parameters?.Scanner?.TopText ?? ""; + scannerControl.BottomText = Parameters?.Scanner?.BottomText ?? ""; + + scannerControl.CustomOverlay = Parameters?.Scanner?.CustomOverlay; + scannerControl.UseCustomOverlay = Parameters?.Scanner?.UseCustomOverlay ?? false; + + scannerControl.ScanningOptions = Parameters?.Options ?? new MobileBarcodeScanningOptions(); + scannerControl.ContinuousScanning = Parameters?.ContinuousScanning ?? false; + + scannerControl.StartScanning(Parameters?.ResultHandler, Parameters?.Options); + } + + void ScannerControl_OnCameraInitialized() + => Parameters.CameraInitialized?.Invoke(); + + void ScannerControl_OnScannerError(IEnumerable errors) + => Parameters.CameraError?.Invoke(errors); + + protected override async void OnNavigatingFrom(NavigatingCancelEventArgs e) + { + try + { + MobileBarcodeScanner.Log("OnNavigatingFrom, stopping camera..."); + await scannerControl.StopScanningAsync(); + } + catch (Exception ex) + { + MobileBarcodeScanner.Log("OnNavigatingFrom Error: {0}", ex); + } + + base.OnNavigatingFrom(e); + } + + #region IMobileBarcodeScanner Implementation + public bool UseCustomOverlay + => scannerControl.UseCustomOverlay; + + public string TopText + { + get => scannerControl.TopText; + set => scannerControl.TopText = value; + } + + public string BottomText + { + get => scannerControl.BottomText; + set => scannerControl.BottomText = value; + } + + public string CancelButtonText + { + get => string.Empty; + set { } + } + + public string FlashButtonText + { + get => string.Empty; + set { } + } + + public string CameraUnsupportedMessage + { + get => string.Empty; + set { } + } + + public bool IsTorchOn + => scannerControl.IsTorchOn; + + public Task Scan(MobileBarcodeScanningOptions options) + { + var tcsResult = new TaskCompletionSource(); + + scannerControl.ContinuousScanning = false; + scannerControl.StartScanning(r => + { + scannerControl.StopScanning(); + + tcsResult.SetResult(r); + }, options ?? Parameters?.Options); + + return tcsResult.Task; + } + + public Task Scan() + => Scan(new MobileBarcodeScanningOptions()); + + public void ScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + { + scannerControl.ContinuousScanning = true; + scannerControl.StartScanning(scanHandler, options ?? Parameters?.Options); + } + + public void ScanContinuously(Action scanHandler) + => ScanContinuously(new MobileBarcodeScanningOptions(), scanHandler); + + public void Cancel() + => scannerControl?.Cancel(); + + public void Torch(bool on) + => scannerControl?.Torch(on); + + public void AutoFocus() + => scannerControl?.AutoFocus(); + + public void ToggleTorch() + => scannerControl?.ToggleTorch(); + + public void PauseAnalysis() + => scannerControl?.PauseAnalysis(); + + public void ResumeAnalysis() + => scannerControl?.ResumeAnalysis(); + #endregion + } + + public class ScanPageNavigationParameters + { + public MobileBarcodeScanner Scanner { get; set; } + public bool ContinuousScanning { get; set; } + public MobileBarcodeScanningOptions Options { get; set; } + public Action ResultHandler { get; set; } + + public Action CameraInitialized { get; set; } + public Action> CameraError { get; set; } + } +} diff --git a/ZXing.Net.Mobile/Tizen/BarcodeWriter.tizen.cs b/ZXing.Net.Mobile/Tizen/BarcodeWriter.tizen.cs new file mode 100644 index 000000000..29535396f --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/BarcodeWriter.tizen.cs @@ -0,0 +1,12 @@ +using ElmSharp; +using ZXing.Common; +using ZXing.Rendering; + +namespace ZXing.Mobile +{ + public class BarcodeWriter : BarcodeWriter, IBarcodeWriter + { + public BarcodeWriter(EvasObject nativeParent) + => Renderer = new BitmapRenderer(nativeParent); + } +} diff --git a/ZXing.Net.Mobile/Tizen/BitmapRenderer.tizen.cs b/ZXing.Net.Mobile/Tizen/BitmapRenderer.tizen.cs new file mode 100644 index 000000000..93ea2c303 --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/BitmapRenderer.tizen.cs @@ -0,0 +1,75 @@ +using ElmSharp; +using Tizen.Multimedia.Vision; +using ZXing.Common; +using ZXing.Rendering; + +namespace ZXing.Mobile +{ + class BitmapRenderer : IBarcodeRenderer + { + readonly EvasObject nativeParent; + + public BitmapRenderer(EvasObject nativeParent) : base() + => this.nativeParent = nativeParent; + + public EvasImage Render(BitMatrix matrix, BarcodeFormat format, string content) + => Render(matrix, format, content, new EncodingOptions()); + + public EvasImage Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) + { + var type = BarcodeType.Code128; + switch (format) + { + case BarcodeFormat.CODE_128: + type = BarcodeType.Code128; + break; + case BarcodeFormat.CODE_39: + type = BarcodeType.Code39; + break; + case BarcodeFormat.EAN_13: + type = BarcodeType.Ean13; + break; + case BarcodeFormat.EAN_8: + type = BarcodeType.Ean8; + break; + case BarcodeFormat.ITF: + type = BarcodeType.I25; + break; + case BarcodeFormat.QR_CODE: + type = BarcodeType.QR; + break; + case BarcodeFormat.UPC_A: + type = BarcodeType.UpcA; + break; + case BarcodeFormat.UPC_E: + type = BarcodeType.UpcE; + break; + } + + var path = Tizen.Applications.Application.Current.DirectoryInfo.Cache + "temporary_barcode"; + var barcodeImageConfiguration = new BarcodeImageConfiguration(options.Width, options.Height, path, BarcodeImageFormat.Png); + path += ".png"; + + if (type == BarcodeType.QR) + { + var qrConfig = new QrConfiguration(QrMode.Utf8, ErrorCorrectionLevel.Medium, 10); + BarcodeGenerator.GenerateImage(content, qrConfig, barcodeImageConfiguration); + } + else + { + BarcodeGenerator.GenerateImage(content, BarcodeType.Code128, barcodeImageConfiguration); + } + + var evasImage = new EvasImage(nativeParent) + { + AlignmentX = 0.5, + AlignmentY = 0.5, + MinimumWidth = options.Width, + MinimumHeight = options.Height, + File = path, + IsFilled = true, + }; + return evasImage; + } + } +} diff --git a/ZXing.Net.Mobile/Tizen/MobileBarcodeScanner.tizen.cs b/ZXing.Net.Mobile/Tizen/MobileBarcodeScanner.tizen.cs new file mode 100644 index 000000000..aa107f07f --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/MobileBarcodeScanner.tizen.cs @@ -0,0 +1,83 @@ +using ElmSharp; +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace ZXing.Mobile +{ + public partial class MobileBarcodeScanner : MobileBarcodeScannerBase + { + readonly ZxingScannerWindow zxingScannerWindow; + + public Container CustomOverlay { set; get; } + + public Window MainWindow { get; internal set; } + + public MobileBarcodeScanner() : base() + { + zxingScannerWindow = new ZxingScannerWindow(); + MainWindow = zxingScannerWindow; + } + + bool PlatformIsTorchOn => zxingScannerWindow.IsTorchOn; + + void PlatformAutoFocus() + => zxingScannerWindow?.AutoFocus(); + + void PlatformCancel() + => zxingScannerWindow.Unrealize(); + + void PlatformPauseAnalysis() + => zxingScannerWindow.PauseAnalysis(); + + void PlatformResumeAnalysis() + => zxingScannerWindow.ResumeAnalysis(); + + Task PlatformScan(MobileBarcodeScanningOptions options) + { + var task = Task.Factory.StartNew(() => + { + var waitScanResetEvent = new ManualResetEvent(false); + Result result = null; + + zxingScannerWindow.ScanningOptions = options; + zxingScannerWindow.ScanContinuously = false; + zxingScannerWindow.UseCustomOverlayView = UseCustomOverlay; + zxingScannerWindow.CustomOverlayView = CustomOverlay; + zxingScannerWindow.TopText = TopText; + zxingScannerWindow.BottomText = BottomText; + + zxingScannerWindow.ScanCompletedHandler = (Result r) => + { + result = r; + waitScanResetEvent.Set(); + }; + zxingScannerWindow.Show(); + waitScanResetEvent.WaitOne(); + return result; + }); + return task; + } + + void PlatformScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + { + zxingScannerWindow.UseCustomOverlayView = UseCustomOverlay; + zxingScannerWindow.CustomOverlayView = CustomOverlay; + zxingScannerWindow.ScanningOptions = options; + zxingScannerWindow.ScanContinuously = true; + zxingScannerWindow.TopText = TopText; + zxingScannerWindow.BottomText = BottomText; + zxingScannerWindow.ScanCompletedHandler = (Result r) => + { + scanHandler?.Invoke(r); + }; + zxingScannerWindow.Show(); + } + + void PlatformToggleTorch() + => zxingScannerWindow?.ToggleTorch(); + + void PlatformTorch(bool on) + => zxingScannerWindow?.Torch(on); + } +} diff --git a/ZXing.Net.Mobile/Tizen/TizenBarcodeAnalyzer.tizen.cs b/ZXing.Net.Mobile/Tizen/TizenBarcodeAnalyzer.tizen.cs new file mode 100644 index 000000000..a8a2eaf75 --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/TizenBarcodeAnalyzer.tizen.cs @@ -0,0 +1,80 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Tizen.Multimedia; +using Tizen.Multimedia.Vision; + +namespace ZXing.Mobile +{ + class TizenBarcodeAnalyzer + { + public static Task AnalyzeBarcodeAsync(StillImage image) + { + var source = new MediaVisionSource(image.Data, (uint)image.Resolution.Width, (uint)image.Resolution.Height, ColorSpace.NV12); + return AnalyzeBarcodeAsync(source); + } + public static async Task AnalyzeBarcodeAsync(MediaVisionSource source) + { + var point = new Point(0, 0); + var size = new Size((int)source.Width, (int)source.Height); + var roi = new Rectangle(point, size); + try + { + var barcodeLists = await BarcodeDetector.DetectAsync(source, roi); + if (barcodeLists.Count() == 0) + return null; + + var resultBarcode = barcodeLists.FirstOrDefault(); + var text = resultBarcode.Message; + var rawbytes = new byte[source.Buffer.Length]; + source.Buffer.CopyTo(rawbytes, 0, source.Buffer.Length); + + ResultPoint[] resultPoint = + { + new ResultPoint(resultBarcode.Region.Points.ElementAt(0).X, resultBarcode.Region.Points.ElementAt(0).Y), + new ResultPoint(resultBarcode.Region.Points.ElementAt(1).X, resultBarcode.Region.Points.ElementAt(1).Y), + new ResultPoint(resultBarcode.Region.Points.ElementAt(2).X, resultBarcode.Region.Points.ElementAt(2).Y), + new ResultPoint(resultBarcode.Region.Points.ElementAt(3).X, resultBarcode.Region.Points.ElementAt(3).Y) + }; + + BarcodeFormat format; + switch (resultBarcode.Type) + { + case BarcodeType.Code128: + format = BarcodeFormat.CODE_128; + break; + case BarcodeType.Code39: + format = BarcodeFormat.CODE_39; + break; + case BarcodeType.Ean13: + format = BarcodeFormat.EAN_13; + break; + case BarcodeType.Ean8: + format = BarcodeFormat.EAN_8; + break; + case BarcodeType.I25: + format = BarcodeFormat.ITF; + break; + case BarcodeType.QR: + format = BarcodeFormat.QR_CODE; + break; + case BarcodeType.UpcA: + format = BarcodeFormat.UPC_A; + break; + case BarcodeType.UpcE: + format = BarcodeFormat.UPC_E; + break; + default: + format = BarcodeFormat.All_1D; + break; + } + + return new Result(text, rawbytes, resultPoint, format); + } + catch (Exception) + { + return null; + } + } + } +} diff --git a/ZXing.Net.Mobile/Tizen/ZXingDefaultOverlay.tizen.cs b/ZXing.Net.Mobile/Tizen/ZXingDefaultOverlay.tizen.cs new file mode 100644 index 000000000..16042f464 --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/ZXingDefaultOverlay.tizen.cs @@ -0,0 +1,91 @@ +using ElmSharp; + +namespace ZXing.Mobile +{ + class ZXingDefaultOverlay : Box + { + Label topLabel; + Label bottomLabel; + + public ZXingDefaultOverlay(EvasObject parent) : base(parent) + { + AlignmentX = -1; + AlignmentY = -1; + WeightX = 1; + WeightY = 1; + + InitView(); + + BackgroundColor = Color.Transparent; + } + + void InitView() + { + topLabel = new Label(this) + { + Text = "", + TextStyle = "DEFAULT = 'font_size=30 align=center valign=bottom'", + AlignmentX = -1.0, + AlignmentY = -1.0, + WeightX = 1.0, + WeightY = 0.2, + BackgroundColor = Color.FromRgba(256, 256, 256, 200), + }; + topLabel.Show(); + PackEnd(topLabel); + + var blankAbove = new ElmSharp.Rectangle(this) + { + AlignmentX = -1.0, + AlignmentY = -1.0, + WeightX = 1.0, + WeightY = 0.3, + Color = Color.Transparent, + }; + blankAbove.Show(); + PackEnd(blankAbove); + + var middleBar = new ElmSharp.Rectangle(this) + { + AlignmentX = -1.0, + AlignmentY = -1.0, + WeightX = 1.0, + WeightY = 0.001, + Color = Color.Red, + }; + middleBar.Show(); + PackEnd(middleBar); + + var blankBelow = new ElmSharp.Rectangle(this) + { + AlignmentX = -1.0, + AlignmentY = -1.0, + WeightX = 1.0, + WeightY = 0.3, + Color = Color.Transparent, + }; + blankBelow.Show(); + PackEnd(blankBelow); + + bottomLabel = new Label(this) + { + Text = "", + TextStyle = "DEFAULT = 'font_size=30 align=center valign=bottom'", + AlignmentX = -1.0, + AlignmentY = -1.0, + WeightX = 1.0, + WeightY = 0.2, + BackgroundColor = Color.FromRgba(256, 256, 256, 200), + }; + + bottomLabel.Show(); + PackEnd(bottomLabel); + } + + public void SetText(string top, string bottom) + { + topLabel.Text = top; + bottomLabel.Text = bottom; + } + } +} diff --git a/ZXing.Net.Mobile/Tizen/ZXingMediaView.tizen.cs b/ZXing.Net.Mobile/Tizen/ZXingMediaView.tizen.cs new file mode 100644 index 000000000..f60c2d21b --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/ZXingMediaView.tizen.cs @@ -0,0 +1,73 @@ +using ElmSharp; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Tizen.Multimedia; + +namespace ZXing.Mobile +{ + public class ZXingMediaView : MediaView, IScannerView + { + ZXingScannerCamera zxingScannerCamera; + EvasObjectEvent showCallback; + public ZXingMediaView(EvasObject parent) : base(parent) + { + AlignmentX = -1; + AlignmentY = -1; + WeightX = 1; + WeightY = 1; + zxingScannerCamera = new ZXingScannerCamera(CameraDevice.Rear, this); + + showCallback = new EvasObjectEvent(this, EvasObjectCallbackType.Show); + showCallback.On += (s, e) => + { + if (zxingScannerCamera == null) + zxingScannerCamera = new ZXingScannerCamera(CameraDevice.Rear, this); + }; + + } + + internal MobileBarcodeScanningOptions ScanningOptions + { + get => zxingScannerCamera?.ScanningOptions ?? new MobileBarcodeScanningOptions(); + set => zxingScannerCamera.ScanningOptions = value; + } + + public bool IsTorchOn => zxingScannerCamera.IsTorchOn; + + public bool IsAnalyzing { get; private set; } + + public bool HasTorch => zxingScannerCamera.HasTorch; + + public void AutoFocus() + => zxingScannerCamera?.AutoFocus(); + + public void AutoFocus(int x, int y) + => zxingScannerCamera?.AutoFocus(x, y); + + public void PauseAnalysis() + => zxingScannerCamera?.PauseAnalysis(); + + public void ResumeAnalysis() + => zxingScannerCamera?.ResumeAnalysis(); + + public void StartScanning(Action scanResultHandler, MobileBarcodeScanningOptions options = null) + { + IsAnalyzing = true; + Show(); + zxingScannerCamera.ScanningOptions = options; + zxingScannerCamera?.Scan(scanResultHandler); + IsAnalyzing = false; + } + + public void StopScanning() + => zxingScannerCamera?.StopScanning(); + + public void ToggleTorch() + => zxingScannerCamera?.ToggleTorch(); + + public void Torch(bool on) + => zxingScannerCamera?.Torch(on); + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/Tizen/ZXingScannerCamera.tizen.cs b/ZXing.Net.Mobile/Tizen/ZXingScannerCamera.tizen.cs new file mode 100644 index 000000000..6a637ebe1 --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/ZXingScannerCamera.tizen.cs @@ -0,0 +1,135 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Tizen.Multimedia; + +namespace ZXing.Mobile +{ + class ZXingScannerCamera : Camera + { + Action resultHandler; + bool isDisposed; + bool torchFlag; + CameraFlashMode torchMode; + + public MobileBarcodeScanningOptions ScanningOptions { get; set; } + + public bool IsTorchOn + { + get => Settings.FlashMode == CameraFlashMode.On; + set => Settings.FlashMode = value ? CameraFlashMode.On : CameraFlashMode.Off; + } + + public bool HasTorch + => Capabilities.SupportedFlashModes.ToList().Count > 0; + + public ZXingScannerCamera(CameraDevice device, MediaView mediaView) : base(device) + { + Display = new Display(mediaView); + Settings.ImageQuality = 100; + Settings.PreviewPixelFormat = Capabilities.SupportedPreviewPixelFormats.FirstOrDefault(); + Settings.PreviewResolution = Settings.RecommendedPreviewResolution; + Settings.CapturePixelFormat = CameraPixelFormat.Nv12; + Settings.CaptureResolution = Capabilities.SupportedCaptureResolutions.FirstOrDefault(); + DisplaySettings.Rotation = Rotation.Rotate270; + + FocusStateChanged += FocusStateChangedHandler; + Capturing += CapturingHandler; + CaptureCompleted += CaptureCompleteHandler; + StateChanged += StateChangeHandler; + + isDisposed = false; + + if (State != CameraState.Preview) + StartPreview(); + } + + void StateChangeHandler(object sender, CameraStateChangedEventArgs e) + { + if (!isDisposed && State == CameraState.Preview) + { + if (torchFlag) + Settings.FlashMode = torchMode; + torchFlag = false; + } + } + + async void CaptureCompleteHandler(object sender, EventArgs e) + { + if (!isDisposed) + { + if (ScanningOptions?.DelayBetweenContinuousScans > 0) + await Task.Delay(ScanningOptions.DelayBetweenContinuousScans); + + StartPreview(); + } + } + + async void CapturingHandler(object sender, CameraCapturingEventArgs e) + { + var result = await TizenBarcodeAnalyzer.AnalyzeBarcodeAsync(e.MainImage); + + if (result != null) + resultHandler?.Invoke(result); + } + + void FocusStateChangedHandler(object sender, CameraFocusStateChangedEventArgs e) + { + if (!isDisposed && e.State == CameraFocusState.Ongoing && State == CameraState.Preview) + StartCapture(); + } + + public void Scan(Action scanResultHandler) + { + resultHandler = scanResultHandler; + StartFocusing(true); + } + + public void ResumeAnalysis() + => StartFocusing(true); + + public void PauseAnalysis() + => StopFocusing(); + + public void StopScanning() + { + FocusStateChanged -= FocusStateChangedHandler; + Capturing -= CapturingHandler; + CaptureCompleted -= CaptureCompleteHandler; + StateChanged -= StateChangeHandler; + isDisposed = true; + Dispose(); + } + + public void ToggleTorch() + { + torchMode = (Settings.FlashMode == CameraFlashMode.Off ? CameraFlashMode.On : CameraFlashMode.Off); + if (State == CameraState.Preview) + Settings.FlashMode = torchMode; + else + torchFlag = true; + } + + public void Torch(bool on) + { + torchMode = on ? CameraFlashMode.On : CameraFlashMode.Off; + if (State == CameraState.Preview) + Settings.FlashMode = torchMode; + else + torchFlag = true; + + } + + public void AutoFocus() + { + Settings.ClearFocusArea(); + Settings.AutoFocusMode = CameraAutoFocusMode.Normal; + } + + public void AutoFocus(int x, int y) + { + AutoFocus(); + Settings.SetAutoFocusArea(x, y); + } + } +} diff --git a/ZXing.Net.Mobile/Tizen/ZXingScannerWindow.tizen.cs b/ZXing.Net.Mobile/Tizen/ZXingScannerWindow.tizen.cs new file mode 100644 index 000000000..a49fee57f --- /dev/null +++ b/ZXing.Net.Mobile/Tizen/ZXingScannerWindow.tizen.cs @@ -0,0 +1,116 @@ +using ElmSharp; +using System; + +namespace ZXing.Mobile +{ + class ZxingScannerWindow : Window + { + public Action ScanCompletedHandler { get; set; } + public bool ScanContinuously { get; set; } + + public MobileBarcodeScanningOptions ScanningOptions { + get => zxingMediaView?.ScanningOptions ?? new MobileBarcodeScanningOptions(); + set => zxingMediaView.ScanningOptions = value; + } + + public bool IsTorchOn => zxingMediaView.IsTorchOn; + + public bool UseCustomOverlayView { get; set; } + public Container CustomOverlayView { get; set; } + public string TopText { get; internal set; } + public string BottomText { get; internal set; } + + ZXingMediaView zxingMediaView; + Background overlayBackground; + + public ZxingScannerWindow() : base("ZXingScannerWindow") + { + TopText = ""; + BottomText = ""; + AvailableRotations = DisplayRotation.Degree_0 | DisplayRotation.Degree_180 | DisplayRotation.Degree_270 | DisplayRotation.Degree_90; + BackButtonPressed += (s, ex) => + { + zxingMediaView?.StopScanning(); + Unrealize(); + }; + InitView(); + var showCallback = new EvasObjectEvent(this, EvasObjectCallbackType.Show); + showCallback.On += (s, e) => + { + StartScanning(); + }; + } + + void InitView() + { + var mBackground = new Background(this); + mBackground.Show(); + + var mConformant = new Conformant(this); + mConformant.SetContent(mBackground); + mConformant.Show(); + mBackground.Show(); + + overlayBackground = new Background(this) + { + Color = Color.Transparent, + BackgroundColor = Color.Transparent, + }; + overlayBackground.Show(); + + var oConformant = new Conformant(this); + oConformant.Show(); + oConformant.SetContent(overlayBackground); + + zxingMediaView = new ZXingMediaView(this) + { + AlignmentX = -1, + AlignmentY = -1, + WeightX = 1, + WeightY = 1, + }; + zxingMediaView.Show(); + mBackground.SetContent(zxingMediaView); + } + + public void StartScanning() + { + if (UseCustomOverlayView) + { + overlayBackground.SetContent(CustomOverlayView); + CustomOverlayView.Show(); + } + else + { + var defaultOverlay = new ZXingDefaultOverlay(this); + defaultOverlay.SetText(TopText, BottomText); + overlayBackground.SetContent(defaultOverlay); + defaultOverlay.Show(); + } + zxingMediaView.StartScanning(result => + { + ScanCompletedHandler?.Invoke(result); + if (!ScanContinuously) + { + zxingMediaView.StopScanning(); + Unrealize(); + } + }, ScanningOptions); + } + + public void AutoFocus() + => zxingMediaView?.AutoFocus(); + + public void PauseAnalysis() + => zxingMediaView?.PauseAnalysis(); + + public void ResumeAnalysis() + => zxingMediaView?.ResumeAnalysis(); + + public void Torch(bool on) + => zxingMediaView?.Torch(on); + + public void ToggleTorch() + => zxingMediaView?.ToggleTorch(); + } +} \ No newline at end of file diff --git a/ZXing.Net.Mobile/UWP/BarcodeWriter.uwp.cs b/ZXing.Net.Mobile/UWP/BarcodeWriter.uwp.cs new file mode 100644 index 000000000..a113a9cd4 --- /dev/null +++ b/ZXing.Net.Mobile/UWP/BarcodeWriter.uwp.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Windows.UI.Xaml.Media.Imaging; + +namespace ZXing.Mobile +{ + /// + /// A smart class to encode some content to a barcode image + /// + public class BarcodeWriter : BarcodeWriter, IBarcodeWriter + { + /// + /// Initializes a new instance of the class. + /// + public BarcodeWriter() + { + Renderer = new WriteableBitmapRenderer(); + } + } +} diff --git a/ZXing.Net.Mobile/UWP/MobileBarcodeScanner.uwp.cs b/ZXing.Net.Mobile/UWP/MobileBarcodeScanner.uwp.cs new file mode 100644 index 000000000..ccc0a3d7d --- /dev/null +++ b/ZXing.Net.Mobile/UWP/MobileBarcodeScanner.uwp.cs @@ -0,0 +1,123 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Windows.UI.Core; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace ZXing.Mobile +{ + public partial class MobileBarcodeScanner : MobileBarcodeScannerBase + { + public MobileBarcodeScanner() : base() + { + } + + public MobileBarcodeScanner(CoreDispatcher dispatcher) : base() + { + Dispatcher = dispatcher; + } + + internal ScanPage ScanPage { get; set; } + + public CoreDispatcher Dispatcher { get; set; } + + public Frame RootFrame { get; set; } + + async void PlatformScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + { + //Navigate: /ZxingSharp.WindowsPhone;component/Scan.xaml + var rootFrame = RootFrame ?? Window.Current.Content as Frame ?? ((FrameworkElement)Window.Current.Content).GetFirstChildOfType(); + var dispatcher = Dispatcher ?? Window.Current.Dispatcher; + + await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => + { + rootFrame.Navigate(typeof(ScanPage), new ScanPageNavigationParameters + { + Options = options, + ResultHandler = scanHandler, + Scanner = this, + ContinuousScanning = true + }); + }); + } + + async Task PlatformScan(MobileBarcodeScanningOptions options) + { + var rootFrame = RootFrame ?? Window.Current.Content as Frame ?? ((FrameworkElement)Window.Current.Content).GetFirstChildOfType(); + var dispatcher = Dispatcher ?? Window.Current.Dispatcher; + + var tcsScanResult = new TaskCompletionSource(); + + await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => + { + var pageOptions = new ScanPageNavigationParameters + { + Options = options, + ResultHandler = r => + { + tcsScanResult.SetResult(r); + }, + Scanner = this, + ContinuousScanning = false, + CameraInitialized = () => { OnCameraInitialized?.Invoke(); }, + CameraError = (errors) => { OnCameraError?.Invoke(errors); } + }; + rootFrame.Navigate(typeof(ScanPage), pageOptions); + }); + + var result = await tcsScanResult.Task; + + await dispatcher.RunAsync(CoreDispatcherPriority.High, () => + { + if (rootFrame.CanGoBack) + rootFrame.GoBack(); + }); + + return result; + } + + public event ScannerOpened OnCameraInitialized; + public delegate void ScannerOpened(); + + public event ScannerError OnCameraError; + public delegate void ScannerError(IEnumerable errors); + + async void PlatformCancel() + { + var rootFrame = RootFrame ?? Window.Current.Content as Frame ?? ((FrameworkElement)Window.Current.Content).GetFirstChildOfType(); + var dispatcher = Dispatcher ?? Window.Current.Dispatcher; + + ScanPage?.Cancel(); + + await dispatcher.RunAsync(CoreDispatcherPriority.High, () => + { + if (rootFrame.CanGoBack) + rootFrame.GoBack(); + }); + } + + void PlatformTorch(bool on) + => ScanPage?.Torch(on); + + void PlatformToggleTorch() + => ScanPage?.ToggleTorch(); + + bool PlatformIsTorchOn + => ScanPage?.IsTorchOn ?? false; + + void PlatformAutoFocus() + => ScanPage?.AutoFocus(); + + void PlatformPauseAnalysis() + => ScanPage?.PauseAnalysis(); + + void PlatformResumeAnalysis() + => ScanPage?.ResumeAnalysis(); + + public UIElement CustomOverlay { get; set; } + + internal static void Log(string message, params object[] args) + => System.Diagnostics.Debug.WriteLine(message, args); + } +} diff --git a/ZXing.Net.Mobile/UWP/SoftwareBitmapLuminanceSource.uwp.cs b/ZXing.Net.Mobile/UWP/SoftwareBitmapLuminanceSource.uwp.cs new file mode 100644 index 000000000..98df41094 --- /dev/null +++ b/ZXing.Net.Mobile/UWP/SoftwareBitmapLuminanceSource.uwp.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Windows.Graphics.Imaging; + +namespace ZXing.Mobile +{ + [ComImport] + [Guid("5b0d3235-4dba-4d44-865e-8f1d0e4fd04d")] + [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + unsafe interface IMemoryBufferByteAccess + { + void GetBuffer(out byte* buffer, out uint capacity); + } + + public class SoftwareBitmapLuminanceSource : BaseLuminanceSource + { + public SoftwareBitmapLuminanceSource(SoftwareBitmap softwareBitmap) : base(softwareBitmap.PixelWidth, softwareBitmap.PixelHeight) + => CalculateLuminance(softwareBitmap); + + protected SoftwareBitmapLuminanceSource(int width, int height) : base(width, height) + { + } + + protected SoftwareBitmapLuminanceSource(byte[] luminanceArray, int width, int height) : base(luminanceArray, width, height) + { + } + + protected override LuminanceSource CreateLuminanceSource(byte[] newLuminances, int width, int height) + => new SoftwareBitmapLuminanceSource(width, height) { luminances = newLuminances }; + + unsafe void CalculateLuminance(SoftwareBitmap bitmap) + { + // Effect is hard-coded to operate on BGRA8 format only + if (bitmap.BitmapPixelFormat == BitmapPixelFormat.Bgra8) + { + // In BGRA8 format, each pixel is defined by 4 bytes + const int BYTES_PER_PIXEL = 4; + + using (var buffer = bitmap.LockBuffer(BitmapBufferAccessMode.Read)) + using (var reference = buffer.CreateReference()) + { + if (reference is IMemoryBufferByteAccess) + { + try + { + // Get a pointer to the pixel buffer + byte* data; + uint capacity; + ((IMemoryBufferByteAccess)reference).GetBuffer(out data, out capacity); + + // Get information about the BitmapBuffer + var desc = buffer.GetPlaneDescription(0); + var luminanceIndex = 0; + + // Iterate over all pixels + for (uint row = 0; row < desc.Height; row++) + { + for (uint col = 0; col < desc.Width; col++) + { + // Index of the current pixel in the buffer (defined by the next 4 bytes, BGRA8) + var currPixel = desc.StartIndex + desc.Stride * row + BYTES_PER_PIXEL * col; + + // Read the current pixel information into b,g,r channels (leave out alpha channel) + var b = data[currPixel + 0]; // Blue + var g = data[currPixel + 1]; // Green + var r = data[currPixel + 2]; // Red + + var luminance = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight); + var alpha = data[currPixel + 3]; + luminance = (byte)(((luminance * alpha) >> 8) + (255 * (255 - alpha) >> 8)); + luminances[luminanceIndex] = luminance; + luminanceIndex++; + } + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine("Luminance Source Failed: {0}", ex); + } + } + } + } + } + } +} diff --git a/ZXing.Net.Mobile/UWP/VisualTreeHelperExt.uwp.cs b/ZXing.Net.Mobile/UWP/VisualTreeHelperExt.uwp.cs new file mode 100644 index 000000000..a4e57cd54 --- /dev/null +++ b/ZXing.Net.Mobile/UWP/VisualTreeHelperExt.uwp.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Media; + +namespace ZXing.Mobile +{ + public static class VisualTreeHelperExt + { + // The method traverses the visual tree lazily, layer by layer + // and returns the objects of the desired type + public static T GetFirstChildOfType(this DependencyObject start) where T : class + { + var queue = new Queue(); + queue.Enqueue(start); + + while (queue.Count > 0) + { + var item = queue.Dequeue(); + + var realItem = item as T; + if (realItem != null) + { + return realItem; + } + + var count = VisualTreeHelper.GetChildrenCount(item); + for (var i = 0; i < count; i++) + { + queue.Enqueue(VisualTreeHelper.GetChild(item, i)); + } + } + return null; + } + } +} diff --git a/ZXing.Net.Mobile/UWP/WriteableBitmapRenderer.uwp.cs b/ZXing.Net.Mobile/UWP/WriteableBitmapRenderer.uwp.cs new file mode 100644 index 000000000..0b3243e31 --- /dev/null +++ b/ZXing.Net.Mobile/UWP/WriteableBitmapRenderer.uwp.cs @@ -0,0 +1,273 @@ +/* + * Copyright 2012 ZXing.Net authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; +using System.Windows; +#if NETFX_CORE +using Windows.UI; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; +#else +using System.Windows.Media; +using System.Windows.Media.Imaging; +#endif + +using ZXing; +using ZXing.Common; +using ZXing.OneD; +using ZXing.Rendering; + +namespace ZXing.Mobile +{ + /// + /// Renders a to a + /// + public class WriteableBitmapRenderer : IBarcodeRenderer + { + /// + /// Gets or sets the foreground color. + /// + /// + /// The foreground color. + /// + public Color Foreground { get; set; } + /// + /// Gets or sets the background color. + /// + /// + /// The background color. + /// + public Color Background { get; set; } + /// + /// Gets or sets the font family. + /// + /// + /// The font family. + /// + public FontFamily FontFamily { get; set; } + /// + /// Gets or sets the size of the font. + /// + /// + /// The size of the font. + /// + public double FontSize { get; set; } + +#if !NETFX_CORE + /// + /// Gets or sets the font stretch. + /// + /// + /// The font stretch. + /// + public FontStretch FontStretch { get; set; } + /// + /// Gets or sets the font style. + /// + /// + /// The font style. + /// + public FontStyle FontStyle { get; set; } + /// + /// Gets or sets the font weight. + /// + /// + /// The font weight. + /// + public FontWeight FontWeight { get; set; } +#endif + + static readonly FontFamily DefaultFontFamily = new FontFamily("Arial"); + + /// + /// Initializes a new instance of the class. + /// + public WriteableBitmapRenderer() + { + Foreground = Colors.Black; + Background = Colors.White; + FontFamily = DefaultFontFamily; + FontSize = 10.0; +#if !NETFX_CORE + FontStretch = FontStretches.Normal; + FontStyle = FontStyles.Normal; + FontWeight = FontWeights.Normal; +#endif + } + + /// + /// Renders the specified matrix. + /// + /// The matrix. + /// The format. + /// The content. + /// + public WriteableBitmap Render(BitMatrix matrix, BarcodeFormat format, string content) + { + return Render(matrix, format, content, null); + } + + /// + /// Renders the specified matrix. + /// + /// The matrix. + /// The format. + /// The content. + /// The options. + /// + virtual public WriteableBitmap Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) + { + var width = matrix.Width; + var height = matrix.Height; + var outputContent = (options == null || !options.PureBarcode) && + !String.IsNullOrEmpty(content) && (format == BarcodeFormat.CODE_39 || + format == BarcodeFormat.CODE_128 || + format == BarcodeFormat.EAN_13 || + format == BarcodeFormat.EAN_8 || + format == BarcodeFormat.CODABAR || + format == BarcodeFormat.ITF || + format == BarcodeFormat.UPC_A || + format == BarcodeFormat.MSI || + format == BarcodeFormat.PLESSEY); + var emptyArea = outputContent ? 16 : 0; + var pixelsize = 1; + + if (options != null) + { + if (options.Width > width) + { + width = options.Width; + } + if (options.Height > height) + { + height = options.Height; + } + // calculating the scaling factor + pixelsize = width / matrix.Width; + if (pixelsize > height / matrix.Height) + { + pixelsize = height / matrix.Height; + } + } + +#if NETFX_CORE + var foreground = new byte[] { Foreground.B, Foreground.G, Foreground.R, Foreground.A }; + var background = new byte[] { Background.B, Background.G, Background.R, Background.A }; + var bmp = new WriteableBitmap(width, height); + var length = width * height; + + // Copy data back + using (var stream = System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions.AsStream(bmp.PixelBuffer)) + { + for (var y = 0; y < matrix.Height - emptyArea; y++) + { + for (var pixelsizeHeight = 0; pixelsizeHeight < pixelsize; pixelsizeHeight++) + { + for (var x = 0; x < matrix.Width; x++) + { + var color = matrix[x, y] ? foreground : background; + for (var pixelsizeWidth = 0; pixelsizeWidth < pixelsize; pixelsizeWidth++) + { + stream.Write(color, 0, 4); + } + } + for (var x = pixelsize * matrix.Width; x < width; x++) + { + stream.Write(background, 0, 4); + } + } + } + for (var y = matrix.Height * pixelsize - emptyArea; y < height; y++) + { + for (var x = 0; x < width; x++) + { + stream.Write(background, 0, 4); + } + } + } + bmp.Invalidate(); +#else + int foreground = Foreground.A << 24 | Foreground.R << 16 | Foreground.G << 8 | Foreground.B; + int background = Background.A << 24 | Background.R << 16 | Background.G << 8 | Background.B; +#if WPF + var bmp = new WriteableBitmap(width, height, 100.0, 100.0, PixelFormats.Bgra32, null); + var pixels = new int[width*height]; +#else + var bmp = new WriteableBitmap(width, height); + var pixels = bmp.Pixels; +#endif + var index = 0; + + for (int y = 0; y < matrix.Height - emptyArea; y++) + { + for (var pixelsizeHeight = 0; pixelsizeHeight < pixelsize; pixelsizeHeight++) + { + for (var x = 0; x < matrix.Width; x++) + { + var color = matrix[x, y] ? foreground : background; + for (var pixelsizeWidth = 0; pixelsizeWidth < pixelsize; pixelsizeWidth++) + { + pixels[index++] = color; + } + } + for (var x = pixelsize * matrix.Width; x < width; x++) + { + pixels[index++] = background; + } + } + } + for (int y = matrix.Height * pixelsize - emptyArea; y < height; y++) + { + for (var x = 0; x < width; x++) + { + pixels[index++] = background; + } + } +#if WPF + bmp.WritePixels(new Int32Rect(0, 0, width, height), pixels, bmp.BackBufferStride, 0); +#else + bmp.Invalidate(); +#endif +#endif + + /* doesn't correctly work at the moment + * renders at the wrong position + if (outputContent) + { + switch (format) + { + case BarcodeFormat.EAN_8: + if (content.Length < 8) + content = OneDimensionalCodeWriter.CalculateChecksumDigitModulo10(content); + content = content.Insert(4, " "); + break; + case BarcodeFormat.EAN_13: + if (content.Length < 13) + content = OneDimensionalCodeWriter.CalculateChecksumDigitModulo10(content); + content = content.Insert(7, " "); + content = content.Insert(1, " "); + break; + } + var txt1 = new TextBlock {Text = content, FontSize = 10, Foreground = new SolidColorBrush(Colors.Black)}; + bmp.Render(txt1, new RotateTransform { Angle = 0, CenterX = width / 2, CenterY = height - 14}); + bmp.Invalidate(); + } + * */ + + return bmp; + } + } +} diff --git a/ZXing.Net.Mobile/ZXing.Net.Mobile.csproj b/ZXing.Net.Mobile/ZXing.Net.Mobile.csproj new file mode 100644 index 000000000..97b06b6d9 --- /dev/null +++ b/ZXing.Net.Mobile/ZXing.Net.Mobile.csproj @@ -0,0 +1,122 @@ + + + netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid90;MonoAndroid10.0;tizen40 + $(TargetFrameworks);uap10.0.16299; + ZXingNetMobile + ZXing.Net.Mobile + ZXing.Net.Mobile + icon.png + ZXing Barcode Scanning for your Xamarin.iOS, Xamarin.Android and Windows Universal apps! + + ZXing.Net.Mobile Barcode Scanner + + ZXing.Net.Mobile is a C#/.NET library based on the open source Barcode Library: ZXing (Zebra Crossing), using the ZXing.Net Port. It works with Xamarin.iOS, Xamarin.Android, Windows Phone (Silverlight) and Windows Universal. The goal of ZXing.Net.Mobile is to make scanning barcodes as effortless and painless as possible in your own applications. + + See https://github.com/Redth/ZXing.Net.Mobile/releases for release notes. + + $(AssemblyName) ($(TargetFramework)) + 3.0.0.0 + 3.0.0.0 + 3.0.0 + $(Version)$(VersionSuffix) + Redth + Redth + en + © Redth + https://github.com/redth/ZXing.Net.Mobile + See: https://github.com/Redth/ZXing.Net.Mobile/releases + $(DefineConstants); + false + false + MIT + http://github.com/Redth/ZXing.Net.Mobile + portable + Debug;Release + true + + + true + + + + true + + true + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + + + + + + + + + + + + + + + + + + + ScanPage.xaml + + + ZXingScannerControl.xaml + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + PreserveNewest + + + Windows Mobile Extensions for the UWP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\ZXing.Net\zxing.dll + + + \ No newline at end of file diff --git a/ZXing.Net.Mobile/ZXingScannerControl.xaml b/ZXing.Net.Mobile/ZXingScannerControl.xaml new file mode 100644 index 000000000..5400e3117 --- /dev/null +++ b/ZXing.Net.Mobile/ZXingScannerControl.xaml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ZXing.Net.Mobile/ZXingScannerControl.xaml.cs b/ZXing.Net.Mobile/ZXingScannerControl.xaml.cs new file mode 100644 index 000000000..42a186863 --- /dev/null +++ b/ZXing.Net.Mobile/ZXingScannerControl.xaml.cs @@ -0,0 +1,779 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Threading; +using System.Threading.Tasks; +using Windows.Devices.Enumeration; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.Graphics.Display; +using Windows.Media; +using Windows.Media.Capture; +using Windows.Media.Devices; +using Windows.Media.MediaProperties; +using Windows.System.Display; +using Windows.UI.Core; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; +using ZXing.Mobile; + +// The User Control item template is documented at http://go.microsoft.com/fwlink/?LinkId=234236 + +namespace ZXing.Mobile +{ + public sealed partial class ZXingScannerControl : UserControl, IScannerView, IScannerSessionHost, IDisposable + { + public ZXingScannerControl() + { + InitializeComponent(); + + displayOrientation = displayInformation.CurrentOrientation; + displayInformation.OrientationChanged += DisplayInformation_OrientationChanged; + } + + public event ScannerOpened OnCameraInitialized; + public delegate void ScannerOpened(); + + public event ScannerError OnScannerError; + public delegate void ScannerError(IEnumerable errors); + + async void DisplayInformation_OrientationChanged(DisplayInformation sender, object args) + { + //This safeguards against a null reference if the device is rotated *before* the first call to StartScanning + if (mediaCapture == null) return; + + displayOrientation = sender.CurrentOrientation; + var props = mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview); + await SetPreviewRotationAsync(props); + } + + // Receive notifications about rotation of the UI and apply any necessary rotation to the preview stream + readonly DisplayInformation displayInformation = DisplayInformation.GetForCurrentView(); + DisplayOrientations displayOrientation = DisplayOrientations.Portrait; + VideoFrame videoFrame; + + // Information about the camera device. + bool mirroringPreview = false; + bool externalCamera = false; + + // Rotation metadata to apply to the preview stream (MF_MT_VIDEO_ROTATION) + // Reference: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868174.aspx + static readonly Guid rotationKey = new Guid("C380465D-2271-428C-9B83-ECEA3B4A85C1"); + + // Prevent the screen from sleeping while the camera is running + readonly DisplayRequest displayRequest = new DisplayRequest(); + + // For listening to media property changes + readonly SystemMediaTransportControls systemMediaControls = SystemMediaTransportControls.GetForCurrentView(); + + + public async void StartScanning(Action scanCallback, MobileBarcodeScanningOptions options = null) + => await StartScanningAsync(scanCallback, options); + + public async void StopScanning() + => await StopScanningAsync(); + + public void PauseAnalysis() + => isAnalyzing = false; + + public void ResumeAnalysis() + => isAnalyzing = true; + + public bool IsAnalyzing + => isAnalyzing; + + public async Task StartScanningAsync(Action scanCallback, MobileBarcodeScanningOptions options = null) + { + if (stopping) + { + var error = "Camera is closing"; + OnScannerError?.Invoke(new[] { error }); + return; + } + + + displayRequest.RequestActive(); + + isAnalyzing = true; + ScanCallback = scanCallback; + ScanningOptions = options ?? MobileBarcodeScanningOptions.Default; + + topText.Text = TopText ?? string.Empty; + bottomText.Text = BottomText ?? string.Empty; + + if (UseCustomOverlay) + { + gridCustomOverlay.Children.Clear(); + if (CustomOverlay != null) + gridCustomOverlay.Children.Add(CustomOverlay); + + gridCustomOverlay.Visibility = Visibility.Visible; + gridDefaultOverlay.Visibility = Visibility.Collapsed; + } + else + { + gridCustomOverlay.Visibility = Visibility.Collapsed; + gridDefaultOverlay.Visibility = Visibility.Visible; + } + + // Find which device to use + var preferredCamera = await GetFilteredCameraOrDefaultAsync(ScanningOptions); + if (preferredCamera == null) + { + var error = "No camera available"; + System.Diagnostics.Debug.WriteLine(error); + isMediaCaptureInitialized = false; + OnScannerError?.Invoke(new[] { error }); + return; + } + + if (preferredCamera.EnclosureLocation == null || preferredCamera.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Unknown) + { + // No information on the location of the camera, assume it's an external camera, not integrated on the device. + externalCamera = true; + } + else + { + // Camera is fixed on the device. + externalCamera = false; + + // Only mirror the preview if the camera is on the front panel. + mirroringPreview = preferredCamera.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Front; + } + + mediaCapture = new MediaCapture(); + + // Initialize the capture with the settings above + try + { + await mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings + { + StreamingCaptureMode = StreamingCaptureMode.Video, + VideoDeviceId = preferredCamera.Id + }); + isMediaCaptureInitialized = true; + } + catch (UnauthorizedAccessException) + { + System.Diagnostics.Debug.WriteLine("Denied access to the camera"); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine("Exception when init MediaCapture: {0}", ex); + } + + if (!isMediaCaptureInitialized) + { + var error = "Unexpected error on Camera initialisation"; + OnScannerError?.Invoke(new[] { error }); + return; + } + + + // Set the capture element's source to show it in the UI + captureElement.Source = mediaCapture; + captureElement.FlowDirection = mirroringPreview ? FlowDirection.RightToLeft : FlowDirection.LeftToRight; + + // Start the preview + await mediaCapture.StartPreviewAsync(); + + if (mediaCapture.CameraStreamState == CameraStreamState.Streaming) + { + OnCameraInitialized?.Invoke(); + } + + // Get all the available resolutions for preview + var availableProperties = mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.VideoPreview); + var availableResolutions = new List(); + foreach (var ap in availableProperties) + { + var vp = (VideoEncodingProperties)ap; + System.Diagnostics.Debug.WriteLine("Camera Preview Resolution: {0}x{1}", vp.Width, vp.Height); + availableResolutions.Add(new CameraResolution { Width = (int)vp.Width, Height = (int)vp.Height }); + } + CameraResolution previewResolution = null; + if (ScanningOptions.CameraResolutionSelector != null) + previewResolution = ScanningOptions.CameraResolutionSelector(availableResolutions); + + if (availableResolutions == null || availableResolutions.Count < 1) + { + var error = "Camera is busy. Try to close all applications that use camera."; + OnScannerError?.Invoke(new[] { error }); + return; + } + + // If the user did not specify a resolution, let's try and find a suitable one + if (previewResolution == null) + { + // Loop through all supported sizes + foreach (var sps in availableResolutions) + { + // Find one that's >= 640x360 but <= 1000x1000 + // This will likely pick the *smallest* size in that range, which should be fine + if (sps.Width >= 640 && sps.Width <= 1000 && sps.Height >= 360 && sps.Height <= 1000) + { + previewResolution = new CameraResolution + { + Width = sps.Width, + Height = sps.Height + }; + break; + } + } + } + + if (previewResolution == null) + previewResolution = availableResolutions.LastOrDefault(); + + if (previewResolution == null) + { + System.Diagnostics.Debug.WriteLine("No preview resolution available. Camera may be in use by another application."); + return; + } + + MobileBarcodeScanner.Log("Using Preview Resolution: {0}x{1}", previewResolution.Width, previewResolution.Height); + + // Find the matching property based on the selection, again + var chosenProp = availableProperties.FirstOrDefault(ap => ((VideoEncodingProperties)ap).Width == previewResolution.Width && ((VideoEncodingProperties)ap).Height == previewResolution.Height); + + // Pass in the requested preview size properties + // so we can set them at the same time as the preview rotation + // to save an additional set property call + await SetPreviewRotationAsync(chosenProp); + + // *after* the preview is setup, set this so that the UI layout happens + // otherwise the preview gets stuck in a funny place on screen + captureElement.Stretch = Stretch.UniformToFill; + + await SetupAutoFocus(); + + var zxing = ScanningOptions.BuildBarcodeReader(); + + timerPreview = new Timer(async (state) => + { + + var delay = ScanningOptions.DelayBetweenAnalyzingFrames; + + if (stopping || processing || !isAnalyzing + || (mediaCapture == null || mediaCapture.CameraStreamState != Windows.Media.Devices.CameraStreamState.Streaming)) + { + timerPreview.Change(delay, Timeout.Infinite); + return; + } + + processing = true; + + SoftwareBitmapLuminanceSource luminanceSource = null; + + try + { + // Get preview + var frame = await mediaCapture.GetPreviewFrameAsync(videoFrame); + + // Create our luminance source + luminanceSource = new SoftwareBitmapLuminanceSource(frame.SoftwareBitmap); + + } + catch (Exception ex) + { + MobileBarcodeScanner.Log("GetPreviewFrame Failed: {0}", ex); + } + + ZXing.Result result = null; + + try + { + // Try decoding the image + if (luminanceSource != null) + result = zxing.Decode(luminanceSource); + } + catch (Exception ex) + { + MobileBarcodeScanner.Log("Warning: zxing.Decode Failed: {0}", ex); + } + + // Check if a result was found + if (result != null && !string.IsNullOrEmpty(result.Text)) + { + if (!ContinuousScanning) + { + delay = Timeout.Infinite; + await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { await StopScanningAsync(); }); + } + else + { + delay = ScanningOptions.DelayBetweenContinuousScans; + } + + LastScanResult = result; + ScanCallback(result); + } + + processing = false; + + timerPreview.Change(delay, Timeout.Infinite); + + }, null, ScanningOptions.InitialDelayBeforeAnalyzingFrames, Timeout.Infinite); + } + + async Task GetFilteredCameraOrDefaultAsync(MobileBarcodeScanningOptions options) + { + var videoCaptureDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); + + var useFront = options.UseFrontCameraIfAvailable.HasValue && options.UseFrontCameraIfAvailable.Value; + + var selectedCamera = videoCaptureDevices.FirstOrDefault(vcd => vcd.EnclosureLocation != null + && ((!useFront && vcd.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back) + || (useFront && vcd.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Front))); + + + // we fall back to the first camera that we can find. + if (selectedCamera == null) + { + var whichCamera = useFront ? "front" : "back"; + System.Diagnostics.Debug.WriteLine("Finding " + whichCamera + " camera failed, opening first available camera"); + selectedCamera = videoCaptureDevices.FirstOrDefault(); + } + + return selectedCamera; + } + + protected override void OnPointerPressed(PointerRoutedEventArgs e) + { + System.Diagnostics.Debug.WriteLine("AutoFocus requested"); + base.OnPointerPressed(e); + var pt = e.GetCurrentPoint(captureElement); + new Task(() => { AutoFocusAsync((int)pt.Position.X, (int)pt.Position.Y, true); }); + } + + Timer timerPreview; + MediaCapture mediaCapture; + + bool stopping = false; + bool isMediaCaptureInitialized = false; + + volatile bool processing = false; + volatile bool isAnalyzing = false; + + public Action ScanCallback { get; set; } + public MobileBarcodeScanningOptions ScanningOptions { get; set; } + public MobileBarcodeScannerBase Scanner { get; set; } + public UIElement CustomOverlay { get; set; } + public string TopText { get; set; } + public string BottomText { get; set; } + public bool UseCustomOverlay { get; set; } + public bool ContinuousScanning { get; set; } + + public Result LastScanResult { get; set; } + + + public bool IsTorchOn + => HasTorch && mediaCapture.VideoDeviceController.TorchControl.Enabled; + + public bool IsFocusSupported + => mediaCapture != null + && isMediaCaptureInitialized + && mediaCapture.VideoDeviceController != null + && mediaCapture.VideoDeviceController.FocusControl != null + && mediaCapture.VideoDeviceController.FocusControl.Supported; + + async Task SetupAutoFocus() + { + if (IsFocusSupported) + { + var focusControl = mediaCapture.VideoDeviceController.FocusControl; + + var focusSettings = new FocusSettings(); + + if (ScanningOptions.DisableAutofocus) + { + focusSettings.Mode = FocusMode.Manual; + focusSettings.Distance = ManualFocusDistance.Nearest; + focusControl.Configure(focusSettings); + return; + } + + focusSettings.AutoFocusRange = focusControl.SupportedFocusRanges.Contains(AutoFocusRange.FullRange) + ? AutoFocusRange.FullRange + : focusControl.SupportedFocusRanges.FirstOrDefault(); + + var supportedFocusModes = focusControl.SupportedFocusModes; + if (supportedFocusModes.Contains(FocusMode.Continuous)) + { + focusSettings.Mode = FocusMode.Continuous; + } + else if (supportedFocusModes.Contains(FocusMode.Auto)) + { + focusSettings.Mode = FocusMode.Auto; + } + + if (focusSettings.Mode == FocusMode.Continuous || focusSettings.Mode == FocusMode.Auto) + { + focusSettings.WaitForFocus = false; + focusControl.Configure(focusSettings); + await focusControl.FocusAsync(); + } + } + } + + public void Torch(bool on) + { + if (HasTorch) + mediaCapture.VideoDeviceController.TorchControl.Enabled = on; + } + + public void ToggleTorch() + { + if (HasTorch) + Torch(!IsTorchOn); + } + + public bool HasTorch + => mediaCapture != null + && mediaCapture.VideoDeviceController != null + && mediaCapture.VideoDeviceController.TorchControl != null + && mediaCapture.VideoDeviceController.TorchControl.Supported; + + public async void AutoFocus() + => await AutoFocusAsync(0, 0, false); + + public async void AutoFocus(int x, int y) + => await AutoFocusAsync(x, y, true); + + public async Task AutoFocusAsync(int x, int y, bool useCoordinates) + { + if (ScanningOptions.DisableAutofocus) + return; + + if (IsFocusSupported && mediaCapture?.CameraStreamState == CameraStreamState.Streaming) + { + var focusControl = mediaCapture.VideoDeviceController.FocusControl; + var roiControl = mediaCapture.VideoDeviceController.RegionsOfInterestControl; + try + { + if (roiControl.AutoFocusSupported && roiControl.MaxRegions > 0) + { + if (useCoordinates) + { + var props = mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview); + + var previewEncodingProperties = GetPreviewResolution(props); + var previewRect = GetPreviewStreamRectInControl(previewEncodingProperties, captureElement); + var focusPreview = ConvertUiTapToPreviewRect(new Point(x, y), new Size(20, 20), previewRect); + var regionOfInterest = new RegionOfInterest + { + AutoFocusEnabled = true, + BoundsNormalized = true, + Bounds = focusPreview, + Type = RegionOfInterestType.Unknown, + Weight = 100 + }; + await roiControl.SetRegionsAsync(new[] { regionOfInterest }, true); + + var focusRange = focusControl.SupportedFocusRanges.Contains(AutoFocusRange.FullRange) + ? AutoFocusRange.FullRange + : focusControl.SupportedFocusRanges.FirstOrDefault(); + + var focusMode = focusControl.SupportedFocusModes.Contains(FocusMode.Single) + ? FocusMode.Single + : focusControl.SupportedFocusModes.FirstOrDefault(); + + var settings = new FocusSettings + { + Mode = focusMode, + AutoFocusRange = focusRange, + }; + + focusControl.Configure(settings); + } + else + { + // If no region provided, clear any regions and reset focus + await roiControl.ClearRegionsAsync(); + } + } + + await focusControl.FocusAsync(); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine("AutoFocusAsync Error: {0}", ex); + } + } + } + + public async Task StopScanningAsync() + { + if (stopping) + return; + + stopping = true; + isAnalyzing = false; + + displayRequest.RequestRelease(); + + try + { + if (IsTorchOn) + Torch(false); + if (isMediaCaptureInitialized) + await mediaCapture.StopPreviewAsync(); + if (UseCustomOverlay && CustomOverlay != null) + gridCustomOverlay.Children.Remove(CustomOverlay); + } + catch { } + finally + { + //second execution from sample will crash if the object is not properly disposed (always on mobile, sometimes on desktop) + if (mediaCapture != null) + mediaCapture.Dispose(); + } + + //this solves a crash occuring when the user rotates the screen after the QR scanning is closed + displayInformation.OrientationChanged -= DisplayInformation_OrientationChanged; + + if (timerPreview != null) + timerPreview.Change(Timeout.Infinite, Timeout.Infinite); + stopping = false; + } + + public async Task Cancel() + { + LastScanResult = null; + + await StopScanningAsync(); + + ScanCallback?.Invoke(null); + } + + public async void Dispose() + { + await StopScanningAsync(); + gridCustomOverlay?.Children?.Clear(); + } + + protected override void OnTapped(TappedRoutedEventArgs e) + => base.OnTapped(e); + + void ButtonToggleFlash_Click(object sender, RoutedEventArgs e) + => ToggleTorch(); + + /// + /// Gets the current orientation of the UI in relation to the device and applies a corrective rotation to the preview + /// + async Task SetPreviewRotationAsync(IMediaEncodingProperties props) + { + // Only need to update the orientation if the camera is mounted on the device. + if (mediaCapture == null) + return; + + // Calculate which way and how far to rotate the preview. + CalculatePreviewRotation(out var sourceRotation, out var rotationDegrees); + + // Set preview rotation in the preview source. + mediaCapture.SetPreviewRotation(sourceRotation); + + // Add rotation metadata to the preview stream to make sure the aspect ratio / dimensions match when rendering and getting preview frames + //var props = mediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview); + props.Properties.Add(rotationKey, rotationDegrees); + await mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, props); + + var currentPreviewResolution = GetPreviewResolution(props); + // Setup a frame to use as the input settings + videoFrame = new VideoFrame(Windows.Graphics.Imaging.BitmapPixelFormat.Bgra8, (int)currentPreviewResolution.Width, (int)currentPreviewResolution.Height); + } + + Size GetPreviewResolution(IMediaEncodingProperties props) + { + // Get our preview properties + if (props is VideoEncodingProperties previewProperties) + { + var streamWidth = previewProperties.Width; + var streamHeight = previewProperties.Height; + + // For portrait orientations, the width and height need to be swapped + if (displayOrientation == DisplayOrientations.Portrait || displayOrientation == DisplayOrientations.PortraitFlipped) + { + streamWidth = previewProperties.Height; + streamHeight = previewProperties.Width; + } + + return new Size(streamWidth, streamHeight); + } + + return default; + } + + /// + /// Reads the current orientation of the app and calculates the VideoRotation necessary to ensure the preview is rendered in the correct orientation. + /// + /// The rotation value to use in MediaCapture.SetPreviewRotation. + /// The accompanying rotation metadata with which to tag the preview stream. + void CalculatePreviewRotation(out VideoRotation sourceRotation, out int rotationDegrees) + { + // Note that in some cases, the rotation direction needs to be inverted if the preview is being mirrored. + switch (displayInformation.CurrentOrientation) + { + case DisplayOrientations.Portrait: + if (mirroringPreview) + { + rotationDegrees = 270; + sourceRotation = VideoRotation.Clockwise270Degrees; + } + else + { + rotationDegrees = 90; + sourceRotation = VideoRotation.Clockwise90Degrees; + } + break; + + case DisplayOrientations.LandscapeFlipped: + // No need to invert this rotation, as rotating 180 degrees is the same either way. + rotationDegrees = 180; + sourceRotation = VideoRotation.Clockwise180Degrees; + break; + + case DisplayOrientations.PortraitFlipped: + if (mirroringPreview) + { + rotationDegrees = 90; + sourceRotation = VideoRotation.Clockwise90Degrees; + } + else + { + rotationDegrees = 270; + sourceRotation = VideoRotation.Clockwise270Degrees; + } + break; + + case DisplayOrientations.Landscape: + default: + rotationDegrees = 0; + sourceRotation = VideoRotation.None; + break; + } + } + + /// + /// Applies the necessary rotation to a tap on a CaptureElement (with Stretch mode set to Uniform) to account for device orientation + /// + /// The location, in UI coordinates, of the user tap + /// The size, in UI coordinates, of the desired focus rectangle + /// The area within the CaptureElement that is actively showing the preview, and is not part of the letterboxed area + /// A Rect that can be passed to the MediaCapture Focus and RegionsOfInterest APIs, with normalized bounds in the orientation of the native stream + Rect ConvertUiTapToPreviewRect(Point tap, Size size, Rect previewRect) + { + // Adjust for the resulting focus rectangle to be centered around the position + double left = tap.X - size.Width / 2, top = tap.Y - size.Height / 2; + + // Get the information about the active preview area within the CaptureElement (in case it's letterboxed) + double previewWidth = previewRect.Width, previewHeight = previewRect.Height; + double previewLeft = previewRect.Left, previewTop = previewRect.Top; + + // Transform the left and top of the tap to account for rotation + switch (displayOrientation) + { + case DisplayOrientations.Portrait: + var tempLeft = left; + + left = top; + top = previewRect.Width - tempLeft; + break; + case DisplayOrientations.LandscapeFlipped: + left = previewRect.Width - left; + top = previewRect.Height - top; + break; + case DisplayOrientations.PortraitFlipped: + var tempTop = top; + + top = left; + left = previewRect.Width - tempTop; + break; + } + + // For portrait orientations, the information about the active preview area needs to be rotated + if (displayOrientation == DisplayOrientations.Portrait || displayOrientation == DisplayOrientations.PortraitFlipped) + { + previewWidth = previewRect.Height; + previewHeight = previewRect.Width; + previewLeft = previewRect.Top; + previewTop = previewRect.Left; + } + + // Normalize width and height of the focus rectangle + var width = size.Width / previewWidth; + var height = size.Height / previewHeight; + + // Shift rect left and top to be relative to just the active preview area + left -= previewLeft; + top -= previewTop; + + // Normalize left and top + left /= previewWidth; + top /= previewHeight; + + // Ensure rectangle is fully contained within the active preview area horizontally + left = Math.Max(left, 0); + left = Math.Min(1 - width, left); + + // Ensure rectangle is fully contained within the active preview area vertically + top = Math.Max(top, 0); + top = Math.Min(1 - height, top); + + // Create and return resulting rectangle + return new Rect(left, top, width, height); + } + + /// + /// Calculates the size and location of the rectangle that contains the preview stream within the preview control, when the scaling mode is Uniform + /// + /// The resolution at which the preview is running + /// The control that is displaying the preview using Uniform as the scaling mode + /// + static Rect GetPreviewStreamRectInControl(Size previewResolution, CaptureElement previewControl) + { + var result = new Rect(); + + // In case this function is called before everything is initialized correctly, return an empty result + if (previewControl == null || previewControl.ActualHeight < 1 || previewControl.ActualWidth < 1 || + previewResolution.Height < 1 || previewResolution.Width < 1) + { + return result; + } + + var streamWidth = previewResolution.Width; + var streamHeight = previewResolution.Height; + + // Start by assuming the preview display area in the control spans the entire width and height both (this is corrected in the next if for the necessary dimension) + result.Width = previewControl.ActualWidth; + result.Height = previewControl.ActualHeight; + + // If UI is "wider" than preview, letterboxing will be on the sides + if ((previewControl.ActualWidth / previewControl.ActualHeight > streamWidth / (double)streamHeight)) + { + var scale = previewControl.ActualHeight / streamHeight; + var scaledWidth = streamWidth * scale; + + result.X = (previewControl.ActualWidth - scaledWidth) / 2.0; + result.Width = scaledWidth; + } + else // Preview stream is "wider" than UI, so letterboxing will be on the top+bottom + { + var scale = previewControl.ActualWidth / streamWidth; + var scaledHeight = streamHeight * scale; + + result.Y = (previewControl.ActualHeight - scaledHeight) / 2.0; + result.Height = scaledHeight; + } + + return result; + } + } +} diff --git a/ZXing.Net.Mobile/iOS/AVCaptureScannerView.ios.cs b/ZXing.Net.Mobile/iOS/AVCaptureScannerView.ios.cs new file mode 100644 index 000000000..f64f9bb5e --- /dev/null +++ b/ZXing.Net.Mobile/iOS/AVCaptureScannerView.ios.cs @@ -0,0 +1,632 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +using Foundation; +using AVFoundation; +using CoreFoundation; +using CoreGraphics; +using CoreMedia; +using CoreVideo; +using ObjCRuntime; +using UIKit; + +using ZXing.Common; +using ZXing.Mobile; + +namespace ZXing.Mobile +{ + public class AVCaptureScannerView : UIView, IZXingScanner, IScannerSessionHost + { + public AVCaptureScannerView() + { + } + + public AVCaptureScannerView(IntPtr handle) : base(handle) + { + } + + public AVCaptureScannerView(CGRect frame) : base(frame) + { + } + + AVCaptureSession session; + AVCaptureVideoPreviewLayer previewLayer; + //AVCaptureVideoDataOutput output; + //OutputRecorder outputRecorder; + //DispatchQueue queue; + Action resultCallback; + volatile bool stopped = true; + + volatile bool foundResult = false; + CaptureDelegate captureDelegate; + + UIView layerView; + UIView overlayView = null; + + public event Action OnCancelButtonPressed; + + public string CancelButtonText { get; set; } + public string FlashButtonText { get; set; } + + public MobileBarcodeScanningOptions ScanningOptions { get; set; } + + void Setup() + { + if (overlayView != null) + overlayView.RemoveFromSuperview(); + + if (UseCustomOverlayView && CustomOverlayView != null) + overlayView = CustomOverlayView; + else + { + overlayView = new ZXingDefaultOverlayView(new CGRect(0, 0, this.Frame.Width, this.Frame.Height), + TopText, BottomText, CancelButtonText, FlashButtonText, + () => OnCancelButtonPressed?.Invoke(), ToggleTorch); + } + + if (overlayView != null) + { + overlayView.Frame = new CGRect(0, 0, this.Frame.Width, this.Frame.Height); + overlayView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + } + } + + + bool torch = false; + bool analyzing = true; + DateTime lastAnalysis = DateTime.UtcNow.AddYears(-99); + bool wasScanned = false; + bool working = false; + + + bool SetupCaptureSession() + { + var availableResolutions = new List(); + + var consideredResolutions = new Dictionary { + { AVCaptureSession.Preset352x288, new CameraResolution { Width = 352, Height = 288 } }, + { AVCaptureSession.PresetMedium, new CameraResolution { Width = 480, Height = 360 } }, //480x360 + { AVCaptureSession.Preset640x480, new CameraResolution { Width = 640, Height = 480 } }, + { AVCaptureSession.Preset1280x720, new CameraResolution { Width = 1280, Height = 720 } }, + { AVCaptureSession.Preset1920x1080, new CameraResolution { Width = 1920, Height = 1080 } } + }; + + // configure the capture session for low resolution, change this if your code + // can cope with more data or volume + session = new AVCaptureSession() + { + SessionPreset = AVCaptureSession.Preset640x480 + }; + + // create a device input and attach it to the session + // var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType (AVMediaType.Video); + AVCaptureDevice captureDevice = null; + var devices = AVCaptureDevice.DevicesWithMediaType(AVMediaType.Video); + foreach (var device in devices) + { + captureDevice = device; + if (ScanningOptions.UseFrontCameraIfAvailable.HasValue && + ScanningOptions.UseFrontCameraIfAvailable.Value && + device.Position == AVCaptureDevicePosition.Front) + + break; //Front camera successfully set + else if (device.Position == AVCaptureDevicePosition.Back && (!ScanningOptions.UseFrontCameraIfAvailable.HasValue || !ScanningOptions.UseFrontCameraIfAvailable.Value)) + break; //Back camera succesfully set + } + if (captureDevice == null) + { + Console.WriteLine("No captureDevice - this won't work on the simulator, try a physical device"); + if (overlayView != null) + { + AddSubview(overlayView); + BringSubviewToFront(overlayView); + } + return false; + } + + CameraResolution resolution = null; + + // Find resolution + // Go through the resolutions we can even consider + foreach (var cr in consideredResolutions) + { + // Now check to make sure our selected device supports the resolution + // so we can add it to the list to pick from + if (captureDevice.SupportsAVCaptureSessionPreset(cr.Key)) + availableResolutions.Add(cr.Value); + } + + resolution = ScanningOptions.GetResolution(availableResolutions); + + // See if the user selected a resolution + if (resolution != null) + { + // Now get the preset string from the resolution chosen + var preset = (from c in consideredResolutions + where c.Value.Width == resolution.Width + && c.Value.Height == resolution.Height + select c.Key).FirstOrDefault(); + + // If we found a matching preset, let's set it on the session + if (!string.IsNullOrEmpty(preset)) + session.SessionPreset = preset; + } + + var input = AVCaptureDeviceInput.FromDevice(captureDevice); + if (input == null) + { + Console.WriteLine("No input - this won't work on the simulator, try a physical device"); + if (overlayView != null) + { + AddSubview(overlayView); + BringSubviewToFront(overlayView); + } + return false; + } + else + session.AddInput(input); + + + foundResult = false; + //Detect barcodes with built in avcapture stuff + var metadataOutput = new AVCaptureMetadataOutput(); + + captureDelegate = new CaptureDelegate(metaDataObjects => + { + if (!analyzing) + return; + + var msSinceLastPreview = (DateTime.UtcNow - lastAnalysis).TotalMilliseconds; + + if (msSinceLastPreview < ScanningOptions.DelayBetweenAnalyzingFrames + || (wasScanned && msSinceLastPreview < ScanningOptions.DelayBetweenContinuousScans) + || working) + return; + + try + { + working = true; + wasScanned = false; + lastAnalysis = DateTime.UtcNow; + + var mdo = metaDataObjects.FirstOrDefault(); + + if (!(mdo is AVMetadataMachineReadableCodeObject readableObj)) + return; + + if (readableObj.Type == AVMetadataObjectType.CatBody + || readableObj.Type == AVMetadataObjectType.DogBody + || readableObj.Type == AVMetadataObjectType.Face + || readableObj.Type == AVMetadataObjectType.HumanBody + || readableObj.Type == AVMetadataObjectType.SalientObject) + return; + + wasScanned = true; + + var zxingFormat = ZXingBarcodeFormatFromAVCaptureBarcodeFormat(readableObj.Type.ToString()); + + var rs = new ZXing.Result(readableObj.StringValue, null, null, zxingFormat); + + resultCallback(rs); + } + finally + { + working = false; + } + }); + + metadataOutput.SetDelegate(captureDelegate, DispatchQueue.MainQueue); + session.AddOutput(metadataOutput); + + //Setup barcode formats + if (ScanningOptions.PossibleFormats != null && ScanningOptions.PossibleFormats.Count > 0) + { + var formats = AVMetadataObjectType.None; + + foreach (var f in ScanningOptions.PossibleFormats) + formats |= AVCaptureBarcodeFormatFromZXingBarcodeFormat(f); + + formats &= ~AVMetadataObjectType.None; + + metadataOutput.MetadataObjectTypes = formats; + } + else + { + var availableMetaObjTypes = metadataOutput.AvailableMetadataObjectTypes; + + + metadataOutput.MetadataObjectTypes = metadataOutput.AvailableMetadataObjectTypes; + + + } + + previewLayer = new AVCaptureVideoPreviewLayer(session); + previewLayer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill; + previewLayer.Frame = new CGRect(0, 0, this.Frame.Width, this.Frame.Height); + previewLayer.Position = new CGPoint(this.Layer.Bounds.Width / 2, (this.Layer.Bounds.Height / 2)); + + layerView = new UIView(new CGRect(0, 0, this.Frame.Width, this.Frame.Height)); + layerView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + layerView.Layer.AddSublayer(previewLayer); + + AddSubview(layerView); + + ResizePreview(UIApplication.SharedApplication.StatusBarOrientation); + + if (overlayView != null) + { + AddSubview(overlayView); + BringSubviewToFront(overlayView); + } + + session.StartRunning(); + + if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus)) + { + NSError err = null; + if (captureDevice.LockForConfiguration(out err)) + { + if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus)) + captureDevice.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus; + else if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.AutoFocus)) + captureDevice.FocusMode = AVCaptureFocusMode.AutoFocus; + + if (captureDevice.IsExposureModeSupported(AVCaptureExposureMode.ContinuousAutoExposure)) + captureDevice.ExposureMode = AVCaptureExposureMode.ContinuousAutoExposure; + else if (captureDevice.IsExposureModeSupported(AVCaptureExposureMode.AutoExpose)) + captureDevice.ExposureMode = AVCaptureExposureMode.AutoExpose; + + if (captureDevice.IsWhiteBalanceModeSupported(AVCaptureWhiteBalanceMode.ContinuousAutoWhiteBalance)) + captureDevice.WhiteBalanceMode = AVCaptureWhiteBalanceMode.ContinuousAutoWhiteBalance; + else if (captureDevice.IsWhiteBalanceModeSupported(AVCaptureWhiteBalanceMode.AutoWhiteBalance)) + captureDevice.WhiteBalanceMode = AVCaptureWhiteBalanceMode.AutoWhiteBalance; + + if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0) && captureDevice.AutoFocusRangeRestrictionSupported) + captureDevice.AutoFocusRangeRestriction = AVCaptureAutoFocusRangeRestriction.Near; + + if (captureDevice.FocusPointOfInterestSupported) + captureDevice.FocusPointOfInterest = new CGPoint(0.5f, 0.5f); + + if (captureDevice.ExposurePointOfInterestSupported) + captureDevice.ExposurePointOfInterest = new CGPoint(0.5f, 0.5f); + + captureDevice.UnlockForConfiguration(); + } + else + Console.WriteLine("Failed to Lock for Config: " + err.Description); + } + + return true; + } + + public void DidRotate(UIInterfaceOrientation orientation) + { + ResizePreview(orientation); + + LayoutSubviews(); + } + + public void ResizePreview(UIInterfaceOrientation orientation) + { + if (previewLayer == null) + return; + + previewLayer.Frame = new CGRect(0, 0, Frame.Width, Frame.Height); + + if (previewLayer.RespondsToSelector(new Selector("connection")) && previewLayer.Connection != null) + { + switch (orientation) + { + case UIInterfaceOrientation.LandscapeLeft: + previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.LandscapeLeft; + break; + case UIInterfaceOrientation.LandscapeRight: + previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.LandscapeRight; + break; + case UIInterfaceOrientation.Portrait: + previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.Portrait; + break; + case UIInterfaceOrientation.PortraitUpsideDown: + previewLayer.Connection.VideoOrientation = AVCaptureVideoOrientation.PortraitUpsideDown; + break; + } + } + } + + public void Focus(CGPoint pointOfInterest) + { + //Get the device + if (AVMediaType.Video == null) + return; + + var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); + + if (device == null) + return; + + //See if it supports focusing on a point + if (device.FocusPointOfInterestSupported && !device.AdjustingFocus) + { + NSError err = null; + + //Lock device to config + if (device.LockForConfiguration(out err)) + { + Console.WriteLine("Focusing at point: " + pointOfInterest.X + ", " + pointOfInterest.Y); + + //Focus at the point touched + device.FocusPointOfInterest = pointOfInterest; + device.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus; + device.UnlockForConfiguration(); + } + } + } + + #region IZXingScanner implementation + public void StartScanning(Action scanResultHandler, MobileBarcodeScanningOptions options = null) + { + if (!analyzing) + analyzing = true; + + if (!stopped) + return; + + Setup(); + + ScanningOptions = options; + resultCallback = scanResultHandler; + + InvokeOnMainThread(() => + { + if (!SetupCaptureSession()) + { + //Setup 'simulated' view: + Console.WriteLine("Capture Session FAILED"); + } + + if (Runtime.Arch == Arch.SIMULATOR) + { + var simView = new UIView(new CGRect(0, 0, this.Frame.Width, this.Frame.Height)); + simView.BackgroundColor = UIColor.LightGray; + simView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + InsertSubview(simView, 0); + } + }); + + stopped = false; + } + + + public void StopScanning() + { + if (stopped) + return; + + Console.WriteLine("Stopping..."); + + //Try removing all existing outputs prior to closing the session + try + { + while (session.Outputs.Length > 0) + session.RemoveOutput(session.Outputs[0]); + } + catch { } + + //Try to remove all existing inputs prior to closing the session + try + { + while (session.Inputs.Length > 0) + session.RemoveInput(session.Inputs[0]); + } + catch { } + + if (session.Running) + session.StopRunning(); + + stopped = true; + } + + public void PauseAnalysis() + => analyzing = false; + + public void ResumeAnalysis() + => analyzing = true; + + public void Torch(bool on) + { + try + { + var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); + if (device.HasFlash || device.HasTorch) + { + device.LockForConfiguration(out var err); + + if (on) + { + if (device.HasTorch) + device.TorchMode = AVCaptureTorchMode.On; + if (device.HasFlash) + device.FlashMode = AVCaptureFlashMode.On; + } + else + { + if (device.HasTorch) + device.TorchMode = AVCaptureTorchMode.Off; + if (device.HasFlash) + device.FlashMode = AVCaptureFlashMode.Off; + } + + device.UnlockForConfiguration(); + } + device = null; + + torch = on; + } + catch { } + } + + public void ToggleTorch() + => Torch(!IsTorchOn); + + public void AutoFocus() + { + //Doesn't do much on iOS :( + } + + public void AutoFocus(int x, int y) + { + //Doesn't do much on iOS :( + } + + public string TopText { get; set; } + public string BottomText { get; set; } + + + public UIView CustomOverlayView { get; set; } + public bool UseCustomOverlayView { get; set; } + public bool IsAnalyzing => analyzing; + public bool IsTorchOn => torch; + + bool? hasTorch = null; + + public bool HasTorch + { + get + { + if (hasTorch.HasValue) + return hasTorch.Value; + + var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); + hasTorch = device.HasFlash || device.HasTorch; + return hasTorch.Value; + } + } + #endregion + + public static bool SupportsAllRequestedBarcodeFormats(IEnumerable formats) + { + var supported = new List() { + BarcodeFormat.AZTEC, BarcodeFormat.CODE_128, BarcodeFormat.CODE_39, + BarcodeFormat.CODE_93, BarcodeFormat.EAN_13, BarcodeFormat.EAN_8, + BarcodeFormat.PDF_417, BarcodeFormat.QR_CODE, BarcodeFormat.UPC_E, + BarcodeFormat.DATA_MATRIX, BarcodeFormat.ITF, + BarcodeFormat.All_1D + }; + + return !formats.Any(f => !supported.Contains(f)); + } + + BarcodeFormat ZXingBarcodeFormatFromAVCaptureBarcodeFormat(string avMetadataObjectType) + { + switch (avMetadataObjectType) + { + case "AztecCode": + return BarcodeFormat.AZTEC; + case "Code128Code": + return BarcodeFormat.CODE_128; + case "Code39Code": + return BarcodeFormat.CODE_39; + case "Code39Mod43Code": + return BarcodeFormat.CODE_39; + case "Code93Code": + return BarcodeFormat.CODE_93; + case "EAN13Code": + return BarcodeFormat.EAN_13; + case "EAN8Code": + return BarcodeFormat.EAN_8; + case "PDF417Code": + return BarcodeFormat.PDF_417; + case "QRCode": + return BarcodeFormat.QR_CODE; + case "UPCECode": + return BarcodeFormat.UPC_E; + case "DataMatrixCode": + return BarcodeFormat.DATA_MATRIX; + case "Interleaved2of5Code": + return BarcodeFormat.ITF; + default: + return BarcodeFormat.QR_CODE; + } + } + + AVMetadataObjectType AVCaptureBarcodeFormatFromZXingBarcodeFormat(BarcodeFormat zxingBarcodeFormat) + { + var formats = AVMetadataObjectType.None; + + switch (zxingBarcodeFormat) + { + case BarcodeFormat.AZTEC: + formats |= AVMetadataObjectType.AztecCode; + break; + case BarcodeFormat.CODE_128: + formats |= AVMetadataObjectType.Code128Code; + break; + case BarcodeFormat.CODE_39: + formats |= AVMetadataObjectType.Code39Code; + formats |= AVMetadataObjectType.Code39Mod43Code; + break; + case BarcodeFormat.CODE_93: + formats |= AVMetadataObjectType.Code93Code; + break; + case BarcodeFormat.EAN_13: + formats |= AVMetadataObjectType.EAN13Code; + break; + case BarcodeFormat.EAN_8: + formats |= AVMetadataObjectType.EAN8Code; + break; + case BarcodeFormat.PDF_417: + formats |= AVMetadataObjectType.PDF417Code; + break; + case BarcodeFormat.QR_CODE: + formats |= AVMetadataObjectType.QRCode; + break; + case BarcodeFormat.UPC_E: + formats |= AVMetadataObjectType.UPCECode; + break; + case BarcodeFormat.All_1D: + formats |= AVMetadataObjectType.UPCECode; + formats |= AVMetadataObjectType.EAN13Code; + formats |= AVMetadataObjectType.EAN8Code; + formats |= AVMetadataObjectType.Code39Code; + formats |= AVMetadataObjectType.Code39Mod43Code; + formats |= AVMetadataObjectType.Code93Code; + break; + case BarcodeFormat.DATA_MATRIX: + formats |= AVMetadataObjectType.DataMatrixCode; + break; + case BarcodeFormat.ITF: + formats |= AVMetadataObjectType.ITF14Code; + break; + case BarcodeFormat.CODABAR: + case BarcodeFormat.MAXICODE: + case BarcodeFormat.MSI: + case BarcodeFormat.PLESSEY: + case BarcodeFormat.RSS_14: + case BarcodeFormat.RSS_EXPANDED: + case BarcodeFormat.UPC_A: + //TODO: Throw exception? + break; + } + + return formats; + } + } + + class CaptureDelegate : AVCaptureMetadataOutputObjectsDelegate + { + public CaptureDelegate(Action> onCapture) + => OnCapture = onCapture; + + public Action> OnCapture { get; set; } + + public override void DidOutputMetadataObjects(AVCaptureMetadataOutput captureOutput, AVMetadataObject[] metadataObjects, AVCaptureConnection connection) + { + if (OnCapture != null && metadataObjects != null) + OnCapture(metadataObjects); + } + } +} + diff --git a/ZXing.Net.Mobile/iOS/AVCaptureScannerViewController.ios.cs b/ZXing.Net.Mobile/iOS/AVCaptureScannerViewController.ios.cs new file mode 100644 index 000000000..e24228c7b --- /dev/null +++ b/ZXing.Net.Mobile/iOS/AVCaptureScannerViewController.ios.cs @@ -0,0 +1,175 @@ +using System; +using System.Drawing; +using System.Text; +using System.Collections.Generic; + +using UIKit; +using Foundation; +using AVFoundation; +using CoreGraphics; + +using ZXing; + +namespace ZXing.Mobile +{ + public class AVCaptureScannerViewController : UIViewController, IScannerViewController + { + AVCaptureScannerView scannerView; + + public event Action OnScannedResult; + + public MobileBarcodeScanningOptions ScanningOptions { get; set; } + public MobileBarcodeScanner Scanner { get; set; } + public bool ContinuousScanning { get; set; } + + UIActivityIndicatorView loadingView; + UIView loadingBg; + + public AVCaptureScannerViewController(MobileBarcodeScanningOptions options, MobileBarcodeScanner scanner) + { + ScanningOptions = options; + Scanner = scanner; + + var appFrame = UIScreen.MainScreen.ApplicationFrame; + + View.Frame = new CGRect(0, 0, appFrame.Width, appFrame.Height); + View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + } + + public UIViewController AsViewController() + => this; + + public void Cancel() + => InvokeOnMainThread(() => scannerView.StopScanning()); + + UIStatusBarStyle originalStatusBarStyle = UIStatusBarStyle.Default; + + public override void ViewDidLoad() + { + loadingBg = new UIView(this.View.Frame) + { + BackgroundColor = UIColor.Black, + AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight + }; + loadingView = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge) + { + AutoresizingMask = UIViewAutoresizing.FlexibleMargins + }; + loadingView.Frame = new CGRect((View.Frame.Width - loadingView.Frame.Width) / 2, + (View.Frame.Height - loadingView.Frame.Height) / 2, + loadingView.Frame.Width, + loadingView.Frame.Height); + + loadingBg.AddSubview(loadingView); + View.AddSubview(loadingBg); + loadingView.StartAnimating(); + + scannerView = new AVCaptureScannerView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height)) + { + AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight, + UseCustomOverlayView = Scanner.UseCustomOverlay, + CustomOverlayView = Scanner.CustomOverlay, + TopText = Scanner.TopText, + BottomText = Scanner.BottomText, + CancelButtonText = Scanner.CancelButtonText, + FlashButtonText = Scanner.FlashButtonText + }; + scannerView.OnCancelButtonPressed += () => + Scanner.Cancel(); + + View.AddSubview(scannerView); + View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + } + + public void Torch(bool on) + => scannerView?.Torch(on); + + public void ToggleTorch() + => scannerView?.ToggleTorch(); + + public bool IsTorchOn + => scannerView?.IsTorchOn ?? false; + + public void PauseAnalysis() + => scannerView?.PauseAnalysis(); + + public void ResumeAnalysis() + => scannerView?.ResumeAnalysis(); + + public override void ViewDidAppear(bool animated) + { + originalStatusBarStyle = UIApplication.SharedApplication.StatusBarStyle; + + if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0)) + { + UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.Default; + SetNeedsStatusBarAppearanceUpdate(); + } + else + UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.BlackTranslucent, false); + + Console.WriteLine("Starting to scan..."); + + scannerView.StartScanning(result => + { + if (!ContinuousScanning) + { + Console.WriteLine("Stopping scan..."); + scannerView.StopScanning(); + } + + OnScannedResult?.Invoke(result); + }, ScanningOptions); + } + + public override void ViewDidDisappear(bool animated) + { + if (scannerView != null) + scannerView.StopScanning(); + } + + public override void ViewWillDisappear(bool animated) + => UIApplication.SharedApplication.SetStatusBarStyle(originalStatusBarStyle, false); + + public override void DidRotate(UIInterfaceOrientation fromInterfaceOrientation) + { + if (scannerView != null) + scannerView.DidRotate(this.InterfaceOrientation); + } + + public override bool ShouldAutorotate() + { + if (ScanningOptions.AutoRotate != null) + return (bool)ScanningOptions.AutoRotate; + + return false; + } + + public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() + => UIInterfaceOrientationMask.All; + + //void HandleOnScannerSetupComplete() + //{ + // BeginInvokeOnMainThread(() => + // { + // if (loadingView != null && loadingBg != null && loadingView.IsAnimating) + // { + // loadingView.StopAnimating(); + + // UIView.BeginAnimations("zoomout"); + + // UIView.SetAnimationDuration(2.0f); + // UIView.SetAnimationCurve(UIViewAnimationCurve.EaseOut); + + // loadingBg.Transform = CGAffineTransform.MakeScale(2.0f, 2.0f); + // loadingBg.Alpha = 0.0f; + + // UIView.CommitAnimations(); + + // loadingBg.RemoveFromSuperview(); + // } + // }); + //} + } +} + diff --git a/Source/ZXing.Net.Mobile.iOS/BarcodeWriter.cs b/ZXing.Net.Mobile/iOS/BarcodeWriter.ios.cs similarity index 58% rename from Source/ZXing.Net.Mobile.iOS/BarcodeWriter.cs rename to ZXing.Net.Mobile/iOS/BarcodeWriter.ios.cs index e03a61ea8..ea70e0fa2 100644 --- a/Source/ZXing.Net.Mobile.iOS/BarcodeWriter.cs +++ b/ZXing.Net.Mobile/iOS/BarcodeWriter.ios.cs @@ -15,26 +15,21 @@ */ using ZXing.Rendering; - -#if __UNIFIED__ using UIKit; -#else -using MonoTouch.UIKit; -#endif namespace ZXing.Mobile -{ - /// - /// A smart class to encode some content to a barcode image - /// - public class BarcodeWriter : BarcodeWriter, IBarcodeWriter - { - /// - /// Initializes a new instance of the class. - /// - public BarcodeWriter() - { - Renderer = new BitmapRenderer(); - } - } +{ + /// + /// A smart class to encode some content to a barcode image + /// + public class BarcodeWriter : BarcodeWriter, IBarcodeWriter + { + /// + /// Initializes a new instance of the class. + /// + public BarcodeWriter() + { + Renderer = new BitmapRenderer(); + } + } } diff --git a/ZXing.Net.Mobile/iOS/BitmapRenderer.ios.cs b/ZXing.Net.Mobile/iOS/BitmapRenderer.ios.cs new file mode 100644 index 000000000..8b9831fec --- /dev/null +++ b/ZXing.Net.Mobile/iOS/BitmapRenderer.ios.cs @@ -0,0 +1,42 @@ +using System; +using ZXing.Rendering; + +using Foundation; +using CoreFoundation; +using CoreGraphics; +using UIKit; + +using ZXing.Common; + +namespace ZXing.Mobile +{ + public class BitmapRenderer : IBarcodeRenderer + { + public UIImage Render(BitMatrix matrix, BarcodeFormat format, string content) + => Render(matrix, format, content, new EncodingOptions()); + + public UIImage Render(BitMatrix matrix, BarcodeFormat format, string content, EncodingOptions options) + { + UIGraphics.BeginImageContext(new CGSize(matrix.Width, matrix.Height)); + var context = UIGraphics.GetCurrentContext(); + + var black = new CGColor(0f, 0f, 0f); + var white = new CGColor(1.0f, 1.0f, 1.0f); + + for (var x = 0; x < matrix.Width; x++) + { + for (var y = 0; y < matrix.Height; y++) + { + context.SetFillColor(matrix[x, y] ? black : white); + context.FillRect(new CGRect(x, y, 1, 1)); + } + } + + var img = UIGraphics.GetImageFromCurrentImageContext(); + + UIGraphics.EndImageContext(); + + return img; + } + } +} diff --git a/ZXing.Net.Mobile/iOS/CVPixelBufferBGRA32LuminanceSource.ios.cs b/ZXing.Net.Mobile/iOS/CVPixelBufferBGRA32LuminanceSource.ios.cs new file mode 100644 index 000000000..23867d963 --- /dev/null +++ b/ZXing.Net.Mobile/iOS/CVPixelBufferBGRA32LuminanceSource.ios.cs @@ -0,0 +1,34 @@ +using System; +using System.Runtime.InteropServices; +using CoreVideo; +using ZXing; + +namespace ZXing.Mobile +{ + public class CVPixelBufferBGRA32LuminanceSource : BaseLuminanceSource + { + public unsafe CVPixelBufferBGRA32LuminanceSource(byte* cvPixelByteArray, int cvPixelByteArrayLength, int width, int height) + : base(width, height) => CalculateLuminance(cvPixelByteArray, cvPixelByteArrayLength); + + public CVPixelBufferBGRA32LuminanceSource(byte[] luminances, int width, int height) : base(luminances, width, height) + { + } + + unsafe void CalculateLuminance(byte* rgbRawBytes, int bytesLen) + { + for (int rgbIndex = 0, luminanceIndex = 0; rgbIndex < bytesLen && luminanceIndex < luminances.Length; luminanceIndex++) + { + // Calculate luminance cheaply, favoring green. + var b = rgbRawBytes[rgbIndex++]; + var g = rgbRawBytes[rgbIndex++]; + var r = rgbRawBytes[rgbIndex++]; + var alpha = rgbRawBytes[rgbIndex++]; + var luminance = (byte)((RChannelWeight * r + GChannelWeight * g + BChannelWeight * b) >> ChannelWeight); + luminances[luminanceIndex] = (byte)(((luminance * alpha) >> 8) + (255 * (255 - alpha) >> 8)); + } + } + + protected override LuminanceSource CreateLuminanceSource(byte[] newLuminances, int width, int height) + => new CVPixelBufferBGRA32LuminanceSource(newLuminances, width, height); + } +} diff --git a/Source/ZXing.Net.Mobile.iOS/IScannerViewController.cs b/ZXing.Net.Mobile/iOS/IScannerViewController.ios.cs similarity index 57% rename from Source/ZXing.Net.Mobile.iOS/IScannerViewController.cs rename to ZXing.Net.Mobile/iOS/IScannerViewController.ios.cs index f2817f5ac..9836ee5f6 100644 --- a/Source/ZXing.Net.Mobile.iOS/IScannerViewController.cs +++ b/ZXing.Net.Mobile/iOS/IScannerViewController.ios.cs @@ -12,15 +12,15 @@ public interface IScannerViewController void Cancel(); bool IsTorchOn { get; } - bool ContinuousScanning { get;set; } + bool ContinuousScanning { get; set; } - void PauseAnalysis (); - void ResumeAnalysis (); + void PauseAnalysis(); + void ResumeAnalysis(); event Action OnScannedResult; - MobileBarcodeScanningOptions ScanningOptions { get;set; } - MobileBarcodeScanner Scanner { get;set; } + MobileBarcodeScanningOptions ScanningOptions { get; set; } + MobileBarcodeScanner Scanner { get; set; } UIViewController AsViewController(); } diff --git a/ZXing.Net.Mobile/iOS/MobileBarcodeScanner.ios.cs b/ZXing.Net.Mobile/iOS/MobileBarcodeScanner.ios.cs new file mode 100644 index 000000000..09adb58ac --- /dev/null +++ b/ZXing.Net.Mobile/iOS/MobileBarcodeScanner.ios.cs @@ -0,0 +1,224 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +using Foundation; +using CoreFoundation; +using UIKit; + +namespace ZXing.Mobile +{ + public partial class MobileBarcodeScanner : MobileBarcodeScannerBase + { + IScannerViewController viewController; + + WeakReference weakAppController; + ManualResetEvent scanResultResetEvent = new ManualResetEvent(false); + + public MobileBarcodeScanner(UIViewController delegateController) + => weakAppController = new WeakReference(delegateController); + + public MobileBarcodeScanner() + { + foreach (var window in UIApplication.SharedApplication.Windows) + { + if (window.RootViewController != null) + { + weakAppController = new WeakReference(window.RootViewController); + break; + } + } + } + + public Task Scan(bool useAVCaptureEngine) + => Scan(new MobileBarcodeScanningOptions(), useAVCaptureEngine); + + + Task PlatformScan(MobileBarcodeScanningOptions options) + => Scan(options, false); + + void PlatformScanContinuously(MobileBarcodeScanningOptions options, Action scanHandler) + => InternalScanContinuously(options, false, scanHandler); + + public void ScanContinuously(MobileBarcodeScanningOptions options, bool useAVCaptureEngine, Action scanHandler) + => InternalScanContinuously(options, useAVCaptureEngine, scanHandler); + + void InternalScanContinuously(MobileBarcodeScanningOptions options, bool useAVCaptureEngine, Action scanHandler) + { + try + { + var sv = new Version(0, 0, 0); + Version.TryParse(UIDevice.CurrentDevice.SystemVersion, out sv); + + var is7orgreater = sv.Major >= 7; + var allRequestedFormatsSupported = true; + + if (useAVCaptureEngine) + allRequestedFormatsSupported = AVCaptureScannerView.SupportsAllRequestedBarcodeFormats(options.PossibleFormats); + + UIViewController appController; + if (weakAppController.TryGetTarget(out appController)) + { + var tcs = new TaskCompletionSource(); + + appController.InvokeOnMainThread(() => + { + if (useAVCaptureEngine && is7orgreater && allRequestedFormatsSupported) + { + viewController = new AVCaptureScannerViewController(options, this); + viewController.ContinuousScanning = true; + } + else + { + if (useAVCaptureEngine && !is7orgreater) + Console.WriteLine("Not iOS 7 or greater, cannot use AVCapture for barcode decoding, using ZXing instead"); + else if (useAVCaptureEngine && !allRequestedFormatsSupported) + Console.WriteLine("Not all requested barcode formats were supported by AVCapture, using ZXing instead"); + + viewController = new ZXing.Mobile.ZXingScannerViewController(options, this); + viewController.ContinuousScanning = true; + } + + viewController.OnScannedResult += barcodeResult => + { + // If null, stop scanning was called + if (barcodeResult == null) + { + ((UIViewController)viewController).InvokeOnMainThread(() => + { + ((UIViewController)viewController).DismissViewController(true, null); + }); + } + + scanHandler(barcodeResult); + }; + + appController.PresentViewController((UIViewController)viewController, true, null); + }); + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + } + + public Task Scan(MobileBarcodeScanningOptions options, bool useAVCaptureEngine) => Task.Factory.StartNew(() => + { + try + { + scanResultResetEvent.Reset(); + + Result result = null; + + var sv = new Version(0, 0, 0); + Version.TryParse(UIDevice.CurrentDevice.SystemVersion, out sv); + + var is7orgreater = sv.Major >= 7; + var allRequestedFormatsSupported = true; + + if (useAVCaptureEngine) + allRequestedFormatsSupported = AVCaptureScannerView.SupportsAllRequestedBarcodeFormats(options.PossibleFormats); + + if (weakAppController.TryGetTarget(out var appController)) + { + appController.InvokeOnMainThread(() => + { + + + if (useAVCaptureEngine && is7orgreater && allRequestedFormatsSupported) + { + viewController = new AVCaptureScannerViewController(options, this); + } + else + { + if (useAVCaptureEngine && !is7orgreater) + Console.WriteLine("Not iOS 7 or greater, cannot use AVCapture for barcode decoding, using ZXing instead"); + else if (useAVCaptureEngine && !allRequestedFormatsSupported) + Console.WriteLine("Not all requested barcode formats were supported by AVCapture, using ZXing instead"); + + viewController = new ZXing.Mobile.ZXingScannerViewController(options, this); + } + + viewController.OnScannedResult += barcodeResult => + { + + ((UIViewController)viewController).InvokeOnMainThread(() => + { + + viewController.Cancel(); + + // Handle error situation that occurs when user manually closes scanner in the same moment that a QR code is detected + try + { + ((UIViewController)viewController).DismissViewController(true, () => + { + result = barcodeResult; + scanResultResetEvent.Set(); + }); + } + catch (ObjectDisposedException) + { + // In all likelihood, iOS has decided to close the scanner at this point. But just in case it executes the + // post-scan code instead, set the result so we will not get a NullReferenceException. + result = barcodeResult; + scanResultResetEvent.Set(); + } + }); + }; + + appController.PresentViewController((UIViewController)viewController, true, null); + }); + } + + scanResultResetEvent.WaitOne(); + ((UIViewController)viewController).Dispose(); + + return result; + } + catch (Exception ex) + { + Console.WriteLine(ex); + return null; + } + }); + + void PlatformCancel() + { + if (viewController != null) + { + ((UIViewController)viewController).InvokeOnMainThread(() => + { + viewController.Cancel(); + + // Calling with animated:true here will result in a blank screen when the scanner is closed on iOS 7. + ((UIViewController)viewController).DismissViewController(true, null); + }); + } + + scanResultResetEvent.Set(); + } + + void PlatformTorch(bool on) + => viewController?.Torch(on); + + void PlatformToggleTorch() + => viewController?.ToggleTorch(); + + void PlatformAutoFocus() + { + //Does nothing on iOS + } + + void PlatformPauseAnalysis() + => viewController?.PauseAnalysis(); + + void PlatformResumeAnalysis() + => viewController?.ResumeAnalysis(); + + bool PlatformIsTorchOn + => viewController.IsTorchOn; + + public UIView CustomOverlay { get; set; } + } +} diff --git a/ZXing.Net.Mobile/iOS/RGBLuminanceSourceiOS.ios.cs b/ZXing.Net.Mobile/iOS/RGBLuminanceSourceiOS.ios.cs new file mode 100644 index 000000000..755d86d3c --- /dev/null +++ b/ZXing.Net.Mobile/iOS/RGBLuminanceSourceiOS.ios.cs @@ -0,0 +1,43 @@ +using System; +using System.Runtime.InteropServices; + +using UIKit; +using CoreGraphics; + +namespace ZXing.Mobile +{ + public class RGBLuminanceSourceiOS : RGBLuminanceSource + { + public RGBLuminanceSourceiOS(UIImage d) + : base((int)d.CGImage.Width, (int)d.CGImage.Height) + => CalculateLuminance(d); + + void CalculateLuminance(UIImage d) + { + var imageRef = d.CGImage; + var width = (int)imageRef.Width; + var height = (int)imageRef.Height; + var colorSpace = CGColorSpace.CreateDeviceRGB(); + + var rawData = Marshal.AllocHGlobal(height * width * 4); + + try + { + var flags = CGBitmapFlags.PremultipliedFirst | CGBitmapFlags.ByteOrder32Little; + var context = new CGBitmapContext(rawData, width, height, 8, 4 * width, + colorSpace, (CGImageAlphaInfo)flags); + + context.DrawImage(new CGRect(0.0f, 0.0f, (float)width, (float)height), imageRef); + var pixelData = new byte[height * width * 4]; + Marshal.Copy(rawData, pixelData, 0, pixelData.Length); + + CalculateLuminance(pixelData, BitmapFormat.BGRA32); + } + finally + { + Marshal.FreeHGlobal(rawData); + } + } + } +} + diff --git a/Source/ZXing.Net.Mobile.iOS/ZXingDefaultOverlayView.cs b/ZXing.Net.Mobile/iOS/ZXingDefaultOverlayView.ios.cs similarity index 58% rename from Source/ZXing.Net.Mobile.iOS/ZXingDefaultOverlayView.cs rename to ZXing.Net.Mobile/iOS/ZXingDefaultOverlayView.ios.cs index d0b7ae323..0604461b1 100644 --- a/Source/ZXing.Net.Mobile.iOS/ZXingDefaultOverlayView.cs +++ b/ZXing.Net.Mobile/iOS/ZXingDefaultOverlayView.ios.cs @@ -13,27 +13,27 @@ namespace ZXing.Mobile { public class ZXingDefaultOverlayView : UIView { - public ZXingDefaultOverlayView (CGRect frame, string topText, - string bottomText, string cancelText, string flashText, - Action onCancel, Action onTorch) : base(frame) + public ZXingDefaultOverlayView(CGRect frame, string topText, + string bottomText, string cancelText, string flashText, + Action onCancel, Action onTorch) : base(frame) { this.cancelText = cancelText ?? "Cancel"; this.flashText = flashText ?? "Flash"; this.topText = topText ?? ""; this.bottomText = bottomText ?? ""; - OnCancel = onCancel; - OnTorch = onTorch; + this.onCancel = onCancel; + this.onTorch = onTorch; Initialize(); } - string cancelText; - string flashText; - string topText; - string bottomText; + readonly string cancelText; + readonly string flashText; + readonly string topText; + readonly string bottomText; - Action OnCancel; - Action OnTorch; + readonly Action onCancel; + readonly Action onTorch; UIView topBg; UIView bottomBg; @@ -41,57 +41,55 @@ public ZXingDefaultOverlayView (CGRect frame, string topText, UILabel textBottom; UIView redLine; - private void Initialize () - { + void Initialize() + { Opaque = false; BackgroundColor = UIColor.Clear; - - //Add(_mainView); - var picFrameWidth = Math.Round(Frame.Width * 0.90); //screenFrame.Width; + + // Add(_mainView); + var picFrameWidth = Math.Round(Frame.Width * 0.90); // screenFrame.Width; var picFrameHeight = Math.Round(Frame.Height * 0.60); var picFrameX = (Frame.Width - picFrameWidth) / 2; var picFrameY = (Frame.Height - picFrameHeight) / 2; - - var picFrame = new CGRect((int)picFrameX, (int)picFrameY, (int)picFrameWidth, (int)picFrameHeight); + var picFrame = new CGRect((int)picFrameX, (int)picFrameY, (int)picFrameWidth, (int)picFrameHeight); //Setup Overlay - var overlaySize = new CGSize (this.Frame.Width, this.Frame.Height - 44); - - topBg = new UIView (new CGRect (0, 0, overlaySize.Width, (overlaySize.Height - picFrame.Height) / 2)); - topBg.Frame = new CGRect (0, 0, overlaySize.Width, overlaySize.Height * 0.30f); + var overlaySize = new CGSize(Frame.Width, Frame.Height - 44); + + topBg = new UIView(new CGRect(0, 0, overlaySize.Width, (overlaySize.Height - picFrame.Height) / 2)); + topBg.Frame = new CGRect(0, 0, overlaySize.Width, overlaySize.Height * 0.30f); topBg.BackgroundColor = UIColor.Black; topBg.Alpha = 0.6f; topBg.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleBottomMargin; - - bottomBg = new UIView (new CGRect (0, topBg.Frame.Height + picFrame.Height, overlaySize.Width, topBg.Frame.Height)); - bottomBg.Frame = new CGRect (0, overlaySize.Height * 0.70f, overlaySize.Width, overlaySize.Height * 0.30f); + + bottomBg = new UIView(new CGRect(0, topBg.Frame.Height + picFrame.Height, overlaySize.Width, topBg.Frame.Height)); + bottomBg.Frame = new CGRect(0, overlaySize.Height * 0.70f, overlaySize.Width, overlaySize.Height * 0.30f); bottomBg.BackgroundColor = UIColor.Black; bottomBg.Alpha = 0.6f; bottomBg.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleTopMargin; - - redLine = new UIView (new CGRect (0, overlaySize.Height * 0.5f - 2.0f, overlaySize.Width, 4.0f)); + redLine = new UIView(new CGRect(0, overlaySize.Height * 0.5f - 2.0f, overlaySize.Width, 4.0f)); redLine.BackgroundColor = UIColor.Red; redLine.Alpha = 0.4f; redLine.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleBottomMargin | UIViewAutoresizing.FlexibleTopMargin; - this.AddSubview (redLine); - this.AddSubview (topBg); - this.AddSubview (bottomBg); + AddSubview(redLine); + AddSubview(topBg); + AddSubview(bottomBg); var topTextLines = 1; if (!string.IsNullOrEmpty(topText)) - topTextLines = topText.Split ('\n').Length; + topTextLines = topText.Split('\n').Length; var botTextLines = 1; if (!string.IsNullOrEmpty(bottomText)) - botTextLines = bottomText.Split ('\n').Length; + botTextLines = bottomText.Split('\n').Length; - textTop = new UILabel () + textTop = new UILabel() { Frame = topBg.Frame, Text = topText, @@ -102,10 +100,10 @@ private void Initialize () BackgroundColor = UIColor.Clear }; - textTop.SizeToFit (); - this.AddSubview (textTop); + textTop.SizeToFit(); + AddSubview(textTop); - textBottom = new UILabel () + textBottom = new UILabel() { Frame = bottomBg.Frame, Text = bottomText, @@ -116,49 +114,50 @@ private void Initialize () BackgroundColor = UIColor.Clear }; - textBottom.SizeToFit (); - this.AddSubview (textBottom); + textBottom.SizeToFit(); + AddSubview(textBottom); var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); - bool hasTorch = false; + var hasTorch = false; if (captureDevice != null) hasTorch = captureDevice.TorchAvailable; - - InvokeOnMainThread(delegate { + + InvokeOnMainThread(delegate + { // Setting tool bar var toolBar = new UIToolbar(new CGRect(0, Frame.Height - 44, Frame.Width, 44)); - + var buttons = new List(); - buttons.Add(new UIBarButtonItem(cancelText, UIBarButtonItemStyle.Done, - delegate { OnCancel(); })); - + buttons.Add(new UIBarButtonItem(cancelText, UIBarButtonItemStyle.Done, + delegate { onCancel(); })); + if (hasTorch) { buttons.Add(new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace)); buttons.Add(new UIBarButtonItem(flashText, UIBarButtonItemStyle.Done, - delegate { OnTorch(); })); + delegate { onTorch(); })); } - + toolBar.Items = buttons.ToArray(); - + toolBar.TintColor = UIColor.Black; toolBar.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleTopMargin; Add(toolBar); - }); + }); } - public override void LayoutSubviews () + public override void LayoutSubviews() { - base.LayoutSubviews (); + base.LayoutSubviews(); - var overlaySize = new CGSize (this.Frame.Width, this.Frame.Height - 44); + var overlaySize = new CGSize(Frame.Width, Frame.Height - 44); if (topBg != null) - topBg.Frame = new CGRect (0, 0, overlaySize.Width, overlaySize.Height * 0.30f); + topBg.Frame = new CGRect(0, 0, overlaySize.Width, overlaySize.Height * 0.30f); if (bottomBg != null) - bottomBg.Frame = new CGRect (0, overlaySize.Height * 0.70f, overlaySize.Width, overlaySize.Height * 0.30f); + bottomBg.Frame = new CGRect(0, overlaySize.Height * 0.70f, overlaySize.Width, overlaySize.Height * 0.30f); if (textTop != null) textTop.Frame = topBg.Frame;// new RectangleF(0, overlaySize.Height * 0.10f, overlaySize.Width, 42); @@ -166,17 +165,17 @@ public override void LayoutSubviews () textBottom.Frame = bottomBg.Frame; // new RectangleF(0, overlaySize.Height * 0.825f - 32f, overlaySize.Width, 64); if (redLine != null) - redLine.Frame = new CGRect (0, overlaySize.Height * 0.5f - 2.0f, overlaySize.Width, 4.0f); + redLine.Frame = new CGRect(0, overlaySize.Height * 0.5f - 2.0f, overlaySize.Width, 4.0f); } - public void Destroy () - { - InvokeOnMainThread (() => { - textTop.RemoveFromSuperview (); - textBottom.RemoveFromSuperview (); - topBg.RemoveFromSuperview (); - bottomBg.RemoveFromSuperview (); - redLine.RemoveFromSuperview (); + public void Destroy() + => InvokeOnMainThread(() => + { + textTop.RemoveFromSuperview(); + textBottom.RemoveFromSuperview(); + topBg.RemoveFromSuperview(); + bottomBg.RemoveFromSuperview(); + redLine.RemoveFromSuperview(); textBottom = null; textTop = null; @@ -184,7 +183,6 @@ public void Destroy () bottomBg = null; redLine = null; }); - } } } diff --git a/Source/ZXing.Net.Mobile.iOS/ZXingScannerView.cs b/ZXing.Net.Mobile/iOS/ZXingScannerView.ios.cs similarity index 51% rename from Source/ZXing.Net.Mobile.iOS/ZXingScannerView.cs rename to ZXing.Net.Mobile/iOS/ZXingScannerView.ios.cs index e0ddd1088..861999a4a 100644 --- a/Source/ZXing.Net.Mobile.iOS/ZXingScannerView.cs +++ b/ZXing.Net.Mobile/iOS/ZXingScannerView.ios.cs @@ -32,7 +32,7 @@ public ZXingScannerView(IntPtr handle) : base(handle) { } - public ZXingScannerView (CGRect frame) : base(frame) + public ZXingScannerView(CGRect frame) : base(frame) { } @@ -49,10 +49,10 @@ public ZXingScannerView (CGRect frame) : base(frame) public MobileBarcodeScanningOptions ScanningOptions { get; set; } - public event Action OnCancelButtonPressed; + public event Action OnCancelButtonPressed; - public string CancelButtonText { get;set; } - public string FlashButtonText { get;set; } + public string CancelButtonText { get; set; } + public string FlashButtonText { get; set; } bool shouldRotatePreviewBuffer = false; @@ -61,93 +61,80 @@ void Setup(CGRect frame) var started = DateTime.UtcNow; if (overlayView != null) - overlayView.RemoveFromSuperview (); - - if (UseCustomOverlayView) - overlayView = CustomOverlayView; - else { - overlayView = new ZXingDefaultOverlayView (new CGRect (0, 0, this.Frame.Width, this.Frame.Height), - TopText, BottomText, CancelButtonText, FlashButtonText, - () => { - var evt = OnCancelButtonPressed; - if (evt != null) - evt(); - }, ToggleTorch); - } + overlayView.RemoveFromSuperview(); - if (overlayView != null) + if (UseCustomOverlayView) + overlayView = CustomOverlayView; + else { - /*UITapGestureRecognizer tapGestureRecognizer = new UITapGestureRecognizer (); - - tapGestureRecognizer.AddTarget (() => { - - var pt = tapGestureRecognizer.LocationInView(overlayView); - - Focus(pt); - - Console.WriteLine("OVERLAY TOUCH: " + pt.X + ", " + pt.Y); - - }); - tapGestureRecognizer.CancelsTouchesInView = false; - tapGestureRecognizer.NumberOfTapsRequired = 1; - tapGestureRecognizer.NumberOfTouchesRequired = 1; - - overlayView.AddGestureRecognizer (tapGestureRecognizer);*/ + overlayView = new ZXingDefaultOverlayView(new CGRect(0, 0, Frame.Width, Frame.Height), + TopText, BottomText, CancelButtonText, FlashButtonText, + () => + { + var evt = OnCancelButtonPressed; + if (evt != null) + evt(); + }, ToggleTorch); + } + if (overlayView != null) + { overlayView.Frame = new CGRect(0, 0, this.Frame.Width, this.Frame.Height); overlayView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; } var total = DateTime.UtcNow - started; - Console.WriteLine ("ZXingScannerView.Setup() took {0} ms.", total.TotalMilliseconds); + Console.WriteLine("ZXingScannerView.Setup() took {0} ms.", total.TotalMilliseconds); } - - + + bool torch = false; bool analyzing = true; - - bool SetupCaptureSession () + + bool SetupCaptureSession() { var started = DateTime.UtcNow; - var availableResolutions = new List (); + var availableResolutions = new List(); var consideredResolutions = new Dictionary { - { AVCaptureSession.Preset352x288, new CameraResolution { Width = 352, Height = 288 } }, - { AVCaptureSession.PresetMedium, new CameraResolution { Width = 480, Height = 360 } }, //480x360 - { AVCaptureSession.Preset640x480, new CameraResolution { Width = 640, Height = 480 } }, + { AVCaptureSession.Preset352x288, new CameraResolution { Width = 352, Height = 288 } }, + { AVCaptureSession.PresetMedium, new CameraResolution { Width = 480, Height = 360 } }, //480x360 + { AVCaptureSession.Preset640x480, new CameraResolution { Width = 640, Height = 480 } }, { AVCaptureSession.Preset1280x720, new CameraResolution { Width = 1280, Height = 720 } }, { AVCaptureSession.Preset1920x1080, new CameraResolution { Width = 1920, Height = 1080 } } }; - + // configure the capture session for low resolution, change this if your code // can cope with more data or volume - session = new AVCaptureSession () { + session = new AVCaptureSession() + { SessionPreset = AVCaptureSession.Preset640x480 }; - + // create a device input and attach it to the session -// var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType (AVMediaType.Video); + // var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType (AVMediaType.Video); AVCaptureDevice captureDevice = null; var devices = AVCaptureDevice.DevicesWithMediaType(AVMediaType.Video); foreach (var device in devices) { captureDevice = device; if (ScanningOptions.UseFrontCameraIfAvailable.HasValue && - ScanningOptions.UseFrontCameraIfAvailable.Value && - device.Position == AVCaptureDevicePosition.Front) + ScanningOptions.UseFrontCameraIfAvailable.Value && + device.Position == AVCaptureDevicePosition.Front) break; //Front camera successfully set else if (device.Position == AVCaptureDevicePosition.Back && (!ScanningOptions.UseFrontCameraIfAvailable.HasValue || !ScanningOptions.UseFrontCameraIfAvailable.Value)) break; //Back camera succesfully set } - if (captureDevice == null){ - Console.WriteLine ("No captureDevice - this won't work on the simulator, try a physical device"); + if (captureDevice == null) + { + Console.WriteLine("No captureDevice - this won't work on the simulator, try a physical device"); if (overlayView != null) { - this.AddSubview (overlayView); - this.BringSubviewToFront (overlayView); + AddSubview(overlayView); + BringSubviewToFront(overlayView); } return false; } @@ -156,40 +143,43 @@ bool SetupCaptureSession () // Find resolution // Go through the resolutions we can even consider - foreach (var cr in consideredResolutions) { + foreach (var cr in consideredResolutions) + { // Now check to make sure our selected device supports the resolution // so we can add it to the list to pick from - if (captureDevice.SupportsAVCaptureSessionPreset (cr.Key)) - availableResolutions.Add (cr.Value); + if (captureDevice.SupportsAVCaptureSessionPreset(cr.Key)) + availableResolutions.Add(cr.Value); } - resolution = ScanningOptions.GetResolution (availableResolutions); + resolution = ScanningOptions.GetResolution(availableResolutions); // See if the user selected a resolution - if (resolution != null) { + if (resolution != null) + { // Now get the preset string from the resolution chosen var preset = (from c in consideredResolutions where c.Value.Width == resolution.Width && c.Value.Height == resolution.Height - select c.Key).FirstOrDefault (); + select c.Key).FirstOrDefault(); // If we found a matching preset, let's set it on the session if (!string.IsNullOrEmpty(preset)) session.SessionPreset = preset; } - var input = AVCaptureDeviceInput.FromDevice (captureDevice); - if (input == null){ - Console.WriteLine ("No input - this won't work on the simulator, try a physical device"); + var input = AVCaptureDeviceInput.FromDevice(captureDevice); + if (input == null) + { + Console.WriteLine("No input - this won't work on the simulator, try a physical device"); if (overlayView != null) { - this.AddSubview (overlayView); - this.BringSubviewToFront (overlayView); - } + AddSubview(overlayView); + BringSubviewToFront(overlayView); + } return false; } else - session.AddInput (input); + session.AddInput(input); var startedAVPreviewLayerAlloc = PerformanceCounter.Start(); @@ -198,69 +188,42 @@ bool SetupCaptureSession () PerformanceCounter.Stop(startedAVPreviewLayerAlloc, "Alloc AVCaptureVideoPreviewLayer took {0} ms."); + var perf2 = PerformanceCounter.Start(); - // //Framerate set here (15 fps) - // if (UIDevice.CurrentDevice.CheckSystemVersion (7, 0)) - // { - // var perf1 = PerformanceCounter.Start (); - - // NSError lockForConfigErr = null; - - // captureDevice.LockForConfiguration (out lockForConfigErr); - // if (lockForConfigErr == null) - // { - // captureDevice.ActiveVideoMinFrameDuration = new CMTime (1, 10); - // captureDevice.UnlockForConfiguration (); - // } - - // PerformanceCounter.Stop (perf1, "PERF: ActiveVideoMinFrameDuration Took {0} ms"); - // } - // else - // previewLayer.Connection.VideoMinFrameDuration = new CMTime(1, 10); - - - var perf2 = PerformanceCounter.Start (); - - #if __UNIFIED__ previewLayer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill; - #else - previewLayer.LayerVideoGravity = AVLayerVideoGravity.ResizeAspectFill; - #endif - previewLayer.Frame = new CGRect(0, 0, this.Frame.Width, this.Frame.Height); - previewLayer.Position = new CGPoint(this.Layer.Bounds.Width / 2, (this.Layer.Bounds.Height / 2)); + previewLayer.Frame = new CGRect(0, 0, Frame.Width, Frame.Height); + previewLayer.Position = new CGPoint(Layer.Bounds.Width / 2, (Layer.Bounds.Height / 2)); - layerView = new UIView(new CGRect(0, 0, this.Frame.Width, this.Frame.Height)); + layerView = new UIView(new CGRect(0, 0, Frame.Width, Frame.Height)); layerView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; layerView.Layer.AddSublayer(previewLayer); - this.AddSubview(layerView); + AddSubview(layerView); ResizePreview(UIApplication.SharedApplication.StatusBarOrientation); if (overlayView != null) { - this.AddSubview (overlayView); - this.BringSubviewToFront (overlayView); - - //overlayView.LayoutSubviews (); + AddSubview(overlayView); + BringSubviewToFront(overlayView); } - PerformanceCounter.Stop (perf2, "PERF: Setting up layers took {0} ms"); + PerformanceCounter.Stop(perf2, "PERF: Setting up layers took {0} ms"); - var perf3 = PerformanceCounter.Start (); + var perf3 = PerformanceCounter.Start(); - session.StartRunning (); + session.StartRunning(); - PerformanceCounter.Stop (perf3, "PERF: session.StartRunning() took {0} ms"); + PerformanceCounter.Stop(perf3, "PERF: session.StartRunning() took {0} ms"); - var perf4 = PerformanceCounter.Start (); + var perf4 = PerformanceCounter.Start(); - var videoSettings = NSDictionary.FromObjectAndKey (new NSNumber ((int) CVPixelFormatType.CV32BGRA), + var videoSettings = NSDictionary.FromObjectAndKey(new NSNumber((int)CVPixelFormatType.CV32BGRA), CVPixelBuffer.PixelFormatTypeKey); - // create a VideoDataOutput and add it to the sesion - output = new AVCaptureVideoDataOutput { + output = new AVCaptureVideoDataOutput + { WeakVideoSettings = videoSettings }; @@ -269,7 +232,7 @@ bool SetupCaptureSession () var barcodeReader = ScanningOptions.BuildBarcodeReader(); - outputRecorder = new OutputRecorder (this, img => + outputRecorder = new OutputRecorder(this, img => { var ls = img; @@ -282,96 +245,95 @@ bool SetupCaptureSession () if (shouldRotatePreviewBuffer) ls = ls.rotateCounterClockwise(); - + var result = barcodeReader.Decode(ls); PerformanceCounter.Stop(perfDecode, "Decode Time: {0} ms"); - if (result != null) { + if (result != null) + { resultCallback(result); - return true; - } + return true; + } } catch (Exception ex) { Console.WriteLine("DECODE FAILED: " + ex); } - return false; + return false; }); output.AlwaysDiscardsLateVideoFrames = true; - output.SetSampleBufferDelegate (outputRecorder, queue); + output.SetSampleBufferDelegate(outputRecorder, queue); PerformanceCounter.Stop(perf4, "PERF: SetupCamera Finished. Took {0} ms."); - session.AddOutput (output); - //session.StartRunning (); + session.AddOutput(output); - - var perf5 = PerformanceCounter.Start (); + var perf5 = PerformanceCounter.Start(); NSError err = null; if (captureDevice.LockForConfiguration(out err)) { - if (ScanningOptions.DisableAutofocus) { + if (ScanningOptions.DisableAutofocus) + { captureDevice.FocusMode = AVCaptureFocusMode.Locked; - } else { + } + else + { if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus)) captureDevice.FocusMode = AVCaptureFocusMode.ContinuousAutoFocus; else if (captureDevice.IsFocusModeSupported(AVCaptureFocusMode.AutoFocus)) captureDevice.FocusMode = AVCaptureFocusMode.AutoFocus; } - if (captureDevice.IsExposureModeSupported (AVCaptureExposureMode.ContinuousAutoExposure)) + if (captureDevice.IsExposureModeSupported(AVCaptureExposureMode.ContinuousAutoExposure)) captureDevice.ExposureMode = AVCaptureExposureMode.ContinuousAutoExposure; else if (captureDevice.IsExposureModeSupported(AVCaptureExposureMode.AutoExpose)) captureDevice.ExposureMode = AVCaptureExposureMode.AutoExpose; - if (captureDevice.IsWhiteBalanceModeSupported (AVCaptureWhiteBalanceMode.ContinuousAutoWhiteBalance)) + if (captureDevice.IsWhiteBalanceModeSupported(AVCaptureWhiteBalanceMode.ContinuousAutoWhiteBalance)) captureDevice.WhiteBalanceMode = AVCaptureWhiteBalanceMode.ContinuousAutoWhiteBalance; - else if (captureDevice.IsWhiteBalanceModeSupported (AVCaptureWhiteBalanceMode.AutoWhiteBalance)) - captureDevice.WhiteBalanceMode = AVCaptureWhiteBalanceMode.AutoWhiteBalance; + else if (captureDevice.IsWhiteBalanceModeSupported(AVCaptureWhiteBalanceMode.AutoWhiteBalance)) + captureDevice.WhiteBalanceMode = AVCaptureWhiteBalanceMode.AutoWhiteBalance; - if (UIDevice.CurrentDevice.CheckSystemVersion (7, 0) && captureDevice.AutoFocusRangeRestrictionSupported) + if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0) && captureDevice.AutoFocusRangeRestrictionSupported) captureDevice.AutoFocusRangeRestriction = AVCaptureAutoFocusRangeRestriction.Near; if (captureDevice.FocusPointOfInterestSupported) captureDevice.FocusPointOfInterest = new PointF(0.5f, 0.5f); if (captureDevice.ExposurePointOfInterestSupported) - captureDevice.ExposurePointOfInterest = new PointF (0.5f, 0.5f); + captureDevice.ExposurePointOfInterest = new PointF(0.5f, 0.5f); captureDevice.UnlockForConfiguration(); } else Console.WriteLine("Failed to Lock for Config: " + err.Description); - PerformanceCounter.Stop (perf5, "PERF: Setup Focus in {0} ms."); - + PerformanceCounter.Stop(perf5, "PERF: Setup Focus in {0} ms."); + return true; } public void DidRotate(UIInterfaceOrientation orientation) { - ResizePreview (orientation); + ResizePreview(orientation); - this.LayoutSubviews (); - - // if (overlayView != null) - // overlayView.LayoutSubviews (); + LayoutSubviews(); } - public void ResizePreview (UIInterfaceOrientation orientation) + public void ResizePreview(UIInterfaceOrientation orientation) { shouldRotatePreviewBuffer = orientation == UIInterfaceOrientation.Portrait || orientation == UIInterfaceOrientation.PortraitUpsideDown; if (previewLayer == null) return; - previewLayer.Frame = new CGRect (0, 0, this.Frame.Width, this.Frame.Height); + previewLayer.Frame = new CGRect(0, 0, Frame.Width, Frame.Height); - if (previewLayer.RespondsToSelector (new Selector ("connection")) && previewLayer.Connection != null) + if (previewLayer.RespondsToSelector(new Selector("connection")) && previewLayer.Connection != null) { switch (orientation) { @@ -420,81 +382,80 @@ public void Focus(PointF pointOfInterest) } } - public class OutputRecorder : AVCaptureVideoDataOutputSampleBufferDelegate + public class OutputRecorder : AVCaptureVideoDataOutputSampleBufferDelegate { - public OutputRecorder(IScannerSessionHost scannerHost, Func handleImage) : base() - { - HandleImage = handleImage; + public OutputRecorder(IScannerSessionHost scannerHost, Func handleImage) : base() + { + this.handleImage = handleImage; this.scannerHost = scannerHost; - } + } IScannerSessionHost scannerHost; - Func HandleImage; + Func handleImage; DateTime lastAnalysis = DateTime.MinValue; volatile bool working = false; - volatile bool wasScanned = false; + volatile bool wasScanned = false; - [Export ("captureOutput:didDropSampleBuffer:fromConnection:")] + [Export("captureOutput:didDropSampleBuffer:fromConnection:")] public override void DidDropSampleBuffer(AVCaptureOutput captureOutput, CMSampleBuffer sampleBuffer, AVCaptureConnection connection) { - //Console.WriteLine("Dropped Sample Buffer"); } public CancellationTokenSource CancelTokenSource = new CancellationTokenSource(); - public override void DidOutputSampleBuffer (AVCaptureOutput captureOutput, CMSampleBuffer sampleBuffer, AVCaptureConnection connection) + public override void DidOutputSampleBuffer(AVCaptureOutput captureOutput, CMSampleBuffer sampleBuffer, AVCaptureConnection connection) { - var msSinceLastPreview = (DateTime.UtcNow - lastAnalysis).TotalMilliseconds; - - if (msSinceLastPreview < scannerHost.ScanningOptions.DelayBetweenAnalyzingFrames - || (wasScanned && msSinceLastPreview < scannerHost.ScanningOptions.DelayBetweenContinuousScans) - || working - || CancelTokenSource.IsCancellationRequested) + var msSinceLastPreview = (DateTime.UtcNow - lastAnalysis).TotalMilliseconds; + + if (msSinceLastPreview < scannerHost.ScanningOptions.DelayBetweenAnalyzingFrames + || (wasScanned && msSinceLastPreview < scannerHost.ScanningOptions.DelayBetweenContinuousScans) + || working + || CancelTokenSource.IsCancellationRequested) { if (msSinceLastPreview < scannerHost.ScanningOptions.DelayBetweenAnalyzingFrames) Console.WriteLine("Too soon between frames"); if (wasScanned && msSinceLastPreview < scannerHost.ScanningOptions.DelayBetweenContinuousScans) Console.WriteLine("Too soon since last scan"); - + if (sampleBuffer != null) { - sampleBuffer.Dispose (); + sampleBuffer.Dispose(); sampleBuffer = null; } return; } - wasScanned = false; + wasScanned = false; working = true; lastAnalysis = DateTime.UtcNow; - try + try { - // Get the CoreVideo image - using (var pixelBuffer = sampleBuffer.GetImageBuffer() as CVPixelBuffer) - { - // Lock the base address - pixelBuffer.Lock(CVPixelBufferLock.ReadOnly); // MAYBE NEEDS READ/WRITE + // Get the CoreVideo image + using (var pixelBuffer = sampleBuffer.GetImageBuffer() as CVPixelBuffer) + { + // Lock the base address + pixelBuffer.Lock(CVPixelBufferLock.ReadOnly); // MAYBE NEEDS READ/WRITE - LuminanceSource luminanceSource; + LuminanceSource luminanceSource; - // Let's access the raw underlying data and create a luminance source from it - unsafe - { - var rawData = (byte*)pixelBuffer.BaseAddress.ToPointer(); - var rawDatalen = (int)(pixelBuffer.Height * pixelBuffer.Width * 4); //This drops 8 bytes from the original length to give us the expected length + // Let's access the raw underlying data and create a luminance source from it + unsafe + { + var rawData = (byte*)pixelBuffer.BaseAddress.ToPointer(); + var rawDatalen = (int)(pixelBuffer.Height * pixelBuffer.Width * 4); //This drops 8 bytes from the original length to give us the expected length - luminanceSource = new CVPixelBufferBGRA32LuminanceSource(rawData, rawDatalen, (int)pixelBuffer.Width, (int)pixelBuffer.Height); - } + luminanceSource = new CVPixelBufferBGRA32LuminanceSource(rawData, rawDatalen, (int)pixelBuffer.Width, (int)pixelBuffer.Height); + } - if (HandleImage(luminanceSource)) - wasScanned = true; + if (handleImage(luminanceSource)) + wasScanned = true; - pixelBuffer.Unlock(CVPixelBufferLock.ReadOnly); - } + pixelBuffer.Unlock(CVPixelBufferLock.ReadOnly); + } // // Although this looks innocent "Oh, he is just optimizing this case away" @@ -502,43 +463,45 @@ public override void DidOutputSampleBuffer (AVCaptureOutput captureOutput, CMSam // has a fixed number of buffers and if it runs out of free buffers, it will stop // delivering frames. // - sampleBuffer.Dispose (); + sampleBuffer.Dispose(); sampleBuffer = null; - } catch (Exception e){ - Console.WriteLine (e); } - finally - { - working = false; - } + catch (Exception e) + { + Console.WriteLine(e); + } + finally + { + working = false; + } } } - + #region IZXingScanner implementation - public void StartScanning (Action scanResultHandler, MobileBarcodeScanningOptions options = null) + public void StartScanning(Action scanResultHandler, MobileBarcodeScanningOptions options = null) { if (!stopped) return; stopped = false; - var perf = PerformanceCounter.Start (); + var perf = PerformanceCounter.Start(); - Setup (this.Frame); + Setup(Frame); - this.ScanningOptions = options ?? MobileBarcodeScanningOptions.Default; - this.resultCallback = scanResultHandler; + ScanningOptions = options ?? MobileBarcodeScanningOptions.Default; + resultCallback = scanResultHandler; Console.WriteLine("StartScanning"); - this.InvokeOnMainThread(() => { + InvokeOnMainThread(() => + { if (!SetupCaptureSession()) { //Setup 'simulated' view: Console.WriteLine("Capture Session FAILED"); - } if (Runtime.Arch == Arch.SIMULATOR) @@ -546,7 +509,7 @@ public void StartScanning (Action scanResultHandler, MobileBarcodeScanni var simView = new UIView(new CGRect(0, 0, this.Frame.Width, this.Frame.Height)); simView.BackgroundColor = UIColor.LightGray; simView.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; - this.InsertSubview(simView, 0); + InsertSubview(simView, 0); } }); @@ -556,20 +519,19 @@ public void StartScanning (Action scanResultHandler, MobileBarcodeScanni PerformanceCounter.Stop(perf, "PERF: StartScanning() Took {0} ms."); - var evt = this.OnScannerSetupComplete; - if (evt != null) - evt (); + OnScannerSetupComplete?.Invoke(); } - + public void StopScanning() { - if (overlayView != null) { + if (overlayView != null) + { if (overlayView is ZXingDefaultOverlayView) - (overlayView as ZXingDefaultOverlayView).Destroy (); + (overlayView as ZXingDefaultOverlayView).Destroy(); overlayView = null; } - + if (stopped) return; @@ -577,12 +539,12 @@ public void StopScanning() if (outputRecorder != null) outputRecorder.CancelTokenSource.Cancel(); - + //Try removing all existing outputs prior to closing the session try { while (session.Outputs.Length > 0) - session.RemoveOutput (session.Outputs [0]); + session.RemoveOutput(session.Outputs[0]); } catch { } @@ -590,7 +552,7 @@ public void StopScanning() try { while (session.Inputs.Length > 0) - session.RemoveInput (session.Inputs [0]); + session.RemoveInput(session.Inputs[0]); } catch { } @@ -600,17 +562,13 @@ public void StopScanning() stopped = true; } - public void PauseAnalysis () - { - analyzing = false; - } + public void PauseAnalysis() + => analyzing = false; - public void ResumeAnalysis () - { - analyzing = true; - } + public void ResumeAnalysis() + => analyzing = true; - public void Torch (bool on) + public void Torch(bool on) { try { @@ -618,27 +576,28 @@ public void Torch (bool on) var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); - if (device.HasTorch || device.HasFlash) { - - device.LockForConfiguration(out err); - - if (on) - { - if (device.HasTorch) - device.TorchMode = AVCaptureTorchMode.On; - if (device.HasFlash) - device.FlashMode = AVCaptureFlashMode.On; - } - else - { - if (device.HasTorch) - device.TorchMode = AVCaptureTorchMode.Off; - if (device.HasFlash) - device.FlashMode = AVCaptureFlashMode.Off; - } - - device.UnlockForConfiguration(); - } + if (device.HasTorch || device.HasFlash) + { + + device.LockForConfiguration(out err); + + if (on) + { + if (device.HasTorch) + device.TorchMode = AVCaptureTorchMode.On; + if (device.HasFlash) + device.FlashMode = AVCaptureFlashMode.On; + } + else + { + if (device.HasTorch) + device.TorchMode = AVCaptureTorchMode.Off; + if (device.HasFlash) + device.FlashMode = AVCaptureFlashMode.Off; + } + + device.UnlockForConfiguration(); + } device = null; @@ -648,22 +607,20 @@ public void Torch (bool on) } public void ToggleTorch() + => Torch(!IsTorchOn); + + public void AutoFocus() { - Torch(!IsTorchOn); + //Doesn't do much on iOS :( } - public void AutoFocus () + public void AutoFocus(int x, int y) { //Doesn't do much on iOS :( } - public void AutoFocus (int x, int y) - { - //Doesn't do much on iOS :( - } - - public string TopText { get;set; } - public string BottomText { get;set; } + public string TopText { get; set; } + public string BottomText { get; set; } public UIView CustomOverlayView { get; set; } @@ -671,17 +628,19 @@ public void AutoFocus (int x, int y) public bool IsAnalyzing { get { return analyzing; } } public bool IsTorchOn { get { return torch; } } - bool? hasTorch = null; - public bool HasTorch { - get { - if (hasTorch.HasValue) - return hasTorch.Value; - - var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); - hasTorch = device.HasFlash || device.HasTorch; - return hasTorch.Value; - } - } + bool? hasTorch = null; + public bool HasTorch + { + get + { + if (hasTorch.HasValue) + return hasTorch.Value; + + var device = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video); + hasTorch = device.HasFlash || device.HasTorch; + return hasTorch.Value; + } + } #endregion } } diff --git a/ZXing.Net.Mobile/iOS/ZXingScannerViewController.ios.cs b/ZXing.Net.Mobile/iOS/ZXingScannerViewController.ios.cs new file mode 100644 index 000000000..776709b41 --- /dev/null +++ b/ZXing.Net.Mobile/iOS/ZXingScannerViewController.ios.cs @@ -0,0 +1,188 @@ +using System; +using System.Text; +using System.Collections.Generic; +using System.Threading.Tasks; + +using UIKit; +using Foundation; +using AVFoundation; +using CoreGraphics; + +using ZXing; + +namespace ZXing.Mobile +{ + public class ZXingScannerViewController : UIViewController, IScannerViewController + { + ZXingScannerView scannerView; + + public event Action OnScannedResult; + + public MobileBarcodeScanningOptions ScanningOptions { get; set; } + public MobileBarcodeScanner Scanner { get; set; } + public bool ContinuousScanning { get; set; } + + UIActivityIndicatorView loadingView; + UIView loadingBg; + + public UIView CustomLoadingView { get; set; } + + public ZXingScannerViewController(MobileBarcodeScanningOptions options, MobileBarcodeScanner scanner) + { + ScanningOptions = options; + Scanner = scanner; + + var appFrame = UIScreen.MainScreen.ApplicationFrame; + + View.Frame = new CGRect(0, 0, appFrame.Width, appFrame.Height); + View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + + if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0)) + ModalPresentationStyle = UIModalPresentationStyle.FullScreen; + } + + public UIViewController AsViewController() + => this; + + public void Cancel() + => InvokeOnMainThread(scannerView.StopScanning); + + UIStatusBarStyle originalStatusBarStyle = UIStatusBarStyle.Default; + + public override void ViewDidLoad() + { + loadingBg = new UIView(View.Frame) { BackgroundColor = UIColor.Black, AutoresizingMask = UIViewAutoresizing.FlexibleDimensions }; + loadingView = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge) + { + AutoresizingMask = UIViewAutoresizing.FlexibleMargins + }; + loadingView.Frame = new CGRect((View.Frame.Width - loadingView.Frame.Width) / 2, + (View.Frame.Height - loadingView.Frame.Height) / 2, + loadingView.Frame.Width, + loadingView.Frame.Height); + + loadingBg.AddSubview(loadingView); + View.AddSubview(loadingBg); + loadingView.StartAnimating(); + + scannerView = new ZXingScannerView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height)) + { + AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight, + UseCustomOverlayView = Scanner.UseCustomOverlay, + CustomOverlayView = Scanner.CustomOverlay, + TopText = Scanner.TopText, + BottomText = Scanner.BottomText, + CancelButtonText = Scanner.CancelButtonText, + FlashButtonText = Scanner.FlashButtonText + }; + scannerView.OnCancelButtonPressed += delegate + { + Scanner.Cancel(); + }; + + //this.View.AddSubview(scannerView); + View.InsertSubviewBelow(scannerView, loadingView); + + View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; + + if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0)) + { + if (UIApplication.SharedApplication.KeyWindow != null) + OverrideUserInterfaceStyle = UIApplication.SharedApplication.KeyWindow.RootViewController.OverrideUserInterfaceStyle; + } + } + + public void Torch(bool on) + => scannerView?.Torch(on); + + public void ToggleTorch() + => scannerView?.ToggleTorch(); + + public void PauseAnalysis() + => scannerView?.PauseAnalysis(); + + public void ResumeAnalysis() + => scannerView?.ResumeAnalysis(); + + public bool IsTorchOn + => scannerView?.IsTorchOn ?? false; + + public override void ViewDidAppear(bool animated) + { + scannerView.OnScannerSetupComplete += HandleOnScannerSetupComplete; + + originalStatusBarStyle = UIApplication.SharedApplication.StatusBarStyle; + + if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0)) + { + UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.Default; + SetNeedsStatusBarAppearanceUpdate(); + } + else + UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.BlackTranslucent, false); + + Console.WriteLine("Starting to scan..."); + + Task.Factory.StartNew(() => + { + BeginInvokeOnMainThread(() => scannerView.StartScanning(result => + { + + if (!ContinuousScanning) + { + Console.WriteLine("Stopping scan..."); + scannerView.StopScanning(); + } + + OnScannedResult?.Invoke(result); + + }, ScanningOptions)); + }); + } + + public override void ViewDidDisappear(bool animated) + { + scannerView?.StopScanning(); + + scannerView.OnScannerSetupComplete -= HandleOnScannerSetupComplete; + } + + public override void ViewWillDisappear(bool animated) + => UIApplication.SharedApplication.SetStatusBarStyle(originalStatusBarStyle, false); + + public override void DidRotate(UIInterfaceOrientation fromInterfaceOrientation) + => scannerView?.DidRotate(this.InterfaceOrientation); + + public override bool ShouldAutorotate() + => ScanningOptions?.AutoRotate ?? false; + + public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() + => UIInterfaceOrientationMask.All; + + [Obsolete("Deprecated in iOS6. Replace it with both GetSupportedInterfaceOrientations and PreferredInterfaceOrientationForPresentation")] + public override bool ShouldAutorotateToInterfaceOrientation(UIInterfaceOrientation toInterfaceOrientation) + => ScanningOptions?.AutoRotate ?? false; + + void HandleOnScannerSetupComplete() + => BeginInvokeOnMainThread(() => + { + if (loadingView != null && loadingBg != null && loadingView.IsAnimating) + { + loadingView.StopAnimating(); + + UIView.BeginAnimations("zoomout"); + + UIView.SetAnimationDuration(2.0f); + UIView.SetAnimationCurve(UIViewAnimationCurve.EaseOut); + + loadingBg.Transform = CGAffineTransform.MakeScale(2.0f, 2.0f); + loadingBg.Alpha = 0.0f; + + UIView.CommitAnimations(); + + + loadingBg.RemoveFromSuperview(); + } + }); + } +} diff --git a/ZXing.Net/zxing.dll b/ZXing.Net/zxing.dll new file mode 100644 index 0000000000000000000000000000000000000000..f33adb199cb7d28f8894765e6b8f39935ffabacf GIT binary patch literal 438272 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�zMGr?`4{JIvWzTS9w@}wVQCEVH#1VT{ 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

  • n*|)J%>jzGf#q| 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

    ?2hJh=pl_vE*RmuD+WaV(dPn2FT`- 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 literal 0 HcmV?d00001 diff --git a/ZXing.Net/zxing.pdb b/ZXing.Net/zxing.pdb new file mode 100644 index 0000000000000000000000000000000000000000..4f18f31230d9f8c2bafc08316a6766c57a5af743 GIT binary patch literal 216276 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 z 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 Ceh>oy literal 0 HcmV?d00001 diff --git a/ZXing.Net/zxing.xml b/ZXing.Net/zxing.xml new file mode 100644 index 000000000..20e11447c --- /dev/null +++ b/ZXing.Net/zxing.xml @@ -0,0 +1,10863 @@ + + + + zxing + + + +

    + Interface for a class to convert a BitMatrix to an output image format + + + + + Renders the specified matrix to its graphically representation + + The matrix. + The format. + The encoded content of the barcode which should be included in the image. + That can be the numbers below a 1D barcode or something other. + + + + + Renders the specified matrix to its graphically representation + + The matrix. + The format. + The encoded content of the barcode which should be included in the image. + That can be the numbers below a 1D barcode or something other. + The options. + + + + + represents the generated code as a byte array with pixel data (4 byte per pixel, BGRA) + + + + + the generated code as byte array of BGRA pixels + + + + + the width of the image + + + + + the height of the image + + + + + Renders a to an byte array with pixel data (4 byte per pixel, BGRA) + + + + + represents a color defined as ARGB byte data + + + + + the color black + + + + + the color white + + + + + value of the alpha channel + + + + + value of the red channel + + + + + value of the green channel + + + + + value of the blue channel + + + + + Initializes a new instance of the struct. + + + + + Gets or sets the foreground color. + + + The foreground color. + + + + + Gets or sets the background color. + + + The background color. + + + + + Initializes a new instance of the class. + + + + + Renders the specified matrix. + + The matrix. + The format. + The content. + + + + + Renders the specified matrix. + + The matrix. + The format. + The content. + The options. + + + + + Renders a barcode into a Svg image + + + + + represents a color value + + + + + color black + + + + + color white + + + + + alpha channel + + + + + red channel + + + + + green channel + + + + + blur channel + + + + + initializing constructor + + + + + initializing constructor + + + + + Gets or sets the foreground color. + + The foreground color. + + + + Gets or sets the background color. + + The background color. + + + + Gets or sets the font family name + + The font family name. + + + + Gets or sets the font size in pixel + + The font size in pixel. + + + + Initializes a new instance of the class. + + + + + Renders the specified matrix. + + The matrix. + The format. + The content. + + + + + Renders the specified matrix. + + The matrix. + The format. + The content. + The options. + + + + + Represents a barcode as a Svg image + + + + + Gets or sets the content. + + + The content. + + + + + The original height of the bitmatrix for the barcode + + + + + The original width of the bitmatrix for the barcode + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The content. + + + + Gives the XML representation of the SVG image + + + + + Enumerates barcode formats known to this package. + + Sean Owen + + + Aztec 2D barcode format. + + + CODABAR 1D format. + + + Code 39 1D format. + + + Code 93 1D format. + + + Code 128 1D format. + + + Data Matrix 2D barcode format. + + + EAN-8 1D format. + + + EAN-13 1D format. + + + ITF (Interleaved Two of Five) 1D format. + + + MaxiCode 2D barcode format. + + + PDF417 format. + + + QR Code 2D barcode format. + + + RSS 14 + + + RSS EXPANDED + + + UPC-A 1D format. + + + UPC-E 1D format. + + + UPC/EAN extension format. Not a stand-alone format. + + + MSI + + + Plessey + + + Intelligent Mail barcode + + + Pharmacode format. + + + + UPC_A | UPC_E | EAN_13 | EAN_8 | CODABAR | CODE_39 | CODE_93 | CODE_128 | ITF | RSS_14 | RSS_EXPANDED + without MSI (to many false-positives) and IMB (not enough tested, and it looks more like a 2D) + + + + + A smart class to decode the barcode inside a bitmap object or byte array with raw pixel color values + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Sets the reader which should be used to find and decode the barcode. + If null then MultiFormatReader is used + Sets the function to create a luminance source object for a bitmap. + If null, an exception is thrown when Decode is called + Sets the function to create a binarizer object for a luminance source. + If null then HybridBinarizer is used + + + + Initializes a new instance of the class. + + Sets the reader which should be used to find and decode the barcode. + If null then MultiFormatReader is used + Sets the function to create a luminance source object for a bitmap. + If null, an exception is thrown when Decode is called + Sets the function to create a binarizer object for a luminance source. + If null then HybridBinarizer is used + Sets the function to create a luminance source object for a rgb raw byte array. + + + + Optional: Gets or sets the function to create a luminance source object for a bitmap. + If null a platform specific default LuminanceSource is used + + + The function to create a luminance source object. + + + + + Decodes the specified barcode bitmap. + + The barcode bitmap. + the result data or null + + + + Decodes the specified barcode bitmap. + + The barcode bitmap. + the result data or null + + + + A smart class to decode the barcode inside a bitmap object + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Sets the reader which should be used to find and decode the barcode. + If null then MultiFormatReader is used + Sets the function to create a luminance source object for a bitmap. + If null, an exception is thrown when Decode is called + Sets the function to create a binarizer object for a luminance source. + If null then HybridBinarizer is used + + + + Initializes a new instance of the class. + + Sets the reader which should be used to find and decode the barcode. + If null then MultiFormatReader is used + Sets the function to create a luminance source object for a bitmap. + If null, an exception is thrown when Decode is called + Sets the function to create a binarizer object for a luminance source. + If null then HybridBinarizer is used + Sets the function to create a luminance source object for a rgb raw byte array. + + + + Constructor for additional image formats for one BarcodeReader class + + Sets the reader which should be used to find and decode the barcode. + If null then MultiFormatReader is used + Sets the function to create a binarizer object for a luminance source. + If null then HybridBinarizer is used + Sets the function to create a luminance source object for a rgb raw byte array. + + + + Optional: Gets or sets the function to create a luminance source object for a bitmap. + If null a platform specific default LuminanceSource is used + + + The function to create a luminance source object. + + + + + Decodes the specified barcode bitmap. + + The barcode bitmap. + the result data or null + + + + Decodes the specified barcode bitmap. + + The barcode bitmap. + the result data or null + + + + A smart class to decode the barcode inside a bitmap object + + + + + represents the default function which is called to get a instance from a raw byte array + + + + + Gets or sets the options. + + + The options. + + + + + Gets the reader which should be used to find and decode the barcode. + + + The reader. + + + + + Gets or sets a method which is called if an important point is found + + + The result point callback. + + + + + event is executed if a result was found via decode + + + + + Gets or sets a value indicating whether the image should be automatically rotated. + Rotation is supported for 90, 180 and 270 degrees + + + true if image should be rotated; otherwise, false. + + + + + Gets or sets a value indicating whether the image should be automatically inverted + if no result is found in the original image. + ATTENTION: Please be carefully because it slows down the decoding process if it is used + + + true if image should be inverted; otherwise, false. + + + + + Optional: Gets or sets the function to create a binarizer object for a luminance source. + If null then HybridBinarizer is used + + + The function to create a binarizer object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Sets the reader which should be used to find and decode the barcode. + If null then MultiFormatReader is used + Sets the function to create a binarizer object for a luminance source. + If null then HybridBinarizer is used + Sets the function to create a luminance source object for a rgb array. + If null the RGBLuminanceSource is used. The handler is only called when Decode with a byte[] array is called. + + + + Tries to decode a barcode within an image which is given by a luminance source. + That method gives a chance to prepare a luminance source completely before calling + the time consuming decoding method. On the other hand there is a chance to create + a luminance source which is independent from external resources (like Bitmap objects) + and the decoding call can be made in a background thread. + + The luminance source. + + + + + Tries to decode barcodes within an image which is given by a luminance source. + That method gives a chance to prepare a luminance source completely before calling + the time consuming decoding method. On the other hand there is a chance to create + a luminance source which is independent from external resources (like Bitmap objects) + and the decoding call can be made in a background thread. + + The luminance source. + + + + + raises the ResultFound event + + + + + + raises the ResultFound event + + + + + + calls the explicitResultPointFound action + + + + + + Decodes the specified barcode bitmap. + + The image as byte[] array. + The width. + The height. + The format. + + the result data or null + + + + + Decodes the specified barcode bitmap. + + The image as byte[] array. + The width. + The height. + The format. + + the result data or null + + + + + A smart class to encode some content to raw pixel data + + + + + Initializes a new instance of the class. + + + + + A smart class to encode some content to a svg barcode image + + + + + Initializes a new instance of the class. + + + + + A base class for specific barcode writers with specific formats of barcode images. + + The type of the output. + + + + Gets or sets the renderer which should be used to render the encoded BitMatrix. + + + + + Encodes the specified contents and returns a rendered instance of the barcode. + For rendering the instance of the property Renderer is used and has to be set before + calling that method. + + The contents. + + + + + Returns a rendered instance of the barcode which is given by a BitMatrix. + For rendering the instance of the property Renderer is used and has to be set before + calling that method. + + The matrix. + + + + + A base class for specific barcode writers with specific formats of barcode images. + + + + + Gets or sets the barcode format. + The value is only suitable if the MultiFormatWriter is used. + + + + + Gets or sets the options container for the encoding and renderer process. + + + + + Gets or sets the writer which encodes the content to a BitMatrix. + If no value is set the MultiFormatWriter is used. + + + + + + + + + + + + + + + + Encodes the specified contents and returns a BitMatrix array. + That array has to be rendered manually or with a IBarcodeRenderer. + + The contents. + + + + + The base class for luminance sources which supports + cropping and rotating based upon the luminance values. + + + + + weight of the red channel for calculating a gray scale image + + + + + weight of the green channel for calculating a gray scale image + + + + + weight of the blue channel for calculating a gray scale image + + + + + numbers of bits which for right shifting + + + + + + + + + + Initializes a new instance of the class. + + The width. + The height. + + + + Initializes a new instance of the class. + + The luminance array. + The width. + The height. + + + + Fetches one row of luminance data from the underlying platform's bitmap. Values range from + 0 (black) to 255 (white). It is preferable for implementations of this method + to only fetch this row rather than the whole image, since no 2D Readers may be installed and + getMatrix() may never be called. + + The row to fetch, 0 <= y < Height. + An optional preallocated array. If null or too small, it will be ignored. + Always use the returned object, and ignore the .length of the array. + + An array containing the luminance data. + + + + + gets the luminance matrix + + + + + Returns a new object with rotated image data by 90 degrees counterclockwise. + Only callable if {@link #isRotateSupported()} is true. + + + A rotated version of this object. + + + + + TODO: not implemented yet + + + A rotated version of this object. + + + + + + Whether this subclass supports counter-clockwise rotation. + + + + Returns a new object with cropped image data. Implementations may keep a reference to the + original data rather than a copy. Only callable if CropSupported is true. + + The left coordinate, 0 <= left < Width. + The top coordinate, 0 <= top <= Height. + The width of the rectangle to crop. + The height of the rectangle to crop. + + A cropped version of this object. + + + + + + Whether this subclass supports cropping. + + + + + Whether this subclass supports invertion. + + + + Inverts the luminance values (newValue = 255 - oldValue) + + + + + Should create a new luminance source with the right class type. + The method is used in methods crop and rotate. + + The new luminances. + The width. + The height. + + + + This class hierarchy provides a set of methods to convert luminance data to 1 bit data. + It allows the algorithm to vary polymorphically, for example allowing a very expensive + thresholding technique for servers and a fast one for mobile. It also permits the implementation + to vary, e.g. a JNI version for Android and a Java fallback version for other platforms. + + dswitkin@google.com (Daniel Switkin) + + + + + Initializes a new instance of the class. + + The source. + + + + Gets the luminance source object. + + + + Converts one row of luminance data to 1 bit data. May actually do the conversion, or return + cached data. Callers should assume this method is expensive and call it as seldom as possible. + This method is intended for decoding 1D barcodes and may choose to apply sharpening. + For callers which only examine one row of pixels at a time, the same BitArray should be reused + and passed in with each call for performance. However it is legal to keep more than one row + at a time if needed. + + The row to fetch, which must be in [0, bitmap height) + An optional preallocated array. If null or too small, it will be ignored. + If used, the Binarizer will call BitArray.clear(). Always use the returned object. + + The array of bits for this row (true means black). + + + Converts a 2D array of luminance data to 1 bit data. As above, assume this method is expensive + and do not call it repeatedly. This method is intended for decoding 2D barcodes and may or + may not apply sharpening. Therefore, a row from this matrix may not be identical to one + fetched using getBlackRow(), so don't mix and match between them. + + The 2D array of bits for the image (true means black). + + + Creates a new object with the same type as this Binarizer implementation, but with pristine + state. This is needed because Binarizer implementations may be stateful, e.g. keeping a cache + of 1 bit data. See Effective Java for why we can't use Java's clone() method. + + The LuminanceSource this Binarizer will operate on. + A new concrete Binarizer implementation object. + + + + Gets the width of the luminance source object. + + + + + Gets the height of the luminance source object. + + + + + This class is the core bitmap class used by ZXing to represent 1 bit data. Reader objects + accept a BinaryBitmap and attempt to decode it. + + dswitkin@google.com (Daniel Switkin) + + + + + + + + + + The width of the bitmap. + + + + + The height of the bitmap. + + + + + Converts one row of luminance data to 1 bit data. May actually do the conversion, or return + cached data. Callers should assume this method is expensive and call it as seldom as possible. + This method is intended for decoding 1D barcodes and may choose to apply sharpening. + + The row to fetch, which must be in [0, bitmap height). + An optional preallocated array. If null or too small, it will be ignored. + If used, the Binarizer will call BitArray.clear(). Always use the returned object. + + The array of bits for this row (true means black). + + + + Converts a 2D array of luminance data to 1 bit. As above, assume this method is expensive + and do not call it repeatedly. This method is intended for decoding 2D barcodes and may or + may not apply sharpening. Therefore, a row from this matrix may not be identical to one + fetched using getBlackRow(), so don't mix and match between them. + + The 2D array of bits for the image (true means black). + + + + Whether this bitmap can be cropped. + + + + + Returns a new object with cropped image data. Implementations may keep a reference to the + original data rather than a copy. Only callable if isCropSupported() is true. + + The left coordinate, which must be in [0, Width) + The top coordinate, which must be in [0, Height) + The width of the rectangle to crop. + The height of the rectangle to crop. + A cropped version of this object. + + + + Whether this bitmap supports counter-clockwise rotation. + + + + + Returns a new object with rotated image data by 90 degrees counterclockwise. + Only callable if is true. + + A rotated version of this object. + + + + Returns a new object with rotated image data by 45 degrees counterclockwise. + Only callable if is true. + + A rotated version of this object. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Encapsulates a type of hint that a caller may pass to a barcode reader to help it + more quickly or accurately decode it. It is up to implementations to decide what, + if anything, to do with the information that is supplied. + + + Sean Owen + dswitkin@google.com (Daniel Switkin) + + + + Unspecified, application-specific hint. Maps to an unspecified . + + + + + Image is a pure monochrome image of a barcode. Doesn't matter what it maps to; + use = true. + + + + + Image is known to be of one of a few possible formats. + Maps to a of s. + + + + + Spend more time to try to find a barcode; optimize for accuracy, not speed. + Doesn't matter what it maps to; use = true. + + + + + Specifies what character encoding to use when decoding, where applicable (type String) + + + + + Allowed lengths of encoded data -- reject anything else. Maps to an int[]. + + + + + Assume Code 39 codes employ a check digit. Maps to . + + + + + The caller needs to be notified via callback when a possible + is found. Maps to a . + + + + + Assume MSI codes employ a check digit. Maps to . + + + + + if Code39 could be detected try to use extended mode for full ASCII character set + Maps to . + + + + + Don't fail if a Code39 is detected but can't be decoded in extended mode. + Return the raw Code39 result instead. Maps to . + + + + + 1D readers supporting rotation with TRY_HARDER enabled. + But BarcodeReader class can do auto-rotating for 1D and 2D codes. + Enabling that option prevents 1D readers doing double rotation. + BarcodeReader enables that option automatically if "global" auto-rotation is enabled. + Maps to . + + + + + Assume the barcode is being processed as a GS1 barcode, and modify behavior as needed. + For example this affects FNC1 handling for Code 128 (aka GS1-128). Doesn't matter what it maps to; + use . + + + + + If true, return the start and end digits in a Codabar barcode instead of stripping them. They + are alpha, whereas the rest are numeric. By default, they are stripped, but this causes them + to not be. Doesn't matter what it maps to; use . + + + + + Allowed extension lengths for EAN or UPC barcodes. Other formats will ignore this. + Maps to an int[] of the allowed extension lengths, for example [2], [5], or [2, 5]. + If it is optional to have an extension, do not set this hint. If this is set, + and a UPC or EAN barcode is found but an extension is not, then no result will be returned + at all. + + + + + Simply encapsulates a width and height. + + + + + initializing constructor + + + + + + + the width + + + + + the height + + + + + + + + + + + + + + + + + + + + + + + + These are a set of hints that you may pass to Writers to specify their behavior. + + dswitkin@google.com (Daniel Switkin) + + + + Specifies the width of the barcode image + type: + + + + + Specifies the height of the barcode image + type: + + + + + Don't put the content string into the output image. + type: + + + + + Specifies what degree of error correction to use, for example in QR Codes. + Type depends on the encoder. For example for QR codes it's type + + For Aztec it is of type , representing the minimal percentage of error correction words. + In all cases, it can also be a representation of the desired value as well. + Note: an Aztec symbol should have a minimum of 25% EC words. + For PDF417 it is of type or (between 0 and 8), + + + + + Specifies what character encoding to use where applicable. + type: + + + + + Specifies margin, in pixels, to use when generating the barcode. The meaning can vary + by format; for example it controls margin before and after the barcode horizontally for + most 1D formats. + type: , or representation of the integer value + + + + + Specifies the aspect ratio to use. Default is 4. + type: , or 1-4. + + + + + Specifies the desired aspect ratio (number of columns / number of rows) of the output image. Default is 3. + type: . + + + + + Specifies whether to use compact mode for PDF417 + type: , or "true" or "false" + value + + + + + Specifies what compaction mode to use for PDF417. + type: or value of one of its + enum values + + + + + Specifies the minimum and maximum number of rows and columns for PDF417. + type: + + + + + Don't append ECI segment. + That is against the specification of QR Code but some + readers have problems if the charset is switched from + ISO-8859-1 (default) to UTF-8 with the necessary ECI segment. + If you set the property to true you can use UTF-8 encoding + and the ECI segment is omitted. + type: + + + + + Specifies the matrix shape for Data Matrix (type ) + + + + + Specifies a minimum barcode size (type ). Only applicable to Data Matrix now. + + + + + Specifies a maximum barcode size (type ). Only applicable to Data Matrix now. + + + + + if true, don't switch to codeset C for numbers + + + + + Specifies the default encodation for Data Matrix (type ) + Make sure that the content fits into the encodation value, otherwise there will be an exception thrown. + standard value: Encodation.ASCII + + + + + Specifies the required number of layers for an Aztec code. + A negative number (-1, -2, -3, -4) specifies a compact Aztec code + 0 indicates to use the minimum number of layers (the default) + A positive number (1, 2, .. 32) specifies a normal (non-compact) Aztec code + type: , or representation of the integer value + + + + + Specifies the exact version of QR code to be encoded. + (Type , or representation of the integer value). + + + + + Specifies whether the data should be encoded to the GS1 standard + type: , or "true" or "false" + value + + + + + Specifies the QR code mask pattern to be used. Allowed values are + 0..QRCode.NUM_MASK_PATTERNS-1. By default the code will automatically select + the optimal mask pattern. + (Type , or representation of the integer value). + + + + + Thrown when a barcode was successfully detected, but some aspect of + the content did not conform to the barcode's format rules. This could have + been due to a mis-detection. + Sean Owen + + + + + + + + + + + + + + + + + + + + + + + + + Interface for a smart class to decode the barcode inside a bitmap object + + + Interface for a smart class to decode multiple barcodes inside a bitmap object + + + + + event is executed when a result point was found + + + + + event is executed when a result was found via decode + + + + + Specifies some options which influence the decoding process + + + + + Decodes the specified barcode bitmap which is given by a generic byte array with the order RGB24. + + The image as RGB24 array. + The width. + The height. + The format. + + the result data or null + + + + + Tries to decode a barcode within an image which is given by a luminance source. + That method gives a chance to prepare a luminance source completely before calling + the time consuming decoding method. On the other hand there is a chance to create + a luminance source which is independent from external resources (like Bitmap objects) + and the decoding call can be made in a background thread. + + The luminance source. + + + + + Decodes the specified barcode bitmap which is given by a generic byte array with the order RGB24. + + The image as RGB24 array. + The width. + The height. + The format. + + the result data or null + + + + + Tries to decode barcodes within an image which is given by a luminance source. + That method gives a chance to prepare a luminance source completely before calling + the time consuming decoding method. On the other hand there is a chance to create + a luminance source which is independent from external resources (like Bitmap objects) + and the decoding call can be made in a background thread. + + The luminance source. + + + + + Interface for a smart class to decode the barcode inside a bitmap object + + + Interface for a smart class to decode multiple barcodes inside a bitmap object + + + + + Decodes the specified barcode bitmap. + + The barcode bitmap. + the result data or null + + + + Decodes the specified barcode bitmap. + + The barcode bitmap. + the result data or null + + + + Interface for a smart class to decode the barcode inside a bitmap object + + + Interface for a smart class to decode multiple barcodes inside a bitmap object + + + + + event is executed when a result point was found + + + + + event is executed when a result was found via decode + + + + + Specifies some options which influence the decoding process + + + + + Decodes the specified barcode bitmap which is given by a generic byte array. + + The barcode bitmap. + The width. + The height. + The format. + + the result data or null + + + + + Tries to decode a barcode within an image which is given by a luminance source. + That method gives a chance to prepare a luminance source completely before calling + the time consuming decoding method. On the other hand there is a chance to create + a luminance source which is independent from external resources (like Bitmap objects) + and the decoding call can be made in a background thread. + + The luminance source. + + + + + Decodes the specified barcode bitmap which is given by a generic byte array with the order RGB24. + + The barcode bitmap. + The width. + The height. + The format. + + the result data or null + + + + + Tries to decode barcodes within an image which is given by a luminance source. + That method gives a chance to prepare a luminance source completely before calling + the time consuming decoding method. On the other hand there is a chance to create + a luminance source which is independent from external resources (like Bitmap objects) + and the decoding call can be made in a background thread. + + The luminance source. + + + + + Interface for a smart class to encode some content into a barcode + + + + + Get or sets the barcode format which should be generated + (only suitable if MultiFormatWriter is used for property Encoder which is the default) + + + + + Gets or sets the options container for the encoding and renderer process. + + + + + Gets or sets the writer which encodes the content to a BitMatrix. + If no value is set the MultiFormatWriter is used. + + + + + Encodes the specified contents. + + The contents. + + + + + Interface for a smart class to encode some content into a barcode + + + + + Creates a visual representation of the contents + + + + + Returns a rendered instance of the barcode which is given by a BitMatrix. + + + + + Interface for a smart class to encode some content into a barcode + + + + + Creates a visual representation of the contents + + + + + Returns a rendered instance of the barcode which is given by a BitMatrix. + + + + + Interface for a smart class to encode some content into a barcode + + + + + Creates a visual representation of the contents + + The contents. + + + + + Returns a rendered instance of the barcode which is given by a BitMatrix. + + The matrix. + + + + + Interface for a smart class to encode some content into a barcode + + + + + Get or sets the barcode format which should be generated + (only suitable if MultiFormatWriter is used for property Encoder which is the default) + + + + + Gets or sets the options container for the encoding and renderer process. + + + + + Gets or sets the writer which encodes the content to a BitMatrix. + If no value is set the MultiFormatWriter is used. + + + + + Encodes the specified contents. + + The contents. + + + + + A wrapper implementation of {@link LuminanceSource} which inverts the luminances it returns -- black becomes + white and vice versa, and each value becomes (255-value). + + Sean Owen + + + + Initializes a new instance of the class. + + The @delegate. + + + + Fetches one row of luminance data from the underlying platform's bitmap. Values range from + 0 (black) to 255 (white). Because Java does not have an unsigned byte type, callers will have + to bitwise and with 0xff for each value. It is preferable for implementations of this method + to only fetch this row rather than the whole image, since no 2D Readers may be installed and + getMatrix() may never be called. + + The row to fetch, 0 <= y < Height. + An optional preallocated array. If null or too small, it will be ignored. + Always use the returned object, and ignore the .length of the array. + + An array containing the luminance data. + + + + + Fetches luminance data for the underlying bitmap. Values should be fetched using: + int luminance = array[y * width + x] & 0xff; + + A row-major 2D array of luminance values. Do not use result.length as it may be + larger than width * height bytes on some platforms. Do not modify the contents + of the result. + + + + + + Whether this subclass supports cropping. + + + + Returns a new object with cropped image data. Implementations may keep a reference to the + original data rather than a copy. Only callable if CropSupported is true. + + The left coordinate, 0 <= left < Width. + The top coordinate, 0 <= top <= Height. + The width of the rectangle to crop. + The height of the rectangle to crop. + + A cropped version of this object. + + + + + + Whether this subclass supports counter-clockwise rotation. + + + + Inverts this instance. + + original delegate {@link LuminanceSource} since invert undoes itself + + + + Returns a new object with rotated image data by 90 degrees counterclockwise. + Only callable if {@link #isRotateSupported()} is true. + + + A rotated version of this object. + + + + + Returns a new object with rotated image data by 45 degrees counterclockwise. + Only callable if {@link #isRotateSupported()} is true. + + + A rotated version of this object. + + + + + The purpose of this class hierarchy is to abstract different bitmap implementations across + platforms into a standard interface for requesting greyscale luminance values. The interface + only provides immutable methods; therefore crop and rotation create copies. This is to ensure + that one Reader does not modify the original luminance source and leave it in an unknown state + for other Readers in the chain. + + dswitkin@google.com (Daniel Switkin) + + + + initializing constructor + + + + + + + Fetches one row of luminance data from the underlying platform's bitmap. Values range from + 0 (black) to 255 (white). Because Java does not have an unsigned byte type, callers will have + to bitwise and with 0xff for each value. It is preferable for implementations of this method + to only fetch this row rather than the whole image, since no 2D Readers may be installed and + getMatrix() may never be called. + + The row to fetch, which must be in [0, bitmap height) + An optional preallocated array. If null or too small, it will be ignored. + Always use the returned object, and ignore the .length of the array. + + An array containing the luminance data. + + + + Fetches luminance data for the underlying bitmap. Values should be fetched using: + int luminance = array[y * width + x] & 0xff + + + A row-major 2D array of luminance values. Do not use result.length as it may be + larger than width * height bytes on some platforms. Do not modify the contents + of the result. + + + + The width of the bitmap. + + + The height of the bitmap. + + + Whether this subclass supports cropping. + + + + Returns a new object with cropped image data. Implementations may keep a reference to the + original data rather than a copy. Only callable if CropSupported is true. + + The left coordinate, which must be in [0, Width) + The top coordinate, which must be in [0, Height) + The width of the rectangle to crop. + The height of the rectangle to crop. + A cropped version of this object. + + + Whether this subclass supports counter-clockwise rotation. + + + + Returns a new object with rotated image data by 90 degrees counterclockwise. + Only callable if is true. + + A rotated version of this object. + + + + Returns a new object with rotated image data by 45 degrees counterclockwise. + Only callable if is true. + + A rotated version of this object. + + + + + Whether this subclass supports invertion. + + + + inverts the luminance values, not supported here. has to implemented in sub classes + + + + + + + + + + + + MultiFormatReader is a convenience class and the main entry point into the library for most uses. + By default it attempts to decode all barcode formats that the library supports. Optionally, you + can provide a hints object to request different behavior, for example only decoding QR codes. + + Sean Owen + dswitkin@google.com (Daniel Switkin) + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + This version of decode honors the intent of Reader.decode(BinaryBitmap) in that it + passes null as a hint to the decoders. However, that makes it inefficient to call repeatedly. + Use setHints() followed by decodeWithState() for continuous scan applications. + + + The pixel data to decode + + The contents of the image + + ReaderException Any errors which occurred + + + Decode an image using the hints provided. Does not honor existing state. + + + The pixel data to decode + + The hints to use, clearing the previous state. + + The contents of the image + + ReaderException Any errors which occurred + + + Decode an image using the state set up by calling setHints() previously. Continuous scan + clients will get a large speed increase by using this instead of decode(). + + + The pixel data to decode + + The contents of the image + + ReaderException Any errors which occurred + + + This method adds state to the MultiFormatReader. By setting the hints once, subsequent calls + to decodeWithState(image) can reuse the same set of readers without reallocating memory. This + is important for performance in continuous scan clients. + + + + + + resets all specific readers + + + + This is a factory class which finds the appropriate Writer subclass for the BarcodeFormat + requested and encodes the barcode with the supplied contents. + + + dswitkin@google.com (Daniel Switkin) + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + Gets the collection of supported writers. + + + + + encode the given data + + + + + + + + + + encode the given data + + + + + + + + + + + This object extends LuminanceSource around an array of YUV data returned from the camera driver, + with the option to crop to a rectangle within the full data. This can be used to exclude + superfluous pixels around the perimeter and speed up decoding. + It works for any pixel format where the Y channel is planar and appears first, including + YCbCr_420_SP and YCbCr_422_SP. + @author dswitkin@google.com (Daniel Switkin) + + + + + Initializes a new instance of the class. + + The yuv data. + Width of the data. + Height of the data. + The left. + The top. + The width. + The height. + if set to true [reverse horiz]. + + + + Initializes a new instance of the class. + + The luminances. + The width. + The height. + + + + Fetches one row of luminance data from the underlying platform's bitmap. Values range from + 0 (black) to 255 (white). Because Java does not have an unsigned byte type, callers will have + to bitwise and with 0xff for each value. It is preferable for implementations of this method + to only fetch this row rather than the whole image, since no 2D Readers may be installed and + getMatrix() may never be called. + + The row to fetch, 0 <= y < Height. + An optional preallocated array. If null or too small, it will be ignored. + Always use the returned object, and ignore the .length of the array. + + An array containing the luminance data. + + + + + + + + + + + Whether this subclass supports cropping. + + + + Returns a new object with cropped image data. Implementations may keep a reference to the + original data rather than a copy. Only callable if CropSupported is true. + + The left coordinate, 0 <= left < Width. + The top coordinate, 0 <= top <= Height. + The width of the rectangle to crop. + The height of the rectangle to crop. + + A cropped version of this object. + + + + + Renders the cropped greyscale bitmap. + + + + + + width of image from {@link #renderThumbnail()} + + + + + height of image from {@link #renderThumbnail()} + + + + + creates a new instance + + + + + + + + + Implementations of this interface can decode an image of a barcode in some format into + the String it encodes. For example, can + decode a QR code. The decoder may optionally receive hints from the caller which may help + it decode more quickly or accurately. + + See , which attempts to determine what barcode + format is present within the image as well, and then decodes it accordingly. + + Sean Owen + dswitkin@google.com (Daniel Switkin) + + + + Locates and decodes a barcode in some format within an image. + + image of barcode to decode + String which the barcode encodes + + + Locates and decodes a barcode in some format within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + + The general exception class throw when something goes wrong during decoding of a barcode. + This includes, but is not limited to, failing checksums / error correction algorithms, being + unable to locate finder timing patterns, and so on. + + Sean Owen + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The inner exception. + + + + Initializes a new instance of the class. + + The inner exception. + + + + + Encapsulates the result of decoding a barcode within an image. + + + + raw text encoded by the barcode, if applicable, otherwise null + + + raw bytes encoded by the barcode, if applicable, otherwise null + + + + points related to the barcode in the image. These are typically points + identifying finder patterns or the corners of the barcode. The exact meaning is + specific to the type of barcode that was decoded. + + + + {@link BarcodeFormat} representing the format of the barcode that was decoded + + + + {@link Hashtable} mapping {@link ResultMetadataType} keys to values. May be + null. This contains optional metadata about what was detected about the barcode, + like orientation. + + + + + Gets the timestamp. + + + + + how many bits of are valid; typically 8 times its length + + + + + Initializes a new instance of the class. + + The text. + The raw bytes. + The result points. + The format. + + + + Initializes a new instance of the class. + + The text. + The raw bytes. + + The result points. + The format. + + + + Initializes a new instance of the class. + + The text. + The raw bytes. + The result points. + The format. + The timestamp. + + + + Initializes a new instance of the class. + + The text. + The raw bytes. + + The result points. + The format. + The timestamp. + + + + Adds one metadata to the result + + The type. + The value. + + + + Adds a list of metadata to the result + + The metadata. + + + + Adds the result points. + + The new points. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents some type of metadata about the result of the decoding that the decoder + wishes to communicate back to the caller. + + Sean Owen + + + + Unspecified, application-specific metadata. Maps to an unspecified {@link Object}. + + + + + Denotes the likely approximate orientation of the barcode in the image. This value + is given as degrees rotated clockwise from the normal, upright orientation. + For example a 1D barcode which was found by reading top-to-bottom would be + said to have orientation "90". This key maps to an {@link Integer} whose + value is in the range [0,360). + + + + +

    2D barcode formats typically encode text, but allow for a sort of 'byte mode' + which is sometimes used to encode binary data. While {@link Result} makes available + the complete raw bytes in the barcode for these formats, it does not offer the bytes + from the byte segments alone.

    +

    This maps to a {@link java.util.List} of byte arrays corresponding to the + raw bytes in the byte segments in the barcode, in order.

    +
    +
    + + + Error correction level used, if applicable. The value type depends on the + format, but is typically a String. + + + + + For some periodicals, indicates the issue number as an {@link Integer}. + + + + + For some products, indicates the suggested retail price in the barcode as a + formatted {@link String}. + + + + + For some products, the possible country of manufacture as a {@link String} denoting the + ISO country code. Some map to multiple possible countries, like "US/CA". + + + + + For some products, the extension text + + + + + If the code format supports structured append and + the current scanned code is part of one then the + sequence number is given with it. + + + + + If the code format supports structured append and + the current scanned code is part of one then the + parity is given with it. + + + + + PDF417-specific metadata + + + + + Aztec-specific metadata + + + + + Encapsulates a point of interest in an image containing a barcode. Typically, this + would be the location of a finder pattern or the corner of the barcode, for example. + + Sean Owen + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The x. + The y. + + + + Gets the X. + + + + + Gets the Y. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Orders an array of three ResultPoints in an order [A,B,C] such that AB is less than AC and + BC is less than AC and the angle between BC and BA is less than 180 degrees. + + array of three to order + + + + calculates the distance between two points + + first pattern + second pattern + + distance between two points + + + + + Returns the z component of the cross product between vectors BC and BA. + + + + Callback which is invoked when a possible result point (significant + point in the barcode image such as a corner) is found. + + + + + + + + Luminance source class which support different formats of images. + + + + + enumeration of supported bitmap format which the RGBLuminanceSource can process + + + + + format of the byte[] isn't known. RGBLuminanceSource tries to determine the best possible value + + + + + grayscale array, the byte array is a luminance array with 1 byte per pixel + + + + + grayscale array, the byte array is a luminance array with 2 bytes per pixel + + + + + 3 bytes per pixel with the channels red, green and blue + + + + + 4 bytes per pixel with the channels red, green and blue + + + + + 4 bytes per pixel with the channels alpha, red, green and blue + + + + + 3 bytes per pixel with the channels blue, green and red + + + + + 4 bytes per pixel with the channels blue, green and red + + + + + 4 bytes per pixel with the channels blue, green, red and alpha + + + + + 2 bytes per pixel, 5 bit red, 6 bits green and 5 bits blue + + + + + 4 bytes per pixel with the channels red, green, blue and alpha + + + + + 4 bytes for two pixels, UYVY formatted + + + + + 4 bytes for two pixels, YUYV formatted + + + + + Initializes a new instance of the class. + + The width. + The height. + + + + Initializes a new instance of the class. + It supports a byte array with 3 bytes per pixel (RGB24). + + The RGB raw bytes. + The width. + The height. + + + + Initializes a new instance of the class. + It supports a byte array with 1 byte per pixel (Gray8). + That means the whole array consists of the luminance values (grayscale). + + The luminance array. + The width. + The height. + if set to true [is8 bit]. + + + + Initializes a new instance of the class. + It supports a byte array with 3 bytes per pixel (RGB24). + + The RGB raw bytes. + The width. + The height. + The bitmap format. + + + + Should create a new luminance source with the right class type. + The method is used in methods crop and rotate. + + The new luminances. + The width. + The height. + + + + + calculates the luminance values for the given byte array and bitmap format + + + + + + + Contains conversion support elements such as classes, interfaces and static methods. + + + + + Copies an array of chars obtained from a String into a specified array of chars + + The String to get the chars from + Position of the String to start getting the chars + Position of the String to end getting the chars + Array to return the chars + Position of the destination array of chars to start storing the chars + An array of chars + + + + Sets the capacity for the specified List + + The List which capacity will be set + The new capacity value + + + + Converts a string-Collection to an array + + The strings. + + + + + Joins all elements to one string. + + + The separator. + The values. + + + + + Fills the specified array. + (can't use extension method because of .Net 2.0 support) + + + The array. + The value. + + + + Fills the specified array. + (can't use extension method because of .Net 2.0 support) + + + The array. + The start index. + The end index. + The value. + + + + + + + + + + + + + + + + + + Savely gets the value of a decoding hint + if hints is null the default is returned + + + The hints. + Type of the hint. + The @default. + + + + The base class for all objects which encode/generate a barcode image. + + + dswitkin@google.com (Daniel Switkin) + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + Encode a barcode using the default settings. + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + Additional parameters to supply to the encoder + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + A base class which covers the range of exceptions which may occur when encoding a barcode using + the Writer framework. + + dswitkin@google.com (Daniel Switkin) + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exc. + + + + Extends with more information specific to the Aztec format, + like the number of layers and whether it's compact. + + + + + Gets a value indicating whether this Aztec code is compact. + + + true if compact; otherwise, false. + + + + + Gets the nb datablocks. + + + + + Gets the nb layers. + + + + + Initializes a new instance of the class. + + The bits. + The points. + if set to true [compact]. + The nb datablocks. + The nb layers. + + + + The main class which implements Aztec Code decoding -- as opposed to locating and extracting + the Aztec Code from an image. + + David Olivier + + + + Decodes the specified detector result. + + The detector result. + + + + + This method is used for testing the high-level encoder + + + + + + + Gets the string encoded in the aztec code bits + + The corrected bits. + the decoded string + + + + gets the table corresponding to the char passed + + The t. + + + + + Gets the character (or string) corresponding to the passed code in the given table + + the table used + the code of the character + + + + + Performs RS error correction on an array of bits. + + The rawbits. + the corrected array + + + + Gets the array of bits from an Aztec Code matrix + + The matrix. + the array of bits + + + + Reads a code of given length and at given index in an array of bits + + The rawbits. + The start index. + The length. + + + + + Reads a code of length 8 in an array of bits, padding with zeros + + + + + + + + Packs a bit array into bytes, most significant bit first + + + + + + + Encapsulates logic that can detect an Aztec Code in an image, even if the Aztec Code + is rotated or skewed, or partially obscured. + + David Olivier + + + + Initializes a new instance of the class. + + The image. + + + + Detects an Aztec Code in an image. + + + + + Detects an Aztec Code in an image. + + if true, image is a mirror-image of original. + + encapsulating results of detecting an Aztec Code + + + + + Extracts the number of data layers and data blocks from the layer around the bull's eye + + bullEyeCornerPoints the array of bull's eye corners + + + + + Corrects the parameter bits using Reed-Solomon algorithm + + paremeter bits + compact true if this is a compact Aztec code + + + + + Finds the corners of a bull-eye centered on the passed point + This returns the centers of the diagonal points just outside the bull's eye + Returns [topRight, bottomRight, bottomLeft, topLeft] + + Center point + The corners of the bull-eye + + + + Finds a candidate center point of an Aztec code from an image + + the center point + + + + Gets the Aztec code corners from the bull's eye corners and the parameters. + + the array of bull's eye corners + the array of aztec code corners + + + + Creates a BitMatrix by sampling the provided image. + topLeft, topRight, bottomRight, and bottomLeft are the centers of the squares on the + diagonal just outside the bull's eye. + + The image. + The top left. + The bottom left. + The bottom right. + The top right. + + + + + Samples a line + + start point (inclusive) + end point (exclusive) + number of bits + the array of bits as an int (first bit is high-order bit of result) + + + + Determines whether [is white or black rectangle] [the specified p1]. + + The p1. + The p2. + The p3. + The p4. + true if the border of the rectangle passed in parameter is compound of white points only + or black points only + + + + Gets the color of a segment + + The p1. + The p2. + 1 if segment more than 90% black, -1 if segment is more than 90% white, 0 else + + + + Gets the coordinate of the first point with a different color in the given direction + + The init. + if set to true [color]. + The dx. + The dy. + + + + + Expand the square represented by the corner points by pushing out equally in all directions + + the corners of the square, which has the bull's eye at its center + the original length of the side of the square in the target bit matrix + the new length of the size of the square in the target bit matrix + the corners of the expanded square + + + + Aztec 2D code representation + + Rustam Abdullaev + + + + Compact or full symbol indicator + + + + + Size in pixels (width and height) + + + + + Number of levels + + + + + Number of data codewords + + + + + The symbol image + + + + + represents a token for a binary shift + + + + + initializing constructor + + + + + + + + appends the byte array to the BitArray + + + + + + + string representation + + + + + + Generates Aztec 2D barcodes. + + Rustam Abdullaev + + + + Encodes the given binary content as an Aztec symbol + + input data string + Aztec symbol matrix with metadata + + + + Encodes the given binary content as an Aztec symbol + + input data string + minimal percentage of error check words (According to ISO/IEC 24778:2008, + a minimum of 23% + 3 words is recommended) + if non-zero, a user-specified value for the number of layers + + Aztec symbol matrix with metadata + + + + + This produces nearly optimal encodings of text into the first-level of + encoding used by Aztec code. + It uses a dynamic algorithm. For each prefix of the string, it determines + a set of encodings that could lead to this prefix. We repeatedly add a + character and generate a new set of optimal encodings until we have read + through the entire input. + @author Frank Yellin + @author Rustam Abdullaev + + + + + + + + + + + Convert the text represented by this High Level Encoder into a BitArray. + + text represented by this encoder encoded as a + + + + State represents all information about a sequence necessary to generate the current output. + Note that a state is immutable. + + + + + Create a new state representing this state with a latch to a (not + necessary different) mode, and then a code. + + + + + Create a new state representing this state, with a temporary shift + to a different mode to output a single value. + + + + + Create a new state representing this state, but an additional character + output in Binary Shift mode. + + + + + Create the state identical to this one, but we are no longer in + Binary Shift mode. + + + + + Returns true if "this" state is better (or equal) to be in than "that" + state under all possible circumstances. + + + + + This implementation can detect and decode Aztec codes in an image. + + David Olivier + + + + Locates and decodes a barcode in some format within an image. + + image of barcode to decode + + a String representing the content encoded by the Data Matrix code + + + + + Locates and decodes a Data Matrix code in an image. + + image of barcode to decode + passed as a {@link java.util.Hashtable} from {@link com.google.zxing.DecodeHintType} + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + + Aztec result meta data. + + + + + Gets a value indicating whether this Aztec code is compact. + + + true if compact; otherwise, false. + + + + + Gets the nb datablocks. + + + + + Gets the nb layers. + + + + + + + + + + + + + Renders an Aztec code as a + + + + + Encode a barcode using the default settings. + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + Additional parameters to supply to the encoder + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + The class holds the available options for the + + + + + Representing the minimal percentage of error correction words. + Note: an Aztec symbol should have a minimum of 25% EC words. + + + + + Specifies the required number of layers for an Aztec code: + a negative number (-1, -2, -3, -4) specifies a compact Aztec code + 0 indicates to use the minimum number of layers (the default) + a positive number (1, 2, .. 32) specifies a normal (non-compact) Aztec code + + + +

    See + + DoCoMo's documentation about the result types represented by subclasses of this class.

    + +

    Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.

    + +
    + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + Implements KDDI AU's address book format. See + + http://www.au.kddi.com/ezfactory/tec/two_dimensions/index.html. + (Thanks to Yuzo for translating!) + + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + Implements the "MECARD" address book entry format. + + Supported keys: N, SOUND, TEL, EMAIL, NOTE, ADR, BDAY, URL, plus ORG + Unsupported keys: TEL-AV, NICKNAME + + Except for TEL, multiple values for keys are also not supported; + the first one found takes precedence. + + Our understanding of the MECARD format is based on this document: + + http://www.mobicode.org.tw/files/OMIA%20Mobile%20Bar%20Code%20Standard%20v3.2.1.doc + + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + Represents a parsed result that encodes contact information, like that in an address book entry. + + Sean Owen + + + + initializing constructor + + + + + + + + + + + + initializing constructor + + + + + + + + + + + + + + + + + + + + + the names + + + + + the nicknames + + + + + In Japanese, the name is written in kanji, which can have multiple readings. Therefore a hint + is often provided, called furigana, which spells the name phonetically. + + The pronunciation of the getNames() field, often in hiragana or katakana. + + + + the phone numbers + + + + optional descriptions of the type of each phone number. It could be like "HOME", but, + there is no guaranteed or standard format. + + + + the e-mail addresses + + + + optional descriptions of the type of each e-mail. It could be like "WORK", but, + there is no guaranteed or standard format. + + + + the instant messenger addresses + + + + + the note field + + + + + the addresses + + + + optional descriptions of the type of each e-mail. It could be like "WORK", but, + there is no guaranteed or standard format. + + + + the title + + + + + the urls + + + + birthday formatted as yyyyMMdd (e.g. 19780917) + + + a location as a latitude/longitude pair + + + Implements the "BIZCARD" address book entry format, though this has been + largely reverse-engineered from examples observed in the wild -- still + looking for a definitive reference. + + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + Represents a parsed result that encodes a calendar event at a certain time, optionally with attendees and a location. + + Sean Owen + + + + Gets the start. + + + + + Determines whether [is start all day]. + + if start time was specified as a whole day + + + + event end , or null if event has no duration + + + + + Gets a value indicating whether this instance is end all day. + + true if end time was specified as a whole day + + + + Parses a string as a date. RFC 2445 allows the start and end fields to be of type DATE (e.g. 20081021) + or DATE-TIME (e.g. 20081021T123000 for local time, or 20081021T123000Z for UTC). + + The string to parse + + if not a date formatted string + + + + Represents a parsed result that encodes an email message including recipients, subject and body text. + + Sean Owen + + + + the email address + + + + + the TOs + + + + + the CCs + + + + + the BCCs + + + + + the subject + + + + + the body + + + + + the mailto: uri + + + + + Represents a result that encodes an e-mail address, either as a plain address + like "joe@example.org" or a mailto: URL like "mailto:joe@example.org". + + Sean Owen + + + + Implements the "MATMSG" email message entry format. + + Supported keys: TO, SUB, BODY + + Sean Owen + + + + This implements only the most basic checking for an email address's validity -- that it contains + an '@' and contains no characters disallowed by RFC 2822. This is an overly lenient definition of + validity. We want to generally be lenient here since this class is only intended to encapsulate what's + in a barcode, not "judge" it. + + The email. + + true if it is basically a valid email address; otherwise, false. + + + + + Represents a parsed result that encodes extended product information as encoded by the RSS format, like weight, price, dates, etc. + + Antonio Manuel Benjumea Conde, Servinform, S.A. + Agustín Delgado, Servinform, S.A. + + + + extension for kilogram weight type + + + + + extension for pounds weight type + + + + + initializing constructor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the raw text + + + + + the product id + + + + + the sscc + + + + + the lot number + + + + + the production date + + + + + the packaging date + + + + + the best before date + + + + + the expiration date + + + + + the weight + + + + + the weight type + + + + + the weight increment + + + + + the price + + + + + the price increment + + + + + the price currency + + + + + the uncommon AIs + + + + + the display representation (raw text) + + + + + Parses strings of digits that represent a RSS Extended code. + + Antonio Manuel Benjumea Conde, Servinform, S.A. + Agustín Delgado, Servinform, S.A. + + + + tries to parse a text representation to a specific result object + + + + + + + Represents a parsed result that encodes a geographic coordinate, with latitude, longitude and altitude. + + Sean Owen + + + latitude in degrees + + + + longitude in degrees + + + + altitude in meters. If not specified, in the geo URI, returns 0.0 + + + + query string associated with geo URI or null if none exists + + + + the geo URI + + + + a URI link to Google Maps which display the point on the Earth described + by this instance, and sets the zoom level in a way that roughly reflects the + altitude, if specified + + + + Parses a "geo:" URI result, which specifies a location on the surface of + the Earth as well as an optional altitude above the surface. See + + http://tools.ietf.org/html/draft-mayrhofer-geo-uri-00. + + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + Represents a parsed result that encodes a product ISBN number. + + jbreiden@google.com (Jeff Breidenbach) + + + + the ISBN number + + + + Parses strings of digits that represent a ISBN. + + + jbreiden@google.com (Jeff Breidenbach) + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + See ISBN-13 For Dummies + + The result. + + + +

    Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + decoded string into the most appropriate type of structured representation.

    + +

    Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.

    +
    + Sean Owen +
    + + + Represents the type of data encoded by a barcode -- from plain text, to a + URI, to an e-mail address, etc. + + Sean Owen + + + + Represents a parsed result that encodes a product by an identifier of some kind. + + dswitkin@google.com (Daniel Switkin) + + + + Parses strings of digits that represent a UPC code. + + dswitkin@google.com (Daniel Switkin) + + +

    Abstract class representing the result of decoding a barcode, as more than + a String -- as some type of structured data. This might be a subclass which represents + a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + decoded string into the most appropriate type of structured representation.

    + +

    Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + on exception-based mechanisms during parsing.

    +
    + Sean Owen +
    + + + Attempts to parse the raw {@link Result}'s contents as a particular type + of information (email, URL, etc.) and return a {@link ParsedResult} encapsulating + the result of parsing. + + the raw to parse + encapsulating the parsing result + + + + Parses the result. + + The result. + + + +

    Parses an "sms:" URI result, which specifies a number to SMS and optional + "via" number. See + the IETF draft on this.

    + +

    This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.

    + +
    + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + +
    + + + Represents a parsed result that encodes an SMS message, including recipients, subject and body text. + + Sean Owen + + + +

    Parses an "smsto:" URI result, whose format is not standardized but appears to be like: + {@code smsto:number(:body)}.

    +

    This actually also parses URIs starting with "smsto:", "mmsto:", "SMSTO:", and + "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + for purposes of forwarding to the platform.

    +
    + Sean Owen +
    + + +

    Parses an "smtp:" URI result, whose format is not standardized but appears to be like: + smtp[:subject[:body]]}.

    +

    See http://code.google.com/p/zxing/issues/detail?id=536

    +
    + Sean Owen +
    + + + Represents a parsed result that encodes a telephone number. + + Sean Owen + + + + Parses a "tel:" URI result, which specifies a phone number. + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + A simple result type encapsulating a string that has no further interpretation. + + Sean Owen + + + + A simple result type encapsulating a URI that has no further interpretation. + + Sean Owen + + + true if the URI contains suspicious patterns that may suggest it intends to + mislead the user about its true nature. At the moment this looks for the presence + of user/password syntax in the host/authority portion of a URI which may be used + in attempts to make the URI's host appear to be other than it is. Example: + http://yourbank.com@phisher.com This URI connects to phisher.com but may appear + to connect to yourbank.com at first glance. + + + + Transforms a string that represents a URI into something more proper, by adding or canonicalizing + the protocol. + + + + + Tries to parse results that are a URI of some kind. + + Sean Owen + + + @return true if the URI contains suspicious patterns that may suggest it intends to + mislead the user about its true nature. At the moment this looks for the presence + of user/password syntax in the host/authority portion of a URI which may be used + in attempts to make the URI's host appear to be other than it is. Example: + http://yourbank.com@phisher.com This URI connects to phisher.com but may appear + to connect to yourbank.com at first glance. + + + Parses the "URLTO" result format, which is of the form "URLTO:[title]:[url]". + This seems to be used sometimes, but I am not able to find documentation + on its origin or official format? + + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + Parses contact information formatted according to the VCard (2.1) format. This is not a complete + implementation but should parse information as commonly encoded in 2D barcodes. + + Sean Owen + + + Formats name fields of the form "Public;John;Q.;Reverend;III" into a form like + "Reverend John Q. Public III". + + @param names name values to format, in place + + + + Partially implements the iCalendar format's "VEVENT" format for specifying a + calendar event. See RFC 2445. This supports SUMMARY, DTSTART and DTEND fields. + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + Represents a parsed result that encodes a Vehicle Identification Number (VIN). + + + + + Detects a result that is likely a vehicle identification number. + @author Sean Owen + + + + + Represents a parsed result that encodes wifi network information, like SSID and password. + + Vikram Aggarwal + + + + + A simple, fast array of bits, represented compactly by an array of ints internally. + + Sean Owen + + + + size of the array, number of elements + + + + + size of the array in bytes + + + + + index accessor + + + + + + + default constructor + + + + + initializing constructor + + desired size of the array + + + + Flips bit i. + + bit to set + + + + + Gets the next set. + + first bit to check + index of first bit that is set, starting from the given index, or size if none are set + at or beyond this given index + + + + see getNextSet(int) + + index to start looking for unset bit + index of next unset bit, or if none are unset until the end + + + Sets a block of 32 bits, starting at bit i. + + + first bit to set + + the new value of the next 32 bits. Note again that the least-significant bit + corresponds to bit i, the next-least-significant to i+1, and so on. + + + + + Sets a range of bits. + + start of range, inclusive. + end of range, exclusive + + + Clears all bits (sets to false). + + + Efficient method to check if a range of bits is set, or not set. + + + start of range, inclusive. + + end of range, exclusive + + if true, checks that bits in range are set, otherwise checks that they are not set + + true iff all bits are set or not set in range, according to value argument + if end is less than start or the range is not contained in the array + + + + Appends the bit. + + The bit. + + + underlying array of ints. The first element holds the first 32 bits, and the least + significant bit is bit 0. + + + + + Appends the least-significant bits, from value, in order from most-significant to + least-significant. For example, appending 6 bits from 0x000001E will append the bits + 0, 1, 1, 1, 1, 0 in that order. + + containing bits to append + bits from value to append + + + + adds the array to the end + + + + + + XOR operation + + + + + + converts to bytes. + + first bit to start writing + array to write into. Bytes are written most-significant byte first. This is the opposite + of the internal representation, which is exposed by BitArray + position in array to start writing + how many bytes to write + + + Reverses all bits in the array. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Erstellt ein neues Objekt, das eine Kopie der aktuellen Instanz darstellt. + + + Ein neues Objekt, das eine Kopie dieser Instanz darstellt. + + + + +

    Represents a 2D matrix of bits. In function arguments below, and throughout the common + module, x is the column position, and y is the row position. The ordering is always x, y. + The origin is at the top-left.

    +

    Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + with a new int. This is done intentionally so that we can copy out a row into a BitArray very + efficiently.

    +

    The ordering of bits is row-major. Within each int, the least significant bits are used first, + meaning they represent lower x values. This is compatible with BitArray's implementation.

    +
    + Sean Owen + dswitkin@google.com (Daniel Switkin) +
    + + The width of the matrix + + + + The height of the matrix + + + + This method is for compatibility with older code. It's only logical to call if the matrix + is square, so I'm throwing if that's not the case. + + + row/column dimension of this matrix + + + + + The rowsize of the matrix + + + + + Creates an empty square . + + height and width + + + + Creates an empty square . + + bit matrix width + bit matrix height + + + + Interprets a 2D array of booleans as a , where "true" means an "on" bit. + + bits of the image, as a row-major 2D array. Elements are arrays representing rows + representation of image + + +

    Gets the requested bit, where true means black.

    + +
    + The horizontal component (i.e. which column) + + The vertical component (i.e. which row) + + value of given bit in matrix + +
    + + +

    Flips the given bit.

    +
    + The horizontal component (i.e. which column) + The vertical component (i.e. which row) +
    + + + flip all of the bits, if shouldBeFlipped is true for the coordinates + + should return true, if the bit at a given coordinate should be flipped + + + + Exclusive-or (XOR): Flip the bit in this {@code BitMatrix} if the corresponding + mask bit is set. + + The mask. + + + Clears all bits (sets to false). + + +

    Sets a square region of the bit matrix to true.

    + +
    + The horizontal position to begin at (inclusive) + + The vertical position to begin at (inclusive) + + The width of the region + + The height of the region + +
    + + A fast method to retrieve one row of data from the matrix as a BitArray. + + + The row to retrieve + + An optional caller-allocated BitArray, will be allocated if null or too small + + The resulting BitArray - this reference should always be used even when passing + your own row + + + + + Sets the row. + + row to set + {@link BitArray} to copy from + + + + Modifies this {@code BitMatrix} to represent the same but rotated 180 degrees + + + + + This is useful in detecting the enclosing rectangle of a 'pure' barcode. + + {left,top,width,height} enclosing rectangle of all 1 bits, or null if it is all white + + + + This is useful in detecting a corner of a 'pure' barcode. + + {x,y} coordinate of top-left-most 1 bit, or null if it is all white + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The set string. + The unset string. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The set string. + The unset string. + The line separator. + + A that represents this instance. + + + + + Clones this instance. + + + + +

    This provides an easy abstraction to read bits at a time from a sequence of bytes, where the + number of bits read is not often a multiple of 8.

    + +

    This class is thread-safe but not reentrant. Unless the caller modifies the bytes array + it passed in, in which case all bets are off.

    + +
    + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + +
    + + bytes from which this will read bits. Bits will be read from the first byte first. + Bits are read within a byte from most-significant to least-significant bit. + + + + + index of next bit in current byte which would be read by the next call to {@link #readBits(int)}. + + + + + index of next byte in input byte array which would be read by the next call to {@link #readBits(int)}. + + + + number of bits to read + + int representing the bits read. The bits will appear as the least-significant + bits of the int + + if numBits isn't in [1,32] or more than is available + + + number of bits that can be read successfully + + + + Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1 + of ISO 18004. + + + Sean Owen + + + character set ECI value + representing ECI of given value, or null if it is legal but unsupported + + + character set ECI encoding name + representing ECI for character encoding, or null if it is legalbut unsupported + + + + Encapsulates the result of decoding a matrix of bits. This typically + applies to 2D barcode formats. For now it contains the raw bytes obtained, + as well as a String interpretation of those bytes, if applicable. + Sean Owen + + + + + raw bytes representing the result, or null if not applicable + + + + + how many bits of are valid; typically 8 times its length + + + + + text representation of the result + + + + + list of byte segments in the result, or null if not applicable + + + + + name of error correction level used, or null if not applicable + + + + + gets a value which describe if structure append data was found + + + + + number of errors corrected, or null if not applicable + + + + + gives the sequence number of the result if structured append was found + + + + + number of erasures corrected, or null if not applicable + + + + + gives the parity information if structured append was found + + + + + Miscellanseous data value for the various decoders + + The other. + + + + initializing constructor + + + + + + + + + initializing constructor + + + + + + + + + + + initializing constructor + + + + + + + + + + initializing constructor + + + + + + + + + + + + Defines an container for encoder options + + + + + Gets the data container for all options + + + + + event is raised when a value is changed + + + + + Gets or sets a flag which cause a deeper look into the bitmap + + + true if [try harder]; otherwise, false. + + + + + Image is a pure monochrome image of a barcode. + + + true if monochrome image of a barcode; otherwise, false. + + + + + Specifies what character encoding to use when decoding, where applicable (type String) + + + The character set. + + + + + Image is known to be of one of a few possible formats. + Maps to a {@link java.util.List} of {@link BarcodeFormat}s. + + + The possible formats. + + + + + if Code39 could be detected try to use extended mode for full ASCII character set + + + + + Don't fail if a Code39 is detected but can't be decoded in extended mode. + Return the raw Code39 result instead. Maps to . + + + + + Assume Code 39 codes employ a check digit. Maps to . + + + true if it should assume a Code 39 check digit; otherwise, false. + + + + + If true, return the start and end digits in a Codabar barcode instead of stripping them. They + are alpha, whereas the rest are numeric. By default, they are stripped, but this causes them + to not be. Doesn't matter what it maps to; use . + + + + + Assume the barcode is being processed as a GS1 barcode, and modify behavior as needed. + For example this affects FNC1 handling for Code 128 (aka GS1-128). + + + true if it should assume GS1; otherwise, false. + + + + + Assume MSI codes employ a check digit. Maps to . + + + true if it should assume a MSI check digit; otherwise, false. + + + + + Allowed lengths of encoded data -- reject anything else. Maps to an int[]. + + + + + Allowed extension lengths for EAN or UPC barcodes. Other formats will ignore this. + Maps to an int[] of the allowed extension lengths, for example [2], [5], or [2, 5]. + If it is optional to have an extension, do not set this hint. If this is set, + and a UPC or EAN barcode is found but an extension is not, then no result will be returned + at all. + + + + + Initializes a new instance of the class. + + + + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Encapsulates the result of detecting a barcode in an image. This includes the raw + matrix of black/white pixels corresponding to the barcode, and possibly points of interest + in the image, like the location of finder patterns or corners of the barcode in the image.

    +
    + Sean Owen +
    + + + the detected bits + + + + + the pixel points where the result is found + + + + + initializing constructor + + + + + + + General math-related and numeric utility functions. + + + + + Ends up being a bit faster than {@link Math#round(float)}. This merely rounds its + argument to the nearest int, where x.5 rounds up to x+1. Semantics of this shortcut + differ slightly from {@link Math#round(float)} in that half rounds down for negative + values. -2.5 rounds to -3, not -2. For purposes here it makes no difference. + + real value to round + nearest int + + + + + + + + + + Euclidean distance between points A and B + + + + + + + + + + Euclidean distance between points A and B + + + + + values to sum + sum of values in array + + +

    A somewhat generic detector that looks for a barcode-like rectangular region within an image. + It looks within a mostly white region of an image for a region of black and white, but mostly + black. It returns the four corners of the region, as best it can determine.

    + +
    + Sean Owen +
    + + + initializing constructor + + + + + +

    Detects a rectangular region of black and white -- mostly black -- with a region of mostly + white, in an image.

    +
    + [] describing the corners of the rectangular region. The first and + last points are opposed on the diagonal, as are the second and third. The first point will be + the topmost point and the last, the bottommost. The second point will be leftmost and the + third, the rightmost + +
    + + Attempts to locate a corner of the barcode by scanning up, down, left or right from a center + point which should be within the barcode. + + + center's x component (horizontal) + + same as deltaY but change in x per step instead + + minimum value of x + + maximum value of x + + center's y component (vertical) + + change in y per step. If scanning up this is negative; down, positive; + left or right, 0 + + minimum value of y to search through (meaningless when di == 0) + + maximum value of y + + maximum run of white pixels that can still be considered to be within + the barcode + + a encapsulating the corner that was found + + + + Computes the start and end of a region of pixels, either horizontally or vertically, that could + be part of a Data Matrix barcode. + + + if scanning horizontally, this is the row (the fixed vertical location) + where we are scanning. If scanning vertically it's the column, the fixed horizontal location + + largest run of white pixels that can still be considered part of the + barcode region + + minimum pixel location, horizontally or vertically, to consider + + maximum pixel location, horizontally or vertically, to consider + + if true, we're scanning left-right, instead of up-down + + int[] with start and end of found range, or null if no such range is found + (e.g. only white was found) + + + + + Detects a candidate barcode-like rectangular region within an image. It + starts around the center of the image, increases the size of the candidate + region until it finds a white rectangular region. By keeping track of the + last black points it encountered, it determines the corners of the barcode. + + David Olivier + + + + Creates a WhiteRectangleDetector instance + + The image. + null, if image is too small, otherwise a WhiteRectangleDetector instance + + + + Creates a WhiteRectangleDetector instance + + barcode image to find a rectangle in + initial size of search area around center + x position of search center + y position of search center + + null, if image is too small, otherwise a WhiteRectangleDetector instance + + + + + Initializes a new instance of the class. + + The image. + if image is too small + + + + Initializes a new instance of the class. + + The image. + Size of the init. + The x. + The y. + + + + Detects a candidate barcode-like rectangular region within an image. It + starts around the center of the image, increases the size of the candidate + region until it finds a white rectangular region. + + [] describing the corners of the rectangular + region. The first and last points are opposed on the diagonal, as + are the second and third. The first point will be the topmost + point and the last, the bottommost. The second point will be + leftmost and the third, the rightmost + + + + recenters the points of a constant distance towards the center + + bottom most point + left most point + right most point + top most point + [] describing the corners of the rectangular + region. The first and last points are opposed on the diagonal, as + are the second and third. The first point will be the topmost + point and the last, the bottommost. The second point will be + leftmost and the third, the rightmost + + + + Determines whether a segment contains a black point + + min value of the scanned coordinate + max value of the scanned coordinate + value of fixed coordinate + set to true if scan must be horizontal, false if vertical + + true if a black point has been found, else false. + + + + + Superclass of classes encapsulating types ECIs, according to "Extended Channel Interpretations" + 5.3 of ISO 18004. + + Sean Owen + + + + the ECI value + + + + ECI value + representing ECI of given value, or null if it is legal but unsupported + ArgumentException if ECI value is invalid + + + + Defines an container for encoder options + + + + + Gets the data container for all options + + + + + Specifies the height of the barcode image + + + + + Specifies the width of the barcode image + + + + + Don't put the content string into the output image. + + + + + Specifies margin, in pixels, to use when generating the barcode. The meaning can vary + by format; for example it controls margin before and after the barcode horizontally for + most 1D formats. + + + + + Specifies whether the data should be encoded to the GS1 standard; + FNC1 character is added in front of the data + + + + + Initializes a new instance of the class. + + + + This Binarizer implementation uses the old ZXing global histogram approach. It is suitable + for low-end mobile devices which don't have enough CPU or memory to use a local thresholding + algorithm. However, because it picks a global black point, it cannot handle difficult shadows + and gradients. + + Faster mobile devices and all desktop applications should probably use HybridBinarizer instead. + + dswitkin@google.com (Daniel Switkin) + Sean Owen + + + + + Initializes a new instance of the class. + + The source. + + + + Applies simple sharpening to the row data to improve performance of the 1D Readers. + + + + + + + + Does not sharpen the data, as this call is intended to only be used by 2D Readers. + + + + + Creates a new object with the same type as this Binarizer implementation, but with pristine + state. This is needed because Binarizer implementations may be stateful, e.g. keeping a cache + of 1 bit data. See Effective Java for why we can't use Java's clone() method. + + The LuminanceSource this Binarizer will operate on. + + A new concrete Binarizer implementation object. + + + + Implementations of this class can, given locations of finder patterns for a QR code in an + image, sample the right points in the image to reconstruct the QR code, accounting for + perspective distortion. It is abstracted since it is relatively expensive and should be allowed + to take advantage of platform-specific optimized implementations, like Sun's Java Advanced + Imaging library, but which may not be available in other environments such as J2ME, and vice + versa. + + The implementation used can be controlled by calling {@link #setGridSampler(GridSampler)} + with an instance of a class which implements this interface. + + Sean Owen + + + the current implementation of + + + + Sets the implementation of used by the library. One global + instance is stored, which may sound problematic. But, the implementation provided + ought to be appropriate for the entire platform, and all uses of this library + in the whole lifetime of the JVM. For instance, an Android activity can swap in + an implementation that takes advantage of native platform libraries. + + The platform-specific object to install. + + + +

    Samples an image for a square matrix of bits of the given dimension. This is used to extract + the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + may be rotated or perspective-distorted, the caller supplies four points in the source image + that define known points in the barcode, so that the image may be sampled appropriately.

    +

    The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + the image that define some significant points in the image to be sample. For example, + these may be the location of finder pattern in a QR Code.

    +

    The first eight "to" parameters are four X/Y coordinate pairs measured in the destination + , from the top left, where the known points in the image given by the "from" + parameters map to.

    +

    These 16 parameters define the transformation needed to sample the image.

    +
    + image to sample + The dimension X. + The dimension Y. + The p1 preimage X. + The p1 preimage Y. + The p2 preimage X. + The p2 preimage Y. + The p3 preimage X. + The p3 preimage Y. + The p4 preimage X. + The p4 preimage Y. + The p1 image X. + The p1 image Y. + The p2 image X. + The p2 image Y. + The p3 image X. + The p3 image Y. + The p4 image X. + The p4 image Y. + + representing a grid of points sampled from the image within a region + defined by the "from" parameters + + ReaderException if image can't be sampled, for example, if the transformation defined +
    + + + + + + + + + + + +

    Checks a set of points that have been transformed to sample points on an image against + the image's dimensions to see if the point are even within the image.

    + +

    This method will actually "nudge" the endpoints back onto the image if they are found to be + barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + patterns in an image where the QR Code runs all the way to the image border.

    + +

    For efficiency, the method will check points from either end of the line until one is found + to be within the image. Because the set of points are assumed to be linear, this is valid.

    + +
    + image into which the points should map + + actual points in x1,y1,...,xn,yn form + +
    + + This class implements a local thresholding algorithm, which while slower than the + GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for + high frequency images of barcodes with black data on white backgrounds. For this application, + it does a much better job than a global blackpoint with severe shadows and gradients. + However it tends to produce artifacts on lower frequency images and is therefore not + a good general purpose binarizer for uses outside ZXing. + + This class extends GlobalHistogramBinarizer, using the older histogram approach for 1D readers, + and the newer local approach for 2D readers. 1D decoding using a per-row histogram is already + inherently local, and only fails for horizontal gradients. We can revisit that problem later, + but for now it was not a win to use local blocks for 1D. + + This Binarizer is the default for the unit tests and the recommended class for library users. + dswitkin@google.com (Daniel Switkin) + + + + + gives the black matrix + + + + + initializing constructor + + + + + + creates a new instance + + + + + + + Calculates the final BitMatrix once for all requests. This could be called once from the + constructor instead, but there are some advantages to doing it lazily, such as making + profiling easier, and not doing heavy lifting when callers don't expect it. + + + + + For each 8x8 block in the image, calculate the average black point using a 5x5 grid + of the blocks around it. Also handles the corner cases (fractional blocks are computed based + on the last 8 pixels in the row/column which are also used in the previous block). + + The luminances. + Width of the sub. + Height of the sub. + The width. + The height. + The black points. + The matrix. + + + + Applies a single threshold to an 8x8 block of pixels. + + The luminances. + The xoffset. + The yoffset. + The threshold. + The stride. + The matrix. + + + + Calculates a single black point for each 8x8 block of pixels and saves it away. + See the following thread for a discussion of this algorithm: + http://groups.google.com/group/zxing/browse_thread/thread/d06efa2c35a7ddc0 + + The luminances. + Width of the sub. + Height of the sub. + The width. + The height. + + + +

    This class implements a perspective transform in two dimensions. Given four source and four + destination points, it will compute the transformation implied between them. The code is based + directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.

    +
    + Sean Owen +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convenience method, not optimized for performance. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    This class contains utility methods for performing mathematical operations over + the Galois Fields. Operations use a given primitive polynomial in calculations.

    +

    Throughout this package, elements of the GF are represented as an {@code int} + for convenience and speed (but at the cost of memory). +

    +
    + Sean Owen +
    + + + Create a representation of GF(size) using the given primitive polynomial. + + irreducible polynomial whose coefficients are represented by + * the bits of an int, where the least-significant bit represents the constant + * coefficient + the size of the field + the factor b in the generator polynomial can be 0- or 1-based + * (g(x) = (x+a^b)(x+a^(b+1))...(x+a^(b+2t-1))). + * In most cases it should be 1, but for QR code it is 0. + + + + Builds the monomial. + + The degree. + The coefficient. + the monomial representing coefficient * x^degree + + + + Implements both addition and subtraction -- they are the same in GF(size). + + sum/difference of a and b + + + + Exps the specified a. + + 2 to the power of a in GF(size) + + + + Logs the specified a. + + A. + base 2 log of a in GF(size) + + + + Inverses the specified a. + + multiplicative inverse of a + + + + Multiplies the specified a with b. + + A. + The b. + product of a and b in GF(size) + + + + Gets the size. + + + + + Gets the generator base. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + +

    Represents a polynomial whose coefficients are elements of a GF. + Instances of this class are immutable.

    +

    Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.

    +
    + Sean Owen +
    + + + Initializes a new instance of the class. + + the {@link GenericGF} instance representing the field to use + to perform computations + coefficients as ints representing elements of GF(size), arranged + from most significant (highest-power term) coefficient to least significant + if argument is null or empty, + or if leading coefficient is 0 and this is not a + constant polynomial (that is, it is not the monomial "0") + + + + degree of this polynomial + + + + + Gets a value indicating whether this is zero. + + true iff this polynomial is the monomial "0" + + + + coefficient of x^degree term in this polynomial + + The degree. + coefficient of x^degree term in this polynomial + + + + evaluation of this polynomial at a given point + + A. + evaluation of this polynomial at a given point + + +

    Implements Reed-Solomon decoding, as the name implies.

    + +

    The algorithm will not be explained here, but the following references were helpful + in creating this implementation:

    + + + +

    Much credit is due to William Rucklidge since portions of this code are an indirect + port of his C++ Reed-Solomon implementation.

    + +
    + Sean Owen + William Rucklidge + sanfordsquires +
    + + +

    Decodes given set of received codewords, which include both data and error-correction + codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + in the input.

    +
    + data and error-correction codewords + number of error-correction codewords available + false: decoding fails +
    + + + Implements Reed-Solomon encoding, as the name implies. + + Sean Owen + William Rucklidge + + + + Common string-related functions. + + Sean Owen + Alex Dupre + + + + SJIS + + + + + GB2312 + + + + + Guesses the encoding. + + bytes encoding a string, whose encoding should be guessed + decode hints if applicable + name of guessed encoding; at the moment will only guess one of: + {@link #SHIFT_JIS}, {@link #UTF8}, {@link #ISO88591}, or the platform + default encoding if none of these can possibly be correct + + + + This implementation can detect and decode Data Matrix codes in an image. + + bbrown@google.com (Brian Brown) + + + + + Locates and decodes a Data Matrix code in an image. + + + a String representing the content encoded by the Data Matrix code + + + + Locates and decodes a Data Matrix code in an image. + + + + a String representing the content encoded by the Data Matrix code + + + + does nothing here + + + + + This method detects a code in a "pure" image -- that is, pure monochrome image + which contains only an unrotated, unskewed, image of a code, with some white border + around it. This is a specialized method that works exceptionally fast in this special + case. + + + + + + + This object renders a Data Matrix code as a BitMatrix 2D array of greyscale values. + + dswitkin@google.com (Daniel Switkin) + Guillaume Le Biller Added to zxing lib. + + + + encodes the content to a BitMatrix + + + + + + + + + + encodes the content to a BitMatrix + + + + + + + + + + + Encode the given symbol info to a bit matrix. + + The DataMatrix placement. + The symbol info to encode. + + + The bit matrix generated. + + + + Convert the ByteMatrix to BitMatrix. + + The input matrix. + The requested width of the image (in pixels) with the Datamatrix code + The requested height of the image (in pixels) with the Datamatrix code + The output matrix. + + + + bbrown@google.com (Brian Brown) + + + + + to parse + if dimension is < 8 or > 144 or not 0 mod 2 + + + + +

    Creates the version object based on the dimension of the original bit matrix from + the datamatrix code.

    + +

    See ISO 16022:2006 Table 7 - ECC 200 symbol attributes

    + + Original including alignment patterns + encapsulating the Data Matrix Code's "version" + if the dimensions of the mapping matrix are not valid + Data Matrix dimensions. +
    +
    + + +

    Reads the bits in the representing the mapping matrix (No alignment patterns) + in the correct order in order to reconstitute the codewords bytes contained within the + Data Matrix Code.

    + + bytes encoded within the Data Matrix Code + if the exact number of bytes expected is not read +
    +
    + + +

    Reads a bit of the mapping matrix accounting for boundary wrapping.

    + + Row to read in the mapping matrix + Column to read in the mapping matrix + Number of rows in the mapping matrix + Number of columns in the mapping matrix + value of the given bit in the mapping matrix +
    +
    + + +

    Reads the 8 bits of the standard Utah-shaped pattern.

    + +

    See ISO 16022:2006, 5.8.1 Figure 6

    + + Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + Number of rows in the mapping matrix + Number of columns in the mapping matrix + byte from the utah shape +
    +
    + + +

    Reads the 8 bits of the special corner condition 1.

    + +

    See ISO 16022:2006, Figure F.3

    + + Number of rows in the mapping matrix + Number of columns in the mapping matrix + byte from the Corner condition 1 +
    +
    + + +

    Reads the 8 bits of the special corner condition 2.

    + +

    See ISO 16022:2006, Figure F.4

    + + Number of rows in the mapping matrix + Number of columns in the mapping matrix + byte from the Corner condition 2 +
    +
    + + +

    Reads the 8 bits of the special corner condition 3.

    + +

    See ISO 16022:2006, Figure F.5

    + + Number of rows in the mapping matrix + Number of columns in the mapping matrix + byte from the Corner condition 3 +
    +
    + + +

    Reads the 8 bits of the special corner condition 4.

    + +

    See ISO 16022:2006, Figure F.6

    + + Number of rows in the mapping matrix + Number of columns in the mapping matrix + byte from the Corner condition 4 +
    +
    + + +

    Extracts the data region from a that contains + alignment patterns.

    + + Original with alignment patterns + BitMatrix that has the alignment patterns removed +
    +
    + + +

    Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.

    + + bbrown@google.com (Brian Brown) +
    +
    + + +

    When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.

    + + bytes as read directly from the Data Matrix Code + version of the Data Matrix Code + DataBlocks containing original bytes, "de-interleaved" from representation in the + Data Matrix Code +
    +
    + + +

    Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + in one Data Matrix Code. This class decodes the bits back into text.

    + +

    See ISO 16022:2006, 5.2.1 - 5.2.9.2

    + + bbrown@google.com (Brian Brown) + Sean Owen +
    +
    + + + See ISO 16022:2006, Annex C Table C.1 + The C40 Basic Character Set (*'s used for placeholders for the shift values) + + + + + See ISO 16022:2006, Annex C Table C.2 + The Text Basic Character Set (*'s used for placeholders for the shift values) + + + + + See ISO 16022:2006, 5.2.3 and Annex C, Table C.2 + + + + + See ISO 16022:2006, 5.2.5 and Annex C, Table C.1 + + + + + See ISO 16022:2006, 5.2.6 and Annex C, Table C.2 + + + + + See ISO 16022:2006, 5.2.7 + + + + + See ISO 16022:2006, 5.2.8 and Annex C Table C.3 + + + + + See ISO 16022:2006, 5.2.9 and Annex B, B.2 + + + + + See ISO 16022:2006, Annex B, B.2 + + + + +

    The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + the Data Matrix Code from an image.

    + + bbrown@google.com (Brian Brown) +
    +
    + + + Initializes a new instance of the class. + + + + +

    Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + "true" is taken to mean a black module.

    + + booleans representing white/black Data Matrix Code modules + text and bytes encoded within the Data Matrix Code + if the Data Matrix Code cannot be decoded +
    +
    + + +

    Decodes a Data Matrix Code represented as a . A 1 or "true" is taken + to mean a black module.

    +
    + booleans representing white/black Data Matrix Code modules + text and bytes encoded within the Data Matrix Code +
    + + +

    Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.

    + + data and error correction codewords + number of codewords that are data bytes +
    +
    + + + The Version object encapsulates attributes about a particular + size Data Matrix Code. + + bbrown@google.com (Brian Brown) + + + + + returns the version numer + + + + + + returns the symbol size rows + + + + + + returns the symbols size columns + + + + + + retursn the data region size rows + + + + + + returns the data region size columns + + + + + + returns the total codewords count + + + + + +

    Deduces version information from Data Matrix dimensions.

    + + Number of rows in modules + Number of columns in modules + Version for a Data Matrix Code of those dimensions + if dimensions do correspond to a valid Data Matrix size +
    +
    + + +

    Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.

    +
    +
    + + +

    Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the Data Matrix code version's format.

    +
    +
    + + + returns the version number as string + + + + + + See ISO 16022:2006 5.5.1 Table 7 + + + + +

    Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + is rotated or skewed, or partially obscured.

    +
    + Sean Owen +
    + + + Initializes a new instance of the class. + + The image. + + + +

    Detects a Data Matrix Code in an image.

    +
    + encapsulating results of detecting a Data Matrix Code or null +
    + + + Detect a solid side which has minimum transition. + + + + + + + Detect a second solid side next to first solid side. + + + + + + + Calculates the corner position of the white top right module. + + + + + + + Shift the edge points to the module center. + + + + + + + Counts the number of black/white transitions between two points, using something like Bresenham's algorithm. + + + + + + + + Handle "end of data" situations + + the encoder context + the buffer with the remaining encoded characters + + + + Symbol Character Placement Program. Adapted from Annex M.1 in ISO/IEC 16022:2000(E). + + + + + Main constructor + + the codewords to place + the number of columns + the number of rows + + + + Places the 8 bits of a utah-shaped symbol character in ECC200. + + The row. + The col. + character position + + + + Handle "end of data" situations + + the encoder context + the buffer with the remaining encoded characters + + + + Enumeration for encodation types + + + + + Error Correction Code for ECC200. + + + + + Lookup table which factors to use for which number of error correction codewords. + See FACTORS. + + + + + Precomputed polynomial factors for ECC 200. + + + + + Creates the ECC200 error correction for an encoded message. + + The codewords. + information about the symbol to be encoded + the codewords with interleaved error correction. + + + + DataMatrix ECC 200 data encoder following the algorithm described in ISO/IEC 16022:200(E) in + annex S. + + + + + Padding character + + + + + mode latch to C40 encodation mode + + + + + mode latch to Base 256 encodation mode + + + + + FNC1 Codeword + + + + + Structured Append Codeword + + + + + Reader Programming + + + + + Upper Shift + + + + + 05 Macro + + + + + 06 Macro + + + + + mode latch to ANSI X.12 encodation mode + + + + + mode latch to Text encodation mode + + + + + mode latch to EDIFACT encodation mode + + + + + ECI character (Extended Channel Interpretation) + + + + + Unlatch from C40 encodation + + + + + Unlatch from X12 encodation + + + + + 05 Macro header + + + + + 06 Macro header + + + + + Macro trailer + + + + + Performs message encoding of a DataMatrix message using the algorithm described in annex P + of ISO/IEC 16022:2000(E). + + the message + the encoded message (the char values range from 0 to 255) + + + + Performs message encoding of a DataMatrix message using the algorithm described in annex P + of ISO/IEC 16022:2000(E). + + the message + requested shape. May be {@code SymbolShapeHint.FORCE_NONE},{@code SymbolShapeHint.FORCE_SQUARE} or {@code SymbolShapeHint.FORCE_RECTANGLE}. + the minimum symbol size constraint or null for no constraint + the maximum symbol size constraint or null for no constraint + encoding mode to start with + the encoded message (the char values range from 0 to 255) + + + + Determines the number of consecutive characters that are encodable using numeric compaction. + + the message + the start position within the message + the requested character count + + + + Symbol info table for DataMatrix. + + + + Overrides the symbol info set used by this class. Used for testing purposes. + + @param override the symbol info set to use + + + + Enumeration for DataMatrix symbol shape hint. It can be used to force square or rectangular + symbols. + + + + + The class holds the available options for the DatamatrixWriter + + + + + Specifies the matrix shape for Data Matrix + + + + + Specifies a minimum barcode size + + + + + Specifies a maximum barcode size + + + + + Specifies the default encodation + Make sure that the content fits into the encodation value, otherwise there will be an exception thrown. + standard value: Encodation.ASCII + + + + + implements an Intelligent Mail barcode + Rishabh Hatgadkar + + + + + mike32767 + Manuel Kasten + + + + + to parse + + + + +

    MaxiCodes can encode text or structured information as bits in one of several modes, + with multiple character sets in one code. This class decodes the bits back into text.

    + + mike32767 + Manuel Kasten +
    +
    + + +

    The main class which implements MaxiCode decoding -- as opposed to locating and extracting + the MaxiCode from an image.

    + + Manuel Kasten +
    +
    + + + This implementation can detect and decode a MaxiCode in an image. + + + + + Locates and decodes a MaxiCode in an image. + + a String representing the content encoded by the MaxiCode + if a MaxiCode cannot be decoded + + + + + Locates and decodes a MaxiCode within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + + This method detects a code in a "pure" image -- that is, pure monochrome image + which contains only an unrotated, unskewed, image of a code, with some white border + around it. This is a specialized method that works exceptionally fast in this special + case. + + + + + + + + This class attempts to decode a barcode from an image, not by scanning the whole image, + but by scanning subsets of the image. This is important when there may be multiple barcodes in + an image, and detecting a barcode may find parts of multiple barcode and fail to decode + (e.g. QR Codes). Instead this scans the four quadrants of the image -- and also the center + 'quadrant' to cover the case where a barcode is found in the center. + + + + + + Initializes a new instance of the class. + + The @delegate. + + + + Locates and decodes a barcode in some format within an image. + + image of barcode to decode + + String which the barcode encodes + + + + + Locates and decodes a barcode in some format within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + +

    Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + After one barcode is found, the areas left, above, right and below the barcode's + {@link com.google.zxing.ResultPoint}s are scanned, recursively.

    +

    A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + detecting any one of them.

    +

    That is, instead of passing a {@link Reader} a caller might pass + new ByQuadrantReader(reader).

    + Sean Owen +
    +
    + + + Initializes a new instance of the class. + + The @delegate. + + + + Decodes the multiple. + + The image. + + + + + Decodes the multiple. + + The image. + The hints. + + + + + Locates and decodes a barcode in some format within an image. + + image of barcode to decode + + String which the barcode encodes + + + + + Locates and decodes a barcode in some format within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + + Implementation of this interface attempt to read several barcodes from one image. + Sean Owen + + + + + + Decodes the multiple. + + The image. + + + + + Decodes the multiple. + + The image. + The hints. + + + + +

    Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + is rotated or skewed, or partially obscured.

    + + Sean Owen + Hannes Erven +
    +
    + + + Initializes a new instance of the class. + + The image. + + + + Detects the multi. + + The hints. + + + + +

    This class attempts to find finder patterns in a QR Code. Finder patterns are the square + markers at three corners of a QR Code.

    + +

    This class is thread-safe but not reentrant. Each thread must allocate its own object.

    + +

    In contrast to , this class will return an array of all possible + QR code locations in the image.

    + +

    Use the TRY_HARDER hint to ask for a more thorough detection.

    + + Sean Owen + Hannes Erven +
    +
    + + + More or less arbitrary cutoff point for determining if two finder patterns might belong + to the same code if they differ less than DIFF_MODSIZE_CUTOFF_PERCENT percent in their + estimated modules sizes. + + + + + More or less arbitrary cutoff point for determining if two finder patterns might belong + to the same code if they differ less than DIFF_MODSIZE_CUTOFF pixels/module in their + estimated modules sizes. + + + + + A comparator that orders FinderPatterns by their estimated module size. + + + + +

    Creates a finder that will search the image for three finder patterns.

    + + image to search +
    +
    + + + + the 3 best s from our list of candidates. The "best" are + those that have been detected at least CENTER_QUORUM times, and whose module + size differs from the average among those patterns the least + + + + + This implementation can detect and decode multiple QR Codes in an image. + + + + + Decodes the multiple. + + The image. + + + + + Decodes the multiple. + + The image. + The hints. + + + + +

    Decodes Codabar barcodes.

    + + Bas Vijfwinkel +
    +
    + + These represent the encodings of characters, as patterns of wide and narrow bars. The 7 least-significant bits of + each int correspond to the pattern of wide and narrow, with 1s representing "wide" and 0s representing narrow. + + + + Records the size of all runs of white and black pixels, starting with white. + This is just like recordPattern, except it records all the counters, and + uses our builtin "counters" member for storage. + + row to count from + + + + This class renders CodaBar as []. + + dsbnatut@gmail.com (Kazuki Nishiura) + + + + The class holds the available options for the QrCodeWriter + + + + + if true, don't switch to codeset C for numbers + + + + +

    Decodes Code 128 barcodes.

    + + Sean Owen +
    +
    + + + This object renders a CODE128 code as a . + + erik.barbara@gmail.com (Erik Barbara) + + + + +

    Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.

    + Sean Owen + @see Code93Reader +
    +
    + + + Returns a string with all possible characters + + + + + These represent the encodings of characters, as patterns of wide and narrow bars. + The 9 least-significant bits of each int correspond to the pattern of wide and narrow, + with 1s representing "wide" and 0s representing narrow. + + + + + Creates a reader that assumes all encoded data is data, and does not treat the final + character as a check digit. It will not decoded "extended Code 39" sequences. + + + + + Creates a reader that can be configured to check the last character as a check digit. + It will not decoded "extended Code 39" sequences. + + if true, treat the last data character as a check digit, not + data, and verify that the checksum passes. + + + + Creates a reader that can be configured to check the last character as a check digit, + or optionally attempt to decode "extended Code 39" sequences that are used to encode + the full ASCII character set. + + if true, treat the last data character as a check digit, not + data, and verify that the checksum passes. + if true, will attempt to decode extended Code 39 sequences in the text. + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + containing encoded string and start/end of barcode +
    + + + This object renders a CODE39 code as a . + erik.barbara@gmail.com (Erik Barbara) + + + + + Encode the contents to byte array expression of one-dimensional barcode. + Start code and end code should be included in result, and side margins should not be included. + a {@code boolean[]} of horizontal pixels (false = white, true = black) + + + + + + +

    Decodes Code 93 barcodes.

    + Sean Owen + +
    +
    + + + These represent the encodings of characters, as patterns of wide and narrow bars. + The 9 least-significant bits of each int correspond to the pattern of wide and narrow. + + + + + Initializes a new instance of the class. + + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + containing encoded string and start/end of barcode +
    + + + This object renders a CODE93 code as a BitMatrix + + + + + + barcode contents to encode.It should not be encoded for extended characters. + a { @code bool[]} of horizontal pixels(false = white, true = black) + + + + + output to append to + start position + pattern to append + unused + 9 + + + +

    Implements decoding of the EAN-13 format.

    + + dswitkin@google.com (Daniel Switkin) + Sean Owen + alasdair@google.com (Alasdair Mackintosh) +
    +
    + + + Initializes a new instance of the class. + + + + + Subclasses override this to decode the portion of a barcode between the start + and end guard patterns. + + row of black/white values to search + start/end offset of start guard pattern + to append decoded chars to + + horizontal offset of first pixel after the "middle" that was decoded or -1 if decoding could not complete successfully + + + + + Get the format of this decoder. + The 1D format. + + + + + Based on pattern of odd-even ('L' and 'G') patterns used to encoded the explicitly-encoded + digits in a barcode, determines the implicitly encoded first digit and adds it to the + result string. + + string to insert decoded first digit into + int whose bits indicates the pattern of odd/even L/G patterns used to + encode digits + -1 if first digit cannot be determined + + + + This object renders an EAN13 code as a . + aripollak@gmail.com (Ari Pollak) + + + + + Encode the contents to byte array expression of one-dimensional barcode. + Start code and end code should be included in result, and side margins should not be included. + a {@code boolean[]} of horizontal pixels (false = white, true = black) + + + + + + +

    Implements decoding of the EAN-8 format.

    + Sean Owen +
    +
    + + + Initializes a new instance of the class. + + + + + Decodes the middle. + + The row. + The start range. + The result. + + + + + Get the format of this decoder. + The 1D format. + + + + + This object renders an EAN8 code as a . + aripollak@gmail.com (Ari Pollak) + + + + + + + a byte array of horizontal pixels (false = white, true = black) + + + + + Records EAN prefix to GS1 Member Organization, where the member organization + correlates strongly with a country. This is an imperfect means of identifying + a country of origin by EAN-13 barcode value. See + + http://en.wikipedia.org/wiki/List_of_GS1_country_codes. + + Sean Owen + + + + +

    Implements decoding of the ITF format, or Interleaved Two of Five.

    + +

    This Reader will scan ITF barcodes of certain lengths only. + At the moment it reads length 6, 8, 10, 12, 14, 16, 18, 20, 24, 44 and 48 as these have appeared "in the wild". Not all + lengths are scanned, especially shorter ones, to avoid false positives. This in turn is due to a lack of + required checksum function.

    + +

    The checksum is optional and is not applied by this Reader. The consumer of the decoded + value will have to apply a checksum if required.

    + +

    http://en.wikipedia.org/wiki/Interleaved_2_of_5 + is a great reference for Interleaved 2 of 5 information.

    + + kevin.osullivan@sita.aero, SITA Lab. +
    +
    + + + Valid ITF lengths. Anything longer than the largest value is also allowed. + + + + + Start/end guard pattern. + + Note: The end pattern is reversed because the row is reversed before + searching for the END_PATTERN + + + + + Patterns of Wide / Narrow lines to indicate each digit + + + + + Attempts to decode a one-dimensional barcode format given a single row of + an image. + + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode + + + + + + row of black/white values to search + offset of start pattern + The payload end. + to append decoded chars to + + false, if decoding could not complete successfully + + + + + Identify where the start of the middle / payload section starts. + + row of black/white values to search + Array, containing index of start of 'start block' and end of 'start block' + + + + The start & end patterns must be pre/post fixed by a quiet zone. This + zone must be at least 10 times the width of a narrow line. Scan back until + we either get to the start of the barcode or match the necessary number of + quiet zone pixels. + + Note: Its assumed the row is reversed when using this method to find + quiet zone after the end pattern. + + ref: http://www.barcode-1.net/i25code.html + + bit array representing the scanned barcode. + index into row of the start or end pattern. + false, if the quiet zone cannot be found + + + + Skip all whitespace until we get to the first black line. + + row of black/white values to search + index of the first black line or -1 if no black lines are found in the row. + + + + Identify where the end of the middle / payload section ends. + + row of black/white values to search + Array, containing index of start of 'end block' and end of 'end + block' or null, if nothing found + + + + + row of black/white values to search + position to start search + pattern of counts of number of black and white pixels that are being searched for as a pattern + start/end horizontal offset of guard pattern, as an array of two ints + + + + Attempts to decode a sequence of ITF black/white lines into single + digit. + + the counts of runs of observed black/white/black/... values + The decoded digit + + false, if digit cannot be decoded + + + + + This object renders a ITF code as a . + + erik.barbara@gmail.com (Erik Barbara) + + + + + Encode the contents to bool array expression of one-dimensional barcode. + Start code and end code should be included in result, and side margins should not be included. + a {@code bool[]} of horizontal pixels (false = white, true = black) + + + + + + + Decodes MSI barcodes. + + + + + These represent the encodings of characters, as patterns of wide and narrow bars. + The 9 least-significant bits of each int correspond to the pattern of wide and narrow, + with 1s representing "wide" and 0s representing narrow. + + + + + Creates a reader that assumes all encoded data is data, and does not treat the final + character as a check digit. + + + + + Creates a reader that can be configured to check the last character as a check digit, + + if true, treat the last data character as a check digit, not + data, and verify that the checksum passes. + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + containing encoded string and start/end of barcode +
    + + + This object renders a MSI code as a . + + + + + Encode the contents to byte array expression of one-dimensional barcode. + Start code and end code should be included in result, and side margins should not be included. + a {@code boolean[]} of horizontal pixels (false = white, true = black) + + + + + + + dswitkin@google.com (Daniel Switkin) + Sean Owen + + + + + Initializes a new instance of the class. + + The hints. + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode or null, if an error occurs or barcode cannot be found + +
    + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + +

    A reader that can read all available UPC/EAN formats. If a caller wants to try to + read all such formats, it is most efficient to use this implementation rather than invoke + individual readers.

    + Sean Owen +
    +
    + + + Initializes a new instance of the class. + + The hints. + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode or null if an error occurs or barcode cannot be found + +
    + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + +

    Encapsulates functionality and implementation that is common to one-dimensional barcodes.

    + dsbnatut@gmail.com (Kazuki Nishiura) +
    +
    + + + Encode a barcode using the default settings. + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + Encode the contents following specified format. + {@code width} and {@code height} are required size. This method may return bigger size + {@code BitMatrix} when specified size is too small. The user can set both {@code width} and + {@code height} to zero to get minimum size barcode. If negative value is set to {@code width} + or {@code height}, {@code IllegalArgumentException} is thrown. + + + + + + a byte array of horizontal pixels (0 = white, 1 = black) + + + + Throw ArgumentException if input contains characters other than digits 0-9. + + string to check for numeric characters + if input contains characters other than digits 0-9. + + + + Appends the given pattern to the target array starting at pos. + + encode black/white pattern into this array + position to start encoding at in target + lengths of black/white runs to encode + starting color - false for white, true for black + the number of elements added to target. + + + + Gets the default margin. + + + + + Encode the contents to bool array expression of one-dimensional barcode. + Start code and end code should be included in result, and side margins should not be included. + + barcode contents to encode + a bool[] of horizontal pixels (false = white, true = black) + + + + Calculates the checksum digit modulo10. + + The contents. + + + + + Encapsulates functionality and implementation that is common to all families + of one-dimensional barcodes. + dswitkin@google.com (Daniel Switkin) + Sean Owen + + + + + + + + + + + + + + + Locates and decodes a barcode in some format within an image. + + image of barcode to decode + + String which the barcode encodes + + + + + Locates and decodes a barcode in some format within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + Note that we don't try rotation without the try harder flag, even if rotation was supported. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + + We're going to examine rows from the middle outward, searching alternately above and below the + middle, and farther out each time. rowStep is the number of rows between each successive + attempt above and below the middle. So we'd scan row middle, then middle - rowStep, then + middle + rowStep, then middle - (2 * rowStep), etc. + rowStep is bigger as the image is taller, but is always at least 1. We've somewhat arbitrarily + decided that moving up and down by about 1/16 of the image is pretty good; we try more of the + image if "trying harder". + + The image to decode + Any hints that were requested + The contents of the decoded barcode + + + + Records the size of successive runs of white and black pixels in a row, starting at a given point. + The values are recorded in the given array, and the number of runs recorded is equal to the size + of the array. If the row starts on a white pixel at the given start point, then the first count + recorded is the run of white pixels starting from that point; likewise it is the count of a run + of black pixels if the row begin on a black pixels at that point. + + row to count from + offset into row to start at + array into which to record counts + + + + Records the size of successive runs of white and black pixels in a row, starting at a given point. + The values are recorded in the given array, and the number of runs recorded is equal to the size + of the array. If the row starts on a white pixel at the given start point, then the first count + recorded is the run of white pixels starting from that point; likewise it is the count of a run + of black pixels if the row begin on a black pixels at that point. + + row to count from + offset into row to start at + array into which to record counts + + + + Records the pattern in reverse. + + The row. + The start. + The counters. + + + + + Determines how closely a set of observed counts of runs of black/white values matches a given + target pattern. This is reported as the ratio of the total variance from the expected pattern + proportions across all pattern elements, to the length of the pattern. + + observed counters + expected pattern + The most any counter can differ before we give up + ratio of total variance between counters and pattern compared to total pattern size, + where the ratio has been multiplied by 256. So, 0 means no variance (perfect match); 256 means + the total variance between counters and patterns equals the pattern length, higher values mean + even more variance + + + + Attempts to decode a one-dimensional barcode format given a single row of + an image. + + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode + + + + +

    Decodes PharmaCode

    + * @author Ruslan Karachun +
    +
    + + + This object renders a Plessey code as a . + + + + + Encode the contents to byte array expression of one-dimensional barcode. + Start code and end code should be included in result, and side margins should not be included. + a {@code boolean[]} of horizontal pixels (false = white, true = black) + + + + + + + Superclass of implementations that read barcodes in the RSS family of formats. + + + + + Initializes a new instance of the class. + + + + + Gets the decode finder counters. + + + + + + Gets the data character counters. + + + + + + Gets the odd rounding errors. + + + + + + Gets the even rounding errors. + + + + + + Gets the odd counts. + + + + + + Gets the even counts. + + + + + + Parses the finder value. + + The counters. + The finder patterns. + The value. + + + + + Counts the specified array. + + The array. + + + + + Increments the specified array. + + The array. + The errors. + + + + Decrements the specified array. + + The array. + The errors. + + + + Determines whether [is finder pattern] [the specified counters]. + + The counters. + + true if [is finder pattern] [the specified counters]; otherwise, false. + + + + + Encapsulates a since character value in an RSS barcode, including its checksum information. + + + + + Gets the value. + + + + + Gets the checksum portion. + + + + + Initializes a new instance of the class. + + The value. + The checksum portion. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Gets the information. + + + + + + Parses the information. + + + + + + Creates the decoder. + + The information. + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + + + + + One row of an RSS Expanded Stacked symbol, consisting of 1+ expanded pairs. + + + + + Two rows are equal if they contain the same pairs in the same order. + + + + + Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode or null, if an error occurs or barcode cannot be found + +
    + + + Resets this instance. + + + + + Encapsulates an RSS barcode finder pattern, including its start/end position and row. + + + + + Gets the value. + + + + + Gets the start end. + + + + + Gets the result points. + + + + + Initializes a new instance of the class. + + The value. + The start end. + The start. + The end. + The row number. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Decodes RSS-14, including truncated and stacked variants. See ISO/IEC 24724:2006. + + + + + Initializes a new instance of the class. + + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode or null, if an error occurs or barcode cannot be found + +
    + + + Resets this instance. + + + + + Adapted from listings in ISO/IEC 24724 Appendix B and Appendix G. + + + + + Gets the RS svalue. + + The widths. + Width of the max. + if set to true [no narrow]. + + + + +

    Implements decoding of the UPC-A format.

    + dswitkin@google.com (Daniel Switkin) + Sean Owen +
    +
    + + +

    Like decodeRow(int, BitArray, java.util.Map), but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.

    +
    + + + + + +
    + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode or null, if an error occurs or barcode cannot be found + +
    + + + Decodes the specified image. + + The image. + The hints. + + + + + Get the format of this decoder. + The 1D format. + + + + + Subclasses override this to decode the portion of a barcode between the start + and end guard patterns. + + row of black/white values to search + start/end offset of start guard pattern + to append decoded chars to + + horizontal offset of first pixel after the "middle" that was decoded or -1 if decoding could not complete successfully + + + + + This object renders a UPC-A code as a . + qwandor@google.com (Andrew Walbran) + + + + + Encode a barcode using the default settings. + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + Additional parameters to supply to the encoder + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + @see UPCEANExtension5Support + + + + + Parses the extension string. + + raw content of extension + formatted interpretation of raw content as a {@link Map} mapping + + + @see UPCEANExtension2Support + + + + Parses the extension string. + + raw content of extension + formatted interpretation of raw content as a {@link Map} mapping + one {@link ResultMetadataType} to appropriate value, or {@code null} if not known + + + +

    Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.

    + dswitkin@google.com (Daniel Switkin) + Sean Owen + alasdair@google.com (Alasdair Mackintosh) +
    +
    + + + Start/end guard pattern. + + + + + Pattern marking the middle of a UPC/EAN pattern, separating the two halves. + + + + + end guard pattern. + + + + + "Odd", or "L" patterns used to encode UPC/EAN digits. + + + + + As above but also including the "even", or "G" patterns used to encode UPC/EAN digits. + + + + + Initializes a new instance of the class. + + + + +

    Attempts to decode a one-dimensional barcode format given a single row of + an image.

    +
    + row number from top of the row + the black/white pixel data of the row + decode hints + + containing encoded string and start/end of barcode or null, if an error occurs or barcode cannot be found + +
    + + +

    Like , but + allows caller to inform method about where the UPC/EAN start pattern is + found. This allows this to be computed once and reused across many implementations.

    +
    + row index into the image + encoding of the row of the barcode image + start/end column where the opening start pattern was found + optional hints that influence decoding + encapsulating the result of decoding a barcode in the row +
    + + + + string of digits to check + see + + + + Computes the UPC/EAN checksum on a string of digits, and reports + whether the checksum is correct or not. + + string of digits to check + true iff string of digits passes the UPC/EAN checksum algorithm + + + + Decodes the end. + + The row. + The end start. + + + + + + row of black/white values to search + position to start search + if true, indicates that the pattern specifies white/black/white/... + pixel counts, otherwise, it is interpreted as black/white/black/... + pattern of counts of number of black and white pixels that are being + searched for as a pattern + array of counters, as long as pattern, to re-use + start/end horizontal offset of guard pattern, as an array of two ints + + + + Attempts to decode a single UPC/EAN-encoded digit. + + row of black/white values to decode + the counts of runs of observed black/white/black/... values + horizontal offset to start decoding from + the set of patterns to use to decode -- sometimes different encodings + for the digits 0-9 are used, and this indicates the encodings for 0 to 9 that should + be used + horizontal offset of first pixel beyond the decoded digit + + + + Get the format of this decoder. + + The 1D format. + + + + Subclasses override this to decode the portion of a barcode between the start + and end guard patterns. + + row of black/white values to search + start/end offset of start guard pattern + to append decoded chars to + horizontal offset of first pixel after the "middle" that was decoded or -1 if decoding could not complete successfully + + + +

    Encapsulates functionality and implementation that is common to UPC and EAN families + of one-dimensional barcodes.

    + aripollak@gmail.com (Ari Pollak) + dsbnatut@gmail.com (Kazuki Nishiura) +
    +
    + + + Gets the default margin. + + + + +

    Implements decoding of the UPC-E format.

    +

    Thisis a great reference for + UPC-E information.

    + Sean Owen +
    +
    + + + The pattern that marks the middle, and end, of a UPC-E pattern. + There is no "second half" to a UPC-E barcode. + + + + + See L_AND_G_PATTERNS these values similarly represent patterns of + even-odd parity encodings of digits that imply both the number system (0 or 1) + used, and the check digit. + + + + + Initializes a new instance of the class. + + + + + Decodes the middle. + + The row. + The start range. + The result. + + + + + Decodes the end. + + The row. + The end start. + + + + + see checkStandardUPCEANChecksum(String) + + + + + + + Determines the num sys and check digit. + + The result string. + The lg pattern found. + + + + + Get the format of this decoder. + The 1D format. + + + + + Expands a UPC-E value back into its full, equivalent UPC-A code value. + + UPC-E code as string of digits + equivalent UPC-A code as string of digits + + + + + This object renders an UPC-E code as a {@link BitMatrix}. + @author 0979097955s@gmail.com (RX) + + + + + Metadata about a PDF417 Barcode + + Guenther Grau + + + + A Barcode Value for the PDF417 barcode. + The scanner will iterate through the bitmatrix, + and given the different methods or iterations + will increment a given barcode value's confidence. + + When done, this will return the values of highest confidence. + + Guenther Grau + + + + Incremenets the Confidence for a given value. (Adds an occurance of a value) + + + Value. + + + + Determines the maximum occurrence of a set value and returns all values which were set with this occurrence. + + an array of int, containing the values with the highest occurrence, or null, if no value was set. + + + + Returns the confience value for a given barcode value + + Barcode value. + + + + A Bounding Box helper class + + Guenther Grau + + + + Initializes a new instance of the class. + returns null if the corner points don't match up correctly + + The image. + The top left. + The bottom left. + The top right. + The bottom right. + + + + + Creates the specified box. + + The box. + + + + + Initializes a new instance of the class. + Will throw an exception if the corner points don't match up correctly + + Image. + Top left. + Top right. + Bottom left. + Bottom right. + + + + Merge two Bounding Boxes, getting the left corners of left, and the right corners of right + (Images should be the same) + + Left. + Right. + + + + Adds the missing rows. + + The missing rows. + Missing start rows. + Missing end rows. + If set to true is left. + + + + A Codeword in the PDF417 barcode + + Guenther Grau + + + + Default value for the RowNumber (-1 being an invalid real number) + + + + + Initializes a new instance of the class. + + Start x. + End x. + Bucket. + Value. + + + + Gets the width. + + The width. + + + + Gets a value indicating whether this instance has valid row number. + + true if this instance has valid row number; otherwise, false. + + + + Determines whether this instance is valid row number the specified rowNumber. + + true if this instance is valid row number the specified rowNumber; otherwise, false. + Row number. + + + + Sets the row number as the row's indicator column. + + + + + Returns a that represents the current . + + A that represents the current . + + + +

    This class contains the methods for decoding the PDF417 codewords.

    + + SITA Lab (kevin.osullivan@sita.aero) +
    +
    + + + Table containing values for the exponent of 900. + This is used in the numeric compaction decode algorithm. + + + + + Text Compaction mode (see 5.4.1.5) permits all printable ASCII characters to be + encoded, i.e. values 32 - 126 inclusive in accordance with ISO/IEC 646 (IRV), as + well as selected control characters. + + The array of codewords (data + error) + The current index into the codeword array. + The decoded data is appended to the result. + The next index into the codeword array. + + + + + The Text Compaction mode includes all the printable ASCII characters + (i.e. values from 32 to 126) and three ASCII control characters: HT or tab + (ASCII value 9), LF or line feed (ASCII value 10), and CR or carriage + return (ASCII value 13). The Text Compaction mode also includes various latch + and shift characters which are used exclusively within the mode. The Text + Compaction mode encodes up to 2 characters per codeword. The compaction rules + for converting data into PDF417 codewords are defined in 5.4.2.2. The sub-mode + switches are defined in 5.4.2.3. + + The text compaction data. + The byte compaction data if there + was a mode shift. + The size of the text compaction and byte compaction data. + The decoded data is appended to the result. + + + + + Byte Compaction mode (see 5.4.3) permits all 256 possible 8-bit byte values to be encoded. + This includes all ASCII characters value 0 to 127 inclusive and provides for international + character set support. + + The byte compaction mode i.e. 901 or 924 + The array of codewords (data + error) + Currently active character encoding + The current index into the codeword array. + The decoded data is appended to the result. + The next index into the codeword array. + + + + + Numeric Compaction mode (see 5.4.4) permits efficient encoding of numeric data strings. + + The array of codewords (data + error) + The current index into the codeword array. + The decoded data is appended to the result. + The next index into the codeword array. + + + + + Convert a list of Numeric Compacted codewords from Base 900 to Base 10. + EXAMPLE + Encode the fifteen digit numeric string 000213298174000 + Prefix the numeric string with a 1 and set the initial value of + t = 1 000 213 298 174 000 + Calculate codeword 0 + d0 = 1 000 213 298 174 000 mod 900 = 200 + + t = 1 000 213 298 174 000 div 900 = 1 111 348 109 082 + Calculate codeword 1 + d1 = 1 111 348 109 082 mod 900 = 282 + + t = 1 111 348 109 082 div 900 = 1 234 831 232 + Calculate codeword 2 + d2 = 1 234 831 232 mod 900 = 632 + + t = 1 234 831 232 div 900 = 1 372 034 + Calculate codeword 3 + d3 = 1 372 034 mod 900 = 434 + + t = 1 372 034 div 900 = 1 524 + Calculate codeword 4 + d4 = 1 524 mod 900 = 624 + + t = 1 524 div 900 = 1 + Calculate codeword 5 + d5 = 1 mod 900 = 1 + t = 1 div 900 = 0 + Codeword sequence is: 1, 624, 434, 632, 282, 200 + + Decode the above codewords involves + 1 x 900 power of 5 + 624 x 900 power of 4 + 434 x 900 power of 3 + + 632 x 900 power of 2 + 282 x 900 power of 1 + 200 x 900 power of 0 = 1000213298174000 + + Remove leading 1 => Result is 000213298174000 + The array of codewords + The number of codewords + The decoded string representing the Numeric data. + + + + + + + Guenther Grau + + + + Returns the DetectionResult Columns. This does a fair bit of calculation, so call it sparingly. + + The detection result columns. + + + + Adjusts the indicator column row numbers. + + Detection result column. + + + + return number of codewords which don't have a valid row number. Note that the count is not accurate as codewords . + will be counted several times. It just serves as an indicator to see when we can stop adjusting row numbers + + The row numbers. + + + + Adjusts the row numbers by row. + + The row numbers by row. + + + + Adjusts the row numbers from both Row Indicators + + zero + + + + Adjusts the row numbers from Right Row Indicator. + + The unadjusted row count. + + + + Adjusts the row numbers from Left Row Indicator. + + Unadjusted row Count. + + + + Adjusts the row number if valid. + + The invalid rows + Row indicator row number. + Invalid row counts. + Codeword. + + + + Adjusts the row numbers. + + Barcode column. + Codewords row. + Codewords. + + + + Adjusts the row number. + + true, if row number was adjusted, false otherwise. + Codeword. + Other codeword. + + + + Returns a that represents the current . + + A that represents the current . + + + + Represents a Column in the Detection Result + + Guenther Grau + + + + The maximum distance to search in the codeword array in both the positive and negative directions + + + + + The Bounding Box around the column (in the BitMatrix) + + The box. + + + + The Codewords the Box encodes for, offset by the Box minY. + Remember to Access this ONLY through GetCodeword(imageRow) if you're accessing it in that manner. + + The codewords. + + + + Initializes a new instance of the class. + + The Bounding Box around the column (in the BitMatrix) + + + + Converts the Image's Row to the index in the Codewords array + + The Codeword Index. + Image row. + + + + Converts the Codeword array index into a Row in the Image (BitMatrix) + + The Image Row. + Codeword index. + + + + Gets the codeword for a given row + + The codeword. + Image row. + + + + Gets the codeword closest to the specified row in the image + + Image row. + + + + Sets the codeword for an image row + + Image row. + Codeword. + + + + Returns a that represents the current . + + A that represents the current . + + + + Represents a Column in the Detection Result + + Guenther Grau + + + + Gets or sets a value indicating whether this instance is the left indicator + + true if this instance is left; otherwise, false. + + + + Initializes a new instance of the class. + + Box. + If set to true is left. + + + + Sets the Row Numbers as Inidicator Columns + + + + + TODO implement properly + TODO maybe we should add missing codewords to store the correct row number to make + finding row numbers for other columns easier + use row height count to make detection of invalid row numbers more reliable + + The indicator column row numbers. + Metadata. + + + + Gets the row heights. + + The row heights. + + + + Adjusts the in omplete indicator column row numbers. + + Metadata. + + + + Gets the barcode metadata. + + The barcode metadata. + + + + Prune the codewords which do not match the metadata + TODO Maybe we should keep the incorrect codewords for the start and end positions? + + Codewords. + Metadata. + + + + Returns a that represents the current . + + A that represents the current . + + + +

    PDF417 error correction implementation.

    +

    This example + is quite useful in understanding the algorithm.

    + Sean Owen + +
    +
    + + + Initializes a new instance of the class. + + + + + Decodes the specified received. + + received codewords + number of those codewords used for EC + location of erasures + The error locations count. + + + + + Runs the euclidean algorithm (Greatest Common Divisor) until r's degree is less than R/2 + + The euclidean algorithm. + + + + Finds the error locations as a direct application of Chien's search + + The error locations. + Error locator. + + + + Finds the error magnitudes by directly applying Forney's Formula + + The error magnitudes. + Error evaluator. + Error locator. + Error locations. + + + +

    A field based on powers of a generator integer, modulo some modulus.

    + +
    + Sean Owen +
    + + + + + Sean Owen + + + + Gets the coefficients. + + The coefficients. + + + + degree of this polynomial + + + + + Gets a value indicating whether this instance is zero. + + true if this polynomial is the monomial "0" + + + + + coefficient of x^degree term in this polynomial + + The degree. + coefficient of x^degree term in this polynomial + + + + evaluation of this polynomial at a given point + + A. + evaluation of this polynomial at a given point + + + + Adds another Modulus + + Other. + + + + Subtract another Modulus + + Other. + + + + Multiply by another Modulus + + Other. + + + + Returns a Negative version of this instance + + + + + Multiply by a Scalar. + + Scalar. + + + + Multiplies by a Monomial + + The by monomial. + Degree. + Coefficient. + + + + Returns a that represents the current . + + A that represents the current . + + + + + + Guenther Grau + creatale GmbH (christoph.schulz@creatale.de) + + + + The ratios table + + + + + Initializes the class & Pre-computes the symbol ratio table. + + + + + Gets the decoded value. + + The decoded value. + Module bit count. + + + + Samples the bit counts. + + The bit counts. + Module bit count. + + + + Gets the decoded codeword value. + + The decoded codeword value. + Module bit count. + + + + Gets the bit value. + + The bit value. + Module bit count. + + + + Gets the closest decoded value. + + The closest decoded value. + Module bit count. + + + + + + Guenther Grau + + + + Decode the specified image, imageTopLeft, imageBottomLeft, imageTopRight, imageBottomRight, minCodewordWidth + and maxCodewordWidth. + TODO: don't pass in minCodewordWidth and maxCodewordWidth, pass in barcode columns for start and stop pattern + columns. That way width can be deducted from the pattern column. + This approach also allows to detect more details about the barcode, e.g. if a bar type (white or black) is wider + than it should be. This can happen if the scanner used a bad blackpoint. + + Image. + Image top left. + Image bottom left. + Image top right. + Image bottom right. + Minimum codeword width. + Max codeword width. + + + + Merge the specified leftRowIndicatorColumn and rightRowIndicatorColumn. + + Left row indicator column. + Right row indicator column. + + + + Adjusts the bounding box. + + The bounding box. + Row indicator column. + + + + Gets the barcode metadata. + + The barcode metadata. + Left row indicator column. + Right row indicator column. + + + + Gets the row indicator column. + + The row indicator column. + Image. + Bounding box. + Start point. + If set to true left to right. + Minimum codeword width. + Max codeword width. + + + + Adjusts the codeword count. + + Detection result. + Barcode matrix. + + + + Creates the decoder result. + + The decoder result. + Detection result. + + + + This method deals with the fact, that the decoding process doesn't always yield a single most likely value. The + current error correction implementation doesn't deal with erasures very well, so it's better to provide a value + for these ambiguous codewords instead of treating it as an erasure. The problem is that we don't know which of + the ambiguous values to choose. We try decode using the first value, and if that fails, we use another of the + ambiguous values and try to decode again. This usually only happens on very hard to read and decode barcodes, + so decoding the normal barcodes is not affected by this. + + The decoder result from ambiguous values. + Ec level. + Codewords. + contains the indexes of erasures. + array with the indexes that have more than one most likely value. + two dimensional array that contains the ambiguous values. The first dimension must + be the same Length as the ambiguousIndexes array. + + + + Creates the barcode matrix. + + The barcode matrix. + Detection result. + + + + Tests to see if the Barcode Column is Valid + + true, if barcode column is valid, false otherwise. + Detection result. + Barcode column. + + + + Gets the start column. + + The start column. + Detection result. + Barcode column. + Image row. + If set to true left to right. + + + + Detects the codeword. + + The codeword. + Image. + Minimum column. + Max column. + If set to true left to right. + Start column. + Image row. + Minimum codeword width. + Max codeword width. + + + + Gets the module bit count. + + The module bit count. + Image. + Minimum column. + Max column. + If set to true left to right. + Start column. + Image row. + + + + Gets the number of EC code words. + + The number of EC code words. + Barcode EC level. + + + + Adjusts the codeword start column. + + The codeword start column. + Image. + Minimum column. + Max column. + If set to true left to right. + Codeword start column. + Image row. + + + + Checks the codeword for any skew. + + true, if codeword is within the skew, false otherwise. + Codeword size. + Minimum codeword width. + Max codeword width. + + + + Decodes the codewords. + + The codewords. + Codewords. + Ec level. + Erasures. + + + + Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place. + + The errors. + data and error correction codewords. + positions of any known erasures. + number of error correction codewords that are available in codewords. + + + + Verifies that all is well with the the codeword array. + + Codewords. + Number EC codewords. + + + + Gets the bit count for codeword. + + The bit count for codeword. + Codeword. + + + + Gets the codeword bucket number. + + The codeword bucket number. + Codeword. + + + + Gets the codeword bucket number. + + The codeword bucket number. + Module bit count. + + + + Returns a that represents the jagged array. + + A that represents the jagged array. + Barcode matrix as a jagged array. + + + +

    Encapsulates logic that can detect a PDF417 Code in an image, even if the + PDF417 Code is rotated or skewed, or partially obscured.

    + + SITA Lab (kevin.osullivan@sita.aero) + dswitkin@google.com (Daniel Switkin) + Guenther Grau +
    +
    + + + B S B S B S B S Bar/Space pattern + 11111111 0 1 0 1 0 1 000. + + + + + 1111111 0 1 000 1 0 1 00 1 + + + + + if we set the value too low, then we don't detect the correct height of the bar if the start patterns are damaged. + if we set the value too high, then we might detect the start pattern from a neighbor barcode. + + + + + A PDF471 barcode should have at least 3 rows, with each row being >= 3 times the module width. Therefore it should be at least + 9 pixels tall. To be conservative, we use about half the size to ensure we don't miss it. + + + + +

    Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.

    +
    + barcode image to decode + optional hints to detector + if true, then the image is searched for multiple codes. If false, then at most one code will be found and returned + + encapsulating results of detecting a PDF417 code + +
    + + + Detects PDF417 codes in an image. Only checks 0 degree rotation (so rotate the matrix and check again outside of this method) + + multiple if true, then the image is searched for multiple codes. If false, then at most one code will be found and returned. + bit matrix to detect barcodes in. + List of ResultPoint arrays containing the coordinates of found barcodes + + + + Locate the vertices and the codewords area of a black blob using the Start and Stop patterns as locators. + + Matrix. + Start row. + Start column. + an array containing the vertices: + vertices[0] x, y top left barcode + vertices[1] x, y bottom left barcode + vertices[2] x, y top right barcode + vertices[3] x, y bottom right barcode + vertices[4] x, y top left codeword area + vertices[5] x, y bottom left codeword area + vertices[6] x, y top right codeword area + vertices[7] x, y bottom right codeword area + + + + + Copies the temp data to the final result + + Result. + Temp result. + Destination indexes. + + + + Finds the rows with the given pattern. + + The rows with pattern. + Matrix. + Height. + Width. + Start row. + Start column. + Pattern. + + + + Finds the guard pattern. Uses System.Linq.Enumerable.Repeat to fill in counters. This might be a performance issue? + + start/end horizontal offset of guard pattern, as an array of two ints. + matrix row of black/white values to search + column x position to start search. + row y position to start search. + width the number of pixels to search on this row. + If set to true search the white patterns first. + pattern of counts of number of black and white pixels that are being searched for as a pattern. + counters array of counters, as long as pattern, to re-use . + + + + Determines how closely a set of observed counts of runs of black/white. + values matches a given target pattern. This is reported as the ratio of + the total variance from the expected pattern proportions across all + pattern elements, to the length of the pattern. + + + ratio of total variance between counters and pattern compared to + total pattern size, where the ratio has been multiplied by 256. + So, 0 means no variance (perfect match); 256 means the total + variance between counters and patterns equals the pattern length, + higher values mean even more variance + + observed counters. + expected pattern. + The most any counter can differ before we give up. + + + + PDF 417 Detector Result class. Skipped private backing stores. + Guenther Grau + + + + + Initializes a new instance of the class. + + Bits. + Points. + + + + Holds all of the information for a barcode in a format where it can be easily accessible + + Jacob Haynes + + + + + the height of the matrix (Rows) + the width of the matrix (Cols) + + + + + Jacob Haynes + + + + + Creates a Barcode row of the width + + The width. + + + + Sets a specific location in the bar + + The location in the bar + Black if true, white if false; + + + + + Sets a specific location in the bar + + The location in the bar + Black if true, white if false; + + + + + A boolean which is true if the bar black false if it is white + How many spots wide the bar is. + + + + + This function scales the row + + How much you want the image to be scaled, must be greater than or equal to 1. + the scaled row + + + + + Represents possible PDF417 barcode compaction types. + + + + + + + + + + + + + + + + + + + + + + + + + Data object to specify the minimum and maximum number of rows and columns for a PDF417 barcode. + @author qwandor@google.com (Andrew Walbran) + + + + + Initializes a new instance of the class. + + The min cols. + The max cols. + The min rows. + The max rows. + + + + Gets the min cols. + + + + + Gets the max cols. + + + + + Gets the min rows. + + + + + Gets the max rows. + + + + + Top-level class for the logic part of the PDF417 implementation. + + + + + The start pattern (17 bits) + + + + + The stop pattern (18 bits) + + + + + The codeword table from the Annex A of ISO/IEC 15438:2001(E). + + + + + Calculates the necessary number of rows as described in annex Q of ISO/IEC 15438:2001(E). + + the number of source codewords prior to the additional of the Symbol Length + Descriptor and any pad codewords + the number of error correction codewords + the number of columns in the symbol in the data region (excluding start, stop and + row indicator codewords) + the number of rows in the symbol (r) + + + + Calculates the number of pad codewords as described in 4.9.2 of ISO/IEC 15438:2001(E). + + the number of source codewords prior to the additional of the Symbol Length + Descriptor and any pad codewords + the number of error correction codewords + the number of columns in the symbol in the data region (excluding start, stop and + row indicator codewords) + the number of rows in the symbol + the number of pad codewords + + + + Generates the barcode logic. + + the message to encode + PDF417 error correction level to use + + + + Determine optimal nr of columns and rows for the specified number of + codewords. + + number of code words + number of error correction code words + The longest dimension of the barcode, used for columns + The short dimension of the barcode, used for rows + The height of a row, will alter this parameter if aspectRatio>4 (aspectRatio==AUTO) + dimension object containing cols as width and rows as height + + + + Sets the desired aspect ratio for the output image. + + + + + + Sets max/min row/col values + + maximum allowed columns + minimum allowed columns + maximum allowed rows + minimum allowed rows + + + + Sets compaction to values stored in enum + + compaction mode to use + + + + Sets compact to be true or false + + if true, enables compaction + + + + Sets output encoding. + + sets character encoding to use + + + + Sets the disable eci. + + if set to true don't add an ECI segment for different encodings than default. + + + + defines the level of the error correction / count of error correction codewords + + + + + PDF417 error correction code following the algorithm described in ISO/IEC 15438:2001(E) in + chapter 4.10. + + + + + Tables of coefficients for calculating error correction words + (see annex F, ISO/IEC 15438:2001(E)) + + + + + Determines the number of error correction codewords for a specified error correction + level. + + the error correction level (0-8) + the number of codewords generated for error correction + + + + Determines the error correction level for AUTO + + The error correction level (0-9) + The number of codewords for AUTO errorCorrectionLevel + the number of codewords generated for error correction + + + + Returns the recommended minimum error correction level as described in annex E of + ISO/IEC 15438:2001(E). + + the number of data codewords + the recommended minimum error correction level + + + + Generates the error correction codewords according to 4.10 in ISO/IEC 15438:2001(E). + + the data codewords + the error correction level (0-8) + the String representing the error correction codewords + + + + defines the level of the error correction / count of error correction codewords + + + + + PDF417 high-level encoder following the algorithm described in ISO/IEC 15438:2001(E) in + annex P. + + + + + code for Text compaction + + + + + code for Byte compaction + + + + + code for Numeric compaction + + + + + Text compaction submode Alpha + + + + + Text compaction submode Lower + + + + + Text compaction submode Mixed + + + + + Text compaction submode Punctuation + + + + + mode latch to Text Compaction mode + + + + + mode latch to Byte Compaction mode (number of characters NOT a multiple of 6) + + + + + mode latch to Numeric Compaction mode + + + + + mode shift to Byte Compaction mode + + + + + mode latch to Byte Compaction mode (number of characters a multiple of 6) + + + + + identifier for a user defined Extended Channel Interpretation (ECI) + + + + + identifier for a general purpose ECO format + + + + + identifier for an ECI of a character set of code page + + + + + Raw code table for text compaction Mixed sub-mode + + + + + Raw code table for text compaction: Punctuation sub-mode + + + + + Performs high-level encoding of a PDF417 message using the algorithm described in annex P + of ISO/IEC 15438:2001(E). If byte compaction has been selected, then only byte compaction + is used. + + the message + compaction mode to use + character encoding used to encode in default or byte compaction + or null for default / not applicable + if true, don't add an ECI segment for different encodings than default + the encoded message (the char values range from 0 to 928) + + + + Encode parts of the message using Text Compaction as described in ISO/IEC 15438:2001(E), + chapter 4.4.2. + + the message + the start position within the message + the number of characters to encode + receives the encoded codewords + should normally be SUBMODE_ALPHA + the text submode in which this method ends + + + + + Encode parts of the message using Byte Compaction as described in ISO/IEC 15438:2001(E), + chapter 4.4.3. The Unicode characters will be converted to binary using the cp437 + codepage. + + the message converted to a byte array + the start position within the message + the number of bytes to encode + the mode from which this method starts + receives the encoded codewords + + + + + Determines the number of consecutive characters that are encodable using numeric compaction. + + the message + the start position within the message + the requested character count + + + + + Determines the number of consecutive characters that are encodable using text compaction. + + the message + the start position within the message + the requested character count + + + + + Determines the number of consecutive characters that are encodable using binary compaction. + + the message + the message converted to a byte array + the start position within the message + + the requested character count + + + + The class holds the available options for the + + + + + Specifies whether to use compact mode for PDF417 (type ). + + + + + Specifies what compaction mode to use for PDF417 (type + ). + + + + + Specifies the minimum and maximum number of rows and columns for PDF417 (type + ). + + + + + Specifies what degree of error correction to use + + + + + Specifies the aspect ratio of the smallest codeword. + (Width of narrowest bar / Row Height) + + + + + Specifies the desired output image aspect ratio (Width / Height). + The actual aspect ratio is calculated based on the necessary number of codewords. + + + + + Specifies what character encoding to use where applicable (type {@link String}) + + + + + Explicitly disables ECI segment when generating PDF417 Code + That is against the specification but some + readers have problems if the charset is switched from + CP437 (default) to UTF-8 with the necessary ECI segment. + If you set the property to true you can use different encodings + and the ECI segment is omitted. + + + + + SITA Lab (kevin.osullivan@sita.aero) + Guenther Grau + + + + + Maximum Codewords (Data + Error). + + + + + Gets the bit count sum. + + The bit count sum. + Module bit count. + + + + Converts an ICollection<int> to an int[] + Carry-over from Java. Will likely remove and replace with the Generic .ToArray() method. + + The int array. + List. + + + + Translate the symbol into a codeword + + the codeword corresponding to the symbol. + encoded symbol to translate to a codeword + + + + The sorted table of all possible symbols. Extracted from the PDF417 + specification. The index of a symbol in this table corresponds to the + index into the codeword table. + + + + + This table contains to codewords for all symbols. + + + + + This implementation can detect and decode PDF417 codes in an image. + + SITA Lab (kevin.osullivan@sita.aero) + Guenther Grau + + + + + Locates and decodes a PDF417 code in an image. + + a String representing the content encoded by the PDF417 code + if a PDF417 cannot be decoded + + + + + Locates and decodes a barcode in some format within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + **Note** this will return the FIRST barcode discovered if there are many. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + + Locates and decodes Multiple PDF417 codes in an image. + + an array of Strings representing the content encoded by the PDF417 codes + + + + + Locates and decodes multiple barcodes in some format within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcodes encode + + + + + Decode the specified image, with the hints and optionally multiple barcodes. + Based on Owen's Comments in , this method has been modified to continue silently + if a barcode was not decoded where it was detected instead of throwing a new exception object. + + Image. + Hints. + If set to true multiple. + + + + Gets the maximum width of the barcode + + The max width. + P1. + P2. + + + + Gets the minimum width of the barcode + + The minimum width. + P1. + P2. + + + + Gets the maximum width of the codeword. + + The max codeword width. + P. + + + + Gets the minimum width of the codeword. + + The minimum codeword width. + P. + + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + + PDF 417 result meta data. + Guenther Grau + + + + + The Segment ID represents the segment of the whole file distributed over different symbols. + + + + + Is the same for each related PDF417 symbol + + + + + old optional data format as int array, always null + + + + + true if it is the last segment + + + + + count of segments, -1 if not set + + + + + Filename of the encoded file + + + + + filesize in bytes of the encoded file + returns filesize in bytes, -1 if not set + + + + + 16-bit CRC checksum using CCITT-16 + returns crc checksum, -1 if not set + + + + + unix epock timestamp, elapsed seconds since 1970-01-01 + returns elapsed seconds, -1 if not set + + + + + Jacob Haynes + qwandor@google.com (Andrew Walbran) + + + + + default white space (margin) around the code + + + + + default error correction level + + + + + default aspect ratio + + + + + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + Additional parameters to supply to the encoder + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + Encode a barcode using the default settings. + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + The height of a row in the barcode + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + Takes encoder, accounts for width/height, and retrieves bit matrix + + + + + This takes an array holding the values of the PDF 417 + + a byte array of information with 0 is black, and 1 is white + border around the barcode + BitMatrix of the input + + + + Takes and rotates the it 90 degrees + + + + Sean Owen + + + {@link BitMatrix} to parse + ReaderException if dimension is not >= 21 and 1 mod 4 + + +

    Reads format information from one of its two locations within the QR Code.

    + +
    + {@link FormatInformation} encapsulating the QR Code's format info + + ReaderException if both format information locations cannot be parsed as + the valid encoding of format information + +
    + +

    Reads version information from one of its two locations within the QR Code.

    + +
    + {@link Version} encapsulating the QR Code's version + + ReaderException if both version information locations cannot be parsed as + the valid encoding of version information + +
    + +

    Reads the bits in the {@link BitMatrix} representing the finder pattern in the + correct order in order to reconstruct the codewords bytes contained within the + QR Code.

    + +
    + bytes encoded within the QR Code + + ReaderException if the exact number of bytes expected is not read +
    + + Revert the mask removal done while reading the code words. The bit matrix should revert to its original state. + + + Prepare the parser for a mirrored operation. + This flag has effect only on the {@link #readFormatInformation()} and the + {@link #readVersion()}. Before proceeding with {@link #readCodewords()} the + {@link #mirror()} method should be called. + + @param mirror Whether to read version and format information mirrored. + + + Mirror the bit matrix in order to attempt a second reading. + + +

    Encapsulates a block of data within a QR Code. QR Codes may split their data into + multiple blocks, each of which is a unit of data and error-correction codewords. Each + is represented by an instance of this class.

    + +
    + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + +
    + +

    When QR Codes use multiple data blocks, they are actually interleaved. + That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + method will separate the data into original blocks.

    + +
    + bytes as read directly from the QR Code + + version of the QR Code + + error-correction level of the QR Code + + {@link DataBlock}s containing original bytes, "de-interleaved" from representation in the + QR Code + +
    + +

    Encapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations + of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix, + including areas used for finder patterns, timing patterns, etc. These areas should be unused + after the point they are unmasked anyway.

    + +

    Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position + and j is row position. In fact, as the text says, i is row position and j is column position.

    + +
    + Sean Owen +
    + + See ISO 18004:2006 6.8.1 + + +

    Implementations of this method reverse the data masking process applied to a QR Code and + make its bits ready to read.

    +
    + + representation of QR Code bits + dimension of QR Code, represented by bits, being unmasked +
    + +

    QR Codes can encode text as bits in one of several modes, and can use multiple modes + in one QR Code. This class decodes the bits back into text.

    + +

    See ISO 18004:2006, 6.4.3 - 6.4.7

    + Sean Owen +
    +
    + + + See ISO 18004:2006, 6.4.4 Table 5 + + + + + See specification GBT 18284-2000 + + The bits. + The result. + The count. + + + + +

    The main class which implements QR Code decoding -- as opposed to locating and extracting + the QR Code from an image.

    +
    + + Sean Owen + +
    + + + Initializes a new instance of the class. + + + + +

    Convenience method that can decode a QR Code represented as a 2D array of booleans. + "true" is taken to mean a black module.

    +
    + booleans representing white/black QR Code modules + decoding hints that should be used to influence decoding + + text and bytes encoded within the QR Code + +
    + + +

    Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.

    +
    + booleans representing white/black QR Code modules + decoding hints that should be used to influence decoding + + text and bytes encoded within the QR Code + +
    + + +

    Given data and error-correction codewords received, possibly corrupted by errors, attempts to + correct the errors in-place using Reed-Solomon error correction.

    +
    + data and error correction codewords + number of codewords that are data bytes + +
    + + +

    See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels + defined by the QR code standard.

    +
    + Sean Owen +
    + + L = ~7% correction + + + M = ~15% correction + + + Q = ~25% correction + + + H = ~30% correction + + + + Gets the bits. + + + + + Gets the name. + + + + + Ordinals this instance. + + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Fors the bits. + + int containing the two bits encoding a QR Code's error correction level + + representing the encoded error correction level + + + +

    Encapsulates a QR Code's format information, including the data mask used and + error correction level.

    + +
    + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + + + + + +
    + + See ISO 18004:2006, Annex C, Table C.1 + + + Offset i holds the number of 1 bits in the binary representation of i + + + + Decodes the format information. + + format info indicator, with mask still applied + The masked format info2. + + information about the format it specifies, or null + if doesn't seem to match any known pattern + + + + +

    See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + data can be encoded to bits in the QR code standard.

    +
    + Sean Owen +
    + + + Gets the name. + + + + + enumeration for encoding modes + + + + + + + + + + numeric encoding + + + + + alpha-numeric encoding + + + + + structured append + + + + + byte mode encoding + + + + + ECI segment + + + + + Kanji mode + + + + + FNC1 char, first position + + + + + FNC1 char, second position + + + + + Hanzi mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + See GBT 18284-2000; "Hanzi" is a transliteration of this mode name. + + + + Fors the bits. + + four bits encoding a QR Code data mode + + encoded by these bits + + if bits do not correspond to a known mode + + + version in question + + number of bits used, in this QR Code symbol {@link Version}, to encode the + count of characters that will follow encoded in this {@link Mode} + + + + + Gets the bits. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Meta-data container for QR Code decoding. Instances of this class may be used to convey information back to the + decoding caller. Callers are expected to process this. + + + + + Initializes a new instance of the class. + + if set to true [mirrored]. + + + + true if the QR Code was mirrored. + + + + + Apply the result points' order correction due to mirroring. + + Array of points to apply mirror correction to. + + + + See ISO 18004:2006 Annex D + + Sean Owen + + + See ISO 18004:2006 Annex D. + Element i represents the raw version bits that specify version i + 7 + + + + + Gets the version number. + + + + + Gets the alignment pattern centers. + + + + + Gets the total codewords. + + + + + Gets the dimension for version. + + + + + Gets the EC blocks for level. + + The ec level. + + + +

    Deduces version information purely from QR Code dimensions.

    + +
    + dimension in modules + + for a QR Code of that dimension or null +
    + + + Gets the version for number. + + The version number. + + + + See ISO 18004:2006 Annex E + + +

    Encapsulates a set of error-correction blocks in one symbol version. Most versions will + use blocks of differing sizes within one version, so, this encapsulates the parameters for + each set of blocks. It also holds the number of error-correction codewords per block since it + will be the same across all blocks within one version.

    +
    +
    + + + Gets the EC codewords per block. + + + + + Gets the num blocks. + + + + + Gets the total EC codewords. + + + + + Gets the EC blocks. + + + + +

    Encapsulates the parameters for one error-correction block in one symbol version. + This includes the number of data codewords, and the number of times a block with these + parameters is used consecutively in the QR code version's format.

    +
    +
    + + + Gets the count. + + + + + Gets the data codewords. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + See ISO 18004:2006 6.5.1 Table 9 + + +

    Encapsulates an alignment pattern, which are the smaller square patterns found in + all but the simplest QR Codes.

    + +
    + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + +
    + +

    Determines if this alignment pattern "about equals" an alignment pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.

    +
    +
    + + + Combines this object's current estimate of a finder pattern position and module size + with a new estimate. It returns a new {@code FinderPattern} containing an average of the two. + + The i. + The j. + New size of the module. + + + +

    This class attempts to find alignment patterns in a QR Code. Alignment patterns look like finder + patterns but are smaller and appear at regular intervals throughout the image.

    + +

    At the moment this only looks for the bottom-right alignment pattern.

    + +

    This is mostly a simplified copy of {@link FinderPatternFinder}. It is copied, + pasted and stripped down here for maximum performance but does unfortunately duplicate + some code.

    + +

    This class is thread-safe but not reentrant. Each thread must allocate its own object.

    + +
    + Sean Owen + + www.Redivivus.in (suraj.supekar@redivivus.in) - Ported from ZXING Java Source + +
    + +

    Creates a finder that will look in a portion of the whole image.

    + +
    + image to search + + left column from which to start searching + + top row from which to start searching + + width of region to search + + height of region to search + + estimated module size so far + + callback function which is called, when a result point is found +
    + +

    This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + it's pretty performance-critical and so is written to be fast foremost.

    + +
    + if found +
    + + Given a count of black/white/black pixels just seen and an end position, + figures the location of the center of this black/white/black run. + + + + count of black/white/black pixels just read + + true iff the proportions of the counts is close enough to the 1/1/1 ratios + used by alignment patterns to be considered a match + + + + +

    After a horizontal scan finds a potential alignment pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + alignment pattern to see if the same proportion is detected.

    +
    + row where an alignment pattern was detected + center of the section that appears to cross an alignment pattern + maximum reasonable number of modules that should be + observed in any reading state, based on the results of the horizontal scan + The original state count total. + + vertical center of alignment pattern, or null if not found + +
    + +

    This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will see if this pattern had been + found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + found the alignment pattern.

    + +
    + reading state module counts from horizontal scan + + row where alignment pattern may be found + + end of possible alignment pattern in row + + {@link AlignmentPattern} if we have found the same pattern twice, or null if not + +
    + + +

    Encapsulates logic that can detect a QR Code in an image, even if the QR Code + is rotated or skewed, or partially obscured.

    +
    + Sean Owen +
    + + + Initializes a new instance of the class. + + The image. + + + + Gets the image. + + + + + Gets the result point callback. + + + + +

    Detects a QR Code in an image.

    +
    + + encapsulating results of detecting a QR Code + +
    + + +

    Detects a QR Code in an image.

    +
    + optional hints to detector + + encapsulating results of detecting a QR Code + +
    + + + Processes the finder pattern info. + + The info. + + + +

    Computes the dimension (number of modules on a size) of the QR Code based on the position + of the finder patterns and estimated module size.

    +
    +
    + + +

    Computes an average estimated module size based on estimated derived from the positions + of the three finder patterns.

    +
    + detected top-left finder pattern center + detected top-right finder pattern center + detected bottom-left finder pattern center + estimated module size +
    + +

    Estimates module size based on two finder patterns -- it uses + {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + width of each, measuring along the axis between their centers.

    +
    +
    + + See {@link #sizeOfBlackWhiteBlackRun(int, int, int, int)}; computes the total width of + a finder pattern by looking for a black-white-black run from the center in the direction + of another point (another finder pattern center), and in the opposite direction too. + + + +

    This method traces a line from a point in the image, in the direction towards another point. + It begins in a black region, and keeps going until it finds white, then black, then white again. + It reports the distance from the start to this point.

    + +

    This is used when figuring out how wide a finder pattern is, when the finder pattern + may be skewed or rotated.

    +
    +
    + + +

    Attempts to locate an alignment pattern in a limited region of the image, which is + guessed to contain it. This method uses {@link AlignmentPattern}.

    +
    + estimated module size so far + x coordinate of center of area probably containing alignment pattern + y coordinate of above + number of pixels in all directions to search from the center + + if found, or null otherwise + +
    + + +

    Encapsulates a finder pattern, which are the three square patterns found in + the corners of QR Codes. It also encapsulates a count of similar finder patterns, + as a convenience to the finder's bookkeeping.

    +
    + Sean Owen +
    + + + Gets the size of the estimated module. + + + The size of the estimated module. + + + +

    Determines if this finder pattern "about equals" a finder pattern at the stated + position and size -- meaning, it is at nearly the same center with nearly the same size.

    +
    +
    + + + Combines this object's current estimate of a finder pattern position and module size + with a new estimate. It returns a new {@code FinderPattern} containing a weighted average + based on count. + + The i. + The j. + New size of the module. + + + + +

    This class attempts to find finder patterns in a QR Code. Finder patterns are the square + markers at three corners of a QR Code.

    + +

    This class is thread-safe but not reentrant. Each thread must allocate its own object.

    +
    + Sean Owen +
    + + + 1 pixel/module times 3 modules/center + + + + + support up to version 20 for mobile clients + + + + +

    Creates a finder that will search the image for three finder patterns.

    +
    + image to search +
    + + + Initializes a new instance of the class. + + The image. + The result point callback. + + + + Gets the image. + + + + + Gets the possible centers. + + + + Given a count of black/white/black/white/black pixels just seen and an end position, + figures the location of the center of this run. + + + + count of black/white/black/white/black pixels just read + + true iff the proportions of the counts is close enough to the 1/1/3/1/1 ratios + used by finder patterns to be considered a match + + + + + + count of black/white/black/white/black pixels just read + true if the proportions of the counts is close enough to the 1/1/3/1/1 ratios + by finder patterns to be considered a match + + + + After a vertical and horizontal scan finds a potential finder pattern, this method + "cross-cross-cross-checks" by scanning down diagonally through the center of the possible + finder pattern to see if the same proportion is detected. + + row where a finder pattern was detected + center of the section that appears to cross a finder pattern + true if proportions are withing expected limits + + + +

    After a horizontal scan finds a potential finder pattern, this method + "cross-checks" by scanning down vertically through the center of the possible + finder pattern to see if the same proportion is detected.

    +
    + row where a finder pattern was detected + center of the section that appears to cross a finder pattern + maximum reasonable number of modules that should be + observed in any reading state, based on the results of the horizontal scan + The original state count total. + + vertical center of finder pattern, or null if not found + +
    + +

    Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + except it reads horizontally instead of vertically. This is used to cross-cross + check a vertical cross check and locate the real center of the alignment pattern.

    +
    +
    + + + @see #handlePossibleCenter(int[], int, int) + + reading state module counts from horizontal scan + row where finder pattern may be found + end of possible finder pattern in row + ignored + true if a finder pattern candidate was found this time + + + +

    This is called when a horizontal scan finds a possible alignment pattern. It will + cross check with a vertical scan, and if successful, will, ah, cross-cross-check + with another horizontal scan. This is needed primarily to locate the real horizontal + center of the pattern in cases of extreme skew. + And then we cross-cross-cross check with another diagonal scan.

    + If that succeeds the finder pattern location is added to a list that tracks + the number of times each location has been nearly-matched as a finder pattern. + Each additional find is more evidence that the location is in fact a finder + pattern center +
    + reading state module counts from horizontal scan + row where finder pattern may be found + end of possible finder pattern in row + + true if a finder pattern candidate was found this time + +
    + + number of rows we could safely skip during scanning, based on the first + two finder patterns that have been located. In some cases their position will + allow us to infer that the third pattern must lie below a certain point farther + down in the image. + + + + true iff we have found at least 3 finder patterns that have been detected + at least {@link #CENTER_QUORUM} times each, and, the estimated module size of the + candidates is "pretty similar" + + + + + Get square of distance between a and b. + + + + + + + the 3 best {@link FinderPattern}s from our list of candidates. The "best" are + those have similar module size and form a shape closer to a isosceles right triangle. + + + + + Orders by {@link FinderPatternFinder#getEstimatedModuleSize()} + + + + +

    Encapsulates information about finder patterns in an image, including the location of + the three finder patterns, and their estimated module size.

    +
    + Sean Owen +
    + + + Initializes a new instance of the class. + + The pattern centers. + + + + Gets the bottom left. + + + + + Gets the top left. + + + + + Gets the top right. + + + + + JAVAPORT: The original code was a 2D array of ints, but since it only ever gets assigned + 0, 1 and 2 I'm going to use less memory and go with bytes. + + dswitkin@google.com (Daniel Switkin) + + + + Initializes a new instance of the class. + + The width. + The height. + + + + Gets the height. + + + + + Gets the width. + + + + + Gets or sets the with the specified x. + + + + + an internal representation as bytes, in row-major order. array[y][x] represents point (x,y) + + + + + Sets the specified x. + + The x. + The y. + The value. + + + + Sets the specified x. + + The x. + The y. + if set to true [value]. + + + + Clears the specified value. + + The value. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + + satorux@google.com (Satoru Takabayashi) - creator + dswitkin@google.com (Daniel Switkin) - ported from C++ + + + + Encode "bytes" with the error correction level "ecLevel". The encoding mode will be chosen + internally by chooseMode(). On success, store the result in "qrCode". + We recommend you to use QRCode.EC_LEVEL_L (the lowest level) for + "getECLevel" since our primary use is to show QR code on desktop screens. We don't need very + strong error correction for this purpose. + Note that there is no way to encode bytes in MODE_KANJI. We might want to add EncodeWithMode() + with which clients can specify the encoding mode. For now, we don't need the functionality. + + text to encode + error correction level to use + representing the encoded QR code + + + + Encodes the specified content. + + The content. + The ec level. + The hints. + + + + + Decides the smallest version of QR code that will contain all of the provided data. + + if the data cannot fit in any version + + + + Gets the alphanumeric code. + + The code. + the code point of the table used in alphanumeric mode or + -1 if there is no corresponding code in the table. + + + + Chooses the mode. + + The content. + + + + + Choose the best mode by examining the content. Note that 'encoding' is used as a hint; + if it is Shift_JIS, and the input is only double-byte Kanji, then we return {@link Mode#KANJI}. + + The content. + The encoding. + + + + + true if the number of input bits will fit in a code with the specified version and error correction level. + + + + Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24). + + The num data bytes. + The bits. + + + + Get number of data bytes and number of error correction bytes for block id "blockID". Store + the result in "numDataBytesInBlock", and "numECBytesInBlock". See table 12 in 8.5.1 of + JISX0510:2004 (p.30) + + The num total bytes. + The num data bytes. + The num RS blocks. + The block ID. + The num data bytes in block. + The num EC bytes in block. + + + + Interleave "bits" with corresponding error correction bytes. On success, store the result in + "result". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details. + + The bits. + The num total bytes. + The num data bytes. + The num RS blocks. + + + + + Append mode info. On success, store the result in "bits". + + The mode. + The bits. + + + + Append length info. On success, store the result in "bits". + + The num letters. + The version. + The mode. + The bits. + + + + Append "bytes" in "mode" mode (encoding) into "bits". On success, store the result in "bits". + + The content. + The mode. + The bits. + The encoding. + + + + + + Satoru Takabayashi + Daniel Switkin + Sean Owen + + + + Apply mask penalty rule 1 and return the penalty. Find repetitive cells with the same color and + give penalty to them. Example: 00000 or 11111. + + The matrix. + + + + + Apply mask penalty rule 2 and return the penalty. Find 2x2 blocks with the same color and give + penalty to them. This is actually equivalent to the spec's rule, which is to find MxN blocks and give a + penalty proportional to (M-1)x(N-1), because this is the number of 2x2 blocks inside such a block. + + The matrix. + + + + + Apply mask penalty rule 3 and return the penalty. Find consecutive cells of 00001011101 or + 10111010000, and give penalty to them. If we find patterns like 000010111010000, we give + penalties twice (i.e. 40 * 2). + + The matrix. + + + + + Apply mask penalty rule 4 and return the penalty. Calculate the ratio of dark cells and give + penalty if the ratio is far from 50%. It gives 10 penalty for 5% distance. + + The matrix. + + + + + Return the mask bit for "getMaskPattern" at "x" and "y". See 8.8 of JISX0510:2004 for mask + pattern conditions. + + The mask pattern. + The x. + The y. + + + + + Helper function for applyMaskPenaltyRule1. We need this for doing this calculation in both + vertical and horizontal orders respectively. + + The matrix. + if set to true [is horizontal]. + + + + + + + + satorux@google.com (Satoru Takabayashi) - creator + + + + + Set all cells to 2. 2 means that the cell is empty (not set yet). + + JAVAPORT: We shouldn't need to do this at all. The code should be rewritten to begin encoding + with the ByteMatrix initialized all to zero. + + The matrix. + + + + Build 2D matrix of QR Code from "dataBits" with "ecLevel", "version" and "getMaskPattern". On + success, store the result in "matrix" and return true. + + The data bits. + The ec level. + The version. + The mask pattern. + The matrix. + + + + Embed basic patterns. On success, modify the matrix and return true. + The basic patterns are: + - Position detection patterns + - Timing patterns + - Dark dot at the left bottom corner + - Position adjustment patterns, if need be + + The version. + The matrix. + + + + Embed type information. On success, modify the matrix. + + The ec level. + The mask pattern. + The matrix. + + + + Embed version information if need be. On success, modify the matrix and return true. + See 8.10 of JISX0510:2004 (p.47) for how to embed version information. + + The version. + The matrix. + + + + Embed "dataBits" using "getMaskPattern". On success, modify the matrix and return true. + For debugging purposes, it skips masking process if "getMaskPattern" is -1. + See 8.7 of JISX0510:2004 (p.38) for how to embed data bits. + + The data bits. + The mask pattern. + The matrix. + + + + Return the position of the most significant bit set (to one) in the "value". The most + significant bit is position 32. If there is no bit set, return 0. Examples: + - findMSBSet(0) => 0 + - findMSBSet(1) => 1 + - findMSBSet(255) => 8 + + The value_ renamed. + + + + + Calculate BCH (Bose-Chaudhuri-Hocquenghem) code for "value" using polynomial "poly". The BCH + code is used for encoding type information and version information. + Example: Calculation of version information of 7. + f(x) is created from 7. + - 7 = 000111 in 6 bits + - f(x) = x^2 + x^2 + x^1 + g(x) is given by the standard (p. 67) + - g(x) = x^12 + x^11 + x^10 + x^9 + x^8 + x^5 + x^2 + 1 + Multiply f(x) by x^(18 - 6) + - f'(x) = f(x) * x^(18 - 6) + - f'(x) = x^14 + x^13 + x^12 + Calculate the remainder of f'(x) / g(x) + x^2 + __________________________________________________ + g(x) )x^14 + x^13 + x^12 + x^14 + x^13 + x^12 + x^11 + x^10 + x^7 + x^4 + x^2 + -------------------------------------------------- + x^11 + x^10 + x^7 + x^4 + x^2 + + The remainder is x^11 + x^10 + x^7 + x^4 + x^2 + Encode it in binary: 110010010100 + The return value is 0xc94 (1100 1001 0100) + + Since all coefficients in the polynomials are 1 or 0, we can do the calculation by bit + operations. We don't care if coefficients are positive or negative. + + The value. + The poly. + + + + + Make bit vector of type information. On success, store the result in "bits" and return true. + Encode error correction level and mask pattern. See 8.9 of + JISX0510:2004 (p.45) for details. + + The ec level. + The mask pattern. + The bits. + + + + Make bit vector of version information. On success, store the result in "bits" and return true. + See 8.10 of JISX0510:2004 (p.45) for details. + + The version. + The bits. + + + + Check if "value" is empty. + + The value. + + true if the specified value is empty; otherwise, false. + + + + + Embed the lonely dark dot at left bottom corner. JISX0510:2004 (p.46) + + The matrix. + + + + + + The x start. + The y start. + The matrix. + + + + Embed position detection patterns and surrounding vertical/horizontal separators. + + The matrix. + + + + Embed position adjustment patterns if need be. + + The version. + The matrix. + + + satorux@google.com (Satoru Takabayashi) - creator + dswitkin@google.com (Daniel Switkin) - ported from C++ + + + + + + + + + Initializes a new instance of the class. + + + + + Gets or sets the mode. + + + The mode. + + + + + Gets or sets the EC level. + + + The EC level. + + + + + Gets or sets the version. + + + The version. + + + + + Gets or sets the mask pattern. + + + The mask pattern. + + + + + Gets or sets the matrix. + + + The matrix. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Check if "mask_pattern" is valid. + + The mask pattern. + + true if [is valid mask pattern] [the specified mask pattern]; otherwise, false. + + + + + The class holds the available options for the QrCodeWriter + + + + + Specifies what degree of error correction to use, for example in QR Codes. + Type depends on the encoder. For example for QR codes it's type + . + + + + + Specifies what character encoding to use where applicable (type ) + + + + + Explicitly disables ECI segment when generating QR Code + That is against the specification of QR Code but some + readers have problems if the charset is switched from + ISO-8859-1 (default) to UTF-8 with the necessary ECI segment. + If you set the property to true you can use UTF-8 encoding + and the ECI segment is omitted. + + + + + Specifies the exact version of QR code to be encoded. An integer, range 1 to 40. If the data specified + cannot fit within the required version, a WriterException will be thrown. + + + + + This implementation can detect and decode QR Codes in an image. + Sean Owen + + + + + Gets the decoder. + + + + + + Locates and decodes a QR code in an image. + + a String representing the content encoded by the QR code + + + + + Locates and decodes a barcode in some format within an image. This method also accepts + hints, each possibly associated to some data, which may help the implementation decode. + + image of barcode to decode + passed as a from + to arbitrary data. The + meaning of the data depends upon the hint type. The implementation may or may not do + anything with these hints. + + String which the barcode encodes + + + + + Resets any internal state the implementation has after a decode, to prepare it + for reuse. + + + + + This method detects a code in a "pure" image -- that is, pure monochrome image + which contains only an unrotated, unskewed, image of a code, with some white border + around it. This is a specialized method that works exceptionally fast in this special + case. + + + + + + + This object renders a QR Code as a BitMatrix 2D array of greyscale values. + + dswitkin@google.com (Daniel Switkin) + + + + + Encode a barcode using the default settings. + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + + + The contents to encode in the barcode + The barcode format to generate + The preferred width in pixels + The preferred height in pixels + Additional parameters to supply to the encoder + + The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + + + + diff --git a/build.cake b/build.cake deleted file mode 100644 index 79a18c5a9..000000000 --- a/build.cake +++ /dev/null @@ -1,84 +0,0 @@ -#tool nuget:?package=XamarinComponent - -#addin nuget:?package=Cake.Android.SdkManager -#addin nuget:?package=Cake.XCode -#addin nuget:?package=Cake.Xamarin -#addin nuget:?package=Cake.Xamarin.Build -#addin nuget:?package=Cake.SemVer -#addin nuget:?package=Cake.FileHelpers -#addin nuget:?package=Cake.MonoApiTools - -var PREVIEW = ""; -var VERSION = EnvironmentVariable ("APPVEYOR_BUILD_VERSION") ?? Argument("version", "0.0.0"); -var NUGET_VERSION_SUFFIX = ""; -var NUGET_VERSION = VERSION + NUGET_VERSION_SUFFIX; - -var ANDROID_HOME = EnvironmentVariable ("ANDROID_HOME") ?? Argument ("android_home", ""); - -var TARGET = Argument ("t", Argument ("target", "Default")); - -Task("externals").Does (() => { - Information ("ANDROID_HOME: {0}", ANDROID_HOME); - - var androidSdkSettings = new AndroidSdkManagerToolSettings { - SdkRoot = ANDROID_HOME, - SkipVersionCheck = true - }; - - try { AcceptLicenses (androidSdkSettings); } catch { } - - AndroidSdkManagerInstall (new [] { - "platforms;android-15", - "platforms;android-23", - "platforms;android-25", - "platforms;android-26" - }, androidSdkSettings); -}); - -Task("libs") - .Does(() => -{ - NuGetRestore("./ZXing.Net.Mobile.sln"); - NuGetRestore("./ZXing.Net.Mobile.Forms.sln"); - - var config = IsRunningOnWindows() ? "ReleaseWin" : "ReleaseMac"; - MSBuild ("./ZXing.Net.Mobile.sln", c => c.SetConfiguration(config).SetMSBuildPlatform(MSBuildPlatform.x86)); - MSBuild ("./ZXing.Net.Mobile.Forms.sln", c => c.SetConfiguration(config).SetMSBuildPlatform(MSBuildPlatform.x86)); -}); - -Task ("samples") - .IsDependentOn("libs") - .Does (() => -{ - NuGetRestore ("./Samples/Android/Sample.Android.sln"); - NuGetRestore ("./Samples/iOS/Sample.iOS.sln"); - NuGetRestore ("./Samples/Forms/Sample.Forms.sln"); - NuGetRestore ("./Samples/WindowsUniversal/Sample.WindowsUniversal.sln"); - - var config = "Release"; - MSBuild ("./Samples/Android/Sample.Android.sln", c => c.SetConfiguration(config).SetMSBuildPlatform(MSBuildPlatform.x86)); - MSBuild ("./Samples/iOS/Sample.iOS.sln", c => c.SetConfiguration(config).SetMSBuildPlatform(MSBuildPlatform.x86)); - - if (IsRunningOnWindows()) { - MSBuild ("./Samples/Forms/Sample.Forms.sln", c => c.SetConfiguration(config).SetMSBuildPlatform(MSBuildPlatform.x86)); - MSBuild ("./Samples/WindowsUniversal/Sample.WindowsUniversal.sln", c => c.SetConfiguration(config).SetMSBuildPlatform(MSBuildPlatform.x86)); - } -}); - -Task ("nuget") - .IsDependentOn("libs") - .Does (() => -{ - NuGetPack ("./ZXing.Net.Mobile.nuspec", new NuGetPackSettings { Version = NUGET_VERSION }); - NuGetPack ("./ZXing.Net.Mobile.Forms.nuspec", new NuGetPackSettings { Version = NUGET_VERSION }); -}); - -Task ("clean") - .Does (() => -{ - CleanDirectories ("./**/bin"); - CleanDirectories ("./**/obj"); -}); - -RunTarget (TARGET); - diff --git a/build.ps1 b/build.ps1 deleted file mode 100644 index e2b60f294..000000000 --- a/build.ps1 +++ /dev/null @@ -1,234 +0,0 @@ -########################################################################## -# This is the Cake bootstrapper script for PowerShell. -# This file was downloaded from https://github.com/cake-build/resources -# Feel free to change this file to fit your needs. -########################################################################## - -<# - -.SYNOPSIS -This is a Powershell script to bootstrap a Cake build. - -.DESCRIPTION -This Powershell script will download NuGet if missing, restore NuGet tools (including Cake) -and execute your Cake build script with the parameters you provide. - -.PARAMETER Script -The build script to execute. -.PARAMETER Target -The build script target to run. -.PARAMETER Configuration -The build configuration to use. -.PARAMETER Verbosity -Specifies the amount of information to be displayed. -.PARAMETER ShowDescription -Shows description about tasks. -.PARAMETER DryRun -Performs a dry run. -.PARAMETER Experimental -Uses the nightly builds of the Roslyn script engine. -.PARAMETER Mono -Uses the Mono Compiler rather than the Roslyn script engine. -.PARAMETER SkipToolPackageRestore -Skips restoring of packages. -.PARAMETER ScriptArgs -Remaining arguments are added here. - -.LINK -https://cakebuild.net - -#> - -[CmdletBinding()] -Param( - [string]$Script = "build.cake", - [string]$Target, - [string]$Configuration, - [ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")] - [string]$Verbosity, - [switch]$ShowDescription, - [Alias("WhatIf", "Noop")] - [switch]$DryRun, - [switch]$Experimental, - [switch]$Mono, - [switch]$SkipToolPackageRestore, - [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)] - [string[]]$ScriptArgs -) - -[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null -function MD5HashFile([string] $filePath) -{ - if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf)) - { - return $null - } - - [System.IO.Stream] $file = $null; - [System.Security.Cryptography.MD5] $md5 = $null; - try - { - $md5 = [System.Security.Cryptography.MD5]::Create() - $file = [System.IO.File]::OpenRead($filePath) - return [System.BitConverter]::ToString($md5.ComputeHash($file)) - } - finally - { - if ($file -ne $null) - { - $file.Dispose() - } - } -} - -function GetProxyEnabledWebClient -{ - $wc = New-Object System.Net.WebClient - $proxy = [System.Net.WebRequest]::GetSystemWebProxy() - $proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials - $wc.Proxy = $proxy - return $wc -} - -Write-Host "Preparing to run build script..." - -if(!$PSScriptRoot){ - $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent -} - -$TOOLS_DIR = Join-Path $PSScriptRoot "tools" -$ADDINS_DIR = Join-Path $TOOLS_DIR "Addins" -$MODULES_DIR = Join-Path $TOOLS_DIR "Modules" -$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe" -$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe" -$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config" -$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum" -$ADDINS_PACKAGES_CONFIG = Join-Path $ADDINS_DIR "packages.config" -$MODULES_PACKAGES_CONFIG = Join-Path $MODULES_DIR "packages.config" - -# Make sure tools folder exists -if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) { - Write-Verbose -Message "Creating tools directory..." - New-Item -Path $TOOLS_DIR -Type directory | out-null -} - -# Make sure that packages.config exist. -if (!(Test-Path $PACKAGES_CONFIG)) { - Write-Verbose -Message "Downloading packages.config..." - try { - $wc = GetProxyEnabledWebClient - $wc.DownloadFile("https://raw.githubusercontent.com/cake-build/resources/master/packages.config", $PACKAGES_CONFIG) } catch { - Throw "Could not download packages.config." - } -} - -# Try find NuGet.exe in path if not exists -#if (!(Test-Path $NUGET_EXE)) { -# Write-Verbose -Message "Trying to find nuget.exe in PATH..." -# $existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_ -PathType Container) } -# $NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1 -# if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) { -# Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)." -# $NUGET_EXE = $NUGET_EXE_IN_PATH.FullName -# } -#} - -# Try download NuGet.exe if not exists -if (!(Test-Path $NUGET_EXE)) { - Write-Verbose -Message "Downloading NuGet.exe..." - try { - $wc = GetProxyEnabledWebClient - $wc.DownloadFile($NUGET_URL, $NUGET_EXE) - } catch { - Throw "Could not download NuGet.exe." - } -} - -# Save nuget.exe path to environment to be available to child processed -$ENV:NUGET_EXE = $NUGET_EXE - -# Restore tools from NuGet? -if(-Not $SkipToolPackageRestore.IsPresent) { - Push-Location - Set-Location $TOOLS_DIR - - # Check for changes in packages.config and remove installed tools if true. - [string] $md5Hash = MD5HashFile($PACKAGES_CONFIG) - if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or - ($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) { - Write-Verbose -Message "Missing or changed package.config hash..." - Remove-Item * -Recurse -Exclude packages.config,nuget.exe - } - - Write-Verbose -Message "Restoring tools from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`"" - - if ($LASTEXITCODE -ne 0) { - Throw "An error occured while restoring NuGet tools." - } - else - { - $md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII" - } - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location -} - -# Restore addins from NuGet -if (Test-Path $ADDINS_PACKAGES_CONFIG) { - Push-Location - Set-Location $ADDINS_DIR - - Write-Verbose -Message "Restoring addins from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`"" - - if ($LASTEXITCODE -ne 0) { - Throw "An error occured while restoring NuGet addins." - } - - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location -} - -# Restore modules from NuGet -if (Test-Path $MODULES_PACKAGES_CONFIG) { - Push-Location - Set-Location $MODULES_DIR - - Write-Verbose -Message "Restoring modules from NuGet..." - $NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`"" - - if ($LASTEXITCODE -ne 0) { - Throw "An error occured while restoring NuGet modules." - } - - Write-Verbose -Message ($NuGetOutput | out-string) - - Pop-Location -} - -# Make sure that Cake has been installed. -if (!(Test-Path $CAKE_EXE)) { - Throw "Could not find Cake.exe at $CAKE_EXE" -} - - - -# Build Cake arguments -$cakeArguments = @("$Script"); -if ($Target) { $cakeArguments += "-target=$Target" } -if ($Configuration) { $cakeArguments += "-configuration=$Configuration" } -if ($Verbosity) { $cakeArguments += "-verbosity=$Verbosity" } -if ($ShowDescription) { $cakeArguments += "-showdescription" } -if ($DryRun) { $cakeArguments += "-dryrun" } -if ($Experimental) { $cakeArguments += "-experimental" } -if ($Mono) { $cakeArguments += "-mono" } -$cakeArguments += $ScriptArgs - -# Start Cake -Write-Host "Running build script..." -&$CAKE_EXE $cakeArguments -exit $LASTEXITCODE \ No newline at end of file diff --git a/build.sh b/build.sh deleted file mode 100644 index 5c4cbe429..000000000 --- a/build.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env bash - -########################################################################## -# This is the Cake bootstrapper script for Linux and OS X. -# This file was downloaded from https://github.com/cake-build/resources -# Feel free to change this file to fit your needs. -########################################################################## - -# Define directories. -SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -TOOLS_DIR=$SCRIPT_DIR/tools -ADDINS_DIR=$TOOLS_DIR/Addins -MODULES_DIR=$TOOLS_DIR/Modules -NUGET_EXE=$TOOLS_DIR/nuget.exe -CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe -PACKAGES_CONFIG=$TOOLS_DIR/packages.config -PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum -ADDINS_PACKAGES_CONFIG=$ADDINS_DIR/packages.config -MODULES_PACKAGES_CONFIG=$MODULES_DIR/packages.config - -# Define md5sum or md5 depending on Linux/OSX -MD5_EXE= -if [[ "$(uname -s)" == "Darwin" ]]; then - MD5_EXE="md5 -r" -else - MD5_EXE="md5sum" -fi - -# Define default arguments. -SCRIPT="build.cake" -CAKE_ARGUMENTS=() - -# Parse arguments. -for i in "$@"; do - case $1 in - -s|--script) SCRIPT="$2"; shift ;; - --) shift; CAKE_ARGUMENTS+=("$@"); break ;; - *) CAKE_ARGUMENTS+=("$1") ;; - esac - shift -done - -# Make sure the tools folder exist. -if [ ! -d "$TOOLS_DIR" ]; then - mkdir "$TOOLS_DIR" -fi - -# Make sure that packages.config exist. -if [ ! -f "$TOOLS_DIR/packages.config" ]; then - echo "Downloading packages.config..." - curl -Lsfo "$TOOLS_DIR/packages.config" https://cakebuild.net/download/bootstrapper/packages - if [ $? -ne 0 ]; then - echo "An error occured while downloading packages.config." - exit 1 - fi -fi - -# Download NuGet if it does not exist. -if [ ! -f "$NUGET_EXE" ]; then - echo "Downloading NuGet..." - curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe - if [ $? -ne 0 ]; then - echo "An error occured while downloading nuget.exe." - exit 1 - fi -fi - -# Restore tools from NuGet. -pushd "$TOOLS_DIR" >/dev/null -if [ ! -f "$PACKAGES_CONFIG_MD5" ] || [ "$( cat "$PACKAGES_CONFIG_MD5" | sed 's/\r$//' )" != "$( $MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' )" ]; then - find . -type d ! -name . | xargs rm -rf -fi - -mono "$NUGET_EXE" install -ExcludeVersion -if [ $? -ne 0 ]; then - echo "Could not restore NuGet tools." - exit 1 -fi - -$MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' >| "$PACKAGES_CONFIG_MD5" - -popd >/dev/null - -# Restore addins from NuGet. -if [ -f "$ADDINS_PACKAGES_CONFIG" ]; then - pushd "$ADDINS_DIR" >/dev/null - - mono "$NUGET_EXE" install -ExcludeVersion - if [ $? -ne 0 ]; then - echo "Could not restore NuGet addins." - exit 1 - fi - - popd >/dev/null -fi - -# Restore modules from NuGet. -if [ -f "$MODULES_PACKAGES_CONFIG" ]; then - pushd "$MODULES_DIR" >/dev/null - - mono "$NUGET_EXE" install -ExcludeVersion - if [ $? -ne 0 ]; then - echo "Could not restore NuGet modules." - exit 1 - fi - - popd >/dev/null -fi - -# Make sure that Cake has been installed. -if [ ! -f "$CAKE_EXE" ]; then - echo "Could not find Cake.exe at '$CAKE_EXE'." - exit 1 -fi - -# Start Cake -exec mono "$CAKE_EXE" $SCRIPT "${CAKE_ARGUMENTS[@]}" \ No newline at end of file From 8e404c87a4cbfe1e3f7250c5790ff969f6a1155f Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Wed, 11 Mar 2020 20:21:25 -0400 Subject: [PATCH 2/9] Remove old tests (we'll start over) --- Tests/Tests.MonoTouch/DecodingTests.cs | 110 ----------- Tests/Tests.MonoTouch/Info.plist | 26 --- Tests/Tests.MonoTouch/Main.cs | 20 -- Tests/Tests.MonoTouch/Tests.MonoTouch.csproj | 148 --------------- Tests/Tests.MonoTouch/UnitTestAppDelegate.cs | 46 ----- Tests/ZXing.Net.Mobile-Test-Script.docx | Bin 11313996 -> 0 bytes Tests/ZXing.Net.Mobile.NUnit/Images/aztec.png | Bin 394 -> 0 bytes .../ZXing.Net.Mobile.NUnit/Images/codabar.png | Bin 876 -> 0 bytes .../ZXing.Net.Mobile.NUnit/Images/code128.png | Bin 925 -> 0 bytes .../ZXing.Net.Mobile.NUnit/Images/code39.png | Bin 1018 -> 0 bytes .../ZXing.Net.Mobile.NUnit/Images/code93.png | Bin 1517 -> 0 bytes .../Images/datamatrix.png | Bin 6607 -> 0 bytes Tests/ZXing.Net.Mobile.NUnit/Images/ean13.gif | Bin 2222 -> 0 bytes Tests/ZXing.Net.Mobile.NUnit/Images/ean8.png | Bin 806 -> 0 bytes Tests/ZXing.Net.Mobile.NUnit/Images/itf.gif | Bin 2303 -> 0 bytes Tests/ZXing.Net.Mobile.NUnit/Images/itf.png | Bin 487 -> 0 bytes .../Images/l2of5small.png | Bin 3433 -> 0 bytes .../Images/l2of5verysmall.png | Bin 4189 -> 0 bytes .../ZXing.Net.Mobile.NUnit/Images/pdf417.png | Bin 8308 -> 0 bytes .../ZXing.Net.Mobile.NUnit/Images/qrcode.png | Bin 410 -> 0 bytes Tests/ZXing.Net.Mobile.NUnit/Images/upca.png | Bin 1110 -> 0 bytes Tests/ZXing.Net.Mobile.NUnit/Images/upce.png | Bin 764 -> 0 bytes .../RGBLuminanceSource.cs | 178 ------------------ Tests/ZXing.Net.Mobile.NUnit/Test.cs | 166 ---------------- .../ZXing.Net.Mobile.NUnit.csproj | 71 ------- Tests/ZXing.Net.Mobile.Test.sln | 23 --- .../Assets/AboutAssets.txt | 19 -- .../BarcodeDisplayServer.csproj | 76 -------- .../BarcodeDisplayServer.sln | 17 -- .../HttpListenerService.cs | 111 ----------- UITests/BarcodeDisplayServer/MainActivity.cs | 96 ---------- .../Properties/AndroidManifest.xml | 6 - .../Properties/AssemblyInfo.cs | 28 --- .../Resources/AboutResources.txt | 44 ----- .../Resources/layout/Main.axml | 16 -- .../Resources/mipmap-hdpi/Icon.png | Bin 2201 -> 0 bytes .../Resources/mipmap-mdpi/Icon.png | Bin 1410 -> 0 bytes .../Resources/mipmap-xhdpi/Icon.png | Bin 3237 -> 0 bytes .../Resources/mipmap-xxhdpi/Icon.png | Bin 5414 -> 0 bytes .../Resources/mipmap-xxxhdpi/Icon.png | Bin 7825 -> 0 bytes .../Resources/values/Strings.xml | 5 - .../Resources/values/styles.xml | 9 - .../FormsSample.UITests.csproj | 65 ------- .../InitializationTests.cs | 106 ----------- UITests/FormsSample.UITests/ScanningTests.cs | 35 ---- UITests/FormsSample.UITests/TestConsts.cs | 10 - .../InitializationTests.cs | 101 ---------- .../Sample.Android.UITests.csproj | 59 ------ .../Sample.Android.UITests/ScanningTests.cs | 32 ---- UITests/Sample.Android.UITests/TestConsts.cs | 7 - .../Sample.iOS.UITests/InitializationTests.cs | 101 ---------- .../Sample.iOS.UITests.csproj | 59 ------ UITests/Sample.iOS.UITests/ScanningTests.cs | 30 --- UITests/Sample.iOS.UITests/TestConsts.cs | 7 - UITests/UITests.Shared/AppInitializer.cs | 37 ---- UITests/UITests.Shared/ScanningTests.cs | 36 ---- .../UITests.Shared/UITests.Shared.projitems | 16 -- UITests/UITests.Shared/UITests.Shared.shproj | 11 -- UITests/UITests.Shared/Util.cs | 159 ---------------- UITests/build.cake | 127 ------------- 60 files changed, 2213 deletions(-) delete mode 100644 Tests/Tests.MonoTouch/DecodingTests.cs delete mode 100644 Tests/Tests.MonoTouch/Info.plist delete mode 100644 Tests/Tests.MonoTouch/Main.cs delete mode 100644 Tests/Tests.MonoTouch/Tests.MonoTouch.csproj delete mode 100644 Tests/Tests.MonoTouch/UnitTestAppDelegate.cs delete mode 100644 Tests/ZXing.Net.Mobile-Test-Script.docx delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/aztec.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/codabar.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/code128.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/code39.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/code93.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/datamatrix.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/ean13.gif delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/ean8.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/itf.gif delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/itf.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/l2of5small.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/l2of5verysmall.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/pdf417.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/qrcode.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/upca.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Images/upce.png delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/RGBLuminanceSource.cs delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/Test.cs delete mode 100644 Tests/ZXing.Net.Mobile.NUnit/ZXing.Net.Mobile.NUnit.csproj delete mode 100644 Tests/ZXing.Net.Mobile.Test.sln delete mode 100644 UITests/BarcodeDisplayServer/Assets/AboutAssets.txt delete mode 100644 UITests/BarcodeDisplayServer/BarcodeDisplayServer.csproj delete mode 100644 UITests/BarcodeDisplayServer/BarcodeDisplayServer.sln delete mode 100644 UITests/BarcodeDisplayServer/HttpListenerService.cs delete mode 100644 UITests/BarcodeDisplayServer/MainActivity.cs delete mode 100644 UITests/BarcodeDisplayServer/Properties/AndroidManifest.xml delete mode 100644 UITests/BarcodeDisplayServer/Properties/AssemblyInfo.cs delete mode 100644 UITests/BarcodeDisplayServer/Resources/AboutResources.txt delete mode 100644 UITests/BarcodeDisplayServer/Resources/layout/Main.axml delete mode 100644 UITests/BarcodeDisplayServer/Resources/mipmap-hdpi/Icon.png delete mode 100644 UITests/BarcodeDisplayServer/Resources/mipmap-mdpi/Icon.png delete mode 100644 UITests/BarcodeDisplayServer/Resources/mipmap-xhdpi/Icon.png delete mode 100644 UITests/BarcodeDisplayServer/Resources/mipmap-xxhdpi/Icon.png delete mode 100644 UITests/BarcodeDisplayServer/Resources/mipmap-xxxhdpi/Icon.png delete mode 100644 UITests/BarcodeDisplayServer/Resources/values/Strings.xml delete mode 100644 UITests/BarcodeDisplayServer/Resources/values/styles.xml delete mode 100644 UITests/FormsSample.UITests/FormsSample.UITests.csproj delete mode 100644 UITests/FormsSample.UITests/InitializationTests.cs delete mode 100644 UITests/FormsSample.UITests/ScanningTests.cs delete mode 100644 UITests/FormsSample.UITests/TestConsts.cs delete mode 100644 UITests/Sample.Android.UITests/InitializationTests.cs delete mode 100644 UITests/Sample.Android.UITests/Sample.Android.UITests.csproj delete mode 100644 UITests/Sample.Android.UITests/ScanningTests.cs delete mode 100644 UITests/Sample.Android.UITests/TestConsts.cs delete mode 100644 UITests/Sample.iOS.UITests/InitializationTests.cs delete mode 100644 UITests/Sample.iOS.UITests/Sample.iOS.UITests.csproj delete mode 100644 UITests/Sample.iOS.UITests/ScanningTests.cs delete mode 100644 UITests/Sample.iOS.UITests/TestConsts.cs delete mode 100644 UITests/UITests.Shared/AppInitializer.cs delete mode 100644 UITests/UITests.Shared/ScanningTests.cs delete mode 100644 UITests/UITests.Shared/UITests.Shared.projitems delete mode 100644 UITests/UITests.Shared/UITests.Shared.shproj delete mode 100644 UITests/UITests.Shared/Util.cs delete mode 100644 UITests/build.cake diff --git a/Tests/Tests.MonoTouch/DecodingTests.cs b/Tests/Tests.MonoTouch/DecodingTests.cs deleted file mode 100644 index 0ac4e902e..000000000 --- a/Tests/Tests.MonoTouch/DecodingTests.cs +++ /dev/null @@ -1,110 +0,0 @@ -using System; -using NUnit; -using NUnit.Framework; -using ZXing; -using ZXing.Common; -using System.Drawing; -using MonoTouch.UIKit; - -namespace Tests.MonoTouch -{ - public class DecodingTests - { - - [Test] - public void Decode_QRCode() - { - AssertDecode ("qrcode.png", "http://google.com"); - } - - [Test] - public void Decode_Aztec() - { - AssertDecode ("aztec.png", "This is Aztec Code"); - } - - [Test] - public void Decode_Codabar() - { - AssertDecode ("codabar.png", "1234567"); - } - - [Test] - public void Decode_Code128() - { - AssertDecode ("code128.png", "1234567"); - } - - [Test] - public void Decode_Code39() - { - AssertDecode ("code39.png", "1234567"); - } - - [Test] - public void Decode_Code93() - { - AssertDecode ("code93.png", "THIS IS CODE93"); - } - - [Test] - public void Decode_Datamatrix() - { - AssertDecode ("datamatrix.png", "DATAMATRIX"); - } - - [Test] - public void Decode_Ean13() - { - AssertDecode ("ean13.gif", "1234567890128"); - } - - [Test] - public void Decode_Ean8() - { - AssertDecode ("ean8.png", "12345670"); - } - - [Test] - public void Decode_Itf() - { - AssertDecode ("itf.png", "ITF"); - } - - [Test] - public void Decode_PDF417() - { - AssertDecode ("pdf417.png", "pdf417"); - } - - [Test] - public void Decode_UpcA() - { - AssertDecode ("upca.png", "123456789012"); - } - - [Test] - public void Decode_UpcE() - { - AssertDecode ("upce.png", "01234565"); - } - - void AssertDecode(string img, string expectedValue) - { - var uimg = UIImage.FromFile("Images/" + img); - - - var barcodeReader = new BarcodeReader(null, (brimg) => { - - return new RGBLuminanceSource(uimg); - - }, null, null); //(p, w, h, f) => new RGBLuminanceSource(p, w, h, RGBLuminanceSource.BitmapFormat.Unknown)); - - var r = barcodeReader.Decode(uimg); - Assert.IsNotNull(r, "No Result Found"); - Assert.IsTrue(r.Text.Equals(expectedValue, StringComparison.InvariantCultureIgnoreCase), - "Actual: " + r.Text + " Expected: " + expectedValue); - } - } -} - diff --git a/Tests/Tests.MonoTouch/Info.plist b/Tests/Tests.MonoTouch/Info.plist deleted file mode 100644 index 8653860cf..000000000 --- a/Tests/Tests.MonoTouch/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - UIDeviceFamily - - 1 - 2 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - MinimumOSVersion - 3.2 - - diff --git a/Tests/Tests.MonoTouch/Main.cs b/Tests/Tests.MonoTouch/Main.cs deleted file mode 100644 index 244b97937..000000000 --- a/Tests/Tests.MonoTouch/Main.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -using MonoTouch.Foundation; -using MonoTouch.UIKit; - -namespace Tests.MonoTouch -{ - public class Application - { - // This is the main entry point of the application. - static void Main (string[] args) - { - // if you want to use a different Application Delegate class from "UnitTestAppDelegate" - // you can specify it here. - UIApplication.Main (args, null, "UnitTestAppDelegate"); - } - } -} diff --git a/Tests/Tests.MonoTouch/Tests.MonoTouch.csproj b/Tests/Tests.MonoTouch/Tests.MonoTouch.csproj deleted file mode 100644 index ae6c1c79f..000000000 --- a/Tests/Tests.MonoTouch/Tests.MonoTouch.csproj +++ /dev/null @@ -1,148 +0,0 @@ - - - - Debug - iPhoneSimulator - 10.0.0 - 2.0 - {D1D95851-7322-469C-AD0E-9EAB545302AD} - {6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Exe - Tests.MonoTouch - Resources - TestsMonoTouch - - - true - full - false - bin\iPhoneSimulator\Debug - DEBUG; - prompt - 4 - true - None - false - - - none - true - bin\iPhoneSimulator\Release - prompt - 4 - false - None - - - true - full - false - bin\iPhone\Debug - DEBUG; - prompt - 4 - iPhone Developer - true - false - - - none - true - bin\iPhone\Release - prompt - 4 - false - iPhone Developer - - - none - true - bin\iPhone\Ad-Hoc - prompt - 4 - false - iPhone Distribution - true - Automatic:AdHoc - - - none - true - bin\iPhone\AppStore - prompt - 4 - false - Automatic:AppStore - iPhone Distribution - - - - - - - - - - - - - - - - - - - - - - - - {BD0FA561-182D-4A89-BAA7-228693B07862} - zxing.monotouch - - - - - Images\aztec.png - - - Images\codabar.png - - - Images\code128.png - - - Images\code39.png - - - Images\code93.png - - - Images\datamatrix.png - - - Images\ean8.png - - - Images\itf.png - - - Images\pdf417.png - - - Images\qrcode.png - - - Images\upca.png - - - Images\upce.png - - - Images\ean13.gif - - - Images\itf.gif - - - \ No newline at end of file diff --git a/Tests/Tests.MonoTouch/UnitTestAppDelegate.cs b/Tests/Tests.MonoTouch/UnitTestAppDelegate.cs deleted file mode 100644 index fc4d1c255..000000000 --- a/Tests/Tests.MonoTouch/UnitTestAppDelegate.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -using MonoTouch.Foundation; -using MonoTouch.UIKit; -using MonoTouch.NUnit.UI; - -namespace Tests.MonoTouch -{ - // The UIApplicationDelegate for the application. This class is responsible for launching the - // User Interface of the application, as well as listening (and optionally responding) to - // application events from iOS. - [Register ("UnitTestAppDelegate")] - public partial class UnitTestAppDelegate : UIApplicationDelegate - { - // class-level declarations - UIWindow window; - TouchRunner runner; - - // - // This method is invoked when the application has loaded and is ready to run. In this - // method you should instantiate the window, load the UI into it and then make the window - // visible. - // - // You have 17 seconds to return from this method, or iOS will terminate your application. - // - public override bool FinishedLaunching (UIApplication app, NSDictionary options) - { - // create a new window instance based on the screen size - window = new UIWindow (UIScreen.MainScreen.Bounds); - runner = new TouchRunner (window); - - // register every tests included in the main application/assembly - runner.Add (System.Reflection.Assembly.GetExecutingAssembly ()); - - window.RootViewController = new UINavigationController (runner.GetViewController ()); - - // make the window visible - window.MakeKeyAndVisible (); - - return true; - } - } -} - diff --git a/Tests/ZXing.Net.Mobile-Test-Script.docx b/Tests/ZXing.Net.Mobile-Test-Script.docx deleted file mode 100644 index 370e064d8ce456f2701a9225f549a353ad024683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11313996 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

    npdr-{8aCapYqVWYJKqA4by(8-kx5* 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Ⓢn4?|8ES`NxZ&RpeKlz4f!FCc4j+L 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

    $(VZr%M?*77lhs)Ci#f~NR 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%0DbVSx?Q<9E_CGOK$%o=Ap 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

    NaP;t#%Yi>1C0#1 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 z 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

    cH{YYzbLRKR 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:_UUBaqq9fL zvGS|D>hqKCB(q0Xz0R-pcJkzCu9vLt=~a2<+u@DXbI09e<}_x%()vmL%FmpxIC@9V zoz#4kC%ar<5Bak)_jJ--e(KJbqy4%sZo65A*%>>16Kc(O&lHWZt8*N6WGDtGw#-lkOz5M_0Yh zul9EG15ucvq#IZ@~gb+^ONo*vqx9G&ad`%^5kf) zm#psTRe9yx;f>XE$K7P+G-kij`bquD&z!C}dPmQl)O?gDyIfxn`Lidu#= z{k+UOqgoI1{q*T%?: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 BP}Beb diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/aztec.png b/Tests/ZXing.Net.Mobile.NUnit/Images/aztec.png deleted file mode 100644 index 7369038a1b202942cfcee02e94ea0f80fb4e2bcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^F(AwcBp6OldH)qiF(rAsyD%``?Gj!B4nJ za0`Jja;9%bA_`d%1y#?zRsJ$;X(<}6Gh>A=%DU(v> zZ*7ZEW^IYtNWB$-jH9WdK}VfzbHA?M`mH|rJKJ}_Ua%bqN05fuh>u4;*EL`h0wNvc(HQ7VvP zFfuSS(ls>DH8Kk^G_o?VurjjLHZZg@FfdO`)j-jZo1c=IR*74KoAuo(Kn=1W8-nxG uO3D+9QW@L>d=%U>@{3D~lZ!G7N)#;g%nh0CGfaRA89ZJ6T-G@yGywn`tcOMb diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/codabar.png b/Tests/ZXing.Net.Mobile.NUnit/Images/codabar.png deleted file mode 100644 index 550dd77318b158c262dde5a4b60eab9b75be2263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmV-y1C#uTP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGfCIA2nCIR*w$glta0@X=GK~#8N?VQ_{gdhw+DbIo| z$6jn@JK0qp5+GrmGsw=z-H$yU!6O?ARNnstApB2wqDm>(ps^V zG%2&aZ`)bkLVd`W&(l6+JLC?qh{oyxO=y}E2;GcEhM699qywUFg|VBakHQOO<-(^+ zcVs$kA|x5H5h2BhxD7C?@Ux<(S{`UZ(@3$%g|ce&GevwlK3yqIkf#^5n>%S$r_cjU zXqKMpjzUq9>s3q1)5+6qyGpf~YBAN~V_x5LM-c2#E;Ewi|dMR)ARnW(Alp_|)s#eAk1oOPQ9Dc$0Wje2mT7d>!;h z4ao1jviV32sk4KLrk22qnGUkI2te~KTrWC96PhCljFg3LLUSa6k+Np#=Fhgcb-$i` zUqe9W#L2Tub243VT#zppJ)K*&pV;XV8c!A7PRY6JNQ6Sx6q<3E3CB6gG_a#79G-n* zhl+e`6f_I8f_D^p$rR%h;vXXElZ6Lmd(occvh6}Q3m6)iR*~0L=;qPfXj%IU$bt1+ z$02x}W_(m@JenSreFJU@eP5R)8HJ?pUd|TnN6lKh$vA|wXZmqJon|xtDx2W1^K1l7 zVJPyUzc8Y$;LTFZ88h9~P46RwW6D2qW}N4=YAS;vNwl-D0_Q}S&)ZF%<_XO9unFA_ zr<}kQ%p}d3F#m<7^yx_>)#+RMAOb#)YCw7B-uYQvv_3!g9G9K000000001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGfCIA2nCIR*w$glta0|rS%K~#8N?VDS2!ypVrlihhi zUQYIst#l`@ZC)27lYCG-(>eJ{u`J^gaRq`tw{3e|f1c0hesQoEtPc1(9}g6T8UQ1NiJH6R-%=8 zO_D2S6xm`?K#5SVq+Utsw=Swv&Y+x;c5={4O{8cgT8UQXG9~p&XE^BINJFZblQTtk z^pt&YHgDOyJqHE{UCO=~T8UOx$(G|+x6&94Fopc=3tqoH} zr;6SV5q2Eeab(AlDLPYhrs!$X(3yejxuvTk*o_UV9acN_eeK>0nZ50;<=qcvx%*ud77me%YY1_!U$C z>L8$hjxzT1>SeqLs%-;nCH`KQC22v5wA0Tk%0>&?d&nSuTKXC9()H-0lu;e-YNTM> zQUnT0(TDQ&yfJcZ$V~~!z3=x$<(U**`6__RPt4`cW#Dvq;{B@_2KjcbeZ% z#$Tl1M6Cj*D5sIU1*K;2gwGwdA{7#q0?NIsc0WfakDlHzz)h?biMyOuR%s_G>S3)4 zkteItI4>xtp`4W6?tILwsJ!zXCp{aK!$AK6QCvlky*RFx00000NkvXXu0mjf_`9W# diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/code39.png b/Tests/ZXing.Net.Mobile.NUnit/Images/code39.png deleted file mode 100644 index 9b6e667293a4507e2994a1c60faed9c11f80cb7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1018 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 HHt+dg4zZ=j diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/ean13.gif b/Tests/ZXing.Net.Mobile.NUnit/Images/ean13.gif deleted file mode 100644 index 956202123e6a51a0d1002d8bdbb084e1cf83eabc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2222 zcmb_bi9c2Q7T<|RG=Yu*o05f#q8WhjagA=~g=I()9-=$dlPWC~j{L^t)W zDKZmENjp@MCsRtf=92NH-&_0q4R3uu=d;f`Ypw74e!puUGq&k|eP@5{7ii6iy(T1r$jFCrO;7a1zm^pqCkOV;y1fuo9TF6L}ASr@Gv|L~TMT#USil7jv z2U5^WAd)~7fj}Pk0W@J6>;U~h0u%yk00Yv%5?X-=ECy_V1}sE7N0%XophyzYMuI+A z3mHX`6arsCF0gevN+9?BxPheYNA4A4`XNS=hL4li^b(fsm zuLw&qFPAL5I~vW{<(OE~>uj1NB7eF#Hnresx`0|hRA=hMlZf4Ta)!O1>xrxK$4vY7 zS1ESoYuZkEd!!bb#cQ))&ip5B@>wDC50=0W)gQZ}^|baRdEUQy`cM1j$S9T9O12s2 z19f${T6-LRUEE7U{;fK=S}H&i?cs-)1G5Qcwu#jsUy1&?MA!)0^RbiDi*FYVM64_*?biJ#et+t+Ay8RFKXA{($OD-g` z)n%o)83eO#==;>Nu5~>Ra>^wd1U<3>EEq(g;auFU_)wKD z_nec$>ytjw0kIypEc%r_d_Ed`-6~e*?iadlitLXT8dAe{aZ(&^j%7t1NlX+q1VX_U9B3`JDUn z0fJR;{%U`pY*6t~AY@v(9huZuG)nl3%QcMtteV>#7(vOkDg5Z5U8QvDa(S2eN5&NJyV|DKD`zCGms{PRdt<8lA80IXC@!srZPcjBY>Q z=Fr-);QZ&DLH~pey_Y+#&;IsKOSWbCgLT#+n@6^zCH13mr{-#2CgW-igT)#i2EEdc zyYJ0Zd}24w*3Kt{%-vrcX`E|$-yF1{w4r+N^8*Ex{<%wU{@Y@&na0M~KBKU!GPPE2 zJtivN3ccDx?nWs_enDu*>b8!tW}{05DJIL48ehM&SE|b+S64J6BG>trTpz6R)yM3n z1g|a#ScMHwQ_CW&>7oB@3t5S6Gn%R7n^$`%$S-dyAaFC$G&@RiPvV%MmWN1~9aH>M zW1H?kj7i8?_!XD^vJAx8A?m%rRkJBH8c#VCVs52TU}da=Dg;G?niga?W-jq6OF3E#s|}4U zTV04%cGS+kCN!p~#t=MdpcyjwNYR#mpIPL9YpBwT4{H@C6U-wIr{$URyKCy~`Xyua z((jybmbk5QtATb^db3Qd#JhdHj}P``o+xlpXg0G7i{?Z+4NV#uOtE$SME35VxhPoTs`zD=931OEf$>K$nS diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/ean8.png b/Tests/ZXing.Net.Mobile.NUnit/Images/ean8.png deleted file mode 100644 index 6342334a232e4ab7e36176837481fedf890da2f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmeAS@N?(olHy`uVBq!ia0vp^;Xv%o!2~3`_VwHbQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`6_P!Id>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!u! zz$3Dlfq@&SmRpVSo6Ly~3=B;Do-U3d6>)E)1N&MPc&^;8ROo*kyXVxs7FW%sQ^cm$ z?v|eX@$pd)&9??~rRJYgY&mKFtg?^orFqoR$v;j%f9omboA&a-%Qr5+CjPssb?=VJ z+{0$+8+*I%`AFR;F7`l`YBilel}%1L%%Ux54j zK;tSFB|%&*02=2Z4m9BS9cBA7t@F~dg?dBEQFeMei@j*mQ5I~4Aler)1?@0Df| zwZI@oF#fjDT5IL~>wi{1D*9-!&^hAL6pMv>J(80indsgQpE>Ey#igfwV)z>u7f#R6 z{5*$yi&xxZ4s~|v_De4lo!PhyrM?6j2qqnGf6mnFpwWK#@!MTNzy}`IgHhf2*W9iiT%utux^eyKN!crJ-S0i+mmIQo zrC=sQ>5mVNA}*3kj)uH#nP7g)-SJAerR`q<6|Rh}4@D=hvHck<;57D4r#CAX zcNi}ZJox&3?VO+UV=NYZ**QJdY&b~Yu4W9ds g`}5YXXZpvsOxFAU!i`M8bj!ft>FVdQ&MBb@0QIh9X#fBK diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/itf.gif b/Tests/ZXing.Net.Mobile.NUnit/Images/itf.gif deleted file mode 100644 index a1a620289a4c0bf25394efd1131ad15db01e6b57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2303 zcmb_di#t?%7ydQK?q;`HHEE~ziKEgaHFL`69nB2Kz)!Wd5O zM0H&2&?rM&PZx%!#3@2ow4!?&Jio;_>UTJL(_cWsZ&&W;wAeu>BpO(G@| z<)1|PBN4JhCR$orF#L`YmOtPL-yq<(|6dRYkqA);(aa{u2m%o#A}B=Ah`>ydBoIj= zl0qbnNX+z71fobpQHY`ug_%*BKs1SH3ehy88Kwvm2$Kj?2-85D0cM~93x=T^GkcgI z34$UBnjkQ<7BZ3~NQxk7g2W69C{iRrQ3OR36lO?4FHI6OMbI=sW8es*1SSbg5tt@0 zYz5W;2Bd){(1IE)25f)^EEvX&ASQ>PNRlQ=%;qu0s4UiCFgsn+zbrWC7l>)I~ z4tBoewBWXN8jHK7E%t$bd#0}C@qSH@0OxdlOVYJre^E!~YR{VooNGkw+3MR*b~`^D zzL#$nlO34q5#X9{AD^KZr*7<8%nfohG&x)1an3g2Qy}%Fs3*@W#Hx!OUFM#rSAP74 zm3pOXX<%C1sjzb)eZ>JyZ{4pS9TzejX{+P<|23GAbVM8Cbe^$8n*VOgH(u zVa(ISP7O)UiNWd7yzrR^!MR8EwsOuNtE?#zdQQ6+OOw`+#(ina??`sx89e&qn);V97Bifo^VtKz!)IQEQ2vKW^U{}oez$se zWn=_348^+Hae|I4DjUto-p`|qs9m2dgYx`uz6na^i}o(h9zN}?R}fKU%!%LXSl^SM zk<1RsOy24r-`m^^x1N?)2qv^DD(}xOdtbh7WRrhQzDmy6)dP;tDm{u> zOJ3~}S9y&I+vC=gO`bcf%rB2^T*7U)(X_A*+efe*xLuK*T8E0<8?Ke9^i>4no zRsA|^)M|BUI6u3p4SV=j{n=RCVcMp=&m~OMdz2oJnHQY?{!ZW44NJ>qcF#UZmTcCE zYA3k9Q4Qq(fJ zce9@Luf4~8_q~R0vuuivw&kkw+Px+ZA2_}Eqsfnt!an2vi3C&ek%_^mb!G=UeJ-ee zdBGR=#|$Jq*Q`Ie-`HFBQed51f1361!>@O;W_ZKtJF6N~ zkDmF^_{O(zu>Ps&$zbEF>cSu5E1HkxL|(0nx>^6B_VdlgkHI2A(+gVtqt1gNgWZjv zir?L6dVC-_@9Tuqs2Tt5y+`vJ##;WP7XNk9b_M?a<;gzlO)77lK&=ATm6Pu6tR6qtIrpW#8IbKVAMRK=8ifebr&X2B1K~}{r;^kf4W`b=#6fQ2)P?Jct1Drnx95b z?3^vNS@{$93$&CPT(rvwk@hNo%}oo^;w|_hg&QM3U3BY8O*A-dci_0amaHqjdpyf~ zTY<8RmAmUyQhtG=lAYS2q$B4SozJC9tana5%Fuo0oW0!8T_Rc}xJ)b{F%<`E@hm%dJ)iQ0=@6-o*$wEiDy Cg-^Ty diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/itf.png b/Tests/ZXing.Net.Mobile.NUnit/Images/itf.png deleted file mode 100644 index 264fed601ba13371c8857ca61a9fa214032b6935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 487 zcmeAS@N?(olHy`uVBq!ia0y~yVEM$rz!<;?6kw3e%)JGqn3BBRT^Jbeb_p*5@;D1T zB8wRqxP?HN@zUM8KS1>io-U3d6}R4=yU5$1z~gW*@7h(_R$mcqHoF-OcZ>~#GK&N! zsd$1=-`jOjedRdP`(kYX@0Ff`ING|)9N3o$aVGBLC=HP<#U zv@$TT&Aq<`MMG|WN@iLmZVf&L=^Q`}vLG9R^V3So6N^$A+yi_R+%xivONx_=G7Cx+ YEcDC`ne8)7fC?ErUHx3vIVCg!0LMG)2><{9 diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/l2of5small.png b/Tests/ZXing.Net.Mobile.NUnit/Images/l2of5small.png deleted file mode 100644 index 18df1e407d7540563f5e69f8bdfdd56345759ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3433 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 JwW?*<{{Z4iCGr3O diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/pdf417.png b/Tests/ZXing.Net.Mobile.NUnit/Images/pdf417.png deleted file mode 100644 index a97b772f4db9fd5c24097d4eb76f9cb6f7f3f2ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8308 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 U2sufB2_J=>P;PcrHmBnL3$y(j1^@s6 diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/qrcode.png b/Tests/ZXing.Net.Mobile.NUnit/Images/qrcode.png deleted file mode 100644 index 2fab2b02408cccf7d7e0fbf298a14ce3f5b9fbcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^DIm-UBp4!QuJ{S0n3BBRT^Jbeb_p*5@;D1TB8wRq zxP?HN@zUM8KS06Fo-U3d7N_S z^@i&?9 znO2EgLruR=3{ZnC$cEtjw370~qErU=03QYSjQrw~;^d;tf)WJ_J##~5`wSDHLIzJ) KKbLh*2~7YW#)|C# diff --git a/Tests/ZXing.Net.Mobile.NUnit/Images/upca.png b/Tests/ZXing.Net.Mobile.NUnit/Images/upca.png deleted file mode 100644 index 094149a4de7ae363bbc4f74de667b0e67e316fdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 zcmV-c1gZOpP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGfCIA2nCIR*w$glta1HVZ`K~#8N?OWNE!ypWFx=TSR zC%vSV?Idd(Aw~y2*m(D2#~*oqSO_r|gOHrt`~9B!*X?$j17)P(Iz4cSERjvt5E7kRWc1la*0_4e2C{=W zN+Hk6mKE1gZ^zIj#vN<{jj=(xM=>_YgFi-HCO~F9n;Z~$Qi!BVo)tdf8BDSk$fP{o zw)NrSGY1py%P84PK@eFY3vA4c3^Ov!$k;qD^Rq36O%vXXXBp2*nu+;Y=4UhZOheI> zHyF>d!kFZ&yCp>CXPKXE83WeASO@Df0#CO*-STwH(=8@F@kGnhZTx&9Wm8sbSgomF zm*STt?kf{lTqsZ7QP4GFogyyHwDv)t^~o0poTD{X7+GNq%g`O1Vw}h?Irt@qUpI^m zOl5>Tne3FK4%*Ze!!;B0w zGUQp^d%9^9<_!+je6~}OA9;GP%KwqEPGwem!sot``31YXhQgN|e`v;4Cxt(p5`Fe6 z@QEyu6$Ey8_9~qIfnFke)k`L_S0nrNyibqU@ljrndKhTE79Da$Rda__a+>bXFBw;r zwx(T+V9+vl?b{xJG1_QG&~by=r(m&|tUfDEhml>ztESC;%k82>G(>yW5t@Dja|KT| zEvimn+rS4CnhG$sJx2>w)SG<@mVn8$cE3MgXMENGlcD5nTtpt=v-9JC+$rx!JsCBa z5vqmeg{j$KKWI1&OTeV^?C``g|FX);m^kw5alcpMsE)kqc?!pjc&s%f^I4DVI*PG1 zOlAz0Rm~5Ph4okbD6F9BJ3B9`!ZXPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGfCIA2nCIR*w$glta0%b`=K~!i%?ONNBgD?y<-BA$b z&9Bq5+W86VB77j0&BC?0iTjlVB_<*WeH8@P_SmLW(W7Xq7>DSh^gvBH zMi*}ahjGQYf_i0AKjVsV1sQ_9Me6HVg;|ADqbx}h8-G^eo!Nrfq6`TOln-kxD5{9+1;|c%?I)PiX_(nt1zoDt1wUaF)MIx z!MO$J7Ceb?Zqa^aGNzmU#OIc$fAtl~EzErkLaDBN8}qT6Z&^rNy|dLVYW_aRn?CUS z4BfKhW2M@b*t9L%prT&u?0{GR;O0Tng!Kz_IZ!$`udm31fa(#C>y&_sd~_5@I=G7;0Rg0$;ZPvr*0soDm_IvJYR4Q!R+)i^8-yDVTU|G2Qm z04KSK7Q}%sjj5$$)*3+0VGtXI-X zNCgh8m*}G-OcfwE+3JkeYPL~X)lI6Q6x5KURs)_YjG7B zxg-gY;eRC6TBf?HX6Q-MQamdyBz_;y;l+(^fy(#jX+8`4#B^0000> 2); - } - } - } - } - public RGBLuminanceSource(byte[] d, int W, int H, bool Is8Bit) - : base(W, H) - { - __width = W; - __height = H; - luminances = new byte[W * H]; - Buffer.BlockCopy(d, 0, luminances, 0, W * H); - } - - public RGBLuminanceSource(byte[] d, int W, int H, bool Is8Bit, Rectangle Region) - : base(W, H) - { - __width = (int)Region.Width; - __height = (int)Region.Height; - __Region = Region; - __isRegionSelect = true; - //luminances = Red.Imaging.Filters.CropArea(d, W, H, Region); - } - - #if !WINDOWS_PHONE - public RGBLuminanceSource(Bitmap d, int W, int H) - #else - public RGBLuminanceSource(WriteableBitmap d, int W, int H) - #endif - : base(W, H) - { - int width = __width = W; - int height = __height = H; - // In order to measure pure decoding speed, we convert the entire image to a greyscale array - // up front, which is the same as the Y channel of the YUVLuminanceSource in the real app. - luminances = new byte[width * height]; - //if (format == PixelFormat.Format8bppIndexed) - { - Color c; - for (int y = 0; y < height; y++) - { - int offset = y * width; - for (int x = 0; x < width; x++) - { - c = d.GetPixel(x, y); - luminances[offset + x] = (byte)(((int)c.R) << 16 | ((int)c.G) << 8 | ((int)c.B)); - } - } - } - } - override public byte[] getRow(int y, byte[] row) - { - if (isRotated == false) - { - int width = Width; - if (row == null || row.Length < width) - { - row = new byte[width]; - } - for (int i = 0; i < width; i++) - row[i] = luminances[y * width + i]; - //System.arraycopy(luminances, y * width, row, 0, width); - return row; - } - else - { - int width = __width; - int height = __height; - if (row == null || row.Length < height) - { - row = new byte[height]; - } - for (int i = 0; i < height; i++) - row[i] = luminances[i * width + y]; - //System.arraycopy(luminances, y * width, row, 0, width); - return row; - } - } - public override byte[] Matrix - { - get { return luminances; } - } - - public override LuminanceSource crop(int left, int top, int width, int height) - { - return base.crop(left, top, width, height); - } - public override LuminanceSource rotateCounterClockwise() - { - isRotated = true; - return this; - } - public bool RotateSupported - { - get - { - return true; - } - - } - - - - - -} diff --git a/Tests/ZXing.Net.Mobile.NUnit/Test.cs b/Tests/ZXing.Net.Mobile.NUnit/Test.cs deleted file mode 100644 index cf9d46f32..000000000 --- a/Tests/ZXing.Net.Mobile.NUnit/Test.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System; -using System.Collections.Generic; -using NUnit.Framework; -using ZXing; - -namespace ZxingSharp.Mobile.Test -{ - [TestFixture] - public class DecodingTests - { - [Test] - public void DataMatrix() - { - var result = Decode("datamatrix.png", BarcodeFormat.DATA_MATRIX, new KeyValuePair[] { new KeyValuePair(DecodeHintType.PURE_BARCODE, "TRUE") }); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("test", StringComparison.InvariantCultureIgnoreCase), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void QrCode() - { - var result = Decode("qrcode.png", BarcodeFormat.QR_CODE, new KeyValuePair[] { new KeyValuePair(DecodeHintType.PURE_BARCODE, "TRUE") }); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("http://google.com", StringComparison.InvariantCultureIgnoreCase), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void Ean8() - { - var result = Decode("ean8.png", BarcodeFormat.EAN_8); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("12345670"), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void Ean13() - { - var result = Decode("ean13.gif", BarcodeFormat.EAN_13); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("1234567890128"), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void Code128() - { - var result = Decode("code128.png", BarcodeFormat.CODE_128); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("1234567"), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void Code39() - { - var result = Decode("code39.png", BarcodeFormat.CODE_39); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("1234567"), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void ITF() - { - var result = Decode("itf.png", BarcodeFormat.ITF); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("1234567890123"), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void Pdf417() - { - var result = Decode("pdf417.png", BarcodeFormat.PDF_417); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("PDF417", StringComparison.InvariantCultureIgnoreCase), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void UpcA() - { - var result = Decode("upca.png", BarcodeFormat.UPC_A); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("123456789012"), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void UpcE() - { - var result = Decode("upce.png", BarcodeFormat.UPC_E); - - Assert.IsNotNull(result, "NULL Result"); - Assert.IsTrue(result.Text.Equals("01234565"), "Result Text Incorrect: " + result.Text); - } - - [Test] - public void L2Of5Small() - { - var result = Decode("l2of5small.png"); - - Assert.IsNotNull (result, "NULL Result"); - } - - [Test] - public void L2Of5VerySmall() - { - var result = Decode("l2of5verysmall.png"); - - Assert.IsNotNull (result, "NULL Result"); - } - - public MultiFormatReader GetReader(BarcodeFormat? format, KeyValuePair[] additionalHints) - { - - var reader = new MultiFormatReader(); - - var hints = new Dictionary(); - - if (format.HasValue) - hints.Add(DecodeHintType.POSSIBLE_FORMATS, new List() { format.Value } ); - - - if (additionalHints != null) - foreach (var ah in additionalHints) - hints.Add(ah.Key, ah.Value); - - - reader.Hints = hints; - - return reader; - } - - public BinaryBitmap GetImage(string file) - { - var fullName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images", file); - - //Try to find it from the source code folder - if (!System.IO.File.Exists(fullName)) - fullName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", "..", "Images", file); - - var bmp = new System.Drawing.Bitmap(fullName); - - var bin = new ZXing.Common.HybridBinarizer(new RGBLuminanceSource(bmp, bmp.Width, bmp.Height)); - - var i = new BinaryBitmap(bin); - - return i; - } - - Result Decode(string file, BarcodeFormat? format = null, KeyValuePair[] additionalHints = null) - { - var r = GetReader(format, additionalHints); - - var i = GetImage(file); - - var result = r.decode(i); // decode(i); - - return result; - } - } -} diff --git a/Tests/ZXing.Net.Mobile.NUnit/ZXing.Net.Mobile.NUnit.csproj b/Tests/ZXing.Net.Mobile.NUnit/ZXing.Net.Mobile.NUnit.csproj deleted file mode 100644 index 4344fbaea..000000000 --- a/Tests/ZXing.Net.Mobile.NUnit/ZXing.Net.Mobile.NUnit.csproj +++ /dev/null @@ -1,71 +0,0 @@ - - - - Debug - AnyCPU - 12.0.0 - 2.0 - {638781A7-5053-4915-AAEB-0A1FF148180E} - Library - ZXing.Net.Mobile.NUnit - ZXing.Net.Mobile.NUnit - v4.5 - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - - - full - true - bin\Release - prompt - 4 - false - - - - - - - - - - - - - - {24074395-0196-4204-B516-CB6DBA2FC4B9} - zxing.vs2012 - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Tests/ZXing.Net.Mobile.Test.sln b/Tests/ZXing.Net.Mobile.Test.sln deleted file mode 100644 index 6d543441c..000000000 --- a/Tests/ZXing.Net.Mobile.Test.sln +++ /dev/null @@ -1,23 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.NUnit", "ZXing.Net.Mobile.NUnit\ZXing.Net.Mobile.NUnit.csproj", "{638781A7-5053-4915-AAEB-0A1FF148180E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {638781A7-5053-4915-AAEB-0A1FF148180E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {638781A7-5053-4915-AAEB-0A1FF148180E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {638781A7-5053-4915-AAEB-0A1FF148180E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {638781A7-5053-4915-AAEB-0A1FF148180E}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - StartupItem = ZXing.Net.Mobile.NUnit\ZXing.Net.Mobile.NUnit.csproj - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/UITests/BarcodeDisplayServer/Assets/AboutAssets.txt b/UITests/BarcodeDisplayServer/Assets/AboutAssets.txt deleted file mode 100644 index a9b0638eb..000000000 --- a/UITests/BarcodeDisplayServer/Assets/AboutAssets.txt +++ /dev/null @@ -1,19 +0,0 @@ -Any raw assets you want to be deployed with your application can be placed in -this directory (and child directories) and given a Build Action of "AndroidAsset". - -These files will be deployed with your package and will be accessible using Android's -AssetManager, like this: - -public class ReadAsset : Activity -{ - protected override void OnCreate (Bundle bundle) - { - base.OnCreate (bundle); - - InputStream input = Assets.Open ("my_asset.txt"); - } -} - -Additionally, some Android functions will automatically load asset files: - -Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); diff --git a/UITests/BarcodeDisplayServer/BarcodeDisplayServer.csproj b/UITests/BarcodeDisplayServer/BarcodeDisplayServer.csproj deleted file mode 100644 index 1f5f2a340..000000000 --- a/UITests/BarcodeDisplayServer/BarcodeDisplayServer.csproj +++ /dev/null @@ -1,76 +0,0 @@ - - - - Debug - AnyCPU - {7CBC957B-68E0-45D9-A857-B49E3B0C04B5} - {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - BarcodeDisplayServer - BarcodeDisplayServer - v6.0 - True - Resources\Resource.designer.cs - Resource - Properties\AndroidManifest.xml - Resources - Assets - true - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - None - - - true - bin\Release - prompt - 4 - false - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/UITests/BarcodeDisplayServer/BarcodeDisplayServer.sln b/UITests/BarcodeDisplayServer/BarcodeDisplayServer.sln deleted file mode 100644 index 4b79cb9a5..000000000 --- a/UITests/BarcodeDisplayServer/BarcodeDisplayServer.sln +++ /dev/null @@ -1,17 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BarcodeDisplayServer", "BarcodeDisplayServer.csproj", "{7CBC957B-68E0-45D9-A857-B49E3B0C04B5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7CBC957B-68E0-45D9-A857-B49E3B0C04B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7CBC957B-68E0-45D9-A857-B49E3B0C04B5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7CBC957B-68E0-45D9-A857-B49E3B0C04B5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7CBC957B-68E0-45D9-A857-B49E3B0C04B5}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/UITests/BarcodeDisplayServer/HttpListenerService.cs b/UITests/BarcodeDisplayServer/HttpListenerService.cs deleted file mode 100644 index 6677e352e..000000000 --- a/UITests/BarcodeDisplayServer/HttpListenerService.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using System.Net; -using System.Threading; -using System.Threading.Tasks; -using Android.App; -using Android.Content; - -namespace BarcodeDisplayServer -{ - [BroadcastReceiver] - [IntentFilter (new [] { Intent.ActionBootCompleted })] - public class HttpListenerBootReceiver : BroadcastReceiver - { - // Broadcast receiver to start listener on boot - public override void OnReceive (Context context, Intent intent) - { - context.StartService (new Intent (context, typeof (HttpListenerService))); - } - } - - [Service] - public class HttpListenerService : IntentService - { - static bool running = false; - - protected override void OnHandleIntent (Intent intent) - { - // Make sure server is running - StartHttpServer (); - } - - public override bool StopService (Intent name) - { - // Trigger cancellation token for http listener when service stops - if (ctsHttp != null) - ctsHttp.Cancel (); - running = false; - return base.StopService (name); - } - - HttpListener httpListener; - CancellationTokenSource ctsHttp; - - void ProcessHttpRequest (HttpListenerContext context) - { - try { - string barcodeFormatStr = context.Request?.QueryString? ["format"] ?? "QR_CODE"; - string barcodeValue = context?.Request?.QueryString? ["value"] ?? ""; - string barcodeUrl = context?.Request?.QueryString? ["url"] ?? ""; - - // Pass along the querystring values - var intent = new Android.Content.Intent (this, typeof (MainActivity)); - intent.PutExtra ("FORMAT", barcodeFormatStr); - intent.PutExtra ("VALUE", barcodeValue); - intent.PutExtra ("URL", barcodeUrl); - intent.AddFlags (ActivityFlags.NewTask); - - // Start the activity to show the values - StartActivity (intent); - - // Return a success - context.Response.StatusCode = (int)HttpStatusCode.OK; - context.Response.StatusDescription = "OK"; - context.Response.Close (); - - } catch (Exception e) { - Console.WriteLine ("Error " + e.Message); - - context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; - context.Response.Close (); - } - } - - void StartHttpServer () - { - if (running || httpListener != null) - return; - - running = true; - ctsHttp = new CancellationTokenSource (); - - // Setup our listener - httpListener = new HttpListener (); - httpListener.Prefixes.Add ("http://*:8158/"); - httpListener.Start (); - - var httpTask = Task.Factory.StartNew (() => { - while (!ctsHttp.IsCancellationRequested) { - try { - var httpContext = httpListener.GetContext (); - Task.Run (() => { - ProcessHttpRequest (httpContext); - }); - - } catch (Exception e) { - Android.Util.Log.Error ("BARCODE", "HttpListener Error: {0}", e.Message); - } - } - }, TaskCreationOptions.LongRunning); - - // Stop the listener after cancel token was issued - httpTask.ContinueWith (t => { - if (httpListener != null) - httpListener.Stop (); - httpListener = null; - }); - } - - } -} - diff --git a/UITests/BarcodeDisplayServer/MainActivity.cs b/UITests/BarcodeDisplayServer/MainActivity.cs deleted file mode 100644 index a17f687f5..000000000 --- a/UITests/BarcodeDisplayServer/MainActivity.cs +++ /dev/null @@ -1,96 +0,0 @@ -using Android.App; -using Android.Widget; -using Android.OS; -using Android.Content; - -namespace BarcodeDisplayServer -{ - [Activity (Label = "Barcode Display Server", - ScreenOrientation = Android.Content.PM.ScreenOrientation.Landscape, - LaunchMode = Android.Content.PM.LaunchMode.SingleTop, - MainLauncher = true, - Icon = "@mipmap/icon")] - public class MainActivity : Activity - { - ImageView imageViewBarcode; - - protected override void OnCreate (Bundle savedInstanceState) - { - base.OnCreate (savedInstanceState); - - // Set our view from the "main" layout resource - SetContentView (Resource.Layout.Main); - - imageViewBarcode = FindViewById (Resource.Id.imageViewBarcode); - - StartService (new Intent (this, typeof (HttpListenerService))); - } - - protected override void OnResume () - { - base.OnResume (); - - // Full screen - var opt = Android.Views.SystemUiFlags.LayoutStable - | Android.Views.SystemUiFlags.HideNavigation - | Android.Views.SystemUiFlags.Fullscreen - | Android.Views.SystemUiFlags.LayoutHideNavigation - | Android.Views.SystemUiFlags.LayoutFullscreen - | Android.Views.SystemUiFlags.ImmersiveSticky; - Window.DecorView.SystemUiVisibility = (Android.Views.StatusBarVisibility)opt; - } - - protected override void OnNewIntent (Android.Content.Intent intent) - { - base.OnNewIntent (intent); - - // Get the barcode options from the intent - var barcodeFormat = ZXing.BarcodeFormat.QR_CODE; - if (intent.HasExtra ("FORMAT")) - System.Enum.TryParse (intent.GetStringExtra ("FORMAT"), out barcodeFormat); - - var barcodeValue = string.Empty; - if (intent.HasExtra ("VALUE")) - barcodeValue = intent.GetStringExtra ("VALUE") ?? string.Empty; - - var barcodeUrl = string.Empty; - if (intent.HasExtra ("URL")) - barcodeUrl = intent.GetStringExtra ("URL") ?? string.Empty; - - // Can set from a URL or generate from a format/value - if (!string.IsNullOrEmpty (barcodeUrl)) { - SetBarcode (barcodeUrl); - } else if (!string.IsNullOrEmpty (barcodeValue)) { - SetBarcode (barcodeFormat, barcodeValue); - } - } - - void SetBarcode (string url) - { - Square.Picasso.Picasso.With (this) - .Load (url) - .Into (imageViewBarcode); - } - - void SetBarcode (ZXing.BarcodeFormat format, string value) - { - var w = new ZXing.BarcodeWriter (); - - w.Options = new ZXing.Common.EncodingOptions { - Width = imageViewBarcode.Width, - Height = imageViewBarcode.Height, - }; - w.Format = format; - - try { - using (var bitmap = w.Write (value)) { - imageViewBarcode.SetImageBitmap (bitmap); - } - } catch { - imageViewBarcode.SetImageDrawable (null); - } - } - } -} - - diff --git a/UITests/BarcodeDisplayServer/Properties/AndroidManifest.xml b/UITests/BarcodeDisplayServer/Properties/AndroidManifest.xml deleted file mode 100644 index b3d1eabc8..000000000 --- a/UITests/BarcodeDisplayServer/Properties/AndroidManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/UITests/BarcodeDisplayServer/Properties/AssemblyInfo.cs b/UITests/BarcodeDisplayServer/Properties/AssemblyInfo.cs deleted file mode 100644 index a13ce5c4c..000000000 --- a/UITests/BarcodeDisplayServer/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using Android.App; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("BarcodeDisplayServer")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("Xamarin")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("Xamarin")] -[assembly: AssemblyTrademark ("")] -[assembly: AssemblyCulture ("")] - -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.0")] - -// The following attributes are used to specify the signing key for the assembly, -// if desired. See the Mono documentation for more information about signing. - -//[assembly: AssemblyDelaySign(false)] -//[assembly: AssemblyKeyFile("")] - diff --git a/UITests/BarcodeDisplayServer/Resources/AboutResources.txt b/UITests/BarcodeDisplayServer/Resources/AboutResources.txt deleted file mode 100644 index 10f52d460..000000000 --- a/UITests/BarcodeDisplayServer/Resources/AboutResources.txt +++ /dev/null @@ -1,44 +0,0 @@ -Images, layout descriptions, binary blobs and string dictionaries can be included -in your application as resource files. Various Android APIs are designed to -operate on the resource IDs instead of dealing with images, strings or binary blobs -directly. - -For example, a sample Android app that contains a user interface layout (main.axml), -an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) -would keep its resources in the "Resources" directory of the application: - -Resources/ - drawable/ - icon.png - - layout/ - main.axml - - values/ - strings.xml - -In order to get the build system to recognize Android resources, set the build action to -"AndroidResource". The native Android APIs do not operate directly with filenames, but -instead operate on resource IDs. When you compile an Android application that uses resources, -the build system will package the resources for distribution and generate a class called "R" -(this is an Android convention) that contains the tokens for each one of the resources -included. For example, for the above Resources layout, this is what the R class would expose: - -public class R { - public class drawable { - public const int icon = 0x123; - } - - public class layout { - public const int main = 0x456; - } - - public class strings { - public const int first_string = 0xabc; - public const int second_string = 0xbcd; - } -} - -You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main -to reference the layout/main.axml file, or R.strings.first_string to reference the first -string in the dictionary file values/strings.xml. diff --git a/UITests/BarcodeDisplayServer/Resources/layout/Main.axml b/UITests/BarcodeDisplayServer/Resources/layout/Main.axml deleted file mode 100644 index e68a27f88..000000000 --- a/UITests/BarcodeDisplayServer/Resources/layout/Main.axml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/UITests/BarcodeDisplayServer/Resources/mipmap-hdpi/Icon.png b/UITests/BarcodeDisplayServer/Resources/mipmap-hdpi/Icon.png deleted file mode 100644 index f4c804644c5e47daffed8e8573b5da99d0939bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2201 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 diff --git a/UITests/BarcodeDisplayServer/Resources/mipmap-xhdpi/Icon.png b/UITests/BarcodeDisplayServer/Resources/mipmap-xhdpi/Icon.png deleted file mode 100644 index b7e2e57aa90f8687bdfa19d82ff6bda71535b8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3237 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 Xx9ez7Rf!D(00000NkvXXu0mjfmS|-l diff --git a/UITests/BarcodeDisplayServer/Resources/mipmap-xxhdpi/Icon.png b/UITests/BarcodeDisplayServer/Resources/mipmap-xxhdpi/Icon.png deleted file mode 100644 index 8d20a38d1782921964638e873ffc98d148ebda6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5414 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 c0$sN|hZ~f>0q(p1ua5js-$bwSo@3 - - Hello World, Click Me! - BarcodeDisplayServer - diff --git a/UITests/BarcodeDisplayServer/Resources/values/styles.xml b/UITests/BarcodeDisplayServer/Resources/values/styles.xml deleted file mode 100644 index a74217e02..000000000 --- a/UITests/BarcodeDisplayServer/Resources/values/styles.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/UITests/FormsSample.UITests/FormsSample.UITests.csproj b/UITests/FormsSample.UITests/FormsSample.UITests.csproj deleted file mode 100644 index cd5ef7631..000000000 --- a/UITests/FormsSample.UITests/FormsSample.UITests.csproj +++ /dev/null @@ -1,65 +0,0 @@ - - - - Debug - AnyCPU - {A0E994BB-0C73-4B4E-9133-D7DDD7866427} - Library - FormsSample.UITests - FormsSample.UITests - v4.5 - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - - - true - bin\Release - prompt - 4 - false - - - - - - - - - - - - {D8248617-D905-4F82-95B4-D4027C20278A} - FormsSample.Droid - False - False - - - {776B89DF-2915-4701-B8A3-127D3340C77F} - FormsSample.iOS - False - False - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} - zxing.portable - - - - - - - - - \ No newline at end of file diff --git a/UITests/FormsSample.UITests/InitializationTests.cs b/UITests/FormsSample.UITests/InitializationTests.cs deleted file mode 100644 index 6f4900746..000000000 --- a/UITests/FormsSample.UITests/InitializationTests.cs +++ /dev/null @@ -1,106 +0,0 @@ -using NUnit.Framework; -using UITests.Shared; -using Xamarin.UITest; -using UITests.Shared; - -namespace UITests -{ - [TestFixture (Platform.Android)] - [TestFixture (Platform.iOS)] - public class InitializationTests - { - IApp app; - Platform platform; - - public InitializationTests (Platform platform) - { - this.platform = platform; - } - - [SetUp] - public void BeforeEachTest () - { - app = AppInitializer.StartApp ( - platform, - TestConsts.ApkFile, - TestConsts.iOSBundleId); - } - - [TearDown] - public void AfterEachTest () - { - app.ScreenshotIfFailed (); - } - - //[Test] - public void Repl () - { - app.Repl (); - } - - [Test] - public void DefaultOverlay_Initializes () - { - app.Screenshot ("App Launches"); - - app.Tap (q => q.Marked ("scanWithDefaultOverlay")); - - app.WaitForElement (q => q.Marked ("zxingScannerView")); - app.WaitForElement (q => q.Marked ("zxingDefaultOverlay")); - - app.Screenshot ("View Default Overlay"); - } - - [Test] - public void ContinuousScanning_Initializes () - { - app.Screenshot ("App Launches"); - - app.Tap (q => q.Marked ("scanContinuously")); - - app.WaitForElement (q => q.Marked ("zxingScannerView")); - app.WaitForElement (q => q.Marked ("zxingDefaultOverlay")); - - app.Screenshot ("View Continuous Scanner"); - } - - [Test] - public void CustomOverlay_Initializes () - { - app.Screenshot ("App Launches"); - - app.Tap (q => q.Marked ("scanWithCustomOverlay")); - - app.WaitForElement (q => q.Marked ("zxingScannerView")); - app.WaitForElement (q => q.Text ("Toggle Torch")); - - app.Screenshot ("View Custom Overlay Scanner"); - } - - [Test] - public void CustomPage_Initializes () - { - app.Screenshot ("App Launches"); - - app.Tap (q => q.Marked ("scanWithCustomPage")); - - app.WaitForElement (q => q.Marked ("zxingScannerView")); - app.WaitForElement (q => q.Marked ("zxingDefaultOverlay")); - - app.Screenshot ("View Custom Page Scanner"); - } - - [Test] - public void BarcodeGenerator_Initializes () - { - app.Screenshot ("App Launches"); - - app.Tap (q => q.Marked ("barcodeGenerator")); - - app.WaitForElement (q => q.Marked ("zxingBarcodeImageView")); - - app.Screenshot ("View Barcode"); - } - } -} - diff --git a/UITests/FormsSample.UITests/ScanningTests.cs b/UITests/FormsSample.UITests/ScanningTests.cs deleted file mode 100644 index f5a73e617..000000000 --- a/UITests/FormsSample.UITests/ScanningTests.cs +++ /dev/null @@ -1,35 +0,0 @@ -using NUnit.Framework; -using Xamarin.UITest; -using UITests.Shared; - -namespace UITests -{ - [TestFixture (Platform.Android)] - [TestFixture (Platform.iOS)] - public partial class ScanningTests - { - IApp app; - Platform platform; - - public ScanningTests (Platform platform) - { - this.platform = platform; - } - - [SetUp] - public void BeforeEachTest () - { - app = AppInitializer.StartApp ( - platform, - TestConsts.ApkFile, - TestConsts.iOSBundleId); - } - - [TearDown] - public void AfterEachTest () - { - app.ScreenshotIfFailed (); - } - } -} - diff --git a/UITests/FormsSample.UITests/TestConsts.cs b/UITests/FormsSample.UITests/TestConsts.cs deleted file mode 100644 index 5fd80c260..000000000 --- a/UITests/FormsSample.UITests/TestConsts.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -namespace UITests -{ - public static class TestConsts - { - public const string ApkFile = "../../../../Samples/Forms/Droid/bin/Release/com.zxing.formssample.apk"; - public const string iOSBundleId = "com.zxing.net.mobile.sample"; - } -} - diff --git a/UITests/Sample.Android.UITests/InitializationTests.cs b/UITests/Sample.Android.UITests/InitializationTests.cs deleted file mode 100644 index a372eb22e..000000000 --- a/UITests/Sample.Android.UITests/InitializationTests.cs +++ /dev/null @@ -1,101 +0,0 @@ -using NUnit.Framework; -using Xamarin.UITest; -using Xamarin.UITest.Android; -using UITests.Shared; - -namespace UITests -{ - [TestFixture] - public class InitializationTests - { - AndroidApp app; - Platform platform = Platform.Android; - - [SetUp] - public void BeforeEachTest () - { - app = (AndroidApp)AppInitializer.StartApp ( - platform, - TestConsts.ApkFile, - null); - - app.WakeUpAndroidDevice (); - } - - [TearDown] - public void AfterEachTest () - { - app.ScreenshotIfFailed (); - } - - // [Test] - public void Repl () - { - app.Repl (); - } - - [Test] - public void DefaultOverlay_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Id ("buttonScanDefaultView")); - - app.WaitForElement (q => q.Class ("ZXingSurfaceView")); - app.WaitForElement (q => q.Class ("ZxingOverlayView")); - - app.TakeScreenshot ("View Default Scanner"); - } - - [Test] - public void ContinuousScanning_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Id ("buttonScanContinuous")); - - app.WaitForElement (q => q.Class ("ZXingSurfaceView")); - app.WaitForElement (q => q.Class ("ZxingOverlayView")); - - app.TakeScreenshot ("View Continuous Scanner"); - } - - [Test] - public void CustomOverlay_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Id ("buttonScanCustomView")); - - app.WaitForElement (q => q.Class ("ZXingSurfaceView")); - app.WaitForElement (q => q.Text ("Place a barcode in the camera viewfinder to scan it. Barcode will scan Automatically.")); - - app.TakeScreenshot ("View Custom Overlay Scanner"); - } - - [Test] - public void FragmentScanner_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Id ("buttonFragment")); - - app.WaitForElement (q => q.Class ("ZXingSurfaceView")); - app.WaitForElement (q => q.Class ("ZxingOverlayView")); - - app.TakeScreenshot ("View Fragment Scanner"); - } - - [Test] - public void BarcodeGenerator_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Id ("buttonGenerate")); - - app.WaitForElement (q => q.Class ("ImageView").Id ("imageBarcode")); - - app.TakeScreenshot ("View Barcode Generator"); - } - } -} diff --git a/UITests/Sample.Android.UITests/Sample.Android.UITests.csproj b/UITests/Sample.Android.UITests/Sample.Android.UITests.csproj deleted file mode 100644 index e93145104..000000000 --- a/UITests/Sample.Android.UITests/Sample.Android.UITests.csproj +++ /dev/null @@ -1,59 +0,0 @@ - - - - Debug - AnyCPU - {BFA131F2-086F-4B18-9920-81EBE09F0D6A} - Library - Sample.Android.UITests - Sample.Android.UITests - v4.5 - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - - - true - bin\Release - prompt - 4 - false - - - - - - - - - - - - {660D9346-D70B-4C54-8402-E5F6DF48E9AC} - Sample.Android - False - False - - - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} - zxing.portable - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - - - - - - - \ No newline at end of file diff --git a/UITests/Sample.Android.UITests/ScanningTests.cs b/UITests/Sample.Android.UITests/ScanningTests.cs deleted file mode 100644 index efa0f6acb..000000000 --- a/UITests/Sample.Android.UITests/ScanningTests.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using NUnit.Framework; -using Xamarin.UITest; -using Xamarin.UITest.Android; -using UITests.Shared; - -namespace UITests -{ - [TestFixture] - public partial class ScanningTests - { - AndroidApp app; - Platform platform = Platform.Android; - - [SetUp] - public void BeforeEachTest () - { - app = (AndroidApp)AppInitializer.StartApp ( - platform, - TestConsts.ApkFile, - null); - - app.WakeUpAndroidDevice (); - } - - [TearDown] - public void AfterEachTest () - { - app.ScreenshotIfFailed (); - } - } -} diff --git a/UITests/Sample.Android.UITests/TestConsts.cs b/UITests/Sample.Android.UITests/TestConsts.cs deleted file mode 100644 index 8b287346c..000000000 --- a/UITests/Sample.Android.UITests/TestConsts.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace UITests -{ - public static class TestConsts - { - public const string ApkFile = "../../../../Samples/Android/Sample.Android/bin/Release/com.altusapps.zxingnetmobile.apk"; - } -} diff --git a/UITests/Sample.iOS.UITests/InitializationTests.cs b/UITests/Sample.iOS.UITests/InitializationTests.cs deleted file mode 100644 index 3c88dedfb..000000000 --- a/UITests/Sample.iOS.UITests/InitializationTests.cs +++ /dev/null @@ -1,101 +0,0 @@ -using NUnit.Framework; -using UITests.Shared; -using Xamarin.UITest; -using Xamarin.UITest.iOS; -using UITests.Shared; - -namespace UITests -{ - [TestFixture] - public class Tests - { - iOSApp app; - Platform platform = Platform.iOS; - - [SetUp] - public void BeforeEachTest () - { - app = (iOSApp) AppInitializer.StartApp ( - platform, - null, - TestConsts.iOSBundleId); - } - - [TearDown] - public void AfterEachTest () - { - app.ScreenshotIfFailed (); - } - - //[Test] - public void Repl () - { - app.Repl (); - } - - [Test] - public void DefaultOverlay_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Marked ("Scan with Default View")); - - app.WaitForElement (q => q.Class ("ZXing_Mobile_ZXingScannerView")); - app.WaitForElement (q => q.Class ("ZXing_Mobile_ZXingDefaultOverlayView")); - - app.TakeScreenshot ("View Default Overlay"); - } - - [Test] - public void ContinuousScanning_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Marked ("Scan Continuously")); - - app.WaitForElement (q => q.Class ("ZXing_Mobile_AVCaptureScannerView")); - app.WaitForElement (q => q.Class ("ZXing_Mobile_ZXingDefaultOverlayView")); - - app.TakeScreenshot ("View Continuous Scanner"); - } - - [Test] - public void CustomOverlay_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Marked ("Scan with Custom View")); - - app.WaitForElement (q => q.Class ("ZXing_Mobile_ZXingScannerView")); - app.WaitForElement (q => q.Text ("Torch")); - - app.TakeScreenshot ("View Custom Overlay Scanner"); - } - - [Test] - public void AVCaptureEngine_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Marked ("Scan with AVCapture Engine")); - - app.WaitForElement (q => q.Class ("ZXing_Mobile_AVCaptureScannerView")); - app.WaitForElement (q => q.Class ("ZXing_Mobile_ZXingDefaultOverlayView")); - - app.TakeScreenshot ("View AVCaptureEngine Scanner"); - } - - [Test] - public void BarcodeGenerator_Initializes () - { - app.TakeScreenshot ("App Launches"); - - app.Tap (q => q.Marked ("Generate Barcode")); - - app.WaitForElement (q => q.Class ("UIImageView")); - - app.TakeScreenshot ("View Barcode"); - } - } -} - diff --git a/UITests/Sample.iOS.UITests/Sample.iOS.UITests.csproj b/UITests/Sample.iOS.UITests/Sample.iOS.UITests.csproj deleted file mode 100644 index e4425bafb..000000000 --- a/UITests/Sample.iOS.UITests/Sample.iOS.UITests.csproj +++ /dev/null @@ -1,59 +0,0 @@ - - - - Debug - AnyCPU - {F60C523B-54E7-4283-95A8-01E405E55024} - Library - Sample.iOS.UITests - Sample.iOS.UITests - v4.5 - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - false - - - true - bin\Release - prompt - 4 - false - - - - - - - - - - - - {D119965B-BA8F-40D7-86B4-E9654E1014E2} - Sample.iOS - False - False - - - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} - zxing.portable - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - - - - - - - \ No newline at end of file diff --git a/UITests/Sample.iOS.UITests/ScanningTests.cs b/UITests/Sample.iOS.UITests/ScanningTests.cs deleted file mode 100644 index a6ac7a6ad..000000000 --- a/UITests/Sample.iOS.UITests/ScanningTests.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using NUnit.Framework; -using Xamarin.UITest; -using Xamarin.UITest.Android; -using UITests.Shared; - -namespace UITests -{ - [TestFixture] - public partial class ScanningTests - { - AndroidApp app; - Platform platform = Platform.iOS; - - [SetUp] - public void BeforeEachTest () - { - app = (AndroidApp)AppInitializer.StartApp ( - platform, - null, - TestConsts.iOSBundleId); - } - - [TearDown] - public void AfterEachTest () - { - app.ScreenshotIfFailed (); - } - } -} diff --git a/UITests/Sample.iOS.UITests/TestConsts.cs b/UITests/Sample.iOS.UITests/TestConsts.cs deleted file mode 100644 index 17dcf7dfd..000000000 --- a/UITests/Sample.iOS.UITests/TestConsts.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace UITests -{ - public static class TestConsts - { - public const string iOSBundleId = "com.zxing.net.mobile.sample"; - } -} diff --git a/UITests/UITests.Shared/AppInitializer.cs b/UITests/UITests.Shared/AppInitializer.cs deleted file mode 100644 index f4939cf73..000000000 --- a/UITests/UITests.Shared/AppInitializer.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using Xamarin.UITest; -using Xamarin.UITest.Queries; - -namespace UITests -{ - public class AppInitializer - { - public static IApp StartApp (Platform platform, string apkFile, string iosBundleId) - { - var deviceId = Environment.GetEnvironmentVariable ("XTC_DEVICE_ID") ?? ""; - - Console.WriteLine ("Using Device: " + deviceId); - - if (platform == Platform.Android) { - return ConfigureApp - .Android - .EnableLocalScreenshots () - .PreferIdeSettings () - .DeviceSerial (deviceId) - .ApkFile (apkFile) - .StartApp (); - } - - return ConfigureApp - .iOS - .EnableLocalScreenshots () - .PreferIdeSettings () - .DeviceIdentifier (deviceId) - .InstalledApp (iosBundleId) - .StartApp (); - } - } -} - diff --git a/UITests/UITests.Shared/ScanningTests.cs b/UITests/UITests.Shared/ScanningTests.cs deleted file mode 100644 index 8d2ae54f7..000000000 --- a/UITests/UITests.Shared/ScanningTests.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using NUnit.Framework; -using UITests.Shared; -using ZXing; - -namespace UITests -{ - public partial class ScanningTests - { - [Test] - public void Scan_QRCode_Succeeds () - { - const BarcodeFormat FORMAT = BarcodeFormat.QR_CODE; - const string VALUE = "Xamarin"; - - app.DisplayBarcode (FORMAT, VALUE); - app.InvokeScanner (FORMAT, platform); - - app.AssertUITestBackdoorResult (FORMAT, VALUE); - } - - [Test] - public void Scan_PDF417_Succeeds () - { - const BarcodeFormat FORMAT = BarcodeFormat.PDF_417; - const string VALUE = "Xamarin"; - - app.DisplayBarcode (FORMAT, VALUE); - app.InvokeScanner (FORMAT, platform); - - app.AssertUITestBackdoorResult (FORMAT, VALUE); - } - } -} - diff --git a/UITests/UITests.Shared/UITests.Shared.projitems b/UITests/UITests.Shared/UITests.Shared.projitems deleted file mode 100644 index d06465478..000000000 --- a/UITests/UITests.Shared/UITests.Shared.projitems +++ /dev/null @@ -1,16 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - true - {EB5B7B11-23D4-4427-B016-DAE1E79A77FD} - - - UITests.Shared - - - - - - - \ No newline at end of file diff --git a/UITests/UITests.Shared/UITests.Shared.shproj b/UITests/UITests.Shared/UITests.Shared.shproj deleted file mode 100644 index e298ace80..000000000 --- a/UITests/UITests.Shared/UITests.Shared.shproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - {EB5B7B11-23D4-4427-B016-DAE1E79A77FD} - - - - - - - \ No newline at end of file diff --git a/UITests/UITests.Shared/Util.cs b/UITests/UITests.Shared/Util.cs deleted file mode 100644 index c47ee6cd7..000000000 --- a/UITests/UITests.Shared/Util.cs +++ /dev/null @@ -1,159 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Runtime.CompilerServices; -using NUnit.Framework; -using ZXing; - -namespace UITests.Shared -{ - public static class AppExtensions - { - public static void TakeScreenshot (this Xamarin.UITest.IApp app, string title, [CallerMemberName] string methodName = null) - { - var file = app.Screenshot (title); - - // Don't rename files if we're running in testcloud - if (Xamarin.UITest.TestEnvironment.IsTestCloud) - return; - - var method = new StackTrace ().GetFrame (1).GetMethod (); - string className = method.ReflectedType.Name; - string namespaceName = method.ReflectedType.Namespace; - - - var baseDir = Environment.GetEnvironmentVariable ("UITEST_SCREENSHOT_PATH") ?? AppDomain.CurrentDomain.BaseDirectory; - var newFile = string.Format ("{0}-{1}.jpg", methodName, title); - - var newSubDir = Path.Combine (app.Device.DeviceIdentifier, namespaceName, className); - var newDir = Path.Combine (baseDir, newSubDir); - - var fullPath = Path.Combine (newDir, newFile); - - Directory.CreateDirectory (newDir); - - Console.WriteLine ("Moving Screenshot -> " + fullPath); - - try { - if (File.Exists (fullPath)) - File.Delete (fullPath); - } catch { } - - file.MoveTo (fullPath); - } - - public static void WakeUpAndroidDevice (this Xamarin.UITest.IApp app) - { - // Test Cloud will handle this for us - if (Xamarin.UITest.TestEnvironment.IsTestCloud) - return; - - var adbExe = "adb"; - var ext = IsUnix () ? "" : ".exe"; - var androidHome = Environment.GetEnvironmentVariable ("ANDROID_HOME"); - if (!string.IsNullOrEmpty (androidHome) && Directory.Exists (androidHome)) - adbExe = Path.Combine (androidHome, "platform-tools", "adb" + ext); - - if (!File.Exists (adbExe)) - return; - - //get dumpsys for power stats which includes screen on/off info - string power = RunProcess (adbExe, "-s " + app.Device.DeviceIdentifier + " shell dumpsys power"); - - //checks if screen is on/off. Two versions for different android versions. - if (power.Contains ("mScreenOn=false") || power.Contains ("Display Power: state=OFF")) { - //Sends keycode for power on - RunProcess (adbExe, "-s " + app.Device.DeviceIdentifier + " shell input keyevent 26"); - //Sends keycode for menu button. This will unlock stock android lockscreen. - //Does nothing if lockscreen is disabled - RunProcess (adbExe, "-s " + app.Device.DeviceIdentifier + " shell input keyevent 82"); - } - } - - public static void ScreenshotIfFailed (this Xamarin.UITest.IApp app) - { - var status = TestContext.CurrentContext?.Result?.Status ?? TestStatus.Inconclusive; - - if (status == TestStatus.Failed) { - try { - app.TakeScreenshot ("Failure", TestContext.CurrentContext.Test.Name); - } catch { } - } - } - - public static bool IsUnix () - { - var platform = (int)Environment.OSVersion.Platform; - if (platform == (int)PlatformID.MacOSX) - return true; - if (platform == 4 || platform == 6 || platform == 128) - return true; - return false; - } - - public static string RunProcess (string executable, string args) - { - Console.WriteLine ("RunProcess -> " + executable + " " + args); - - var p = Process.Start (new ProcessStartInfo { - RedirectStandardOutput = true, - UseShellExecute = false, - FileName = executable, - Arguments = args - }); - - p.WaitForExit (10000); - return p.StandardOutput.ReadToEnd (); - } - - public static void DisplayBarcode (this Xamarin.UITest.IApp app, string url) - { - var host = Environment.GetEnvironmentVariable ("BARCODE_SERVER_URL") ?? "http://localhost:8158"; - var fullUrl = host + "?url=" + System.Net.WebUtility.UrlEncode (url); - - Console.WriteLine ("DisplayBarcode -> " + fullUrl); - - var webClient = new System.Net.WebClient (); - webClient.DownloadString (fullUrl); - } - - public static void DisplayBarcode (this Xamarin.UITest.IApp app, BarcodeFormat format, string value) - { - var host = Environment.GetEnvironmentVariable ("BARCODE_SERVER_URL"); - if (string.IsNullOrEmpty (host)) { - Console.WriteLine ("No Barcode Display Server specified, skipping..."); - return; - } - var fullUrl = host + "?format=" + System.Net.WebUtility.UrlEncode (format.ToString ()) + "&value=" + System.Net.WebUtility.UrlEncode (value); - - Console.WriteLine ("DisplayBarcode -> " + fullUrl); - - var webClient = new System.Net.WebClient (); - webClient.DownloadString (fullUrl); - } - - public static void InvokeScanner (this Xamarin.UITest.IApp app, BarcodeFormat format, Xamarin.UITest.Platform platform) - { - if (platform == Xamarin.UITest.Platform.iOS) - app.Invoke ("UITestBackdoorScan:", format.ToString ()); - else - app.Invoke ("UITestBackdoorScan", format.ToString ()); - } - - public static void AssertUITestBackdoorResult (this Xamarin.UITest.IApp app, BarcodeFormat format, string value) - { - // First wait for the result - app.WaitForElement (q => q.Marked ("Barcode Result"), "Barcode not scanned, no result found", TimeSpan.FromSeconds (10)); - - app.TakeScreenshot ("Scan Result Found"); - - var result = app.Query (q => q.Marked (format + "|" + value)); - - Assert.AreEqual (1, result.Count ()); - - app.Tap (q => q.Marked ("OK")); - } - } -} diff --git a/UITests/build.cake b/UITests/build.cake deleted file mode 100644 index 0e87c8e20..000000000 --- a/UITests/build.cake +++ /dev/null @@ -1,127 +0,0 @@ -#tool nuget:?package=NUnit.Runners&version=2.6.4 -#tool nuget:?package=Xamarin.UITest&version=2.0.8 -#addin nuget:?package=Cake.Xamarin - -var TARGET = Argument ("target", Argument ("t", "Default")); - -var ANDROID_DEVICES = (EnvironmentVariable ("ANDROID_DEVICES") ?? "").Split (';'); -var IOS_DEVICES = (EnvironmentVariable ("IOS_DEVICES") ?? "").Split (';'); -var NUNIT_PATH = GetFiles ("../packages/**/nunit.framework.dll").FirstOrDefault (); - -Task ("Samples").Does (() => -{ - EnsureDirectoryExists ("../output"); - - var sampleSlns = new Dictionary (); - sampleSlns.Add ("../ZXing.Net.Mobile.sln", "ReleaseMac"); - sampleSlns.Add ("../ZXing.Net.Mobile.Forms.sln", "ReleaseMac"); - sampleSlns.Add ("../Samples/Android/Sample.Android.sln", "Release"); - sampleSlns.Add ("../Samples/iOS/Sample.iOS.sln", "Release"); - sampleSlns.Add ("../Samples/Forms/Sample.Forms.Mac.sln", "Release"); - sampleSlns.Add ("../ZXing.Net.Mobile.UITests.sln", "Release"); - - foreach (var sln in sampleSlns) { - NuGetRestore (sln.Key); - DotNetBuild (sln.Key, c => c.Configuration = sln.Value); - } -}); - -Task ("Android.UITests") - .IsDependentOn ("Samples") - .Does (() => -{ - var uitests = "./Sample.Android.UITests/bin/Release/Sample.Android.UITests.dll"; - - var apk = AndroidPackage ("../Samples/Android/Sample.Android/Sample.Android.csproj", false, c => c.Configuration = "Release"); - Information ("APK: {0}", apk); - - foreach (var device in ANDROID_DEVICES) { - System.Environment.SetEnvironmentVariable ("XTC_DEVICE_ID", device); - Information ("Running Tests on: {0}", device); - UITest (uitests, new NUnitSettings { ResultsFile = "../output/UITestResult-Android-" + device + ".xml" }); - } -}); - -Task ("iOS.UITests") - .IsDependentOn ("Samples") - .Does (() => -{ - var uitests = "./Sample.iOS.UITests/bin/Debug/Sample.iOS.UITests.dll"; - - DotNetBuild ("../Samples/iOS/Sample.iOS.sln", c => { - c.Configuration = "Release"; - c.Properties ["Platform"] = new [] { "iPhone" }; - }); - - foreach (var device in IOS_DEVICES) { - System.Environment.SetEnvironmentVariable ("XTC_DEVICE_ID", device); - Information ("Running Tests on: {0}", device); - - // Use ios-deploy app to install the iOS .app to device first - // UITest requires it be already installed - // To get ios-deploy: - // brew install node - // npm install -g ios-deploy - StartProcess ("ios-deploy", new ProcessSettings { - Arguments = string.Format ("--uninstall --id \"{0}\" --bundle \"{1}\"", - device, - "../Samples/iOS/Sample.iOS/bin/iPhone/Release/ZXingNetMobileiOSSample.app") - }); - - UITest (uitests, new NUnitSettings { ResultsFile = "../output/UITestResult-iOS-" + device + ".xml" }); - } -}); - -Task ("Forms.Android.UITests") - .IsDependentOn ("Samples") - .Does (() => -{ - var uitests = "./FormsSample.UITests/bin/Debug/FormsSample.UITests.dll"; - - var apk = AndroidPackage ("../Samples/Forms/Droid/FormsSample.Droid.csproj", false, c => c.Configuration = "Release"); - Information ("APK: {0}", apk); - - foreach (var device in ANDROID_DEVICES) { - System.Environment.SetEnvironmentVariable ("XTC_DEVICE_ID", device); - Information ("Running Tests on: {0}", device); - UITest (uitests, new NUnitSettings { ResultsFile = "../output/UITestResult-FormsAndroid-" + device + ".xml" }); - } -}); - -Task ("Forms.iOS.UITests") - .IsDependentOn ("Samples") - .Does (() => -{ - var uitests = "./FormsSample.UITests/bin/Debug/FormsSample.UITests.dll"; - - DotNetBuild ("../Samples/Forms/iOS/FormsSample.iOS.csproj", c => { - c.Configuration = "Release"; - c.Properties ["Platform"] = new [] { "iPhone" }; - }); - - foreach (var device in IOS_DEVICES) { - System.Environment.SetEnvironmentVariable ("XTC_DEVICE_ID", device); - Information ("Running Tests on: {0}", device); - - // Use ios-deploy app to install the iOS .app to device first - // UITest requires it be already installed - // To get ios-deploy: - // brew install node - // npm install -g ios-deploy - StartProcess ("ios-deploy", new ProcessSettings { - Arguments = string.Format ("--uninstall --id \"{0}\" --bundle \"{1}\"", - device, - "../Samples/Forms/iOS/bin/iPhone/Release/FormsSampleiOS.app") - }); - - UITest (uitests, new NUnitSettings { ResultsFile = "../output/UITestResult-FormsiOS-" + device + ".xml" }); - } -}); - -Task ("All.UITests") - .IsDependentOn ("Android.UITests") - .IsDependentOn ("iOS.UITests") - .IsDependentOn ("Forms.Android.UITests") - .IsDependentOn ("Forms.iOS.UITests"); - -RunTarget (TARGET); \ No newline at end of file From 891a1d6fc36a5628c0a168c03fb6bdab4621c11a Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Wed, 11 Mar 2020 20:21:31 -0400 Subject: [PATCH 3/9] Add workflow --- .github/workflows/build.yml | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..c5560b5e1 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,58 @@ +name: Build + +on: + push: + release: + types: [published] + +jobs: + build: + name: Build + env: + NUPKG_MAJOR: 0.1 + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Define CI Version + run: echo ::set-env name=NUPKG_VER::$NUPKG_MAJOR-pre$GITHUB_RUN_ID + - name: Define Release Version + if: github.event_name == 'release' + run: echo ::set-env name=NUPKG_VER::${GITHUB_REF/refs\/tags\//} + - name: Build Project + run: msbuild /t:Restore /p:Configuration=Release ./ZXing.Net.Mobile.sln + - name: Build Project + run: msbuild /t:Build /p:Configuration=Release ./ZXing.Net.Mobile.sln + - name: NuGet Pack + run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=./artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile.sln + - name: Upload Artifacts + uses: actions/upload-artifact@v1 + with: + name: NuGet + path: ./artifacts + + publish: + name: Publish + needs: build + runs-on: windows-latest + if: github.event_name == 'release' + steps: + - name: Download Artifacts + uses: actions/download-artifact@v1 + with: + name: NuGet + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.100 + - name: Setup NuGet + uses: nuget/setup-nuget@v1 + with: + nuget-api-key: ${{ secrets.NUGET_API_KEY }} + nuget-version: 'latest' + - name: Push NuGet + run: | + nuget sources add -Name "GPR" -Source "https://nuget.pkg.github.com/Redth/index.json" -UserName Redth -Password ${{ secrets.GITHUB_TOKEN }} + nuget setApiKey ${{ secrets.NUGET_API_KEY }} -Source "GPR" + nuget push NuGet\*.nupkg -Source "GPR" + nuget push NuGet\*.nupkg -Source https://api.nuget.org/v3/index.json -ApiKey ${{ secrets.NUGET_ORG_API_KEY }} \ No newline at end of file From 9c5b044ad980884d29d4cce8cfaa5e08e5efd6f3 Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Wed, 11 Mar 2020 20:28:28 -0400 Subject: [PATCH 4/9] Workflow tweaks --- .github/workflows/build.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c5560b5e1..ac74b8652 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,7 @@ jobs: build: name: Build env: - NUPKG_MAJOR: 0.1 + NUPKG_MAJOR: 3.0 runs-on: macos-latest steps: - name: Checkout @@ -23,8 +23,10 @@ jobs: run: msbuild /t:Restore /p:Configuration=Release ./ZXing.Net.Mobile.sln - name: Build Project run: msbuild /t:Build /p:Configuration=Release ./ZXing.Net.Mobile.sln - - name: NuGet Pack - run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=./artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile.sln + - name: NuGet Pack ZXing.Net.Mobile + run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=./artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile/ZXing.Net.Mobile.csproj + - name: NuGet Pack ZXing.Net.Mobile.Forms + run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=./artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj - name: Upload Artifacts uses: actions/upload-artifact@v1 with: From 4fb1faa0328f92b60f93476b132a3fe315be881d Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Wed, 11 Mar 2020 20:37:02 -0400 Subject: [PATCH 5/9] Update build.yml --- .github/workflows/build.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ac74b8652..5a958ef52 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,14 +19,16 @@ jobs: - name: Define Release Version if: github.event_name == 'release' run: echo ::set-env name=NUPKG_VER::${GITHUB_REF/refs\/tags\//} + - name: Setup Environment + run: mkdir ./artifacts - name: Build Project run: msbuild /t:Restore /p:Configuration=Release ./ZXing.Net.Mobile.sln - name: Build Project run: msbuild /t:Build /p:Configuration=Release ./ZXing.Net.Mobile.sln - name: NuGet Pack ZXing.Net.Mobile - run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=./artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile/ZXing.Net.Mobile.csproj + run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=../artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile/ZXing.Net.Mobile.csproj - name: NuGet Pack ZXing.Net.Mobile.Forms - run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=./artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj + run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=../artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj - name: Upload Artifacts uses: actions/upload-artifact@v1 with: @@ -57,4 +59,4 @@ jobs: nuget sources add -Name "GPR" -Source "https://nuget.pkg.github.com/Redth/index.json" -UserName Redth -Password ${{ secrets.GITHUB_TOKEN }} nuget setApiKey ${{ secrets.NUGET_API_KEY }} -Source "GPR" nuget push NuGet\*.nupkg -Source "GPR" - nuget push NuGet\*.nupkg -Source https://api.nuget.org/v3/index.json -ApiKey ${{ secrets.NUGET_ORG_API_KEY }} \ No newline at end of file + nuget push NuGet\*.nupkg -Source https://api.nuget.org/v3/index.json -ApiKey ${{ secrets.NUGET_ORG_API_KEY }} From 9ea6e3009af298024b6314da7121881ca84dcc57 Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Thu, 12 Mar 2020 09:19:55 -0400 Subject: [PATCH 6/9] Build snupkg's --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5a958ef52..c145b36af 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,9 +26,9 @@ jobs: - name: Build Project run: msbuild /t:Build /p:Configuration=Release ./ZXing.Net.Mobile.sln - name: NuGet Pack ZXing.Net.Mobile - run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=../artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile/ZXing.Net.Mobile.csproj + run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=../artifacts /p:PackageVersion=$NUPKG_VER /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg ./ZXing.Net.Mobile/ZXing.Net.Mobile.csproj - name: NuGet Pack ZXing.Net.Mobile.Forms - run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=../artifacts /p:PackageVersion=$NUPKG_VER ./ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj + run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=../artifacts /p:PackageVersion=$NUPKG_VER /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg ./ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj - name: Upload Artifacts uses: actions/upload-artifact@v1 with: From 5c913b6f3c9f9f18737820e8053d403c90eee415 Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Thu, 12 Mar 2020 09:21:54 -0400 Subject: [PATCH 7/9] Clean up names in build --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c145b36af..b2979d1a9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,9 +21,9 @@ jobs: run: echo ::set-env name=NUPKG_VER::${GITHUB_REF/refs\/tags\//} - name: Setup Environment run: mkdir ./artifacts - - name: Build Project + - name: NuGet Restore ZXing.Net.Mobile run: msbuild /t:Restore /p:Configuration=Release ./ZXing.Net.Mobile.sln - - name: Build Project + - name: Build ZXing.Net.Mobile run: msbuild /t:Build /p:Configuration=Release ./ZXing.Net.Mobile.sln - name: NuGet Pack ZXing.Net.Mobile run: msbuild /t:Pack /p:Configuration=Release /p:PackageOutputPath=../artifacts /p:PackageVersion=$NUPKG_VER /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg ./ZXing.Net.Mobile/ZXing.Net.Mobile.csproj From 469bd1b28fe530e77093fdbe42923f37f6949bf4 Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Thu, 12 Mar 2020 09:38:08 -0400 Subject: [PATCH 8/9] Include work from #802 --- ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs b/ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs index 00f1c75c0..3b653e0a9 100644 --- a/ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs +++ b/ZXing.Net.Mobile/MacOS/BitmapRenderer.macos.cs @@ -29,7 +29,8 @@ public NSImage Render(BitMatrix matrix, BarcodeFormat format, string content, En { for (var y = 0; y < matrix.Height; y++) { - context.SetFillColor(matrix[x, y] ? black : white); + var (cgX, cgY) = TransformToCoreGraphicsCoords(x, y, matrix); + context.SetFillColor(matrix[cgX, cgY] ? black : white); context.FillRect(new CGRect(x, y, 1, 1)); } } @@ -39,5 +40,8 @@ public NSImage Render(BitMatrix matrix, BarcodeFormat format, string content, En return img; } + + static (int cgX, int cgY) TransformToCoreGraphicsCoords(int x, int y, BitMatrix matrix) + => (x, Math.Abs(y - matrix.Height + 1)); } } \ No newline at end of file From c51e7fce5e88ec44a713cf8ae079fe98265b1dde Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Thu, 12 Mar 2020 09:51:08 -0400 Subject: [PATCH 9/9] Update build.yml --- .github/workflows/build.yml | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b2979d1a9..94ce11f04 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,20 +35,16 @@ jobs: name: NuGet path: ./artifacts - publish: - name: Publish + publish-gh: + name: Publish to GitHub Packages needs: build runs-on: windows-latest - if: github.event_name == 'release' + if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'release') steps: - name: Download Artifacts uses: actions/download-artifact@v1 with: name: NuGet - - name: Setup .NET Core - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 3.1.100 - name: Setup NuGet uses: nuget/setup-nuget@v1 with: @@ -59,4 +55,22 @@ jobs: nuget sources add -Name "GPR" -Source "https://nuget.pkg.github.com/Redth/index.json" -UserName Redth -Password ${{ secrets.GITHUB_TOKEN }} nuget setApiKey ${{ secrets.NUGET_API_KEY }} -Source "GPR" nuget push NuGet\*.nupkg -Source "GPR" + + publish-nugetorg: + name: Publish to NuGet.org + needs: build + runs-on: windows-latest + if: github.event_name == 'release' + steps: + - name: Download Artifacts + uses: actions/download-artifact@v1 + with: + name: NuGet + - name: Setup NuGet + uses: nuget/setup-nuget@v1 + with: + nuget-api-key: ${{ secrets.NUGET_API_KEY }} + nuget-version: 'latest' + - name: Push NuGet + run: | nuget push NuGet\*.nupkg -Source https://api.nuget.org/v3/index.json -ApiKey ${{ secrets.NUGET_ORG_API_KEY }}

  • 0XmM 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 pI|S40IWQOuf}l1102@oBpHNHc+cd$)z*L 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 literal 0 HcmV?d00001 diff --git a/Samples/iOS/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Contents.json b/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Contents.json similarity index 100% rename from Samples/iOS/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Contents.json rename to Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Contents.json diff --git a/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40.png b/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40.png new file mode 100644 index 0000000000000000000000000000000000000000..b251f6b87a9f1dcf2053438f0721eb3911963942 GIT binary patch literal 2269 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 FV1iMivo8Pu literal 0 HcmV?d00001 diff --git a/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@3x.png b/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9db4b03305b6e05233f990880438ca7c92ca6d15 GIT binary patch literal 9940 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 S#gjDv0000*U literal 0 HcmV?d00001 diff --git a/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png b/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ba58512274aa21d22defe58a52cd738639ed50 GIT binary patch literal 5365 zcmV-!pf{HqJOUc4Sq=Bm@$PC{00q02hF@c!al7G%m&&-|sOvk>}P`) zc@#hnA3i)2$MHWJV?F~;_(>;Eg-`qW$`Oz%G)Y+rwBi@lA-_-sP|?hJxMCeDpG*cf zskOGJs(-z)vGI2lKr3=?0K2lX^3TSY&su8-fW&buRgD>%#7R5^M&3^-4&m_gj46N$ zBB|uUFjPrZ0ThRc=QFvc9Yo`dF$x4CBG%eJ-`LnVhcnMO{O{>-7!Gi}u!pZxVmzV!wV`JkNfC-BoRCUD|Bi33DA3jVF1l+oH z3soI*SYKZUAPmE7f=Pj@2e1H4(dUVPmMt`w$?w3cz~n$Wa5BJZ z0WE_jB1BQd*47rYv$Je(Z`5?E=5ThGNcJWN)$-DnuugnnktP9c98CmRHOdu%sr&2&v2;zu zOxlzqrhq8NpqmmE`K@d0rk<3g}Gep4Vjw?ef17idrSx}n*v$22;X^w&zL!v~8n9La)V=8@| zK$@&@keQQYf*2zNK_i_kGs|qg0$`b^Drl7Rw=t?R1hiVMEJ&n&Mp0U=CaqSBMx#L-N6xHF(l6DR1V9_d zgkeal*`n2KxpB0{Ir;pLZK=6m1!9_=N!E$VbSeDRB4 zv2K7AU14}S227-O)i%+5^n?6c3Zu&|JgbK=Aarv*khcI+6Z zPMzZT@#9!)u{LIPb(NDRPiF0p9zDwZ{2crH9YloppLsuL&YWR!X_2k%EmV~=XU_2W zeMNxF(Rz4uJXhaPh?{~_Sj?0&CRj9y9>ZmPd&wxPd>@w;v)C&->1=NOyu}S znq+Z1V2lt&1FW_5`+c_>#xRJYL|{v&(@9Li_33mvSZf&!2HDk^AX|XE%p_$o)>@({ zLRIN>I*Ge+_50m@XO^m%#Pqt|UN(O^mWU9=QEBeIy}jK0jbVR(KkHYtrUPqOG1O*J zE!!qYCR`f%((mA+SaIUC&RUy&PE|kuZc25g5E!z#lKF~l^D@ciH|gBQ`PX!;63-RB zeE{VVdqNGXyAQ0E*G=XELVcZY|2As8RGX@Oh6GN_8O__o^LxfHwO<(CY>t{Zs~h1w zeS%iC*4w92=LM_Cm+y2p+Xi`f_MG9>nPz$9jEU;5JvYnZBt^5WmZzK9sz624NaZkM zoECYQ42&TVw}+cVD{9M=e~Du*15^QWlu6b^$--bM6NOWT(j*>GYMrN$0An(6LJ_8n z&@hIksR{`#5vD|lMY7cm3T9e2cdfSK=h^oe&p5R^{VHhHS$wKnV%BRFPSA!C!lYYM zgn1EKBFuW$bU}nc;^c#5u7(I<0{XD2=C^FaGWmU2v99{LO5P}$i{}BNQdY~9M|dMb zXbepeno0e%2rI@gZ48SQQ!pZ|B;z$jNN%8L8biZK24H#q+^zVi&WwGZQwqZzrqTD3 zH7MsMI=K%4XG%>GW<;1y>K8;fhA=0>VJO`si?tlXwciwBDk+~$%(PSSd#Q^UwU~8f zeiz~auk@|p6MPP~JeVKPQGO%@W<*#@%n)D&cwZxAE(|#_Jzcsm5-yV17|Uss+lGr)~s;quMQi-Qc~X* zVPR*7APm`g>n(a)TQrl~sr%QiF}Qb^=FTpM2Loo4K8HkD7h%^(>Cto+jB55_Dd(jq zS@~4gFQuAWqpD5&ff*jWyfRg4iPMgwA}p(-$*oEMop)Hcaf1iv&T;qZRRGjl{`2c! zC%$}zsbBqy?%lhHF{rg10S=3>ATG)lxlTdzN|i7!MG-TtE6ZI+BYapHAn)Wg{i@rI z^z#(LvIvg}EH#^mF_>nPCNL8O?5on4oy|6$Q*(37h|n^IAP5MirVwLzPY|#n!kS1~ zfD!JX#J7|;t95dE1HiDj$zi2WgFFLz%~m|K1FZzGwix!-*4VglgPnW#P$0GzRM~v{ zZKe(#LV?cuI;x6Q#ahe8jTrsZnHmWp+NGT8vYgna0 zX`muvBed7QJ%on991u1dyz`B3@Zg)@B#vX2fGCcc0e=4Z&+~I*P#}zBngG_)-rM8q z=RSvsus=J?>{CxMv$I2SuPdd`<25J~q$*pvwsdkm_B_nzK>ue1L8&l5g{^$h9t=jze5@i*8$G-4?2ktv{;0F z5j2W8`Gqg=C)cmD`Zq7L1vG+y4)Dykzs)DFU+0t8uhahQXBhxu3|sT_JooCWeDeBr zR-S*JUbjat2!>Jw$7$EQrO{EcvWuQ%@=;6;fQ|?~RpwS!XrDaE!r>!Xy#h-oPS8${ zsi&8g*h=aGV`#tky|hoBq&YiFXJegx>b2}$fit4($eV8&f5d$tih(ZB7r{mmYAx|# zP-+wPdfB5k8%5r_*jl;>J^YUn4+NIi<<|Efp<$Cfr#lE09Xv98FzAX42Y@wo#bEF# zYg*bP7M}a&^*Y=zp?bhn9*LPzWPnEUU#&$GEh|kM$GK+J)EQM8IOZQ^O(&MClyBgu z7O+Yl$Iv6Fx<^u@9#w_7?LkYGU}gphLxQ=vOaKKM?KUPkPBDedM-`!&)CG+OGpbDC zNpq%>&N+s>twwYmp<$!*5gvs?V8&X)W|JG={Vx4Gces1?DpR;8&`scHU;Qe-UR?#? z!G#NsK~;iIhbv$C3bRL#vi^%-FtfPGwA$e?uS%NcG*tC&KrG1cuIM0|7O1+NyAgVq zFLU?uWdv9NqC{hM&z<98fjN_mwbJji`j_F)sQ z#3Puc(_HuQQDaJ$f;nP}@dNmZ$II>2uyU4>Kjm>8Sib5Ax2@1Prup1+9Qp8vxp(av z4}bC#+QzVFEeoId40De?h5~CBFJgcBO9Bzr!jRQZeTv!lyoZ|?FESWJ^eDg1kn-j7 z#_IX20#i&d9!DM*;K@w$m5-RfwH>bPtFi@jqKGFx{b@dO_ADp=;xFlnV1j_Y2p@Xo z6+UwIEFV34mct+W7y}V7hG=@4=U#b*kDfhC`^hKS?DyCKVqb>!0W@C|jjzjlt#+x8 zk|VUp@uem0t1?x}9ZjxXU_+IAKxc0cjUuAm9Yht0V^F2LwuUC#iowQ4UKhvoH#gBJ zVyoZhKCq=qaoek;Ib`+5K2EM;8|M$pZO7kBrYc;W!zF6fGvwi^tIDP-cU0LFaoY-G z7|hOce}10$_;F^B96^Er2}2e?@Btn!FSEI{giKGn$7*57J>Y>V+p0vKx$8hF6;+af zi&uXKM-%ukvh2SUh13sdrLkkw?YY29Wu$$8l)xdDT4H9Ij+{C>Fr2y;>?eg<}OWK z7^J{-xwfy$t||rx95~^B9YrjNFxTs4(NA#qj`s!wHlv93IOc_9oOM;UROzUeZobEB zSe8KC$OfCx>1P1oHmF^7!UF6n z+*eD>n#@e|#e#bYU=P*OPs&|?OH|Q@Ni@t?SG0w4=C*=J$xjXemI<6gQqY$2VBS5A zDyp`Y;aC-{WsuZ&apu)Xd{S8uWlJraYT329zZ$3#sbZ~PyG8=$leeilP+!7!jctt*&kk^ClE zjE055%AooE#n=_L7Aq#Jw~4l(o`{D7XP}lSNjXpZi~`H&KkIl)*F06UA;qYi$(5bH zh4gLM>c(@}?)@*^YvPFgcLr&>&78HWX34qrAP+B`P5@e6`Hk#GT9%h{sWwU$0Vq1kqHyVormJ5rS8Qyv_Ek`_ z@A2^1Y3{tWHZ$+iIBGL+(lR&Z=&`gSM;ylm4a@gkqqNK)C955hm1#5@7-ML)T8=rZ zgkdAgHJzQEEt%Zh{2ay@n$0HQ-lP0c&hlmX0?+KaUi^otd6?^_cAK zk?Euipw(&)jb9oo$@NlIW@l#!0{4=I+JfgFLp4z{@0>c-~RTuT)TFSx88aS z6F9+c-nzxrt5->LRoB-y*xA|1Qm+2v@@1x`r`g=v%)q#E5o*xA|1vbcZx(|>1rdYaA6O@c5O>$_4)V`d0M%gf7uZ;bgXRgG3x zSHrcnHTwO2{yIwXx=RoQG@H%5EVkLZkyBGs*-G{YeF76?kJ5_TmX1{|i){?*7_+L$ zJO)sDydei(_14UI>vp@SRT_;jc|*?u7RNF3^YhHl z&vX0sZ5srEiR1Xi&CSgp1Hsrc{mh5ql4H{qE2_RUBuTR{naYb1rdm@&>5!?vNfT`a zu(1UpGm$V1Oa4dIJ%wyGTclAn^+^uwJZcxmPhajY`pxwF)YMeA1u911aWv6GkfMpE zAf_u-e7OnYJU`5W6WSQ`VJ1b3J4|eS}txtqZ0aaCk zAYi%OMuAqV#nR#;cRC${g0rSDZt1g@_ff+@CZAETY1<5|iD^O&a|}rdpad52ykM?* zwg0p@ugCz!`LKS!&-Cekb+cXT!3!3%kA5D z01EFCm2M}zXIB$xoab7k)F;o)%`q4Z(l#YKsU#swKjm(HeVx_SRpK~idwY9`xfFl` zN<%>Ud|YYvipi#5)9jr(p^6=fCoAsiDyrYdfdwu~A31V_Mx(*~`}Z;K)nYNmq-U2y z8g@lh#TY}c*W=EeI~+N3g!%dTkw33e&fza_BZ?{BX@tz$A_sr`UG!xIz)I$onrHIa zUB>&VAP8J^zI~fGj@1~Ws=6IT(XW#xHU%ukA^9)X+M6PB!Wh%<^?Hq4w{FpFHZke% zQ&gx3f)Av0J5g<$^`A8PEpyn_VqfGeMnHdLty1cW1}?!*MPwi%Eo<#Jx3{-9sr=v? zB)?GCZns}F#{8>@ET)qj=(a&TKn;PEwJ!BlB#$ZNu?5dkRe2h@QTH4Dsvw!FOjq=`hILYyLZ- zZnuk@vHQql1VIpOY;4?x>|s%LbL1t1Ke_MsiP9hbEzvkrlL^}VU!*L^R_VV1@e{S} Tvdzsu00000NkvXXu0mjfy~$!N literal 0 HcmV?d00001 diff --git a/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png b/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9921adf710ea4d3865bc126beafd4bb65580e559 GIT binary patch literal 14881 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 FV1jQi%;W$7 literal 0 HcmV?d00001 diff --git a/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png b/Samples/Sample.iOS/Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7e1c623d7eb20152a1c3a95e7fd36e08c38a604f GIT binary patch literal 3800 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 O0000 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 None obj\$(Platform)\$(Configuration)\ + i386, x86_64 none @@ -30,8 +31,9 @@ prompt 4 False - None + SdkOnly obj\$(Platform)\$(Configuration)\ + i386, x86_64 True @@ -95,8 +97,15 @@ + + False + ..\..\ZXing.Net\zxing.dll + + + 1.5.1 + @@ -109,62 +118,46 @@ - - - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB} - ZXing.Net.Mobile.Core - - - {6CBD1DF3-1FD3-4F20-80A2-A0C7414C411A} - ZXing.Net.Mobile.iOS - False - False - - - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3} - zxing.portable - - - false + false - false + false - false + false - false + false - false + false - false + false - false + false - false + false - false + false - false + false - false + false - false + false - false + false @@ -173,4 +166,10 @@ + + + {8b7a8ab6-35a4-4c9c-83e1-96ba8be3c941} + ZXing.Net.Mobile + + \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone.sln b/Samples/WindowsPhone/Sample.WindowsPhone.sln deleted file mode 100644 index a0c40e219..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone.sln +++ /dev/null @@ -1,82 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zxing.portable", "..\..\Source\ZXing.Net\Source\lib\zxing.portable.csproj", "{24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.Core", "..\..\Source\ZXing.Net.Mobile.Core\ZXing.Net.Mobile.Core.csproj", "{7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZXing.Net.Mobile.WindowsPhone", "..\..\Source\ZXing.Net.Mobile.WindowsPhone\ZXing.Net.Mobile.WindowsPhone.csproj", "{C9EFC2F6-AC4C-446C-8FBF-91824B00431D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sample.WindowsPhone", "Sample.WindowsPhone\Sample.WindowsPhone.csproj", "{BC6808C6-5CEF-4D29-A23B-D2155334243D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|ARM.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.ActiveCfg = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Debug|x86.Build.0 = Debug|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|Any CPU.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|ARM.Build.0 = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.ActiveCfg = Release|Any CPU - {24B441F2-CBE9-4405-9FD0-72EBCBEA0EC3}.Release|x86.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|ARM.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.ActiveCfg = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Debug|x86.Build.0 = Debug|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|Any CPU.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|ARM.Build.0 = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.ActiveCfg = Release|Any CPU - {7528DD0A-1781-47F4-ADBF-EEDDB011F6BB}.Release|x86.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|ARM.ActiveCfg = Debug|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|ARM.Build.0 = Debug|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|x86.ActiveCfg = Debug|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Debug|x86.Build.0 = Debug|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|Any CPU.Build.0 = Release|Any CPU - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|ARM.ActiveCfg = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|ARM.Build.0 = Release|ARM - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|x86.ActiveCfg = Release|x86 - {C9EFC2F6-AC4C-446C-8FBF-91824B00431D}.Release|x86.Build.0 = Release|x86 - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|ARM.ActiveCfg = Debug|ARM - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|ARM.Build.0 = Debug|ARM - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|ARM.Deploy.0 = Debug|ARM - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|x86.ActiveCfg = Debug|x86 - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|x86.Build.0 = Debug|x86 - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Debug|x86.Deploy.0 = Debug|x86 - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|Any CPU.Build.0 = Release|Any CPU - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|Any CPU.Deploy.0 = Release|Any CPU - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|ARM.ActiveCfg = Release|ARM - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|ARM.Build.0 = Release|ARM - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|ARM.Deploy.0 = Release|ARM - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|x86.ActiveCfg = Release|x86 - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|x86.Build.0 = Release|x86 - {BC6808C6-5CEF-4D29-A23B-D2155334243D}.Release|x86.Deploy.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/App.xaml b/Samples/WindowsPhone/Sample.WindowsPhone/App.xaml deleted file mode 100644 index 27ba99249..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/App.xaml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/Samples/WindowsPhone/Sample.WindowsPhone/App.xaml.cs b/Samples/WindowsPhone/Sample.WindowsPhone/App.xaml.cs deleted file mode 100644 index 17d453370..000000000 --- a/Samples/WindowsPhone/Sample.WindowsPhone/App.xaml.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Navigation; -using System.Windows.Shapes; -using Microsoft.Phone.Controls; -using Microsoft.Phone.Shell; - -namespace ZxingSharp.WindowsPhone.Sample -{ - public partial class App : Application - { - ///