diff --git a/MicroBlink.bundle/Info.plist b/MicroBlink.bundle/Info.plist index 0684bbbb..b8401728 100644 Binary files a/MicroBlink.bundle/Info.plist and b/MicroBlink.bundle/Info.plist differ diff --git a/MicroBlink.bundle/MicroBlink b/MicroBlink.bundle/MicroBlink new file mode 100755 index 00000000..ddfdc675 Binary files /dev/null and b/MicroBlink.bundle/MicroBlink differ diff --git a/MicroBlink.bundle/No Camera-100.png b/MicroBlink.bundle/No Camera-100.png new file mode 100644 index 00000000..73160f15 Binary files /dev/null and b/MicroBlink.bundle/No Camera-100.png differ diff --git a/MicroBlink.bundle/arrow.png b/MicroBlink.bundle/arrow.png index cad3b33d..316e3fbf 100644 Binary files a/MicroBlink.bundle/arrow.png and b/MicroBlink.bundle/arrow.png differ diff --git a/MicroBlink.bundle/arrow@2x.png b/MicroBlink.bundle/arrow@2x.png index 51184651..b14d05cf 100644 Binary files a/MicroBlink.bundle/arrow@2x.png and b/MicroBlink.bundle/arrow@2x.png differ diff --git a/MicroBlink.bundle/arrow_pressed.png b/MicroBlink.bundle/arrow_pressed.png index 76c6c5d4..b2257174 100644 Binary files a/MicroBlink.bundle/arrow_pressed.png and b/MicroBlink.bundle/arrow_pressed.png differ diff --git a/MicroBlink.bundle/arrow_pressed@2x.png b/MicroBlink.bundle/arrow_pressed@2x.png index eb6c22b5..f30f3c62 100644 Binary files a/MicroBlink.bundle/arrow_pressed@2x.png and b/MicroBlink.bundle/arrow_pressed@2x.png differ diff --git a/MicroBlink.bundle/en.strings b/MicroBlink.bundle/en.strings index a51a5156..a3e2be95 100644 Binary files a/MicroBlink.bundle/en.strings and b/MicroBlink.bundle/en.strings differ diff --git a/MicroBlink.bundle/torchoff.png b/MicroBlink.bundle/torchoff.png index 2710dc35..614723bb 100644 Binary files a/MicroBlink.bundle/torchoff.png and b/MicroBlink.bundle/torchoff.png differ diff --git a/MicroBlink.bundle/torchoff@2x.png b/MicroBlink.bundle/torchoff@2x.png index 55d19199..3fd76a34 100644 Binary files a/MicroBlink.bundle/torchoff@2x.png and b/MicroBlink.bundle/torchoff@2x.png differ diff --git a/MicroBlink.bundle/torchoff_pressed.png b/MicroBlink.bundle/torchoff_pressed.png index 1a506f34..6aea122a 100644 Binary files a/MicroBlink.bundle/torchoff_pressed.png and b/MicroBlink.bundle/torchoff_pressed.png differ diff --git a/MicroBlink.bundle/torchoff_pressed@2x.png b/MicroBlink.bundle/torchoff_pressed@2x.png index 51bf4a52..543e1a1d 100644 Binary files a/MicroBlink.bundle/torchoff_pressed@2x.png and b/MicroBlink.bundle/torchoff_pressed@2x.png differ diff --git a/MicroBlink.bundle/torchon.png b/MicroBlink.bundle/torchon.png index bea75656..66c4e117 100644 Binary files a/MicroBlink.bundle/torchon.png and b/MicroBlink.bundle/torchon.png differ diff --git a/MicroBlink.bundle/torchon@2x.png b/MicroBlink.bundle/torchon@2x.png index f619345b..85205312 100644 Binary files a/MicroBlink.bundle/torchon@2x.png and b/MicroBlink.bundle/torchon@2x.png differ diff --git a/MicroBlink.bundle/torchon_pressed.png b/MicroBlink.bundle/torchon_pressed.png index 1bbac3cc..e73bdb15 100644 Binary files a/MicroBlink.bundle/torchon_pressed.png and b/MicroBlink.bundle/torchon_pressed.png differ diff --git a/MicroBlink.bundle/torchon_pressed@2x.png b/MicroBlink.bundle/torchon_pressed@2x.png index 96055bd6..9e59e4d2 100644 Binary files a/MicroBlink.bundle/torchon_pressed@2x.png and b/MicroBlink.bundle/torchon_pressed@2x.png differ diff --git a/MicroBlink.framework/Headers/MicroBlink.h b/MicroBlink.framework/Headers/MicroBlink.h index 67fd50dd..36ec99df 100644 --- a/MicroBlink.framework/Headers/MicroBlink.h +++ b/MicroBlink.framework/Headers/MicroBlink.h @@ -16,6 +16,9 @@ #import "PPModernOverlayViewController.h" #import "PPOverlaySubview.h" +// Permission denied view controller +#import "PPPermissionDeniedViewController.h" + // Detectors #import "PPPointsDetectorResult.h" #import "PPQuadDetectorResult.h" diff --git a/MicroBlink.framework/Headers/PPApp.h b/MicroBlink.framework/Headers/PPApp.h new file mode 100644 index 00000000..48878eb0 --- /dev/null +++ b/MicroBlink.framework/Headers/PPApp.h @@ -0,0 +1,80 @@ +// +// App.h +// iphone-photopay +// +// Created by Ja on 11/2/11. +// Copyright (c) 2011 jcerovec@gmail.com. All rights reserved. +// + +#import +#import "PPMicroBlinkDefines.h" + +#ifdef __OBJC__ +#import +#endif + +#define PP_IS_IPAD (([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)) + +/* + * System Versioning Preprocessor Macros + */ + +#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) +#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) +#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) \ + ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) \ + ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) + +#define PP_NOTIFY(notificationKey, valueKey) \ + { \ + NSDictionary *dict = [NSDictionary dictionaryWithObject:@(YES) forKey:valueKey]; \ + [[NSNotificationCenter defaultCenter] postNotificationName:notificationKey object:nil userInfo:dict]; \ + } + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPApp : NSObject + +@property (nonatomic) NSString *language; + +/** Bundle with resources used in framework */ +@property (nonatomic) NSBundle *resourcesBundle; + +/** Obtain the shared instance */ ++ (instancetype)instance; + +/** Designated initializer */ +- (id)init; + +/** Sets the language used in PhotoPaySDK */ +- (void)setLanguage:(NSString *)language; + +/** Sets the language to default (i.e. language specified in the user's device settings */ +- (void)setDefaultLanguage; + +/** Pushes the UIApplication status bar style to a internally handled stack */ +- (void)pushStatusBarStyle:(UIStatusBarStyle)statusBarStyle; + +/** Returns the status bar style to the last saved value */ +- (void)popStatusBarStyle; + +/** Push the status bar hidden value */ +- (void)pushStatusBarHidden:(BOOL)hidden; + +/** pops the status bar hidden value */ +- (void)popStatusBarHidden; + +/** Sets the key that the help was shown to true */ +- (void)setHelpShown:(BOOL)value; + +/** Returns true if the help was already shown */ +- (BOOL)isHelpShown; + +/** + * This method check existance of the default resources bundle Microblink.bundle, + * and throws an exception if it's missing + */ ++ (NSBundle *)verifyAndGetDefaultResourcesBundle; + +@end diff --git a/MicroBlink.framework/Headers/PPBarDecoderRecognizerResult.h b/MicroBlink.framework/Headers/PPBarDecoderRecognizerResult.h index bf2984f7..17290869 100644 --- a/MicroBlink.framework/Headers/PPBarDecoderRecognizerResult.h +++ b/MicroBlink.framework/Headers/PPBarDecoderRecognizerResult.h @@ -12,28 +12,27 @@ /** * Type of the barcode which BarDecoderRecognizer returnes */ -typedef NS_ENUM(NSUInteger, PPBarDecoderBarcodeType){ +typedef PP_DEPRECATED_IOS(1_0, 5_9_3) NS_ENUM(NSUInteger, PPBarDecoderBarcodeType) { /** Code 128 */ PPBarDecoderBarcodeTypeCode128, /** Code 39 */ PPBarDecoderBarcodeTypeCode39 }; -NS_ASSUME_NONNULL_BEGIN - /** * Result of scanning with BarDecoder Recognizer * * Contains raw Barcode detailed data, barcode type, and methods for getting string representation of results. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerResult : PPRecognizerResult +PP_CLASS_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeRecognizerResult instead") +@interface PPBarDecoderRecognizerResult : PPRecognizerResult /** * Type of the barcode scanned * * @return Type of the barcode */ -- (PPBarDecoderBarcodeType)barcodeType; +- (PPBarDecoderBarcodeType)barcodeType PP_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeType instead"); /** * Flag indicating uncertain scanning data @@ -44,7 +43,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerResult : PPRecogniz /** * Byte array with result of the scan */ -- (NSData *)data; +- (NSData *_Nullable)data; /** * Retrieves string content of the scanned data using guessed encoding. @@ -57,7 +56,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerResult : PPRecogniz * * @return created string, or nil if encoding couldn't be found. */ -- (NSString *)stringUsingGuessedEncoding; +- (NSString *_Nullable)stringUsingGuessedEncoding; /** * Retrieves string content of the scanned data using given encoding. @@ -66,18 +65,18 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerResult : PPRecogniz * * @return String created from data property, using given encoding */ -- (NSString *)stringUsingEncoding:(NSStringEncoding)encoding; +- (NSString *_Nullable)stringUsingEncoding:(NSStringEncoding)encoding; /** * Raw barcode detailed result */ -- (PPBarcodeDetailedData *)rawData; +- (PPBarcodeDetailedData *_Nullable)rawData; /** * Byte array with extended result of the scan, if available. */ -- (NSData *)extendedData; +- (NSData *_Nullable)extendedData; /** * Retrieves string content of the extended scanned data using guessed encoding. @@ -90,7 +89,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerResult : PPRecogniz * * @return created string, or nil if encoding couldn't be found. */ -- (NSString *)extendedStringUsingGuessedEncoding; +- (NSString *_Nullable)extendedStringUsingGuessedEncoding; /** * Retrieves string content of the extended scanned data using given encoding. @@ -99,12 +98,12 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerResult : PPRecogniz * * @return String created from extendedData property, using given encoding */ -- (NSString *)extendedStringUsingEncoding:(NSStringEncoding)encoding; +- (NSString *_Nullable)extendedStringUsingEncoding:(NSStringEncoding)encoding; /** * Extended Raw barcode detailed result */ -- (PPBarcodeDetailedData *)extendedRawData; +- (PPBarcodeDetailedData *_Nullable)extendedRawData; /** * Method which gives string representation for a given PPBarDecoderBarcodeType enum value. @@ -113,8 +112,6 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerResult : PPRecogniz * * @return String representation of a given PPBarDecoderBarcodeType enum value. */ -+ (NSString *)toTypeName:(PPBarDecoderBarcodeType)type; ++ (NSString *_Nonnull)toTypeName:(PPBarDecoderBarcodeType)type PP_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeType instead"); @end - -NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPBarDecoderRecognizerSettings.h b/MicroBlink.framework/Headers/PPBarDecoderRecognizerSettings.h index b069a95c..ea680f26 100644 --- a/MicroBlink.framework/Headers/PPBarDecoderRecognizerSettings.h +++ b/MicroBlink.framework/Headers/PPBarDecoderRecognizerSettings.h @@ -12,9 +12,10 @@ * Settings class for configuring BarDecoder Recognizer * * BarDecoder recognizer is used for scanning Code 39 and Code 128 barcodes and is superior in performance - * to ZXIngRecognizer + * to ZXingRecognizer */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerSettings : PPRecognizerSettings +PP_CLASS_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeRecognizerSettings instead") +@interface PPBarDecoderRecognizerSettings : PPRecognizerSettings /** * Set this to YES to scan Code 39 barcodes @@ -42,8 +43,8 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerSettings : PPRecogn /** * Use automatic scale detection feature. This normally should not be used. - * The only situation where this helps in getting better scanning results is - * when using kPPUseVideoPresetPhoto on iPad devices. + * The only situation where this helps in getting better scanning results is + * when using kPPUseVideoPresetPhoto on iPad devices. * Video preview resoution of 2045x1536 in that case is very large and autoscale helps. * * Default: NO @@ -51,7 +52,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarDecoderRecognizerSettings : PPRecogn @property (nonatomic) BOOL autoDetectScale; /** - * Set this to YES to enable scanning of lower resolution barcodes + * Set this to YES to enable scanning of lower resolution barcodes * at cost of additional processing time. * * Default: NO diff --git a/MicroBlink.framework/Headers/PPBarcodeDetailedData.h b/MicroBlink.framework/Headers/PPBarcodeDetailedData.h index c8f846b6..73299790 100644 --- a/MicroBlink.framework/Headers/PPBarcodeDetailedData.h +++ b/MicroBlink.framework/Headers/PPBarcodeDetailedData.h @@ -24,7 +24,8 @@ typedef NS_ENUM(NSInteger, PPBarcodeElementType) { /** * represents one raw element in barcode */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarcodeElement : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBarcodeElement : NSObject /** byte array contained in this barcode element */ @property (nonatomic, retain, readonly) NSData *elementBytes; @@ -35,15 +36,15 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarcodeElement : NSObject /** Designated initializer shich sets byte array for specific barcode element type */ -- (instancetype)initWithBytes:(NSData *)bytes - type:(PPBarcodeElementType)type; +- (instancetype)initWithBytes:(NSData *)bytes type:(PPBarcodeElementType)type; @end /** * represents the collection of barcode raw elements */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBarcodeDetailedData : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBarcodeDetailedData : NSObject /** array of barcode elements (PPBarcodeElement *) contained in barcode */ @property (nonatomic, retain, readonly) NSArray *barcodeElements; diff --git a/MicroBlink.framework/Headers/PPBarcodeOverlayViewController.h b/MicroBlink.framework/Headers/PPBarcodeOverlayViewController.h new file mode 100644 index 00000000..a7aa3c78 --- /dev/null +++ b/MicroBlink.framework/Headers/PPBarcodeOverlayViewController.h @@ -0,0 +1,14 @@ +// +// PPBarcodeOverlayViewController.h +// BarcodeFramework +// +// Created by Jura on 22/12/13. +// Copyright (c) 2015 MicroBlink Ltd. All rights reserved. +// + +#import "PPBaseBarcodeOverlayViewController.h" + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBarcodeOverlayViewController : PPBaseBarcodeOverlayViewController + +@end diff --git a/MicroBlink.framework/Headers/PPBarcodeRecognizerResult.h b/MicroBlink.framework/Headers/PPBarcodeRecognizerResult.h new file mode 100644 index 00000000..f105e5e2 --- /dev/null +++ b/MicroBlink.framework/Headers/PPBarcodeRecognizerResult.h @@ -0,0 +1,95 @@ +// +// PPBarcodeRecognizerResult.h +// MicroBlinkDev +// +// Created by Jura Skrlec on 26/06/2017. +// +// + +#import "PPRecognizerResult.h" +#import "PPBarcodeDetailedData.h" + +/** + * Type of the barcode which BarDecoderRecognizer returnes + */ +typedef NS_ENUM(NSUInteger, PPBarcodeType) { + /** Code 39 */ + PPBarcodeTypeAztec, + /** Code 128 */ + PPBarcodeTypeCode128, + /** Code 39 */ + PPBarcodeTypeCode39, + /** Data Matrix */ + PPBarcodeTypeDataMatrix, + /** EAN 13 */ + PPBarcodeTypeEAN13, + /** EAN 8 */ + PPBarcodeTypeEAN8, + /** ITF */ + PPBarcodeTypeITF, + /** QR code */ + PPBarcodeTypeQR, + /** UPCA */ + PPBarcodeTypeUPCA, + /** UPCE */ + PPBarcodeTypeUPCE, +}; + + +/** + * Result of scanning with Barcode Recognizer + * + * Contains raw Barcode detailed data, barcode type, and methods for getting string representation of results. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBarcodeRecognizerResult : PPRecognizerResult + +/** + * Type of the barcode scanned + * + * @return Type of the barcode + */ +- (PPBarcodeType)barcodeType; + +/** + * Byte array with result of the scan + */ +- (NSData *_Nullable)data; + +/** + * Retrieves string content of the scanned data using guessed encoding. + * + * If you're 100% sure you know the exact encoding in the barcode, use stringUsingEncoding: method. + * Otherwise stringUsingDefaultEncoding. + * + * This method uses `[NSString stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:` method for + * guessing the encoding. + * + * @return created string, or nil if encoding couldn't be found. + */ +- (NSString *_Nullable)stringUsingGuessedEncoding; + +/** + * Retrieves string content of the scanned data using given encoding. + * + * @param encoding The encoding for the returned string. + * + * @return String created from data property, using given encoding + */ +- (NSString *_Nullable)stringUsingEncoding:(NSStringEncoding)encoding; + +/** + * Raw barcode detailed result + */ +- (PPBarcodeDetailedData *_Nullable)rawData; + +/** + * Method which gives string representation for a given PPBarcodeType enum value. + * + * @param type PPBarcodeType enum value + * + * @return String representation of a given PPBarcodeType enum value. + */ ++ (NSString *_Nonnull)toTypeName:(PPBarcodeType)type; + +@end diff --git a/MicroBlink.framework/Headers/PPBarcodeRecognizerSettings.h b/MicroBlink.framework/Headers/PPBarcodeRecognizerSettings.h new file mode 100644 index 00000000..c68614a4 --- /dev/null +++ b/MicroBlink.framework/Headers/PPBarcodeRecognizerSettings.h @@ -0,0 +1,118 @@ +// +// PPBarcodeRecognizerSettings.h +// MicroBlinkDev +// +// Created by Jura Skrlec on 26/06/2017. +// +// + +#import "PPRecognizerSettings.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Settings class for configuring Barcode Recognizer + * + * VarcodeRecognizer recognizer is used for scanning most of 1D barcode formats, and 2D format + * such as Aztec, DataMatrix and QR code + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBarcodeRecognizerSettings : PPRecognizerSettings + +/** + * Set this to YES to scan Aztec 2D barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanAztec; + +/** + * Set this to YES to scan Code 128 1D barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanCode128; + +/** + * Set this to YES to scan Code 39 1D barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanCode39; + +/** + * Set this to YES to scan DataMatrix 2D barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanDataMatrix; + +/** + * Set this to YES to scan EAN 13 barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanEAN13; + +/** + * Set this to YES to scan EAN8 barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanEAN8; + +/** + * Set this to YES to scan ITF barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanITF; + +/** + * Set this to YES to scan QR barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanQR; + +/** + * Set this to YES to scan UPCA barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanUPCA; + +/** + * Set this to YES to scan UPCE barcodes + * + * Default: NO + */ +@property (nonatomic) BOOL scanUPCE; + +/** + * Set this to YES to allow scanning barcodes with inverted intensities + * (i.e. white barcodes on black background) + * + * Default: NO + * + * @Warning: this option doubles frame processing time + */ +@property (nonatomic) BOOL scanInverse; + +/** + * Set this to YES to allow slower, but better image processing. + * + * Defailt: YES + * + */ +@property (nonatomic, assign) BOOL useSlowerThoroughScan; + + +/** + * Set manatee license key and unlock the aztec scanning feature. + */ +@property (nonatomic) NSString *manateeKey; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPBaseBarcodeOverlayViewController.h b/MicroBlink.framework/Headers/PPBaseBarcodeOverlayViewController.h new file mode 100644 index 00000000..31f8468e --- /dev/null +++ b/MicroBlink.framework/Headers/PPBaseBarcodeOverlayViewController.h @@ -0,0 +1,19 @@ +// +// PPBaseBarcodeOverlayViewController.h +// BarcodeFramework +// +// Created by Jura on 09/06/14. +// Copyright (c) 2015 MicroBlink Ltd. All rights reserved. +// + +#import "PPBaseOverlayViewController.h" + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBaseBarcodeOverlayViewController : PPBaseOverlayViewController + +/** + Margin for the buttons in heads up display + */ +@property (nonatomic, assign) CGFloat buttonsMargin; + +@end diff --git a/MicroBlink.framework/Headers/PPBaseOverlayViewController.h b/MicroBlink.framework/Headers/PPBaseOverlayViewController.h index 23d30f8f..f01bf674 100644 --- a/MicroBlink.framework/Headers/PPBaseOverlayViewController.h +++ b/MicroBlink.framework/Headers/PPBaseOverlayViewController.h @@ -9,23 +9,25 @@ #import #import "PPOverlayViewController.h" #import "PPOverlaySubview.h" +#import "PPGeometry.h" NS_ASSUME_NONNULL_BEGIN /** * Common base class for default overlay view controllers */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBaseOverlayViewController : PPOverlayViewController +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBaseOverlayViewController : PPOverlayViewController /** * Registers a subview for PPOverlaySubview protocol events. */ -- (void)registerOverlaySubview:(UIView*)subview; +- (void)registerOverlaySubview:(UIView *)subview; /** * Unregisters a subview for PPOverlaySubview protocol events. */ -- (void)unregisterOverlaySubview:(UIView*)subview; +- (void)unregisterOverlaySubview:(UIView *)subview; /** * Delegate for subview animation events. @@ -34,4 +36,4 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPBaseOverlayViewController : PPOverlayVi @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPBasePhotoPayOverlayViewController.h b/MicroBlink.framework/Headers/PPBasePhotoPayOverlayViewController.h new file mode 100644 index 00000000..4320ca27 --- /dev/null +++ b/MicroBlink.framework/Headers/PPBasePhotoPayOverlayViewController.h @@ -0,0 +1,29 @@ +// +// PPBasePhotoPayOverlayViewController.h +// PhotoPayFramework +// +// Created by Jura on 09/06/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPBaseOverlayViewController.h" + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBasePhotoPayOverlayViewController : PPBaseOverlayViewController + +/** + Margin for the buttons in heads up display + */ +@property (nonatomic, assign) CGFloat buttonsMargin; + +/** + Supported orientations mask + */ +@property (nonatomic, assign) UIInterfaceOrientationMask hudMask; + +/** + YES if help button should be displayed + */ +@property (nonatomic, assign) BOOL shouldDisplayHelpButton; + +@end diff --git a/MicroBlink.framework/Headers/PPBlinkBarcodeRecognizers.h b/MicroBlink.framework/Headers/PPBlinkBarcodeRecognizers.h index cbfe2fd8..366564cd 100644 --- a/MicroBlink.framework/Headers/PPBlinkBarcodeRecognizers.h +++ b/MicroBlink.framework/Headers/PPBlinkBarcodeRecognizers.h @@ -25,4 +25,15 @@ #import "PPBarDecoderRecognizerSettings.h" #import "PPBarDecoderRecognizerResult.h" +// SimNumber +#import "PPSimNumberRecognizerSettings.h" +#import "PPSimNumberRecognizerResult.h" + +// Barcode +#import "PPBarcodeRecognizerSettings.h" +#import "PPBarcodeRecognizerResult.h" + +// Basic functionality +#import "PPRecognizerResult+Test.h" + #endif /* PPBlinkBarcodeRecognizers_h */ diff --git a/MicroBlink.framework/Headers/PPBlurredFieldOfViewOverlaySubview.h b/MicroBlink.framework/Headers/PPBlurredFieldOfViewOverlaySubview.h new file mode 100644 index 00000000..c67f1c73 --- /dev/null +++ b/MicroBlink.framework/Headers/PPBlurredFieldOfViewOverlaySubview.h @@ -0,0 +1,29 @@ +// +// FieldOfViewOverlaySubview.h +// PhotoPayFramework +// +// Created by Jura on 18/06/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Overlay subview presenting the status of detection. + * The subview is presented as unblurred view on blurred background, where unblurred location animates to detection location. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPBlurredFieldOfViewOverlaySubview : PPOverlaySubview + +- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +/** Duration of the animation */ +@property (nonatomic, assign) CGFloat animationDuration; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPCameraCoordinator.h b/MicroBlink.framework/Headers/PPCameraCoordinator.h index 0ccce51f..144b9cca 100644 --- a/MicroBlink.framework/Headers/PPCameraCoordinator.h +++ b/MicroBlink.framework/Headers/PPCameraCoordinator.h @@ -66,11 +66,12 @@ PP_CLASS_AVAILABLE_IOS(6.0) * Error object contains description of the reason for that. * * @param type The camera type you want to check for. - * @param error If scanning is not supported, when method this method returns, this parameter contains an NSError object that describes the problem. If you are not interested in possible errors, pass in NULL. + * @param error If scanning is not supported, when method this method returns, this parameter contains an NSError object that describes the + * problem. If you are not interested in possible errors, pass in NULL. * * @return YES if scanning is not supported, NO otherwise. */ -+ (BOOL)isScanningUnsupportedForCameraType:(PPCameraType)type error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NOTHROW; ++ (BOOL)isScanningUnsupportedForCameraType:(PPCameraType)type error:(NSError *_Nullable *_Nullable)error NS_SWIFT_NOTHROW; /** * Creates the scanning view controller with this coordinator and given delegate object. @@ -82,23 +83,26 @@ PP_CLASS_AVAILABLE_IOS(6.0) /** * Creates the scanning view controller with this coordinator and given delegate object and given custom overlay. - * Calling this method is equivalend of calling [PPViewControllerFactory cameraViewControllerWithDelegate:self overlayViewController:overlayViewController error:nil] + * Calling this method is equivalend of calling [PPViewControllerFactory cameraViewControllerWithDelegate:self + * overlayViewController:overlayViewController + * error:nil] * * @see PPViewControllerFactory */ -- (UIViewController *)cameraViewControllerWithDelegate:(id)delegate overlayViewController:(PPOverlayViewController *)overlayViewController; +- (UIViewController *)cameraViewControllerWithDelegate:(id)delegate + overlayViewController:(PPOverlayViewController *)overlayViewController; -/** +/** * Sets the scanning region. CGRect is given in coordinate system of the camera */ - (void)setScanningRegion:(CGRect)scanningRegion; -/** +/** * Tell coordinator that scanning has started */ - (void)start; -/** +/** * Tell coordinator scanning has stopped */ - (void)stop; diff --git a/MicroBlink.framework/Headers/PPCameraSettings.h b/MicroBlink.framework/Headers/PPCameraSettings.h index f3725252..8eb6e177 100644 --- a/MicroBlink.framework/Headers/PPCameraSettings.h +++ b/MicroBlink.framework/Headers/PPCameraSettings.h @@ -67,14 +67,14 @@ PP_CLASS_AVAILABLE_IOS(6.0) /** * Camera preset. With this property you can set the resolution of the camera - * + * * Default: PPCameraPresetOptimal */ @property (nonatomic, assign) PPCameraPreset cameraPreset; /** * Camera type. You can choose between front and back facing. - * + * * Default: PPCameraTypeBack */ @property (nonatomic, assign) PPCameraType cameraType; @@ -82,12 +82,10 @@ PP_CLASS_AVAILABLE_IOS(6.0) /** * Interval between forcing two camera focuses. If <= 0, forced focuses arent performed * and only continuous autofocus mode will be used. - * + * * Default * - 10.0f for BlinkID and BlinkOCR product - * - 3.2f for PhotoPay product - * - 5.0f for Pdf417 product - * - 0.0f for PhotoMath product + * - 8.0f for PhotoPay, pdf417 and other products */ @property (nonatomic, assign) NSTimeInterval autofocusInterval; diff --git a/MicroBlink.framework/Headers/PPCoordinator.h b/MicroBlink.framework/Headers/PPCoordinator.h index 9b35bf5a..39edbb06 100644 --- a/MicroBlink.framework/Headers/PPCoordinator.h +++ b/MicroBlink.framework/Headers/PPCoordinator.h @@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN /** * This object is the mastermind of the recognition process. * - * PPCoordinator coordinates hardware control with the recognition algorithms, + * PPCoordinator coordinates hardware control with the recognition algorithms, * and provides facotry method for creating ViewController with UI for the camera. */ PP_CLASS_AVAILABLE_IOS(6.0) @@ -95,4 +95,4 @@ PP_CLASS_AVAILABLE_IOS(6.0) @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPCoordinatorDelegate.h b/MicroBlink.framework/Headers/PPCoordinatorDelegate.h index c66b1b7a..4134f0f7 100644 --- a/MicroBlink.framework/Headers/PPCoordinatorDelegate.h +++ b/MicroBlink.framework/Headers/PPCoordinatorDelegate.h @@ -8,6 +8,9 @@ #import +#import "PPLivenessAction.h" +#import "PPLivenessError.h" + @class PPMetadata; @class PPCoordinator; @class PPOcrLayout; @@ -23,15 +26,15 @@ @optional -/** - *Called when the recognition of a current image is initiated +/** + * Called when the recognition of a current image is initiated */ - (void)coordinatorDidStartDetection:(PPCoordinator *)coordinator; /** * Called when coordinator obtaines metadata */ -- (void)coordinator:(PPCoordinator *)coordinator didOutputMetadata:(PPMetadata*)metadata; +- (void)coordinator:(PPCoordinator *)coordinator didOutputMetadata:(PPMetadata *)metadata; /** * Called when the recognition manager finds the element on the image and returns @@ -44,6 +47,11 @@ */ - (void)coordinatorDidStartRecognition:(PPCoordinator *)coordinator; +/** + * Called when the recognition manager finishes scanning the first side of the document + */ +- (void)coordinator:(PPCoordinator *)coordinator didFinishRecognitionFirstSide:(PPRecognizerResult *)result; + /** * Called when the recognition one recognizer finishes */ @@ -62,21 +70,31 @@ /** * Called when the recognition obtains the result of the ocr process */ -- (void)coordinator:(PPCoordinator *)coordinator didObtainOcrResult:(PPOcrLayout*)ocrResult withResultName:(NSString*)resultName; +- (void)coordinator:(PPCoordinator *)coordinator didObtainOcrResult:(PPOcrLayout *)ocrResult withResultName:(NSString *)resultName; /** * Called when the we have an error in the recognition process and have to quit camera view */ -- (void)coordinator:(PPCoordinator *)coordinator didFindError:(NSError*)error; +- (void)coordinator:(PPCoordinator *)coordinator didFindError:(NSError *)error; /** * Called when the we have an error with the license key */ -- (void)coordinator:(PPCoordinator *)coordinator invalidLicenseKeyWithError:(NSError*)error; +- (void)coordinator:(PPCoordinator *)coordinator invalidLicenseKeyWithError:(NSError *)error; /** * TODO Ugly way of passing UI-related transformation information that should not be here */ - (CGAffineTransform)coordinatorAffineTransformToScreen:(PPCoordinator *)coordinator; -@end \ No newline at end of file +/** + * Only liveness uses this. Liveness recognizer requires an action from the user. + */ +- (void)coordinator:(PPCoordinator *)coordinator didRequestLivenessAction:(PPLivenessAction)action; + +/** + * Only liveness uses this. Liveness recognizer found an issue with face positioning. + */ +- (void)coordinator:(PPCoordinator *)coordinator didFindLivenessActionError:(PPLivenessError)error; + +@end diff --git a/MicroBlink.framework/Headers/PPDateResult.h b/MicroBlink.framework/Headers/PPDateResult.h new file mode 100644 index 00000000..0d6ca73b --- /dev/null +++ b/MicroBlink.framework/Headers/PPDateResult.h @@ -0,0 +1,68 @@ +// +// PPDateResult.h +// BlinkIdFramework +// +// Created by DoDo on 07/11/2016. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import +#import "PPMicroBlinkDefines.h" +#import "PPNativeResult.h" + +/** + * This class represents a Date result scanned from the image. It supports obtaining raw NSDates, or raw strings + * Which are in the same format to the text printed on the image. + * + * While converting to NSDate, internally prior knowledge about scanned document is used to use the right format. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPDateResult : NSObject + +// Unavailable +- (instancetype _Nonnull)init NS_UNAVAILABLE; + +/** + * Designated initializer + * + * @param day day of month + * @param month month of year + * @param year gregorian calendar + * @param originalDateString original string which describes that result, e.g "23.4.1988." + * + * @return initialized value + */ +- (instancetype _Nonnull)initWithDay:(NSInteger)day + month:(NSInteger)month + year:(NSInteger)year + originalDateString:(NSString *_Nullable)originalDateString NS_DESIGNATED_INITIALIZER; + + +/** + * The original string used to create the date result + */ +@property (nonatomic, readonly, nullable) NSString *originalDateString; + + +/** + * NSDate object which represents the same date as this result + */ +@property (nonatomic, readonly, nonnull) NSDate *date; + + +/** + * Factory method + * + * @param day day of month + * @param month month of year + * @param year gregorian calendar + * @param originalDateString original string which describes that result, e.g "23.4.1988." + * + * @return initialized value + */ ++ (instancetype _Nonnull)dateResultWithDay:(NSInteger)day + month:(NSInteger)month + year:(NSInteger)year + originalDateString:(NSString *_Nullable)originalDateString; + +@end diff --git a/MicroBlink.framework/Headers/PPDecodingInfo.h b/MicroBlink.framework/Headers/PPDecodingInfo.h new file mode 100644 index 00000000..bc29a5dd --- /dev/null +++ b/MicroBlink.framework/Headers/PPDecodingInfo.h @@ -0,0 +1,64 @@ +// +// PPDecodingInfo.h +// BlinkIdFramework +// +// Created by Jura on 09/01/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import +#import "PPMicroBlinkDefines.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Object describing a part of the document which is being processed (decoded) in the recognition process. + * Decoding info defines which part of the detected document is being processed (location property). In the processing + * stage, this part of the image is being dewarped to a standardized resolution, and the height of the dewarped image + * is also defined in this object (dewarpedHeight) + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPDecodingInfo : NSObject + +/** + * Location of the decoded element on the detected document. + * + * For example, if the whole document should be decoded, then location should be set to CGRectMake(0.0, 0.0, 1.0, 1.0); + * If just the upper left quarter of the image should be decoded, location sholud be set to CGRectMake(0.0, 0.0, 0.25, 0.25); + */ +@property (nonatomic, assign) CGRect location; + +/** + * Part of the origin image defined with location property, in the processing stage is being dewarped to a standardized resolution. + * Dewarped height defines the height of that image. + * + * For example, ID documents are usually dewarped to a height of 750 pixels. + */ +@property (nonatomic, assign) CGFloat dewarpedHeight; + +/** + * Unique identifier of the entry. + */ +@property (nonatomic, strong) NSString *uniqueId; + +/** + * Constructor which initializes decoding info entry. Specifies location of the entry, and dewarped height. + * + * @param location location of the decoding info entry on the detected document. + * @param dewarpedHeight height of the dewarped image + * @param uniqueId identifier of the entry + * + * @return initialized object. + */ +- (instancetype)initWithLocation:(CGRect)location + dewarpedHeight:(CGFloat)dewarpedHeight + uniqueId:(NSString *)uniqueId NS_DESIGNATED_INITIALIZER; + +/** + * Please use designated initializer. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPDetectionStatus.h b/MicroBlink.framework/Headers/PPDetectionStatus.h index f0da0c8e..d70a8887 100644 --- a/MicroBlink.framework/Headers/PPDetectionStatus.h +++ b/MicroBlink.framework/Headers/PPDetectionStatus.h @@ -15,34 +15,34 @@ typedef NS_OPTIONS(NSInteger, PPDetectionStatus) { /** Object was successfuly detected. */ - PPDetectionStatusSuccess = 1<<0, + PPDetectionStatusSuccess = 1 << 0, /** Object was not detected */ - PPDetectionStatusFail = 1<<1, + PPDetectionStatusFail = 1 << 1, /** Object was successfully detected, but the camera was too far above the object for processing */ - PPDetectionStatusCameraTooHigh = 1<<2, + PPDetectionStatusCameraTooHigh = 1 << 2, /** Object was successfully detected, but the perspective angle of camera is too high */ - PPDetectionStatusCameraAtAngle = 1<<3, + PPDetectionStatusCameraAtAngle = 1 << 3, /** Object was successfully detected, but the object is rotated and not aligned to the camera edges */ - PPDetectionStatusCameraRotated = 1<<4, + PPDetectionStatusCameraRotated = 1 << 4, /** QR code was successfully detected */ - PPDetectionStatusQRSuccess = 1<<6, + PPDetectionStatusQRSuccess = 1 << 6, /** PDF417 barcode was successfully detected */ - PPDetectionStatusPdf417Success = 1<<7, + PPDetectionStatusPdf417Success = 1 << 7, /** Object was successfully detected using a fallback algorithm */ - PPDetectionStatusFallbackSuccess = 1<<8, + PPDetectionStatusFallbackSuccess = 1 << 8, /** Object was detected, but is only partially visible on screen */ - PPDetectionStatusPartialForm = 1<<9, + PPDetectionStatusPartialForm = 1 << 9, /** Object was successfully detected, but the camera is too near to the object for processing */ - PPDetectionStatusCameraTooNear = 1<<10, + PPDetectionStatusCameraTooNear = 1 << 10, }; // Ignore unused method warning @@ -56,10 +56,10 @@ typedef NS_OPTIONS(NSInteger, PPDetectionStatus) { * * @return NSString value for PPDetectionStatus value */ -static NSString* stringFromDetectionStatus(PPDetectionStatus status) { +static NSString *stringFromDetectionStatus(PPDetectionStatus status) { - NSString* defaultString = @"Detection status: "; - NSString* res = [NSString stringWithString:defaultString]; + NSString *defaultString = @"Detection status: "; + NSString *res = [NSString stringWithString:defaultString]; if (status & PPDetectionStatusSuccess) { res = [res stringByAppendingString:@"Success\n"]; @@ -91,7 +91,7 @@ static NSString* stringFromDetectionStatus(PPDetectionStatus status) { if ([res length] == [defaultString length]) { res = @"No value!"; } - + return res; } diff --git a/MicroBlink.framework/Headers/PPDetectorResult.h b/MicroBlink.framework/Headers/PPDetectorResult.h index 38675670..3c4e6d16 100644 --- a/MicroBlink.framework/Headers/PPDetectorResult.h +++ b/MicroBlink.framework/Headers/PPDetectorResult.h @@ -18,12 +18,12 @@ typedef NS_ENUM(NSUInteger, PPDetectionCode) { * Object detection has failed. */ PPDetectionCodeFail = 0, - + /** * Object was detected partially. Only some PhotoPay detectors support this. */ PPDetectionCodeFallback, - + /** * Object detection has succeded. */ diff --git a/MicroBlink.framework/Headers/PPDetectorSettings.h b/MicroBlink.framework/Headers/PPDetectorSettings.h new file mode 100644 index 00000000..f6990647 --- /dev/null +++ b/MicroBlink.framework/Headers/PPDetectorSettings.h @@ -0,0 +1,29 @@ +// +// PPDetectorSettings.h +// BlinkIdFramework +// +// Created by Jura on 06/10/15. +// Copyright © 2015 MicroBlink Ltd. All rights reserved. +// + +#import + +#import "PPMicroBlinkDefines.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * MicroBlink scanning libraries run detector objects to find objects on image. + * This class is common superclass for each of the Detector settings. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPDetectorSettings : NSObject + +/** + * This is an abstract class. Please use one of concrete classes. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPDocumentDetectorResult.h b/MicroBlink.framework/Headers/PPDocumentDetectorResult.h new file mode 100644 index 00000000..2b2c1b0b --- /dev/null +++ b/MicroBlink.framework/Headers/PPDocumentDetectorResult.h @@ -0,0 +1,33 @@ +// +// PPDocumentDetectorResult.h +// BlinkIdFramework +// +// Created by Jura on 11/01/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import "PPQuadDetectorResult.h" + +#import "PPDocumentSpecification.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Result of a document detector (used to detector various rectangular objects). + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPDocumentDetectorResult : PPQuadDetectorResult + +/** + * Aspect ratio of detected document. + */ +@property (nonatomic) CGFloat aspectRatio; + +/** + * Screen orientation used when detecting the document. + */ +@property (nonatomic) UIInterfaceOrientation screenOrientation; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPDotsOverlaySubview.h b/MicroBlink.framework/Headers/PPDotsOverlaySubview.h new file mode 100644 index 00000000..aa75cd1c --- /dev/null +++ b/MicroBlink.framework/Headers/PPDotsOverlaySubview.h @@ -0,0 +1,47 @@ +// +// PPDotsAnimationLayer.h +// BarcodeFramework +// +// Created by Jura on 06/06/14. +// Copyright (c) 2015 MicroBlink Ltd. All rights reserved. +// + +#import +#import "PPDetectionStatus.h" +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + A wrapper around CAShapeLayer which is used for presenting a status about barcode detections + + The layer is used to draw dots representing barcodes + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPDotsOverlaySubview : PPOverlaySubview + +/* Animation layer for barcode tracking */ +@property (nonatomic, strong) CAShapeLayer *dotsLayer; + +/** Color of the dots */ +@property (nonatomic, strong) UIColor *dotsColor; + +/** Width of the dots */ +@property (nonatomic, assign) CGFloat dotsStrokeWidth; + +/** Radius of dots */ +@property (nonatomic, assign) CGFloat dotsRadius; + +/** Duration of the animation */ +@property (nonatomic, assign) CGFloat animationDuration; + +/** + Initializes the layer + */ +- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPFaceDetectorResult.h b/MicroBlink.framework/Headers/PPFaceDetectorResult.h new file mode 100644 index 00000000..f59ee497 --- /dev/null +++ b/MicroBlink.framework/Headers/PPFaceDetectorResult.h @@ -0,0 +1,29 @@ +// +// PPFaceDetectorResult.h +// PhotoPayFramework +// +// Created by Dino on 13/04/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import "PPDetectorResult.h" +#import "PPQuadrangle.h" + + +NS_ASSUME_NONNULL_BEGIN + +/** + * Result of the Face detector + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPFaceDetectorResult : PPDetectorResult + +/** + * All locations where faces are found on the image. Can be more than one. + * The first is the best candidate. + */ +@property (nonatomic) NSArray *faceLocations; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPFieldOfViewOverlaySubview.h b/MicroBlink.framework/Headers/PPFieldOfViewOverlaySubview.h new file mode 100644 index 00000000..e79c0a1c --- /dev/null +++ b/MicroBlink.framework/Headers/PPFieldOfViewOverlaySubview.h @@ -0,0 +1,55 @@ +// +// FieldOfViewOverlaySubview.h +// PhotoPayFramework +// +// Created by Jura on 18/06/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Overlay subview presenting the status of detection. + * The subview is presented as untinted view on tinted background, where untinted location animates to detection location. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPFieldOfViewOverlaySubview : PPOverlaySubview + +- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +/** + * Corner coordinates of last detected location + */ +@property (nonatomic, strong) NSArray *cornerCoordinates; + +/** Duration of the animation */ +@property (nonatomic, assign) CGFloat animationDuration; + +/** + * Aspect ration of untinted view + */ +@property (nonatomic, assign) CGFloat aspectRatio; + +/** + * Minimal height as portion of overlay subview height (in ranges [0,1.0]) + */ +@property (nonatomic, assign) CGFloat minHeight; + +/** + * Max height as portion of overlay subview height (in ranges [0,1.0]) + */ +@property (nonatomic, assign) CGFloat maxHeight; + +@property (nonatomic, assign) CGFloat width; + +@property (nonatomic, assign) CGFloat height; + +@property (nonatomic, assign) CGFloat centerHeight; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPFieldOfViewOverlayViewController.h b/MicroBlink.framework/Headers/PPFieldOfViewOverlayViewController.h new file mode 100644 index 00000000..c664af8f --- /dev/null +++ b/MicroBlink.framework/Headers/PPFieldOfViewOverlayViewController.h @@ -0,0 +1,15 @@ +// +// PPFieldOfViewOverlayViewController.h +// PhotoPayFramework +// +// Created by Jura on 18/06/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPBasePhotoPayOverlayViewController.h" +#import "PPModernBaseOverlayViewController.h" + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPFieldOfViewOverlayViewController : PPModernBaseOverlayViewController + +@end diff --git a/MicroBlink.framework/Headers/PPGeometry.h b/MicroBlink.framework/Headers/PPGeometry.h new file mode 100644 index 00000000..99f0ff70 --- /dev/null +++ b/MicroBlink.framework/Headers/PPGeometry.h @@ -0,0 +1,135 @@ +// +// PPGeometry.h +// BarcodeFramework +// +// Created by Jura on 03/08/14. +// Copyright (c) 2015 MicroBlink Ltd. All rights reserved. +// + +#import "TargetConditionals.h" +#import + +#if TARGET_OS_IPHONE +#import +#else +#import +#endif + +#import "PPMicroBlinkDefines.h" + +#define NULL_NUMBER INFINITY +#define NULL_POINT CGPointMake(NULL_NUMBER, NULL_NUMBER) +#define NULL_LINE CGLineMake(NULL_POINT, NULL_POINT) +#define RADIANS(degrees) ((degrees * M_PI) / 180.0) + + +// A delta point representing the distance of a translation transform +typedef CGPoint CGDelta; + +// A line is defined as two points +typedef struct { + CGPoint point1; + CGPoint point2; +} CGLine; + +#pragma mark - Points + +// Create a delta from a delta x and y +CGDelta CGDeltaMake(CGFloat deltaX, CGFloat deltaY); + +// Create point with given offset from given point +CGPoint CGPointWithDelta(CGPoint point, CGDelta delta); + +// Get the distance between two points +CGFloat CGPointDistance(CGPoint p1, CGPoint p2); + +// A point along a line distance from point1. +CGPoint CGPointAlongLine(CGLine line, CGFloat distance); + +// A point rotated around the pivot point by degrees. +CGPoint CGPointRotatedAroundPoint(CGPoint point, CGPoint pivot, CGFloat degrees); + +#pragma mark - Lines + +// Create a line from 2 points. +CGLine CGLineMake(CGPoint point1, CGPoint point2); + +// Returns true if two lines are exactly coincident +bool CGLineEqualToLine(CGLine line1, CGLine line2); + +// Get a lines midpoint +CGPoint CGLineMidPoint(CGLine line); + +// Returns a direction of the line +CGFloat CGLineDirection(CGLine line); + +// Returns the angle between two given lines, in radians +CGFloat CGLinesAngle(CGLine line1, CGLine line2); + +// Get the point at which two lines intersect. Returns NULL_POINT if they don't intersect. +CGPoint CGLinesIntersectAtPoint(CGLine line1, CGLine line2); + +// Get the length of a line +CGFloat CGLineLength(CGLine line); + +// Returns a scaled line. Point 1 acts as the base and Point 2 is extended. +CGLine CGLineScale(CGLine line, CGFloat scale); + +// Returns a line translated by delta. +CGLine CGLineTranslate(CGLine line, CGDelta delta); + +// Returns a scaled line with the same midpoint. +CGLine CGLineScaleOnMidPoint(CGLine line, CGFloat scale); + +// Returns the delta x and y of the line from point 1 to point 2. +CGDelta CGLineDelta(CGLine line); + +// Returns true if two lines are parallel +bool CGLinesAreParallel(CGLine line1, CGLine line2); + +#pragma mark - Rectangles + +// Corners points of a CGRect +CGPoint CGRectTopLeftPoint(CGRect rect); +CGPoint CGRectTopRightPoint(CGRect rect); +CGPoint CGRectBottomLeftPoint(CGRect rect); +CGPoint CGRectBottomRightPoint(CGRect rect); + +// Returns a resized rect with the same centerpoint. +CGRect CGRectResize(CGRect rect, CGSize newSize); + +// Similar to CGRectInset but only insets one edge. All other edges do not move. +CGRect CGRectInsetEdge(CGRect rect, CGRectEdge edge, CGFloat amount); + +/** + Calculates the stacking of rectangles within a larger rectangle. + The resulting rectangle is stacked counter clockwise along the edge specified. As soon as + there are more rects than will fit, a new row is started, thus, they are stacked by column, + then by row. `reverse` will cause them to be stacked counter-clockwise along the specified edge. +*/ +CGRect CGRectStackedWithinRectFromEdge(CGRect rect, CGSize size, int count, CGRectEdge edge, bool reverse); + +// Find the centerpoint of a rectangle. +CGPoint CGRectCenterPoint(CGRect rect); + +// Assigns the closest two corner points to point1 and point2 of the rect to the passed in point. +void CGRectClosestTwoCornerPoints(CGRect rect, CGPoint point, CGPoint *point1, CGPoint *point2); + +// The point at which a line, extended infinitely past its second point, intersects +// the rectangle. Returns NULL_POINT if no interseciton is found. +CGPoint CGLineIntersectsRectAtPoint(CGRect rect, CGLine line); + + +#pragma mark - Arcs + +// The control points for an arc from startPoint to endPoint with radius. +// To determine the right hand rule: make an arc with your right hand, placing your pinky on the screen and your +// thumb pointing out from the screen. With the base of your hand at the start point, the curvature of your hand +// indicates what direction the arc will curve to the endpoint. +void CGControlPointsForArcBetweenPointsWithRadius(CGPoint startPoint, CGPoint endPoint, CGFloat radius, bool rightHandRule, + CGPoint *controlPoint1, CGPoint *controlPoint2); + +#pragma mark - ScanningRegion + +// Convert given frame into scanning region frame for given bounds. +PP_EXTERN CGRect scanningRegionForFrameInBounds(CGRect frame, CGRect bounds); diff --git a/MicroBlink.framework/Headers/PPIDCardOverlayViewController.h b/MicroBlink.framework/Headers/PPIDCardOverlayViewController.h new file mode 100644 index 00000000..34a3d1c6 --- /dev/null +++ b/MicroBlink.framework/Headers/PPIDCardOverlayViewController.h @@ -0,0 +1,28 @@ +// +// PPIDCardOverlayViewController.h +// PhotoPayFramework +// +// Created by Jura on 29/09/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPModernBaseOverlayViewController.h" + +#import "PPIdCardOverlaySubview.h" + +/** + * Default overlay when using ID card recognizers. + * This overlay contains PPModernOcrResultOverlaySubview and PPIdCardOverlaySubview. + * + * @see PPModernOcrResultOverlaySubview + * @see PPIdCardOverlaySubview + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPIDCardOverlayViewController : PPModernBaseOverlayViewController + +/** + * Subview which shows the viewfinder - the rectangle area in which the user needs to position the ID document + */ +@property (nonatomic) PPIdCardOverlaySubview *idCardSubview; + +@end diff --git a/MicroBlink.framework/Headers/PPIdCardOverlaySubview.h b/MicroBlink.framework/Headers/PPIdCardOverlaySubview.h new file mode 100644 index 00000000..f18a42f3 --- /dev/null +++ b/MicroBlink.framework/Headers/PPIdCardOverlaySubview.h @@ -0,0 +1,60 @@ +// +// PPIdCardOverlaySubview.h +// PhotoPayFramework +// +// Created by Jura on 04/02/2017. +// Copyright © 2017 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Overlay subview presenting the viewfinder for scanning ID documents + * + * The subview draws a rounded rectangle in the shape of an ID document, in which the user + * should position the ID (ideal positioning is not required). + * + * The rounded rectangle is centered on the screen. + * + * The aspect ratio of the document can be set as a parameter + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPIdCardOverlaySubview : PPOverlaySubview + +/** + * Default implementation draws a rectangle with aspect ratio of viewfinderAspectRatio, + * with corner radius set to 10/360 of the rectangle's width + * on the center of the view controller + */ +@property (nonatomic) UIView *viewfinderView; + +/** + * Default aspect ratio of the viewfinder, calculated as width / height. + * + * By default it's 85.60 / 53.98, which is the dimensions of the ID1 document. + */ +@property (nonatomic) CGFloat viewfinderWidthToHeightRatio; + +/** + * Label displayed below the viewfinder view. + * + * By default it shows text @"Position ID card in this Frame"; + */ +@property (nonatomic) UILabel *tooltipLabel; + +/** + * Initialize the overlay subview with a given frame + * + * @param frame frame for the view + * @return initialized view + */ +- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; + +// Unavailable initializer +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPImage.h b/MicroBlink.framework/Headers/PPImage.h index 38ac2d5a..cd36ab29 100644 --- a/MicroBlink.framework/Headers/PPImage.h +++ b/MicroBlink.framework/Headers/PPImage.h @@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN /** * Enum which describes text orientation on an image. */ -typedef NS_ENUM(NSUInteger, PPProcessingOrientation){ +typedef NS_ENUM(NSUInteger, PPProcessingOrientation) { /** Text oriented same as picture */ PPProcessingOrientationUp, /** Text is rotated 90 degrees clockwise */ @@ -38,7 +38,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) */ @property (nonatomic, readonly) UIImage *image; -/** +/** * Region of the image used for scanning, where the whole image is specified with CGRectMake(0.0, 0.0, 1.0, 1.0). */ @property (nonatomic) CGRect roi; @@ -64,6 +64,14 @@ PP_CLASS_AVAILABLE_IOS(6.0) */ @property (nonatomic) BOOL mirroredVertically; + +/** + * If YES, the image will prior to processing go through frame quality estimation phase, which might discard the frame + * + * Default: NO. + */ +@property (nonatomic) BOOL estimateFrameQuality; + /** * Property which tells if this frame is a camera or a single photo frame. * This is important for image processing. diff --git a/MicroBlink.framework/Headers/PPImageMetadata.h b/MicroBlink.framework/Headers/PPImageMetadata.h index dcb00a37..774bb3e3 100644 --- a/MicroBlink.framework/Headers/PPImageMetadata.h +++ b/MicroBlink.framework/Headers/PPImageMetadata.h @@ -15,38 +15,37 @@ * You can get PPMetadataSettings object accessing metadataSettings property of PPSettings (when creating a coordinator for example) */ typedef NS_ENUM(NSUInteger, PPImageMetadataType) { - + /** * Outputs all images with successful detection. PPMetadataSettings property successfulFrame needs to be set to YES. */ PPImageMetadataTypeSuccessfulFrame, - + /** * Outputs all dewarped images with successful detection. PPMetadataSettings property dewarpedImage needs to be set to YES. */ PPImageMetadataTypeDewarpedImage, - + /** * Outputs all input images. PPMetadataSettings property currentFrame needs to be set to YES. */ PPImageMetadataTypeCurrentFrame, - - - + + /** * Debug images (and PPDebugMetadata) are only needed if you need to figure out what is not working as expected. */ - + /** * Outputs all OCR input images. PPDebugMetadata property ocrInputFrame needs to be set to YES. */ PPImageMetadataTypeDebugOcrInputFrame, - + /** * Outputs all detection input images. PPDebugMetadata property detectionFrame needs to be set to YES. */ PPImageMetadataTypeDebugDetectionFrame, - + /** * Outputs all dewarped elements images. PPDebugMetadata property dewarpedElements needs to be set to YES. */ @@ -58,7 +57,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Class containing UIImage of detected, dewraped or input frame. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPImageMetadata : PPMetadata +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPImageMetadata : PPMetadata /** * Orientation with which contained UIImage was processed @@ -101,4 +101,4 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPImageMetadata : PPMetadata @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPLicenseSettings.h b/MicroBlink.framework/Headers/PPLicenseSettings.h index 449c6fc4..32af90de 100644 --- a/MicroBlink.framework/Headers/PPLicenseSettings.h +++ b/MicroBlink.framework/Headers/PPLicenseSettings.h @@ -14,7 +14,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Settings class containing License information */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPLicenseSettings : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPLicenseSettings : NSObject /** * License key for unlocking the scanning library @@ -22,11 +23,14 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPLicenseSettings : NSObject @property (nonatomic, strong, nullable) NSString *licenseKey; /** - * If the license is Enterprise (for more than one app!), you will also need to set the licensee para, + * If the license is Enterprise (for more than one app!), you will also need to set the licensee parameter, * Otherwise keep this value nil! */ @property (nonatomic, strong, nullable) NSString *licensee; +// Unavailable initializer +- (instancetype)init NS_UNAVAILABLE; + /** * Designated initializer for regular licenses * @@ -44,9 +48,8 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPLicenseSettings : NSObject * * @return license settings instance */ -- (instancetype)initWithLicenseKey:(nullable NSString *)licenseKey - licensee:(nullable NSString *)licensee; +- (instancetype)initWithLicenseKey:(nullable NSString *)licenseKey licensee:(nullable NSString *)licensee NS_DESIGNATED_INITIALIZER; @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPLivenessAction.h b/MicroBlink.framework/Headers/PPLivenessAction.h new file mode 100644 index 00000000..1249213c --- /dev/null +++ b/MicroBlink.framework/Headers/PPLivenessAction.h @@ -0,0 +1,28 @@ +// +// PPLivenessAction.h +// BlinkIdFramework +// +// Created by Jura on 06/09/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#ifndef PPLivenessAction_h +#define PPLivenessAction_h + +/** + * Enumeration of Liveness Actions + */ +typedef NS_ENUM(NSInteger, PPLivenessAction) { + + /** + * Face blinks + */ + PPLivenessActionBlink, + + /** + * Face smiles + */ + PPLivenessActionSmile +}; + +#endif /* PPLivenessAction_h */ diff --git a/MicroBlink.framework/Headers/PPLivenessError.h b/MicroBlink.framework/Headers/PPLivenessError.h new file mode 100644 index 00000000..e56183ea --- /dev/null +++ b/MicroBlink.framework/Headers/PPLivenessError.h @@ -0,0 +1,73 @@ +// +// PPLivenessError.h +// BlinkIdFramework +// +// Created by Jura on 06/09/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#ifndef PPLivenessError_h +#define PPLivenessError_h + +/** + * Enumeration of Liveness Errors + */ +typedef NS_ENUM(NSInteger, PPLivenessError) { + + /** + * Eyes are not in ideal region of interest + */ + PPLivenessErrorFaceNotInRoi, + + /** + * Angle Yaw is too large + */ + PPLivenessErrorFaceAngleYawLarge, + + /** + * Angle Yaw is too smalle + */ + PPLivenessErrorFaceAngleYawSmall, + + /** + * Angle Pitch is too large + */ + PPLivenessErrorFaceAnglePitchLarge, + + /** + * Angle Pitch is too small + */ + PPLivenessErrorFaceAnglePitchSmall, + + /** + * Angle Roll is too large + */ + PPLivenessErrorFaceAngleRollLarge, + + /** + * Angle Roll is too small + */ + PPLivenessErrorFaceAngleRollSmall, + + /** + * Face is too close + */ + PPLivenessErrorFaceTooClose, + + /** + * Face is too far + */ + PPLivenessErrorFaceTooFar, + + /** + * Face is not in the image + */ + PPLivenessErrorNoFace, + + /** + * No error - Success! + */ + PPLivenessErrorSuccess, +}; + +#endif /* PPLivenessError_h */ diff --git a/MicroBlink.framework/Headers/PPMetadata.h b/MicroBlink.framework/Headers/PPMetadata.h index 9c5c7aaf..248d30b3 100644 --- a/MicroBlink.framework/Headers/PPMetadata.h +++ b/MicroBlink.framework/Headers/PPMetadata.h @@ -14,7 +14,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Base class for outputting various data via 'didOutputMetadata:' method */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPMetadata : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPMetadata : NSObject /** * Unique metadata name/Id diff --git a/MicroBlink.framework/Headers/PPMetadataSettings.h b/MicroBlink.framework/Headers/PPMetadataSettings.h index 1e3b46ce..3f4ebbaf 100644 --- a/MicroBlink.framework/Headers/PPMetadataSettings.h +++ b/MicroBlink.framework/Headers/PPMetadataSettings.h @@ -12,6 +12,7 @@ #import "PPMetadata.h" #import "PPImageMetadata.h" +#import "PPRecognitionStatusMetadata.h" #import "PPTextMetadata.h" NS_ASSUME_NONNULL_BEGIN @@ -21,7 +22,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Settings class containing information which metadata is captured in the scanning process */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPMetadataSettings : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPMetadataSettings : NSObject /** * If YES, currently processed video frame will be captured. @@ -49,7 +51,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPMetadataSettings : NSObject * * Default: instance obtained using PPDebugMetadata init method. */ -@property (nonatomic, strong) PPDebugMetadata* debugMetadata; +@property (nonatomic, strong) PPDebugMetadata *debugMetadata; /** * Designated initializer. Initializes the object with default settings (see above for defaults) @@ -61,7 +63,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPMetadataSettings : NSObject @end /** - * Settings for debuging various data. + * Settings for debuging various data. * These settings can help you understand why something isn't working as expected. */ @interface PPDebugMetadata : NSObject diff --git a/MicroBlink.framework/Headers/PPMicroBlinkDefines.h b/MicroBlink.framework/Headers/PPMicroBlinkDefines.h index 2e93c28d..390923c5 100644 --- a/MicroBlink.framework/Headers/PPMicroBlinkDefines.h +++ b/MicroBlink.framework/Headers/PPMicroBlinkDefines.h @@ -16,36 +16,34 @@ */ #ifndef MB_LOCALIZED_DEFAULT_STRING - #define MB_LOCALIZED_DEFAULT_STRING(key) \ - ([NSString stringWithFormat: @"[[%@]]", key]) +#define MB_LOCALIZED_DEFAULT_STRING(key) ([NSString stringWithFormat:@"[[%@]]", key]) #endif #ifndef MB_LOCALIZED - // note - this might return nil if frameworkBundle is nil! - #define MB_LOCALIZED(key) NSLocalizedStringWithDefaultValue(key, \ - [[PPApp instance] language], \ - [[PPApp instance] resourcesBundle], \ - MB_LOCALIZED_DEFAULT_STRING(key), \ - nil) +// note - this might return nil if frameworkBundle is nil! +#define MB_LOCALIZED(key) \ + NSLocalizedStringWithDefaultValue(key, [[PPApp instance] language], [[PPApp instance] resourcesBundle], \ + MB_LOCALIZED_DEFAULT_STRING(key), nil) #endif #ifndef MB_LOCALIZED_FORMAT - // note - this might return nil if frameworkBundle is nil! - #define MB_LOCALIZED_FORMAT(key,...) [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(key, \ - [[PPApp instance] language], \ - [[PPApp instance] resourcesBundle], \ - MB_LOCALIZED_DEFAULT_STRING(key), \ - nil), \ - ##__VA_ARGS__] +// note - this might return nil if frameworkBundle is nil! +#define MB_LOCALIZED_FORMAT(key, ...) \ + [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(key, [[PPApp instance] language], [[PPApp instance] resourcesBundle], \ + MB_LOCALIZED_DEFAULT_STRING(key), nil), \ + ##__VA_ARGS__] #endif #ifdef __cplusplus -#define PP_EXTERN extern "C" __attribute__((visibility ("default"))) +#define PP_EXTERN extern "C" __attribute__((visibility("default"))) #else -#define PP_EXTERN extern __attribute__((visibility ("default"))) +#define PP_EXTERN extern __attribute__((visibility("default"))) #endif -#define PP_CLASS_AVAILABLE_IOS(_ios) NS_CLASS_AVAILABLE_IOS(_ios) -#define PP_CLASS_DEPRECATED_IOS(_iosIntro, _iosDep, ...) NS_CLASS_DEPRECATED(NA, NA, _iosIntro, _iosDep, __VA_ARGS__) +#define PP_CLASS_AVAILABLE_IOS(_ios) NS_CLASS_AVAILABLE_IOS(_ios) +#define PP_CLASS_DEPRECATED_IOS(_iosIntro, _iosDep, ...) NS_CLASS_DEPRECATED(NA, NA, _iosIntro, _iosDep, __VA_ARGS__) +#define PP_DEPRECATED_IOS(_iosIntro, _iosDep, ...) __attribute__((availability(ios,introduced=_iosIntro,deprecated=_iosDep,message="" __VA_ARGS__))) + +#define PP_INIT_UNAVAILABLE - (instancetype)init NS_UNAVAILABLE; #endif /* PPMicroBlinkDefines_h */ diff --git a/MicroBlink.framework/Headers/PPModernBaseOverlayViewController.h b/MicroBlink.framework/Headers/PPModernBaseOverlayViewController.h index 40bbc4f3..27c71212 100644 --- a/MicroBlink.framework/Headers/PPModernBaseOverlayViewController.h +++ b/MicroBlink.framework/Headers/PPModernBaseOverlayViewController.h @@ -13,7 +13,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Base class of all default overlays included in SDK. This class is an abstract class and should be subclassed. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPModernBaseOverlayViewController : PPBaseOverlayViewController +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPModernBaseOverlayViewController : PPBaseOverlayViewController /** * Button to cancel scanning/dismiss view. @@ -27,4 +28,4 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPModernBaseOverlayViewController : PPBas @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPModernOcrResultOverlaySubview.h b/MicroBlink.framework/Headers/PPModernOcrResultOverlaySubview.h new file mode 100644 index 00000000..fbebd2d5 --- /dev/null +++ b/MicroBlink.framework/Headers/PPModernOcrResultOverlaySubview.h @@ -0,0 +1,45 @@ +// +// PPModernOcrResultOverlaySubview.h +// PhotoPayFramework +// +// Created by Marko Mihovilić on 05/09/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Overlay subview presenting status of OCR detection. Dots are displayed over locations of detected characters. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPModernOcrResultOverlaySubview : PPOverlaySubview + +/** + * Foreground color of dots. + */ +@property (strong, nonatomic) UIColor *foregroundColor; + +/** + * Border and shadow color of dots. + */ +@property (strong, nonatomic) UIColor *tintColor; + +/** + * If set YES, dots will not redraw until the animation is finished. This will make animation look much smoother on fast results. + * + * Default: NO + */ +@property (assign, nonatomic) BOOL shouldIgnoreFastResults; + +/** + * Duration of fade animation for each dot. + * + * Default: 0.25f + */ +@property (assign, nonatomic) CGFloat charFadeInDuration; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPModernOverlayViewController.h b/MicroBlink.framework/Headers/PPModernOverlayViewController.h index 9a63de65..f4f33706 100644 --- a/MicroBlink.framework/Headers/PPModernOverlayViewController.h +++ b/MicroBlink.framework/Headers/PPModernOverlayViewController.h @@ -8,12 +8,15 @@ #import "PPModernBaseOverlayViewController.h" +NS_ASSUME_NONNULL_BEGIN + @class PPPhotoPayUiSettings; /** * Default version of overlay view controller with modern design. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPModernOverlayViewController : PPModernBaseOverlayViewController +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPModernOverlayViewController : PPModernBaseOverlayViewController /** * Supported orientations mask @@ -23,7 +26,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPModernOverlayViewController : PPModernB /** * Common photopay UI settings */ -@property (nonatomic, strong, readonly) PPPhotoPayUiSettings* uiSettings; +@property (nonatomic, strong, readonly) PPPhotoPayUiSettings *uiSettings; /** * Designated intializer. @@ -35,3 +38,5 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPModernOverlayViewController : PPModernB - (instancetype)initWithUiSettings:(PPPhotoPayUiSettings *)uiSettings; @end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPModernToastOverlaySubview.h b/MicroBlink.framework/Headers/PPModernToastOverlaySubview.h new file mode 100644 index 00000000..5f287a52 --- /dev/null +++ b/MicroBlink.framework/Headers/PPModernToastOverlaySubview.h @@ -0,0 +1,18 @@ +// +// PPModernToastOverlaySubview.h +// PhotoPayFramework +// +// Created by Marko Mihovilić on 04/09/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPModernToastOverlaySubview : PPOverlaySubview + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPModernViewfinderOverlaySubview.h b/MicroBlink.framework/Headers/PPModernViewfinderOverlaySubview.h new file mode 100644 index 00000000..49e3dfac --- /dev/null +++ b/MicroBlink.framework/Headers/PPModernViewfinderOverlaySubview.h @@ -0,0 +1,40 @@ +// +// PPModernViewfinderOverlaySubview.h +// PhotoPayFramework +// +// Created by Marko Mihovilić on 02/09/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Overlay subview presenting the status of detection. + * The subview is presented as green corners located on edges of detection points. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPModernViewfinderOverlaySubview : PPOverlaySubview + +/** + * Denotes if view finder is moveable. Viewfinder will move whenever something is detected and will return to default position if no object + * is detected for some time. + * + * Default: YES + */ +@property (nonatomic, assign) BOOL moveable; + +/** + * Margins between overlay bounds and default corner positions while in portrait orientation. + */ +@property (nonatomic) UIEdgeInsets portraitMargins; + +/** + * Margins between overlay bounds and default corner positions while in landscape orientation. + */ +@property (nonatomic) UIEdgeInsets landscapeMargins; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPMrtdDetectorResult.h b/MicroBlink.framework/Headers/PPMrtdDetectorResult.h new file mode 100644 index 00000000..4ad7fe27 --- /dev/null +++ b/MicroBlink.framework/Headers/PPMrtdDetectorResult.h @@ -0,0 +1,64 @@ +// +// PPOcrLineDetectorResult.h +// BlinkIdFramework +// +// Created by Jura on 10/01/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import "PPQuadDetectorResult.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Detection code for MRTD detection + */ +typedef NS_ENUM(NSUInteger, PPMrtdDetectionCode) { + + /** Failed detection */ + PPMrtdDetectionCodeFail, + + /** Machine Readable Zone, three Machine Readable Lines with 30 characters each */ + PPMrtdDetectionCodeMRZTD1, + + /** Machine Readable Zone, two Machine Readable Lines with 36 characters each */ + PPMrtdDetectionCodeMRZTD2, + + /** Machine Readable Zone, two Machine Readable Lines with 44 characters each */ + PPMrtdDetectionCodeMRZTD3, + + /** Machine Readable Travel Document (Full Card), three Machine Readable Lines with 30 characters each */ + PPMrtdDetectionCodeMRTDTD1, + + /** Machine Readable Travel Document (Full Card), two Machine Readable Lines with 36 characters each */ + PPMrtdDetectionCodeMRTDTD2, + + /**Machine Readable Travel Document (Full Card), two Machine Readable Lines with 44 characters each */ + PPMrtdDetectionCodeMRTDTD3, + +}; + +/** + * Result of MRTD detector + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPMrtdDetectorResult : PPQuadDetectorResult + +/** + * Detection code of MRTD detection + */ +@property (nonatomic) PPMrtdDetectionCode mrtdDetectionCode; + +/** + * Number of characters per line + */ +@property (nonatomic) NSArray *elementsCountPerLine; + +/** + * Confidence in detector result + */ +@property (nonatomic) CGFloat confidence; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPMultiDetectorResult.h b/MicroBlink.framework/Headers/PPMultiDetectorResult.h new file mode 100644 index 00000000..d1aa4260 --- /dev/null +++ b/MicroBlink.framework/Headers/PPMultiDetectorResult.h @@ -0,0 +1,42 @@ +// +// PPMultiDetectorResult.h +// BlinkIdFramework +// +// Created by Jura on 10/01/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import "PPDetectorResult.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Result of detection of multi detector object + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPMultiDetectorResult : PPDetectorResult + +/** + * Array of detector results + */ +@property (nonatomic) NSArray<__kindof PPDetectorResult *> *detectorResults; + +/** + * Obtains result at index + * + * @param index of the result + * + * @return detector result at given index + */ +- (PPDetectorResult *)resultAtIndex:(NSUInteger)index; + +/** + * number of results in multi detector result + * + * @return number of results + */ +- (NSUInteger)count; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPNativeResult.h b/MicroBlink.framework/Headers/PPNativeResult.h new file mode 100644 index 00000000..9c4519c1 --- /dev/null +++ b/MicroBlink.framework/Headers/PPNativeResult.h @@ -0,0 +1,30 @@ +// +// PPResult.h +// BlinkIdFramework +// +// Created by DoDo on 07/11/2016. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#ifndef PPResult_h +#define PPResult_h + +#import "Foundation/Foundation.h" + +@protocol PPNativeResult + +/** + * Returns the native object containing the result. For example, for PPDateResult, this method + * will return NSDate object. + */ +- (NSObject *_Nullable)nativeResult; + +/** + * Returns the string version of the result. For example, for PPDateResult, this method + * will return original string from which date was parsed (same as PPDateResult's originalDateString property}. + */ +- (NSString *_Nullable)stringResult; + +@end + +#endif /* PPResult_h */ diff --git a/MicroBlink.framework/Headers/PPOcrFont.h b/MicroBlink.framework/Headers/PPOcrFont.h new file mode 100644 index 00000000..bafea952 --- /dev/null +++ b/MicroBlink.framework/Headers/PPOcrFont.h @@ -0,0 +1,391 @@ +// +// PPOcrFont.h +// BlinkOcrFramework +// +// Created by Jura on 29/07/15. +// Copyright (c) 2015 MicroBlink Ltd. All rights reserved. +// + +#ifndef BlinkOcrFramework_PPOcrFont_h +#define BlinkOcrFramework_PPOcrFont_h + +/** + * A list of fonts supported by BlinkOCR + */ +typedef NS_ENUM(NSUInteger, PPOcrFont) { + + /** Akzidenz Grotesk font + @see http://www.identifont.com/samples2/berthold/AkzidenzGrotesk.gif + */ + PP_OCR_FONT_AKZIDENZ_GROTESK, + + /** Arial font + @see http://www.identifont.com/samples2/monotype/Arial.gif + */ + PP_OCR_FONT_ARIAL, + + /** Arial black font + @see http://www.identifont.com/samples2/monotype/ArialBlack.gif + */ + PP_OCR_FONT_ARIAL_BLACK, + + /** Arnhem font + @see http://www.identifont.com/samples2/ourtype/Arnhem.gif + */ + PP_OCR_FONT_ARNHEM, + + /** Avant garde font + @see http://www.identifont.com/samples2/adobe/AvantGardeGothicBook.gif + */ + PP_OCR_FONT_AVANT_GARDE, + + /** Bembo font + @see http://www.identifont.com/samples2/adobe/Bembo.gif + */ + PP_OCR_FONT_BEMBO, + + /** Bodoni font + @see http://www.identifont.com/samples2/adobe/Bodoni.gif + */ + PP_OCR_FONT_BODONI, + + /** Calibri font + @see http://www.identifont.com/samples2/microsoft/Calibri.gif + */ + PP_OCR_FONT_CALIBRI, + + /** Calibri bold font + @see http://www.identifont.com/samples2/microsoft/CalibriBold.gif + */ + PP_OCR_FONT_CALIBRI_BOLD, + + /** Chainprinter font + @see http://www.identifont.com/samples2/typodermic/Chainprinter.gif + */ + PP_OCR_FONT_CHAINPRINTER, + + /** Comic sans font + @see http://www.identifont.com/samples2/microsoft/ComicSans.gif + */ + PP_OCR_FONT_COMIC_SANS, + + /** Concerto rounded SG font + @see http://www.identifont.com/samples/spiece/ConcertoRounded.gif + */ + PP_OCR_FONT_CONCERTO_ROUNDED_SG, + + /** Courier font + @see http://www.identifont.com/samples2/adobe/Courier.gif + */ + PP_OCR_FONT_COURIER, + + /** Courier bold font + @see http://www.identifont.com/samples2/adobe/CourierBold.gif + */ + PP_OCR_FONT_COURIER_BOLD, + + /** Courier medium bold + @see http://www.identifont.com/samples2/urw/CourierMBold.gif + */ + PP_OCR_FONT_COURIER_MEDIUM_BOLD, + + /** Courier new bold + @see http://www.identifont.com/samples2/monotype/CourierNewBold.gif + */ + PP_OCR_FONT_COURIER_NEW_BOLD, + + /** Courier new ce font + @see http://allfont.net/cache/img/abc-7635_f48bc1d33aadcf311a97d18a895ad3b7.png + */ + PP_OCR_FONT_COURIER_NEW_CE, + + /** Courier censored font */ + PP_OCR_FONT_COURIER_CONDENSED, + + /** Dejavu sans mono font + @see http://www.pickafont.com/images/fonts/large/d/DejaVu-Sans-Mono.ttf.png + */ + PP_OCR_FONT_DEJAVU_SANS_MONO, + + /** Din font + @see http://www.identifont.com/samples2/fontfont/DIN.gif + */ + PP_OCR_FONT_DIN, + + /** Europa grotesk no 2 SB bold font + @see https://s-media-cache-ak0.pinimg.com/564x/bd/a1/17/bda117fbc13e47940ebce7f7c1ee5240.jpg + */ + PP_OCR_FONT_EUROPA_GROTESK_NO_2_SB_BOLD, + + /** Eurostile font + @see http://www.identifont.com/samples2/adobe/Eurostile.gif + */ + PP_OCR_FONT_EUROSTILE, + + /** F25 bank printer bold font + @see http://www.cufonfonts.com/font_preview/14545/f25-bank-printer/large_preview + */ + PP_OCR_FONT_F25_BANK_PRINTER_BOLD, + + /** Franklin gothic font + @see http://www.identifont.com/samples2/adobe/ITCFranklinGothic.gif + */ + PP_OCR_FONT_FRANKLIN_GOTHIC, + + /** Frutiger font + @see http://www.identifont.com/samples2/adobe/Frutiger.gif + */ + PP_OCR_FONT_FRUTIGER, + + /** Futura font + @see http://www.identifont.com/samples2/adobe/Futura.gif + */ + PP_OCR_FONT_FUTURA, + + /** Futura bold font + @see http://www.identifont.com/samples2/adobe/FuturaBold.gif + */ + PP_OCR_FONT_FUTURA_BOLD, + + /** Garamond font + @see http://www.identifont.com/samples2/microsoft/Garamond.gif + */ + PP_OCR_FONT_GARAMOND, + + /** Georgia font + @see http://www.identifont.com/samples2/microsoft/Georgia.gif + */ + PP_OCR_FONT_GEORGIA, + + /** Gill sans font + @see http://www.identifont.com/samples2/adobe/GillSans.gif + */ + PP_OCR_FONT_GILL_SANS, + + /** Handwritten font */ + PP_OCR_FONT_HANDWRITTEN, + + /** Helvetica font + @see http://www.identifont.com/samples2/adobe/Helvetica.gif + */ + PP_OCR_FONT_HELVETICA, + + /** Helvetica bold font + @see http://www.identifont.com/samples2/adobe/HelveticaBold.gif + */ + PP_OCR_FONT_HELVETICA_BOLD, + + /** Helvetica condensed light font + @see http://www.pickafont.com/images/fonts/large/h/Helvetica_Condensed_Light_Li.ttf.png + */ + PP_OCR_FONT_HELVETICA_CONDENSED_LIGHT, + + /** Hypermarket font + @see http://www.identifont.com/samples2/green-type/Hypermarket.gif + */ + PP_OCR_FONT_HYPERMARKET, + + /** Interstate font + @see http://www.identifont.com/samples2/font-bureau/Interstate.gif + */ + PP_OCR_FONT_INTERSTATE, + + /** Latin modern math font + @see http://luc.devroye.org/BoguslawJackowski+PiotrStrzelczyk+PiotrPianowski-LatinModernMath-2013.png + */ + PP_OCR_FONT_LATIN_MODERN, + + /** Latin modern italic font */ + PP_OCR_FONT_LATIN_MODERN_ITALIC, + + /** Letter gothic font + @see http://www.identifont.com/samples2/adobe/LetterGothic.gif + */ + PP_OCR_FONT_LETTER_GOTHIC, + + /** Lucida font + @see http://www.identifont.com/samples2/adobe/LucidaSerif.gif + */ + PP_OCR_FONT_LUCIDA, + + /** Lucida sans font + @see http://www.identifont.com/samples2/adobe/LucidaSans.gif + */ + PP_OCR_FONT_LUCIDA_SANS, + + /** Matrix font + @see ??? http://img.fontspace.com/preview/charmap/7a1c7e3676f2df686a37def576bb7575.png + */ + PP_OCR_FONT_MATRIX, + + /** Meta font + @see http://www.identifont.com/samples2/fontfont/MetaNormal.gif + */ + PP_OCR_FONT_META, + + /** Minion font + @see http://www.identifont.com/samples2/adobe/MinionPro.gif + */ + PP_OCR_FONT_MINION, + + /** OCR A font + @see http://www.identifont.com/samples2/adobe/OCRA.gif + */ + PP_OCR_FONT_OCRA, + + /** OCR B font + @see http://www.identifont.com/samples2/adobe/OCRB.gif + */ + PP_OCR_FONT_OCRB, + + /** Officina font */ + PP_OCR_FONT_OFFICINA, + + /** Optima font + @see http://www.identifont.com/samples2/adobe/Optima.gif + */ + PP_OCR_FONT_OPTIMA, + + /** Printf font + @see http://www.identifont.com/samples2/typodermic/Printf.gif + */ + PP_OCR_FONT_PRINTF, + + /** Rockwell font + @see http://www.identifont.com/samples2/adobe/Rockwell.gif + */ + PP_OCR_FONT_ROCKWELL, + + /** Rotis sans serif font + @see http://www.identifont.com/samples2/adobe/RotisSansSerif.gif + */ + PP_OCR_FONT_ROTIS_SANS_SERIF, + + /** Rotis serif font + @see http://www.identifont.com/samples2/adobe/RotisSerif.gif + */ + PP_OCR_FONT_ROTIS_SERIF, + + /** Sabon font + @see http://www.identifont.com/samples2/adobe/Sabon.gif + */ + PP_OCR_FONT_SABON, + + /** Stone font */ + PP_OCR_FONT_STONE, + + /** SV basic manual font + @see http://www.fontriver.com/i/fonts/sv_basic_manual/svbasicmanual_specimen.jpg + */ + PP_OCR_FONT_SV_BASIC_MANUAL, + + /** Tahoma font + @see http://www.identifont.com/samples2/microsoft/Tahoma.gif + */ + PP_OCR_FONT_TAHOMA, + + /** Tahoma bold font + @see http://www.identifont.com/samples2/ascender/TahomaBold.gif + */ + PP_OCR_FONT_TAHOMA_BOLD, + + /** Tex gyre termes font + @see http://www.cufonfonts.com/font_preview/908/texgyretermes-regular/large_preview + */ + PP_OCR_FONT_TEX_GYRE_TERMES, + + /** Tex gyre termes italic font + @see http://fontsov.com/data/font_face/texgyretermes-italic.png + */ + PP_OCR_FONT_TEX_GYRE_TERMES_ITALIC, + + /** Sans mono condensed black font + @see http://www.identifont.com/samples2/lucasfonts/TheSansMonoCondensedBlack.gif + */ + PP_OCR_FONT_THE_SANS_MONO_CONDENSED_BLACK, + + /** Thesis font */ + PP_OCR_FONT_THESIS, + + /** Ticket de caisse font + @see http://www.identifont.com/samples2/t26/TicketDeCaisse.gif + */ + PP_OCR_FONT_TICKET_DE_CAISSE, + + /** Times new roman font + @see http://www.identifont.com/samples2/adobe/TimesNewRoman.gif + */ + PP_OCR_FONT_TIMES_NEW_ROMAN, + + /** Trajan font + @see http://www.identifont.com/samples2/adobe/TrajanPro.gif + */ + PP_OCR_FONT_TRAJAN, + + /** Trinite font + @see http://luc.devroye.org/BramDeDoes-TriniteNo2MediumCondensed-1991.png + */ + PP_OCR_FONT_TRINITE, + + /** Univers font + @see http://www.identifont.com/samples2/linotype/Univers.gif + */ + PP_OCR_FONT_UNIVERS, + + /** Verdana font + @see http://www.identifont.com/samples2/microsoft/Verdana.gif + */ + PP_OCR_FONT_VERDANA, + + /** Voltaire font + @see http://www.identifont.com/samples2/google/Voltaire.gif + */ + PP_OCR_FONT_VOLTAIRE, + + /** Walbaum font + @see http://www.identifont.com/samples2/linotype/Walbaum.gif + */ + PP_OCR_FONT_WALBAUM, + + /** Europa gro sb font + http://www.identifont.com/samples/scangraphic/EuropaGroteskSB.gif + */ + PP_OCR_FONT_EUROPA_GRO_SB, + + /** Europa gro sb light font + @see https://cdnimg.fonts.net/CatalogImages/23/387088.png + */ + PP_OCR_FONT_EUROPA_GRO_SB_LIGHT, + + + // SPECIAL FONTS + + /** MICR font */ + PP_OCR_FONT_MICR, + + /** Arabic font */ + PP_OCR_FONT_ARABIC_NILE, + + /** Unknown font */ + PP_OCR_FONT_UNKNOWN, + + /** XITS Math font */ + PP_OCR_FONT_XITS_MATH, + + /** Any of the other listed fonts */ + PP_OCR_FONT_ANY, + + /** Unknown math font */ + PP_OCR_FONT_UNKNOWN_MATH, + + /** Font found on UKDL licenses */ + PP_OCR_FONT_UKDL_LIGHT, + + /** Must be last as it holds the number of available fonts */ + PP_OCR_FONT_COUNT, + + /** German license plate font **/ + PP_OCR_FONT_FE_SCHRIFT, +}; + +#endif diff --git a/MicroBlink.framework/Headers/PPOcrLayout.h b/MicroBlink.framework/Headers/PPOcrLayout.h new file mode 100644 index 00000000..1458031d --- /dev/null +++ b/MicroBlink.framework/Headers/PPOcrLayout.h @@ -0,0 +1,349 @@ +// +// PPOcrLayout.h +// MicroBlinkFramework +// +// Created by Jura on 01/02/14. +// Copyright (c) 2015 MicroBlink Ltd. All rights reserved. +// + +#import +#import + +#import "PPOcrFont.h" + +#import "PPMicroBlinkDefines.h" + +@class PPOcrBlock; +@class PPOcrLine; +@class PPOcrChar; +@class PPPosition; +@class PPCharWithVariants; + +NS_ASSUME_NONNULL_BEGIN + +/** + * Class describing the layour of the document on which the OCR was preformed. + * + * Ocr Layout contains one or mode OcrBlocks, each of which contains one or more OcrLines, + * Each of which contains one or more OcrChars. + * + * Ocr layout coordinates and boxes are given in the coordinate system of the image + * on which the OCR was performed + * + * @see PPOcrBlock + * @see PPOcrLine + * @see PPOcrChar + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPOcrLayout : NSObject + +/** + * Bounding box of the layout. Given in the coordinate system of the image on which OCR was performed. + */ +@property (nonatomic) CGRect box; + +/** + * Ocr blocks of the layout + */ +@property (nonatomic) NSArray *blocks; + +/** + * Tranformation matrix which transforms the coordinate system in which the OCR layout is given + * (i.e. coordinate system of the image) to the coordinate system of the device screen. + * + * Tranform can be invalid (if there's no camera UI to which it can be calculated). This can be checked with + * transformInvalid property. + */ +@property (nonatomic) CGAffineTransform transform; + +/** + * YES if transform is not valid (e.g, there's no UI to which it can be calculated. NO otherwise. + */ +@property (nonatomic) BOOL transformInvalid; + +/** + * Position of layout on the image, in the coordinate system of the image + */ +@property (nonatomic) PPPosition *position; + +/** + * OCR layout was recognized from flipped image + */ +@property (nonatomic) BOOL flipped; + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializer from blocks and transformation + * + * @param ocrBlocks ocr blocks + * @param transform transform from the image to device screen + * + * @return initialized ocr layout + */ +- (instancetype)initWithOcrBlocks:(NSArray *)ocrBlocks + transform:(CGAffineTransform)transform + box:(CGRect)box + flipped:(BOOL)flipped NS_DESIGNATED_INITIALIZER; + +/** + * Initializer from blocks + * + * @param ocrBlocks ocr blocks + * + * @return initialized ocr layout + */ +- (instancetype)initWithOcrBlocks:(NSArray *)ocrBlocks; + +/** + * Helper method which returna a simple string representation of the ocr layout + * + * @return ocr layout converted to string + */ +- (NSString *)string; + +@end + +/** + * Class representing an Ocr Block. Block consists of one or more Ocr Lines. + * + * @see PPOcrLine + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPOcrBlock : NSObject + +/** + * Ocr lines of the block + */ +@property (nonatomic) NSArray *lines; + +/** + * Position of the block on the image, in the coordinate system of the image + */ +@property (nonatomic) PPPosition *position; + +/** + * Please use designated initializer. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializer from lines + * + * @param ocrLines ocr lines + * @param position position of the block on image + * + * @return initialized ocr block + */ +- (instancetype)initWithOcrLines:(NSArray *)ocrLines position:(PPPosition *)position NS_DESIGNATED_INITIALIZER; + +/** + * Helper method which returna a simple string representation of the ocr block + * + * @return ocr block converted to string + */ +- (NSString *)string; + +@end + +/** + * Class representing an Ocr line. line consists of one or more Ocr chars + * + * @see PPOcrChar + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPOcrLine : NSObject + +/** + * Ocr chars of the line + */ +@property (nonatomic) NSArray *chars; + +/** + * Position of the line on the image, in the coordinate system of the image + */ +@property (nonatomic) PPPosition *position; + +/** + * Please use designated initializer. + */ +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializer from chars + * + * @param ocrChars ocr chars + * @param position position of the line on image + * + * @return initialized ocr line + */ +- (instancetype)initWithOcrChars:(NSArray *)ocrChars position:(PPPosition *)position NS_DESIGNATED_INITIALIZER; + +/** + * Helper method which returna a simple string representation of the ocr line + * + * @return ocr line converted to string + */ +- (NSString *)string; + +@end + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPCharWithVariants : NSObject + +/** + * Character that was recognised + */ +@property (nonatomic) PPOcrChar * character; + +/** + * Alternative characters which are possible instead of this character. + * + * In the list of characters, each char (unicode value), can appear multiple times, each time with different font. + * This means variant is uniquely defined with a combination of value and font properties. + * + * Each variant has quality property set, so you can use it to verify other options. + * + * @Warning If you use variants, please note you need to take font into account. + */ +@property (nonatomic) NSSet *variants; + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializer for a CharWithVariant + * + * @param character Character with all recognition information (value, font, position, etc.) + * + * @return initialized char with zero variants + */ +- (instancetype)initWithValue:(PPOcrChar *)character NS_DESIGNATED_INITIALIZER; + +@end + +/** + * Class representing an individual OCR character obtained in the OCR process. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPOcrChar : NSObject + +/** + * Unicode value of the char + */ +@property (nonatomic) unichar value; + +/** + * Position of the char on the image, in the coordinate system of the image + */ +@property (nonatomic) PPPosition *position; + +/** + * Height of the char + */ +@property (nonatomic) CGFloat height; + +/** + * YES if char is uncertain + */ +@property (nonatomic, getter=isUncertain) BOOL uncertain; + +/** + * Integer value representing OCR quality of the char + */ +@property (nonatomic) NSInteger quality; + +/** + * Font of the character + */ +@property (nonatomic) PPOcrFont font; + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializer for a char + * + * @param value unicode value + * @param position position on the image + * @param height height of the char + * + * @return initialized char + */ +- (instancetype)initWithValue:(unichar)value position:(PPPosition *)position height:(CGFloat)height NS_DESIGNATED_INITIALIZER; + +@end + +/** + * Class representing a position on the image. It's given as a box, with + * sides aligned to the sides of the image. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPPosition : NSObject + +/** + * Upper left corner + */ +@property (nonatomic) CGPoint ul; + +/** + * Upper right corner + */ +@property (nonatomic) CGPoint ur; + +/** + * Lower left corner + */ +@property (nonatomic) CGPoint ll; + +/** + * Lower right corner + */ +@property (nonatomic) CGPoint lr; + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Initializer + * + * @param ul upper left corner + * @param ur upper right corner + * @param ll lower left cornder + * @param lr lower right corner + * + * @return initialized position + */ +- (instancetype)initWithUpperLeft:(CGPoint)ul upperRight:(CGPoint)ur lowerLeft:(CGPoint)ll lowerRight:(CGPoint)lr NS_DESIGNATED_INITIALIZER; + +/** + * Creates a position with offset to a current position. Offset is added. + * + * @param offset Offset by which new position is displaced from the current one. + * It's specified with CGPoint, where x value defines x offset, and y value defines y offset + * + * @return position with offset + */ +- (PPPosition *)positionWithOffset:(CGPoint)offset; + +/** + * Helper method converting Position to CGRect + * + * @return Position converted to CGRect + */ +- (CGRect)rect; + +/** + * Helper method calculating the center of the Position + * + * @return center of the position. + */ +- (CGPoint)center; + +/** + * Helper method calculating the height of the position + * + * @return height of the position + */ +- (CGFloat)height; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPOcrLineOverlaySubview.h b/MicroBlink.framework/Headers/PPOcrLineOverlaySubview.h new file mode 100644 index 00000000..4fab0816 --- /dev/null +++ b/MicroBlink.framework/Headers/PPOcrLineOverlaySubview.h @@ -0,0 +1,51 @@ +// +// PPOcrLineOverlayView.h +// PhotoPayFramework +// +// Created by Jurica Cerovec on 19/11/13. +// Copyright (c) 2013 MicroBlink Ltd. All rights reserved. +// + +#import +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +#define WINDOW_STROKE_COLOR_DETECTION_FAILED ([UIColor colorWithRed:202.f / 255.f green:0.0f / 255.f blue:12.f / 255.f alpha:1.0f]) +#define WINDOW_STROKE_COLOR_DETECTION_SUCCESS ([UIColor colorWithRed:84.0f / 255.f green:176.f / 255.f blue:51.f / 255.f alpha:1.0f]) + +@class PPOcrLineAnimationViewLayer; +@class PPOcrLineHelpView; +@class PPOcrLineBackgroundView; + +/** + Class which wraps up + - Background view (two gray parts of the UI) + - Detection animation layer (which changes color upon successful payslip detection + - and Help view + */ +@interface PPOcrLineOverlaySubview : PPOverlaySubview + +/** + Designated initializer. Sets the frame for the view, as well as + position and size of the scanning window inside the frame. + + Position and size are given as percentages (e.g 0.4 = 40%), from the top + of the frame + */ +- (instancetype)initWithFrame:(CGRect)frame + startWindowPercentage:(CGFloat)startWindowPercentage + heightWindowPercentage:(CGFloat)heightWindowPercentage NS_DESIGNATED_INITIALIZER; + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; + +/** + Toggles the help view + */ +- (void)toggleHelp; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPOcrLineOverlayViewController.h b/MicroBlink.framework/Headers/PPOcrLineOverlayViewController.h new file mode 100644 index 00000000..0ebd32ef --- /dev/null +++ b/MicroBlink.framework/Headers/PPOcrLineOverlayViewController.h @@ -0,0 +1,22 @@ +// +// PPOcrLineOverlayViewController.h +// PhotoPayFramework +// +// Created by Jurica Cerovec on 6/2/13. +// Copyright (c) 2013 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlayViewController.h" +#import "PPBasePhotoPayOverlayViewController.h" + +@class PPOcrResultOverlaySubview; +@class PPOcrLineOverlaySubview; + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPOcrLineOverlayViewController : PPBasePhotoPayOverlayViewController + +@property (nonatomic, assign) CGFloat ocrWindowStartPercentage; + +@property (nonatomic, assign) CGFloat ocrWindowHeightPercentage; + +@end diff --git a/MicroBlink.framework/Headers/PPOcrResultOverlaySubview.h b/MicroBlink.framework/Headers/PPOcrResultOverlaySubview.h new file mode 100644 index 00000000..16da5498 --- /dev/null +++ b/MicroBlink.framework/Headers/PPOcrResultOverlaySubview.h @@ -0,0 +1,25 @@ +// +// PPOcrResultView.h +// PhotoPayFramework +// +// Created by Jura on 01/02/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +@class PPOcrLayout; + +/** + * Overlay subview presenting status of OCR detection. OCR results are displayed as green characters over detected locations. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPOcrResultOverlaySubview : PPOverlaySubview + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPOverlayContainerViewController.h b/MicroBlink.framework/Headers/PPOverlayContainerViewController.h index c4aa3032..de8dfaad 100644 --- a/MicroBlink.framework/Headers/PPOverlayContainerViewController.h +++ b/MicroBlink.framework/Headers/PPOverlayContainerViewController.h @@ -22,21 +22,20 @@ Notification sent when Overlay View Controller wants to close camera, for example, by pressing Cancel button. */ -- (void)overlayViewControllerWillCloseCamera:(PPOverlayViewController*)overlayViewController; +- (void)overlayViewControllerWillCloseCamera:(PPOverlayViewController *)overlayViewController; /** Overlay View Controller should ask it's delegete if it's necessary to display Torch (Light) button. Torch button is not necessary if the device doesn't support torch mode (e.g. iPad devices). */ -- (BOOL)overlayViewControllerShouldDisplayTorch:(PPOverlayViewController*)overlayViewController; +- (BOOL)overlayViewControllerShouldDisplayTorch:(PPOverlayViewController *)overlayViewController; /** Overlay View Controller must notify it's delegete to set the torch mode to On or Off Returns YES if torch mode was set successfully, otherwise NO. */ -- (BOOL)overlayViewController:(PPOverlayViewController*)overlayViewController - willSetTorch:(BOOL)isTorchOn; +- (BOOL)overlayViewController:(PPOverlayViewController *)overlayViewController willSetTorch:(BOOL)isTorchOn; /** * If help mechanism is implemented using PPScanDelegate's scanningViewControllerWillPresentHelp method, @@ -47,13 +46,9 @@ - (BOOL)shouldDisplayHelpButton; /** - Overlay View Controller should know if it's presented modally or on navigation view controller. - - Use this method to ask if it's necessary to display Cancel button. (when on navigation view controller, button back is presented by default) - - This method replaced old method overlayViewControllerShouldDisplayCancel. + Check if status bar is hidden or showed */ -- (BOOL)isPresentedModally; +- (BOOL)isStatusBarPresented; /** Overlay View Controller can ask it's delegete about the status of Torch @@ -61,7 +56,7 @@ - (BOOL)isTorchOn; /** - * Overlay View Controller can ask it's owner whether camera was authorized + * Overlay View Controller can ask it's owner whether camera was authorized */ - (BOOL)isCameraAuthorized; diff --git a/MicroBlink.framework/Headers/PPOverlaySubview.h b/MicroBlink.framework/Headers/PPOverlaySubview.h index 09fa1ef9..2d94bb6a 100644 --- a/MicroBlink.framework/Headers/PPOverlaySubview.h +++ b/MicroBlink.framework/Headers/PPOverlaySubview.h @@ -11,22 +11,15 @@ #import "PPMicroBlinkDefines.h" #import "PPDetectorResult.h" -NS_ASSUME_NONNULL_BEGIN - -/** - * Protocol which all objects interested in receiving information about overlay subviews need to implement - */ -@protocol PPOverlaySubviewDelegate +#import "PPLivenessAction.h" +#import "PPLivenessError.h" -/** Delegate method called when animation starts */ -- (void)overlaySubviewAnimationDidStart:(id)overlaySubview; +NS_ASSUME_NONNULL_BEGIN -/** Delegate method called when animation finishes */ -- (void)overlaySubviewAnimationDidFinish:(id)overlaySubview; - -@end +@protocol PPOverlaySubviewDelegate; @class PPOcrLayout; +@class PPMetadata; @class PPOverlayViewController; @class PPRecognizerResult; @@ -39,7 +32,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, weak, nullable) id delegate; /** The overlay view controller containing this overlay subview (if any) */ -@property (nonatomic, weak) PPOverlayViewController* overlay; +@property (nonatomic, weak) PPOverlayViewController *overlay; @optional @@ -56,11 +49,17 @@ NS_ASSUME_NONNULL_BEGIN - (void)overlayDidStopScanning; /** - Overlay started the new recognition cycle. Since recognition is done on video frames, + Overlay started the new recognition cycle. Since recognition is done on video frames, there might be multiple recognition cycles before the scanning completes */ - (void)overlayDidStartRecognition; +/** + Overlay finished recognition of the first side of the document. After this, recognition of the back side immediately + Follows. Overlay is responsible for changing the appearance. + */ +- (void)overlayDidFinishRecognitionFirstSide:(PPRecognizerResult *)result; + /** Overlay ended the recognition cycle with a certain result. The scanning result cannot be considered as valid, sometimes here are received objects which @@ -86,36 +85,62 @@ NS_ASSUME_NONNULL_BEGIN - (void)overlayDidPublishProgress:(CGFloat)progress; /** - Overlay reports the status of the object detection. Scanning status contain information - about whether the scan was successful, whether the user holds the device too far from - the object, whether the angles was too high, or the object isn't seen on the camera in - it's entirety. If the object was found, the corner points of the object are returned. + * Overlay reports the status of the object detection. Scanning status contain information + * about whether the scan was successful, whether the user holds the device too far from + * the object, whether the angles was too high, or the object isn't seen on the camera in + * it's entirety. If the object was found, the corner points of the object are returned. */ --(void)overlayDidFinishDetectionWithResult:(PPDetectorResult *)result; +- (void)overlayDidFinishDetectionWithResult:(PPDetectorResult *)result; /** - Overlay reports obtained ocr layout + * Overlay reports obtained ocr layout + * + * Besides the ocr layout itself, we get the ID of the layout so we can + * distinguish consecutive layouts of the same area on the image + */ +- (void)overlayDidObtainOcrLayout:(PPOcrLayout *)ocrLayout withIdentifier:(NSString *)identifier; - Besides the ocr layout itself, we get the ID of the layout so we can - distinguish consecutive layouts of the same area on the image +/** + * Overlay ended with recognition metadata. + * This is always called *before* method did output results + * + * @param metadata returned metadata */ -- (void)overlayDidObtainOcrLayout:(PPOcrLayout*)ocrLayout - withIdentifier:(NSString*)identifier; +- (void)overlayDidOutputMetadata:(PPMetadata *)metadata; /** - Overlay ended the recognition cycle with a certain Scanning result. - The scanning result can be considered as valid, meaning it can be presented to the user for inspection. - Use this method only if you need UI update on this event (although this is unnecessary in many cases). - The actual result will be passed to your PPPhotoPayDelegate object. + * Overlay ended the recognition cycle with a certain Scanning result. + * The scanning result can be considered as valid, meaning it can be presented to the user for inspection. + * Use this method only if you need UI update on this event (although this is unnecessary in many cases). + * The actual result will be passed to your PPPhotoPayDelegate object. */ -- (void)overlayDidOutputResults:(NSArray*)results; +- (void)overlayDidOutputResults:(nullable NSArray *)results; + +/** + * Overlay was tapped and focusing at the given point is initiated + */ +- (void)willFocusAtPoint:(CGPoint)point; + +/** + * Called when overlay received request for a particular liveness verification action. Check + * PPLivenessAction enum for a list of all available actions. + * + * @param action One particular liveness action + */ +- (void)overlayDidRequestLivenessAction:(PPLivenessAction)action; + +/** + * Called when overlay received error status about the liveness verification action. + * + * @param error One particular liveness aciton error + */ +- (void)overlayDidFindLivenessActionError:(PPLivenessError)error; /** Method called when a rotation to a given interface orientation is about to happen */ -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation - duration:(NSTimeInterval)duration; +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; /** Method called immediately after the rotation from a given @@ -127,8 +152,7 @@ NS_ASSUME_NONNULL_BEGIN Method called inside an animation block. Any changes you make to your UIView's inside this method will be animated */ -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation - duration:(NSTimeInterval)duration; +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; @end @@ -136,8 +160,21 @@ NS_ASSUME_NONNULL_BEGIN Base class for all overlay subviews */ PP_CLASS_AVAILABLE_IOS(6.0) -@interface PPOverlaySubview : UIView +@interface PPOverlaySubview : UIView + +@end + +/** + * Protocol which all objects interested in receiving information about overlay subviews need to implement + */ +@protocol PPOverlaySubviewDelegate + +/** Delegate method called when animation starts */ +- (void)overlaySubviewAnimationDidStart:(PPOverlaySubview *)overlaySubview; + +/** Delegate method called when animation finishes */ +- (void)overlaySubviewAnimationDidFinish:(PPOverlaySubview *)overlaySubview; @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPOverlayViewController.h b/MicroBlink.framework/Headers/PPOverlayViewController.h index 4d6b90fc..9573fc56 100644 --- a/MicroBlink.framework/Headers/PPOverlayViewController.h +++ b/MicroBlink.framework/Headers/PPOverlayViewController.h @@ -15,6 +15,9 @@ #import "PPDetectorResult.h" +#import "PPLivenessAction.h" +#import "PPLivenessError.h" + NS_ASSUME_NONNULL_BEGIN @class PPOcrLayout; @@ -29,26 +32,26 @@ NS_ASSUME_NONNULL_BEGIN Typical actions which need to be allowed to the user are: - - intuitive and meaniningful way to guide the user through scanning process. This is usually done by presenting a + - intuitive and meaniningful way to guide the user through scanning process. This is usually done by presenting a "viewfinder" in which the user need to place the scanned object - a way to cancel the scanining, typically with a "cancel" or "back" button - a way to power on and off the light (i.e. "torch") button - PhotoPay always provides it's own default implementation of the Overlay View Controller for every specific use. - Your implementation should closely mimic the default implementation as it's the result of thorough testing with + PhotoPay always provides it's own default implementation of the Overlay View Controller for every specific use. + Your implementation should closely mimic the default implementation as it's the result of thorough testing with end users. Also, it closely matches the underlying scanning technology. - For example, the scanning technology usually gives results very fast after the user places the device's camera in the - expected way above the scanned object. This means a progress bar for the scan is not particularly useful to the user. - The majority of time the user spends on positioning the device's camera correctly. That's just an example which + For example, the scanning technology usually gives results very fast after the user places the device's camera in the + expected way above the scanned object. This means a progress bar for the scan is not particularly useful to the user. + The majority of time the user spends on positioning the device's camera correctly. That's just an example which demonstrates careful decision making behind default camera overlay view. - PhotoPay demo project in your development package contain `PPCameraOverlayViewController` class, an example of + PhotoPay demo project in your development package contain `PPCameraOverlayViewController` class, an example of custom overlay view implementation. # Initialization - To use your custom overlay with PhotoPay's camera view, you must subclass PPOverlayViewController and + To use your custom overlay with PhotoPay's camera view, you must subclass PPOverlayViewController and specify it when initializing CameraViewController: PPCameraOverlayViewController *overlayViewController = @@ -69,7 +72,7 @@ NS_ASSUME_NONNULL_BEGIN # Interaction with CameraViewController - CameraViewController is a Container view controller to the PPOverlayViewController instances. + CameraViewController is a Container view controller to the PPOverlayViewController instances. For more about Container View Controllers, read official Apple [View Controller Programming Guide]. Also, each instance of PPOverlayViewController and it's subclasses has access to the Container View Controller. @@ -80,11 +83,11 @@ NS_ASSUME_NONNULL_BEGIN # Handling orientation changes - Camera view controller is always presented in Portrait mode, but nevertheless, your overlay view be presented in the + Camera view controller is always presented in Portrait mode, but nevertheless, your overlay view be presented in the current device orientation. There are two ways to handle orientation changes. - The first, built in way is a simple way to achieve autorotation. Your Overlay View Controller only needs to implement - standard UIViewController methods which specify which orientations are supported. For example, to support only landscape + The first, built in way is a simple way to achieve autorotation. Your Overlay View Controller only needs to implement + standard UIViewController methods which specify which orientations are supported. For example, to support only landscape orientations, you need to add the following methods to your Overlay View Controller implementation. - (NSUInteger)supportedInterfaceOrientations { @@ -96,11 +99,12 @@ NS_ASSUME_NONNULL_BEGIN } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); + return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == + UIInterfaceOrientationLandscapeRight); } Your Overlay View Controller will automatically rotate to support all orientations returned by `supportedInterfaceOrientations` - method. You are responsible for standard iOS techniques (auto-layout or autoresizing masks) to adjust the UI to new + method. You are responsible for standard iOS techniques (auto-layout or autoresizing masks) to adjust the UI to new device orientation. You can manually disable autorotation by initializing `PPCoordinator` object with the following setting: @@ -123,32 +127,57 @@ NS_ASSUME_NONNULL_BEGIN `overlayViewControllerShouldDisplayTorch:` method, and to report new torch state with `overlayViewController:willSetTorch:` method. - 4. Handle orientation changes, either by implementing standard UIViewController autorotation metods, + 4. Handle orientation changes, either by implementing standard UIViewController autorotation metods, or by custom rotation management on rotation events. - + */ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPOverlayViewController : UIViewController -/** - Overlay View's delegate object. Responsible for sending messages to PhotoPay's +/** + Overlay View's delegate object. Responsible for sending messages to PhotoPay's Camera View Controller */ -@property (nonatomic, weak) UIViewController *containerViewController; +@property (nonatomic, weak) UIViewController *containerViewController; /** Scanning region in which the scaning is performed. Image is cropped to this region. - - Should be provided in the following coordinate system. + + Should be provided in the following coordinate system. - Upper left point has coordinates (0.0f, 0.0f) and corresponds to upper left corner of the overlay view - Lower right corner has coordinates (1.0f, 1.0f) and corresponds to lower right corner of the overlay view - + CGRect provided here specifies the origin (upper left point) of the scanning region, and the size of the region in hereby described coordinating system. */ @property (nonatomic) CGRect scanningRegion; +/** + * If YES, default camera overlay will display Cancel button. + * Usually, if camera is displayed inside Navigation View Controler, this is reasonable to set to NO. + * + * Default: YES. + */ +@property (nonatomic, assign) BOOL showCloseButton; + +/** + * If YES, default camera overlay will display Torch button. + * Usually, if camera is displayed inside Navigation View Controler, this is reasonable to set to NO. + * + * Default: YES. + */ +@property (nonatomic, assign) BOOL showTorchButton; + +/** + * If YES, default camera overlay will display Status bar. + * Usually, if camera is displayed inside Navigation View Controler, this is reasonable to set to YES. + * + * Default: NO. + */ +@property (nonatomic, assign) BOOL showStatusBar; + + /** * Scanning library requested authorization for Camera access from the user, but the user declined it. * This case means scanning cannot be performed, because accessing camera images is now allowed. @@ -156,32 +185,31 @@ PP_CLASS_AVAILABLE_IOS(6.0) * In this callback you have the chance to handle this case and present some kind of a message to the user on top * of cameraViewController. */ -- (void)cameraViewControllerUnauthorizedCamera:(UIViewController*)cameraViewController; +- (void)cameraViewControllerUnauthorizedCamera:(UIViewController *)cameraViewController; /** * Scanning library requested authorization for Camera access from the user and the user accepted it. */ -- (void)cameraViewControllerUserAuthorizedCamera:(UIViewController*)cameraViewController; +- (void)cameraViewControllerUserAuthorizedCamera:(UIViewController *)cameraViewController; /** Camera view appears and the scanning resumes. This happens when the camera view is opened, or when the app enters foreground with camera view displayed. */ -- (void)cameraViewControllerDidResumeScanning:(UIViewController*)cameraViewController; +- (void)cameraViewControllerDidResumeScanning:(UIViewController *)cameraViewController; -/** - Camera view disappears and the scanning pauses. This happens when the camera view +/** + Camera view disappears and the scanning pauses. This happens when the camera view is closed, or when the app enters background with camera view displayed. */ -- (void)cameraViewControllerDidStopScanning:(UIViewController*)cameraViewController; +- (void)cameraViewControllerDidStopScanning:(UIViewController *)cameraViewController; -/** - Camera view reports the progress of the current OCR/barcode scanning recognition cycle. - Note: this is not the actual progress from the moment camera appears. - This might not be meaningful for the user in all cases. +/** + Camera view reports the progress of the current OCR/barcode scanning recognition cycle. + Note: this is not the actual progress from the moment camera appears. + This might not be meaningful for the user in all cases. */ -- (void)cameraViewController:(UIViewController*)cameraViewController - didPublishProgress:(CGFloat)progress; +- (void)cameraViewController:(UIViewController *)cameraViewController didPublishProgress:(CGFloat)progress; /** * Camera view reports the start of detection cycle. @@ -189,42 +217,50 @@ PP_CLASS_AVAILABLE_IOS(6.0) - (void)cameraViewControllerDidStartDetection:(UIViewController *)cameraViewController; /** - Camera view reports the status of the object detection. Scanning status contain information - about whether the scan was successful, whether the user holds the device too far from - the object, whether the angles was too high, or the object isn't seen on the camera in + Camera view reports the status of the object detection. Scanning status contain information + about whether the scan was successful, whether the user holds the device too far from + the object, whether the angles was too high, or the object isn't seen on the camera in it's entirety. If the object was found, the corner points of the object are returned. - - Coordinate system of points returned corresponds to overlay view (meaning, [0,0] is the + + Coordinate system of points returned corresponds to overlay view (meaning, [0,0] is the origin of the overlay view, [width, height] is the size of overlay view) */ -- (void)cameraViewController:(UIViewController *)cameraViewController didFinishDetectionWithResult:(PPDetectorResult *)result; +- (void)cameraViewController:(UIViewController *)cameraViewController + didFinishDetectionWithResult:(PPDetectorResult *)result; /** Camera view reports obtained OCR result - + Besides the OCR result itself, we get the ID of the result so we can distinguish consecutive results of the same area on the image */ -- (void)cameraViewController:(UIViewController*)cameraViewController - didObtainOcrResult:(PPOcrLayout*)ocrResult - withResultName:(NSString*)resultName; +- (void)cameraViewController:(UIViewController *)cameraViewController + didObtainOcrResult:(PPOcrLayout *)ocrResult + withResultName:(NSString *)resultName; /** Camera view controller started the new recognition cycle. Since recognition is done on video frames, there might be multiple recognition cycles before the scanning completes */ -- (void)cameraViewControllerDidStartRecognition:(UIViewController*)cameraViewController; +- (void)cameraViewControllerDidStartRecognition:(UIViewController *)cameraViewController; + +/** + Camera view reports finished recognition of the first side of the document. After this, recognition of the back side immediately + Follows. Overlay is responsible for changing the appearance. + */ +- (void)cameraViewController:(UIViewController *)cameraViewController + didFinishRecognitionFirstSide:(PPRecognizerResult *)result; -/** +/** Camera view controller ended the recognition cycle with a certain Scanning result. The scanning result cannot be considered as valid, sometimes here are received objects which contain only partial scanning information. Use this method only if you need UI update on this event (although this is unnecessary in many cases). - + If you're interested in valid data, use cameraViewController:didOutputResult: method */ -- (void)cameraViewControllerDidFinishRecognition:(UIViewController*)cameraViewController; +- (void)cameraViewControllerDidFinishRecognition:(UIViewController *)cameraViewController; /** Camera view controller ended the recognition cycle with a certain Scanning result. @@ -232,24 +268,46 @@ PP_CLASS_AVAILABLE_IOS(6.0) Use this method only if you need UI update on this event (although this is unnecessary in many cases). The actual result will be passed to your PPPhotoPayDelegate object. */ -- (void)cameraViewController:(UIViewController*)cameraViewController - didOutputResults:(NSArray*)results; +- (void)cameraViewController:(UIViewController *)cameraViewController + didOutputResults:(nullable NSArray *)results; -- (void)cameraViewController:(UIViewController*)cameraViewController - didOutputMetadata:(PPMetadata*)metadata; +/** + * Camera view controller ended with recognition metadata. + * This is always called *before* method did output results + * + * @param cameraViewController scaning view controller instance + * @param metadata returned metadata + */ +- (void)cameraViewController:(UIViewController *)cameraViewController didOutputMetadata:(PPMetadata *)metadata; + +/** + * Camera view requested a specific liveness action + * + * @param cameraViewController scanning view controller instance + * @param action action which was requested + */ +- (void)cameraViewController:(UIViewController *)cameraViewController + didRequestLivenessAction:(PPLivenessAction)action; + +/** + * Camera view controller reported an error with liveness detection + * + * @param cameraViewController scanning view controller instance + * @param error action which was requested + */ +- (void)cameraViewController:(UIViewController *)cameraViewController + didFindLivenessActionError:(PPLivenessError)error; /** Called when a manual focus (user tapped the screen for example) will be performed at specified point. */ -- (void)cameraViewController:(UIViewController*)cameraViewController - willFocusAtPoint:(CGPoint)point; +- (void)cameraViewController:(UIViewController *)cameraViewController willFocusAtPoint:(CGPoint)point; /** - UIViewController's method called when a rotation to a given + UIViewController's method called when a rotation to a given interface orientation is about to happen */ -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation - duration:(NSTimeInterval)duration; +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; /** UIViewController's method called immediately after the rotation from a given @@ -261,9 +319,8 @@ PP_CLASS_AVAILABLE_IOS(6.0) UIViewController's method called inside an animation block. Any changes you make to your UIView's inside this method will be animated */ -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation - duration:(NSTimeInterval)duration; +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration; @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPPdf417RecognizerResult.h b/MicroBlink.framework/Headers/PPPdf417RecognizerResult.h index a71879d3..a844f82e 100644 --- a/MicroBlink.framework/Headers/PPPdf417RecognizerResult.h +++ b/MicroBlink.framework/Headers/PPPdf417RecognizerResult.h @@ -9,19 +9,18 @@ #import "PPRecognizerResult.h" #import "PPBarcodeDetailedData.h" -NS_ASSUME_NONNULL_BEGIN - /** * Result of scanning with PDF417 Recognizer * * Contains raw Barcode detailed data, and methods for getting string representation of results. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPPdf417RecognizerResult : PPRecognizerResult +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPPdf417RecognizerResult : PPRecognizerResult /** * Byte array with result of the scan */ -- (NSData *)data; +- (NSData *_Nullable)data; /** * Retrieves string content of the scanned data using guessed encoding. @@ -29,12 +28,12 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPPdf417RecognizerResult : PPRecognizerRe * If you're 100% sure you know the exact encoding in the barcode, use stringUsingEncoding: method. * Otherwise stringUsingDefaultEncoding. * - * This method uses NSString stringEncodingForData:encodingOptions:convertedString:usedLossyConversion: method for + * This method uses NSString stringEncodingForData:encodingOptions:convertedString:usedLossyConversion: method for * guessing the encoding. * * @return created string, or nil if encoding couldn't be found. */ -- (NSString *)stringUsingGuessedEncoding; +- (NSString *_Nullable)stringUsingGuessedEncoding; /** * Retrieves string content of the scanned data using given encoding. @@ -43,12 +42,12 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPPdf417RecognizerResult : PPRecognizerRe * * @return String created from data property, using given encoding */ -- (NSString *)stringUsingEncoding:(NSStringEncoding)encoding; +- (NSString *_Nullable)stringUsingEncoding:(NSStringEncoding)encoding; /** * Raw barcode detailed result */ -- (PPBarcodeDetailedData *)rawData; +- (PPBarcodeDetailedData *_Nullable)rawData; /** * Flag indicating uncertain scanning data @@ -61,15 +60,13 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPPdf417RecognizerResult : PPRecognizerRe * with upper left, upper right, lower left and lower right corner. * * Points are given in image coordinate system - * (0, 0) - top left point on the image, (width, height) + * (0, 0) - top left point on the image, (width, height) * bottom right point on the image * * @return location of the barcode on the original image. * * @note - to get the points in NSArray use PPQuadrangle's toPointsArray method. */ -- (PPQuadrangle *)locationOnImage; +- (PPQuadrangle *_Nullable)locationOnImage; @end - -NS_ASSUME_NONNULL_END \ No newline at end of file diff --git a/MicroBlink.framework/Headers/PPPdf417RecognizerSettings.h b/MicroBlink.framework/Headers/PPPdf417RecognizerSettings.h index 5e4ab378..b75780cc 100644 --- a/MicroBlink.framework/Headers/PPPdf417RecognizerSettings.h +++ b/MicroBlink.framework/Headers/PPPdf417RecognizerSettings.h @@ -13,7 +13,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Settings class for configuring PDF417 Barcode recognizer */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPPdf417RecognizerSettings : PPRecognizerSettings +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPPdf417RecognizerSettings : PPRecognizerSettings /** * Set this to YES to scan even barcode not compliant with standards @@ -35,9 +36,9 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPPdf417RecognizerSettings : PPRecognizer @property (nonatomic) BOOL allowNullQuietZone; /** - * Set this to YES to allow scanning barcodes with inverted intensities + * Set this to YES to allow scanning barcodes with inverted intensities * (i.e. white barcodes on black background) - * + * * NOTE: this options doubles the frame processing time * * Default: NO diff --git a/MicroBlink.framework/Headers/PPPermissionDeniedViewController.h b/MicroBlink.framework/Headers/PPPermissionDeniedViewController.h new file mode 100644 index 00000000..dd5ab77d --- /dev/null +++ b/MicroBlink.framework/Headers/PPPermissionDeniedViewController.h @@ -0,0 +1,27 @@ +// +// PPPermissionDeniedViewController.h +// PhotoPayFramework +// +// Created by Dino on 16/08/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import +#import "PPMicroBlinkDefines.h" + +@protocol PPPermissionDeniedDelegate; + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPPermissionDeniedViewController : UIViewController + +@property (nonatomic) id delegate; + +@property (nonatomic, assign) BOOL hideCancelButton; + +@end + +@protocol PPPermissionDeniedDelegate + +- (void)userDidTapCancel:(PPPermissionDeniedViewController *)viewController; + +@end diff --git a/MicroBlink.framework/Headers/PPQuadDetectorResult.h b/MicroBlink.framework/Headers/PPQuadDetectorResult.h index c1d0d8c7..e34f47c1 100644 --- a/MicroBlink.framework/Headers/PPQuadDetectorResult.h +++ b/MicroBlink.framework/Headers/PPQuadDetectorResult.h @@ -23,7 +23,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * Exact location of detected object on image. * Contains 4 points of detected object's corners. */ -@property (nonatomic) PPQuadrangle* detectionLocation; +@property (nonatomic) PPQuadrangle *detectionLocation; @end diff --git a/MicroBlink.framework/Headers/PPQuadDetectorSettings.h b/MicroBlink.framework/Headers/PPQuadDetectorSettings.h new file mode 100644 index 00000000..35aef662 --- /dev/null +++ b/MicroBlink.framework/Headers/PPQuadDetectorSettings.h @@ -0,0 +1,34 @@ +// +// PPQuadDetectorSettings.h +// BlinkIdFramework +// +// Created by Jura on 04/02/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import "PPDetectorSettings.h" + +#import "PPDecodingInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Settings for Quad detector, used for rectangular objects. + * This class is an abstract class. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPQuadDetectorSettings : PPDetectorSettings + +/** + * Each quad detector has decoding information which defines the regios of the image which will be decoded + */ +@property (nonatomic) NSArray *decodingInfoArray; + +/** + * This is an abstract class. Please use one of concrete classes. + */ +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPQuadrangle.h b/MicroBlink.framework/Headers/PPQuadrangle.h index d949c56f..6b538480 100644 --- a/MicroBlink.framework/Headers/PPQuadrangle.h +++ b/MicroBlink.framework/Headers/PPQuadrangle.h @@ -15,7 +15,8 @@ NS_ASSUME_NONNULL_BEGIN /** * Class represents the quadrangle (arbitrary geometric object with 4 different corner points */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPQuadrangle : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPQuadrangle : NSObject /** Upper left point */ @property (nonatomic, assign) CGPoint upperLeft; @@ -59,6 +60,12 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPQuadrangle : NSObject */ - (instancetype)quadrangleWithTransformation:(CGAffineTransform)transform; +/** + * Returns the center point of the Quadrangle + * @return center point + */ +- (CGPoint)center; + @end NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPRecognitionStatusMetadata.h b/MicroBlink.framework/Headers/PPRecognitionStatusMetadata.h new file mode 100644 index 00000000..3cc23f7e --- /dev/null +++ b/MicroBlink.framework/Headers/PPRecognitionStatusMetadata.h @@ -0,0 +1,29 @@ +// +// PPRecognitionStatusMetadata.h +// PhotoPayDev +// +// Created by Jura on 19/04/2017. +// +// + +#import "PPMetadata.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, PPRecognitionStatus) { + PPRecognitionStatusSuccess = 0, + PPRecognitionStatusGlare, +}; + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPRecognitionStatusMetadata : PPMetadata + +@property (nonatomic, assign) PPRecognitionStatus status; + +- (instancetype)initWithName:(NSString *)name NS_UNAVAILABLE; + +- (instancetype)initWithStatus:(PPRecognitionStatus)status NS_DESIGNATED_INITIALIZER; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPRecognizerResult+Test.h b/MicroBlink.framework/Headers/PPRecognizerResult+Test.h new file mode 100644 index 00000000..9e6f7f0c --- /dev/null +++ b/MicroBlink.framework/Headers/PPRecognizerResult+Test.h @@ -0,0 +1,55 @@ +// +// PPRecognizerResult+Test.h +// PhotoPayFramework +// +// Created by Jura on 28/02/2017. +// Copyright © 2017 MicroBlink Ltd. All rights reserved. +// + +#import "PPRecognizerResult.h" + +/** + * Helper methods mostly used in testing of PPRecognizerResult objects + */ +@interface PPRecognizerResult (Test) + + +/** + * Method which creates a object representation of NSString objects in recognizer results + */ ++ (NSData *)dataWithString:(NSString *)string; + +/** + * Method which creates a object representation of NSDate objects in recognizer results + */ ++ (PPDateResult *)dateWithDate:(NSDate *)date; + +/** + * Method which creates a object representation of BOOL values in recognizer results + */ ++ (NSNumber *)dataWithBool:(BOOL)value; + +/** + * Helper method which fills in value and type dictionaries based on an given string. It uses dataWithString helper method + */ ++ (void)addString:(NSString *)string + forKey:(NSString *)key + valueDict:(NSMutableDictionary *)valueDict + typeDict:(NSMutableDictionary *)typeDict; + +/** + * Helper method which fills in value and type dictionaries based on an given date object. It uses dateWithDate helper method + */ ++ (void)addDate:(NSDate *)date forKey:(NSString *)key valueDict:(NSMutableDictionary *)valueDict typeDict:(NSMutableDictionary *)typeDict; + +/** + * Helper method which fills in value and type dictionaries based on an given bool value. It uses dataWithBool helper method + */ ++ (void)addBool:(BOOL)value forKey:(NSString *)key valueDict:(NSMutableDictionary *)valueDict typeDict:(NSMutableDictionary *)typeDict; + +/** + * Helper method which fills in value and type dictionaries based on an given NSData object. It directly writes the data object to dictionaries + */ ++ (void)addData:(NSData *)data forKey:(NSString *)key valueDict:(NSMutableDictionary *)valueDict typeDict:(NSMutableDictionary *)typeDict; + +@end diff --git a/MicroBlink.framework/Headers/PPRecognizerResult.h b/MicroBlink.framework/Headers/PPRecognizerResult.h index ef380e82..6fb53767 100644 --- a/MicroBlink.framework/Headers/PPRecognizerResult.h +++ b/MicroBlink.framework/Headers/PPRecognizerResult.h @@ -3,50 +3,79 @@ // MicroBlinkFramework // // Created by Jura on 04/04/14. -// Copyright (c) 2015 MicroBlink ČLtd.. All rights reserved. +// Copyright (c) 2015 MicroBlink Ltd.. All rights reserved. // #import #import "PPMicroBlinkDefines.h" #import "PPQuadrangle.h" +#import "PPDateResult.h" @class PPResultDataSourceAdapter; @class PPOcrLayout; @class PPBarcodeDetailedData; @class PPDetectorResult; -NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSUInteger, PPElementType) { + PPElementTypeNull, + PPElementTypeBoolean, + PPElementTypeInt, + PPElementTypeString, + PPElementTypeBarcodeData, + PPElementTypeQuadrangle, + PPElementTypeDetectorResult, + PPElementTypeOcr, + PPElementTypeDateTime, + PPElementTypeByteArray, +}; + /** Common superclass for all result classes of MicroBlink scanning library */ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPRecognizerResult : NSObject +- (instancetype _Nonnull)init NS_UNAVAILABLE; + /** - * These objects are always privately constructed + * Initializes the result with a dictionary of result elements + * + * @param elements dictionary of result elements + * @param types dictionary of result element types + * @return Initialized instance */ -- (instancetype)init NS_UNAVAILABLE; +- (instancetype _Nonnull)initWithElements:(NSMutableDictionary *_Nonnull)elements + resultElementTypes:(NSMutableDictionary *_Nonnull)types NS_DESIGNATED_INITIALIZER; /** * All data obtained in the recotnition phase is contained in this Dictionay as Key-Value pairs. * * Values can have different types: NSStrings, NSInteger, PPOcrLayouts... - * + * * @Warning it's abetter idea to use designated getters getStringElement, getOcrLayoutElement, etc. * * @return NSDictionary with all key-value pairs obtained in the recongition phase. */ -- (NSDictionary *)getAllElements; +- (NSDictionary *_Nonnull)getAllElements; /** * Method returns a dictionary with all string elements found as a recognizer results. Dictionary contains NSString objects. * - * Basically, this method performs filtering of all elements returned by getAllElements method. Just string elements are left in the dictionary. + * Basically, this method performs filtering of all elements returned by getAllElements method. Just string elements are left in the + * dictionary. * * @return eturns a dictionary with all string elements found as a recognizer results */ -- (NSDictionary *)getAllStringElements; +- (NSDictionary *_Nonnull)getAllStringElements; + + +/** + * Method returns a dictionary with all the type information for each key + * + * @return A dictionary with type information for each key. + */ +- (NSMutableDictionary *_Nonnull)getAllElementTypes; /** * Returns NSData* element from allElements dictionary. @@ -58,7 +87,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return NSData value. */ -- (NSData *)getDataElement:(NSString *)key; +- (NSData *_Nullable)getDataElement:(NSString *_Nonnull)key; /** * Returns a NSString* element from allElements dictionary using guessed encoding. @@ -70,7 +99,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return NSString value. */ -- (NSString *)getStringElementUsingGuessedEncoding:(NSString *)key; +- (NSString *_Nullable)getStringElementUsingGuessedEncoding:(NSString *_Nonnull)key; /** * Returns a NSString* element from allElements dictionary, using a given encoding. @@ -83,8 +112,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return String created from data property, using given encoding */ -- (NSString *)getStringElement:(NSString *)key - encoding:(NSStringEncoding)encoding; +- (NSString *_Nullable)getStringElement:(NSString *_Nonnull)key encoding:(NSStringEncoding)encoding; /** * Returns a NSNumber containing a BOOL element from allElements dictionary. @@ -96,7 +124,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return NSNumber with bool */ -- (NSNumber *)getBoolElement:(NSString *)key; +- (NSNumber *_Nullable)getBoolElement:(NSString *_Nonnull)key; /** * Returns a NSNumber containing a int element from allElements dictionary. @@ -108,7 +136,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return NSNumber with int */ -- (NSNumber *)getIntElement:(NSString *)key; +- (NSNumber *_Nullable)getIntElement:(NSString *_Nonnull)key; /** * Returns a PPOcrLayout* element from allElements dictionary. @@ -120,7 +148,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return PPOcrLayout value. */ -- (PPOcrLayout *)getOcrLayoutElement:(NSString *)key; +- (PPOcrLayout *_Nullable)getOcrLayoutElement:(NSString *_Nonnull)key; /** * Returns PPBarcodeDetailedData* element from allElements dictionary.. @@ -132,7 +160,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return PPBarcodeDetailedData value */ -- (PPBarcodeDetailedData *)getBarcodeDetailedDataElement:(NSString *)key; +- (PPBarcodeDetailedData *_Nullable)getBarcodeDetailedDataElement:(NSString *_Nonnull)key; /** * Returns a PPQuadrangle* element from allElements dictionary. @@ -144,7 +172,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return PPQuadrangle quadrangle value. */ -- (PPQuadrangle *)getQuadrangleElement:(NSString *)key; +- (PPQuadrangle *_Nullable)getQuadrangleElement:(NSString *_Nonnull)key; /** * Returns a PPDetectorResult element from allElements dictionary @@ -156,28 +184,34 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return PPDetectorResult detector result value */ -- (PPDetectorResult *)getDetectorResultElement:(NSString *)key; +- (PPDetectorResult *_Nullable)getDetectorResultElement:(NSString *_Nonnull)key; + /** - * Returns the xml representation of this result + * Returns a PPDateResult element from allElements dictionary. * - * @return xml representation of this result + * If element exists and it's a PPDateResult, the method will return specified NSDate object + * If element doesn't exist, the method will return nil. + * + * @param key element key + * + * @return date result value */ -- (NSString*)xml; +- (PPDateResult *_Nullable)getDateResultElement:(NSString *_Nonnull)key; /** - * Returns the attributed version of description string + * Returns the xml representation of this result * - * @return the attributed version of description string + * @return xml representation of this result */ -- (NSAttributedString*)attributedDescription; +- (NSString *_Nonnull)xml; /** - * Convenience method for simple display of result inside UITableView + * Returns the attributed version of description string * - * @return PPResultDataSourceAdapter object + * @return the attributed version of description string */ -- (PPResultDataSourceAdapter*)getAdapter; +- (NSAttributedString *_Nonnull)attributedDescription; /** * Returns string representation of NSData object for passing over URLs @@ -186,8 +220,6 @@ PP_CLASS_AVAILABLE_IOS(6.0) * * @return string representation of NSData object */ -+ (NSString *)urlStringFromData:(NSData *)data; ++ (NSString *_Nonnull)urlStringFromData:(NSData *_Nonnull)data; @end - -NS_ASSUME_NONNULL_END \ No newline at end of file diff --git a/MicroBlink.framework/Headers/PPRecognizerSettings.h b/MicroBlink.framework/Headers/PPRecognizerSettings.h index 7cb3e206..bde21ad4 100644 --- a/MicroBlink.framework/Headers/PPRecognizerSettings.h +++ b/MicroBlink.framework/Headers/PPRecognizerSettings.h @@ -18,22 +18,22 @@ NS_ASSUME_NONNULL_BEGIN * * This class is common superclass for each of the Recognizer settings, */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPRecognizerSettings : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPRecognizerSettings : NSObject /** * Property which determines if the recognizer is enabled * - * @param enabled If YES, recognizer is enabled, and it peroforms recognition on each video frame. - */ -- (void)setEnabled:(BOOL)enabled; - -/** - * Determines if recognizer is enabled + * If YES, recognizer is enabled, and it peroforms recognition on each video frame. * - * @return YES if recognizer is enabled + * Default: YES */ -- (BOOL)isEnabled; +@property (nonatomic, getter=isEnabled) BOOL enabled; + +- (Class) getIdealOverlayViewControllerClass; + +- (UIInterfaceOrientationMask)getOptimalHudOrientation; @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPScanSettings.h b/MicroBlink.framework/Headers/PPScanSettings.h index c76bee38..e45269a3 100644 --- a/MicroBlink.framework/Headers/PPScanSettings.h +++ b/MicroBlink.framework/Headers/PPScanSettings.h @@ -45,7 +45,8 @@ typedef NS_ENUM(NSUInteger, PPFrameQualityEstimationMode) { /** * Settings class containing settings related to scanner behaviour */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPScanSettings : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPScanSettings : NSObject /** * Contains PPRecognizerSettings objects - settings for each individual recognizer. @@ -54,30 +55,37 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPScanSettings : NSObject * * @see PPRecognizerSettings. */ -@property (nonatomic, strong, readonly) NSArray *recognizerSettingsList; +@property (nonatomic, readonly) NSArray *recognizerSettingsList; /** * If NO, recognizer chain will stop when finds first valid scan results and will return just it. - * If YES, recognizer chain can sometimes return more than one scanning result. + * If YES, recognizer chain can sometimes return more than one scanning result. * * Default: YES */ -@property (nonatomic, assign) BOOL allowMultipleResults; +@property (nonatomic) BOOL allowMultipleResults; + +/** + * If YES, recognizers will call delegate's didOutputResults method for every image. + * + * Default: NO + */ +@property (nonatomic) BOOL allowResultForEveryImage; /** * Timeout interval in which the partial scanning results in PhotoPay will be returned to the user. * If <= 0.0, no timeout event will be reported. * - * Default: 7.0 seconds + * Default: 12 seconds in BlinkID and PhotoPay, 7.0 for PDF417, 0 for others. */ -@property (nonatomic, assign) NSTimeInterval partialRecognitionTimeout; +@property (nonatomic) NSTimeInterval partialRecognitionTimeout; /** * Recognition mode. * * Default: PPRecognitionModeDefault */ -@property (nonatomic, assign) PPRecognitionMode recognitionMode; +@property (nonatomic) PPRecognitionMode recognitionMode; /** * Frame quality estimation mode. If frame quality estimation is on, some video frames will be skipped, if @@ -87,7 +95,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPScanSettings : NSObject * * Default PPFrameQualityEstimationModeDefault */ -@property (nonatomic, assign) PPFrameQualityEstimationMode frameQualityEstimationMode; +@property (nonatomic) PPFrameQualityEstimationMode frameQualityEstimationMode; /** * Designated initializer. Initializes the object with default settings (see above for defaults) @@ -102,7 +110,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPScanSettings : NSObject * * @param setting Concerete recognizer setting. */ -- (void)addRecognizerSettings:(PPRecognizerSettings*)setting; +- (void)addRecognizerSettings:(PPRecognizerSettings *)setting; /** * Removes recognizer setting to the list of all recognizer. @@ -110,7 +118,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPScanSettings : NSObject * * @param setting Concerete recognizer setting. */ -- (void)removeRecognizerSettings:(PPRecognizerSettings*)setting; +- (void)removeRecognizerSettings:(PPRecognizerSettings *)setting; /** * Removes all recognizer settings from the list. diff --git a/MicroBlink.framework/Headers/PPScanningDelegate.h b/MicroBlink.framework/Headers/PPScanningDelegate.h index f90f45d1..e9e353a9 100644 --- a/MicroBlink.framework/Headers/PPScanningDelegate.h +++ b/MicroBlink.framework/Headers/PPScanningDelegate.h @@ -46,8 +46,7 @@ NS_ASSUME_NONNULL_BEGIN * @param scanningViewController Scanning view controller which was responsible for scanning * @param error Error object describing the error */ -- (void)scanningViewController:(UIViewController *)scanningViewController - didFindError:(NSError*)error; +- (void)scanningViewController:(UIViewController *)scanningViewController didFindError:(NSError *)error; /** * Scanning library was closed, usually by the user pressing close button and cancelling the scan @@ -90,7 +89,7 @@ NS_ASSUME_NONNULL_BEGIN * * This is intended for you to easily spot the issue as soon as possible. * - * If you implement this method, you have a chance to handle the situation. However, scanning won't work + * If you implement this method, you have a chance to handle the situation. However, scanning won't work * without a valid license key! * * @param scanningViewController Scanning view controller which was responsible for scanning @@ -116,8 +115,9 @@ NS_ASSUME_NONNULL_BEGIN /** * Called when Scanning library starts detection of objects. - * Detection cycle happens before recognition cycle and it attempts to find the location of specific object on an image. - * Since detection and recognition are two separate events, it is possible for detection to be successful while recognition can fail (not vice versa). + * Detection cycle happens before recognition cycle and it attempts to find the location of specific object on an image. + * Since detection and recognition are two separate events, it is possible for detection to be successful while recognition can fail (not + * vice versa). * * @param scanningViewController scanningViewController Scanning view controller responsible for scanning */ @@ -126,15 +126,17 @@ NS_ASSUME_NONNULL_BEGIN /** * Called when Scanning library finishes detection of objects. * Detection cycle happens before recognition cycle and it attempts to find the location of specific object on an image. - * Since detection and recognition are two separate events, it is possible for detection to be successful while recognition can fail (not vice versa). + * Since detection and recognition are two separate events, it is possible for detection to be successful while recognition can fail (not + * vice versa). * - * Returned PPDetectorResult object is an abstract class. Concrete classes (such as PPQuadDetectorResult) contain information about detected object (i.e. location on the screen). + * Returned PPDetectorResult object is an abstract class. Concrete classes (such as PPQuadDetectorResult) contain information about detected + * object (i.e. location on the screen). * * @param scanningViewController scanningViewController Scanning view controller responsible for scanning * @param result result of object detection containing information of detection (i.e. location) */ - (void)scanningViewController:(UIViewController *)scanningViewController - didFinishDetectionWithResult:(PPDetectorResult *)result; + didFinishDetectionWithResult:(PPDetectorResult *)result; /** * Called when Scanning library starts recognition cycle. Recognition cycle happens after successful detection cycle. @@ -144,7 +146,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)scanningViewControllerDidStartRecognition:(UIViewController *)scanningViewController; - (void)scanningViewController:(UIViewController *)scanninvViewController - didObtainOcrResult:(PPOcrLayout*)ocrResult withResultName:(NSString*)resultName; + didObtainOcrResult:(PPOcrLayout *)ocrResult + withResultName:(NSString *)resultName; /** * Called when coordinator obtaines metadata information @@ -157,4 +160,4 @@ NS_ASSUME_NONNULL_BEGIN @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPScanningViewController.h b/MicroBlink.framework/Headers/PPScanningViewController.h index 98d6da51..5a202e3d 100644 --- a/MicroBlink.framework/Headers/PPScanningViewController.h +++ b/MicroBlink.framework/Headers/PPScanningViewController.h @@ -7,6 +7,7 @@ // #import +#import @protocol PPScanningDelegate; @@ -24,7 +25,7 @@ NS_ASSUME_NONNULL_BEGIN * Defines a portion of the screen in which the scanning will be performed. * Given as a CGRect with unit coordinating system: * - * @example CGRectMake(0.2f, 0.5f, 0.4f, 0.3f) defines a portion of the screen which starts at + * @example CGRectMake(0.2f, 0.5f, 0.4f, 0.3f) defines a portion of the screen which starts at * 20% from the left border * 50% from the top * covers 40% of screen width @@ -46,12 +47,12 @@ NS_ASSUME_NONNULL_BEGIN * * Default: UIInterfaceOrientationMaskPortrait. */ -@property (nonatomic) NSUInteger supportedOrientations; +@property (nonatomic) UIInterfaceOrientationMask supportedOrientations; /** * Pause scanning without dismissing the camera view. * - * If there is camera frame being processed at a time, the processing will finish, but the results of processing + * If there is camera frame being processed at a time, the processing will finish, but the results of processing * will not be returned. * * @warning must be called from Main thread to ensure thread synchronization @@ -101,6 +102,18 @@ NS_ASSUME_NONNULL_BEGIN */ - (BOOL)isCameraPaused; +/** + * Play scan sound. + * + * It uses default scan sound, you can change it by setting your own soundFilePath in PPUiSettings. + */ +- (void)playScanSuccesSound; + +/** + * Call to turn on torch without camera overlay + */ +- (void)willSetTorchOn:(BOOL)torchOn; + @end NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPSegmentScanOverlayViewController.h b/MicroBlink.framework/Headers/PPSegmentScanOverlayViewController.h new file mode 100644 index 00000000..e3dc8096 --- /dev/null +++ b/MicroBlink.framework/Headers/PPSegmentScanOverlayViewController.h @@ -0,0 +1,20 @@ +// +// PPSegmentScanOverlayViewController.h +// PhotoPayFramework +// +// Created by Jura on 19/09/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import "PPModernBaseOverlayViewController.h" + +/** + * Default overlay when using OCR recognizer. + * This overlay contains PPOcrResultOverlaySubview. + * + * @see PPOcrResultOverlaySubview + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPSegmentScanOverlayViewController : PPModernBaseOverlayViewController + +@end diff --git a/MicroBlink.framework/Headers/PPSettings.h b/MicroBlink.framework/Headers/PPSettings.h index 153e7f06..33acdfb3 100644 --- a/MicroBlink.framework/Headers/PPSettings.h +++ b/MicroBlink.framework/Headers/PPSettings.h @@ -26,22 +26,41 @@ NS_ASSUME_NONNULL_BEGIN * - Camera Settings: for customizing camera controls * - License Settings: */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPSettings : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPSettings : NSObject + +/** + * Initializes the PPSettings with all default values. + * + * @see individual properties for defaults. + * + * @return Initialized PPSettings object + */ +- (instancetype)init; + +/** + * Initializes the PPSettings with a given resource bundle. + * + * @see individual properties for defaults. Resource bundle will be set to the bundle passed as parametere here. + * + * @return Initialized PPSettings object + */ +- (instancetype)initWithResourceBundle:(NSBundle *)bundle NS_DESIGNATED_INITIALIZER; /** * Settings related to Camera control */ -@property (nonatomic, strong) PPCameraSettings* cameraSettings; +@property (nonatomic) PPCameraSettings *cameraSettings; /** * Settings for license key (without it, scanning might not work) */ -@property (nonatomic, strong) PPLicenseSettings* licenseSettings; +@property (nonatomic) PPLicenseSettings *licenseSettings; /** - * Settings for camera UIg + * Settings for camera UI */ -@property (nonatomic, strong) PPUiSettings* uiSettings; +@property (nonatomic) PPUiSettings *uiSettings; /** * Settings to control scanning. @@ -54,12 +73,23 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPSettings : NSObject * * @see PPRecognizerSettings */ -@property (nonatomic, strong) PPScanSettings* scanSettings; +@property (nonatomic) PPScanSettings *scanSettings; /** * Settings for obtaining metadata in the scanning process. */ -@property (nonatomic, strong) PPMetadataSettings* metadataSettings; +@property (nonatomic) PPMetadataSettings *metadataSettings; + +/** + * Bundle in which the resources for the scanning process should be found. Usually, by default, this + * is equal to Microblink.bundle located in Main app bundle. + * + * i.e, this is by default initialized to: + * [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"MicroBlink" ofType:@"bundle"]; + * + * This is a readonly property. If you want to set it, please use initWithResourceBundle: initialized + */ +@property (nonatomic, readonly) NSBundle *resourcesBundle; @end diff --git a/MicroBlink.framework/Headers/PPSimNumberRecognizerResult.h b/MicroBlink.framework/Headers/PPSimNumberRecognizerResult.h new file mode 100644 index 00000000..b8aa14ec --- /dev/null +++ b/MicroBlink.framework/Headers/PPSimNumberRecognizerResult.h @@ -0,0 +1,22 @@ +// +// PPSimNumberRecognizerResult.h +// BlinkIdFramework +// +// Created by Admin on 23/02/2017. +// Copyright © 2017 MicroBlink Ltd. All rights reserved. +// + +#import "PPRecognizerResult.h" + +/** + * Result of scanning with SimNumber Recognizer + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPSimNumberRecognizerResult : PPRecognizerResult + +/** + * Scanned SIM number + */ +@property (nonatomic, readonly, strong, nullable) NSString *simNumber; + +@end diff --git a/MicroBlink.framework/Headers/PPSimNumberRecognizerSettings.h b/MicroBlink.framework/Headers/PPSimNumberRecognizerSettings.h new file mode 100644 index 00000000..d0efdef6 --- /dev/null +++ b/MicroBlink.framework/Headers/PPSimNumberRecognizerSettings.h @@ -0,0 +1,17 @@ +// +// PPSimNumberRecognizerSettings.h +// BlinkIdFramework +// +// Created by Admin on 23/02/2017. +// Copyright © 2017 MicroBlink Ltd. All rights reserved. +// + +#import "PPRecognizerSettings.h" + +/** + * Settings for scanning Sim numbers + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPSimNumberRecognizerSettings : PPRecognizerSettings + +@end diff --git a/MicroBlink.framework/Headers/PPTapToFocusOverlaySubview.h b/MicroBlink.framework/Headers/PPTapToFocusOverlaySubview.h new file mode 100644 index 00000000..ce4e84b0 --- /dev/null +++ b/MicroBlink.framework/Headers/PPTapToFocusOverlaySubview.h @@ -0,0 +1,29 @@ +// +// PPTapToFocusOverlaySubview.h +// BlinkOcrFramework +// +// Created by Jura on 18/09/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Overlay subview presenting the effect which happens when the user taps to focus + */ +PP_CLASS_AVAILABLE_IOS(6.0) @interface PPTapToFocusOverlaySubview : PPOverlaySubview + +/** + * Designated initializer + * + * @param frame - exact frame of the view + */ +- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPTemplatingOverlayViewController.h b/MicroBlink.framework/Headers/PPTemplatingOverlayViewController.h new file mode 100644 index 00000000..9657da03 --- /dev/null +++ b/MicroBlink.framework/Headers/PPTemplatingOverlayViewController.h @@ -0,0 +1,21 @@ +// +// PPTemplatingOverlayViewController.h +// BlinkIdFramework +// +// Created by Dino on 08/07/16. +// Copyright © 2016 MicroBlink Ltd. All rights reserved. +// + +#import "PPModernBaseOverlayViewController.h" + +/** + * Default overlay when using Templating API. + * This overlay contains PPOcrResultOverlaySubview and PPModernViewFinderOverlaySubview. + * + * @see PPOcrResultOverlaySubview + * @see PPModernViewFinderOverlaySubview + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPTemplatingOverlayViewController : PPModernBaseOverlayViewController + +@end diff --git a/MicroBlink.framework/Headers/PPTextMetadata.h b/MicroBlink.framework/Headers/PPTextMetadata.h index a917ad71..b1707e32 100644 --- a/MicroBlink.framework/Headers/PPTextMetadata.h +++ b/MicroBlink.framework/Headers/PPTextMetadata.h @@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN /** * Type of the text metadata */ -typedef NS_ENUM(NSUInteger, PPTextMetadataType){ +typedef NS_ENUM(NSUInteger, PPTextMetadataType) { /** Regular text metadata */ PPTextMetadataTypeTxt, /** XML formatter metadata */ @@ -25,12 +25,13 @@ typedef NS_ENUM(NSUInteger, PPTextMetadataType){ /** * Textual type of Metadata returned by MicroBlink scanner. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPTextMetadata : PPMetadata +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPTextMetadata : PPMetadata /** * Actual text in the metadata. */ -@property (nonatomic, strong) NSString* text; +@property (nonatomic, strong) NSString *text; /** * Type of the text metadata @@ -57,8 +58,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPTextMetadata : PPMetadata * * @return Initialized PPTextMetadata object with given name and text value, with default type PPTextMetadataTypeTxt */ -- (instancetype)initWithName:(NSString *)name - text:(NSString*)text; +- (instancetype)initWithName:(NSString *)name text:(NSString *)text; /** * Retuns an initialized PPTextMetadata object with given name, text value and type @@ -69,10 +69,8 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPTextMetadata : PPMetadata * * @return Initialized PPTextMetadata object with given name, text value and type */ -- (instancetype)initWithName:(NSString *)name - text:(NSString*)text - type:(PPTextMetadataType)type NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithName:(NSString *)name text:(NSString *)text type:(PPTextMetadataType)type NS_DESIGNATED_INITIALIZER; @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPToastOverlaySubview.h b/MicroBlink.framework/Headers/PPToastOverlaySubview.h new file mode 100644 index 00000000..b9ebe5b3 --- /dev/null +++ b/MicroBlink.framework/Headers/PPToastOverlaySubview.h @@ -0,0 +1,25 @@ +// +// PPTostOverlaySubview.h +// PhotoPayFramework +// +// Created by Jura on 08/06/14. +// Copyright (c) 2014 MicroBlink Ltd. All rights reserved. +// + +#import +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPToastOverlaySubview : PPOverlaySubview + +@property (nonatomic, assign) CGFloat toastMargin; + +@property (nonatomic, strong) UIFont *font; + +@property (nonatomic, strong) UILabel *label; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPUiSettings.h b/MicroBlink.framework/Headers/PPUiSettings.h index 414d66fa..61211d42 100644 --- a/MicroBlink.framework/Headers/PPUiSettings.h +++ b/MicroBlink.framework/Headers/PPUiSettings.h @@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN /** * Different options for displaying help */ -typedef NS_ENUM(NSUInteger, PPHelpDisplayMode) { +typedef PP_DEPRECATED_IOS(1_0, 5_9) NS_ENUM(NSUInteger, PPHelpDisplayMode) { /** Defines that help should never be displayed */ PPHelpDisplayModeNever, @@ -31,7 +31,8 @@ typedef NS_ENUM(NSUInteger, PPHelpDisplayMode) { /** * Settings class containing UI information */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUiSettings : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPUiSettings : NSObject /** * If YES, default camera overlay will display Cancel button. @@ -41,6 +42,22 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUiSettings : NSObject */ @property (nonatomic, assign) BOOL showCloseButton; +/** + * If YES, default camera overlay will display Torch button. + * Usually, if camera is displayed inside Navigation View Controler, this is reasonable to set to NO. + * + * Default: YES. + */ +@property (nonatomic, assign) BOOL showTorchButton; + +/** + * If YES, default camera overlay will display Status bar. + * Usually, if camera is displayed inside Navigation View Controler, this is reasonable to set to YES. + * + * Default: NO. + */ +@property (nonatomic, assign) BOOL showStatusBar; + /** * If YES, Overlay View Controller will be autorotated independently of ScanningViewController. * @@ -50,7 +67,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUiSettings : NSObject /** * If YES, OCR results will be passed to the UI callbacks. For you, this means OCR effects will be shown on screen. - * + * * Default: YES. Use NO if you care about scanning speed. */ @property (nonatomic, assign) BOOL showOcrResults; @@ -60,14 +77,14 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUiSettings : NSObject * * Default: nil, because it uses default language of the device */ -@property (nonatomic, strong, nullable) NSString* language; +@property (nonatomic, strong, nullable) NSString *language; /** * Full path to the sound file which is played when the valid result is scanned. * - * Default: `[[NSBundle mainBundle] pathForResource:@"PPbeep" ofType:@"wav"];` + * Default: `[bundle pathForResource:@"PPbeep" ofType:@"wav"];`, where bundle is either Microblink.bundle, or bundle used by PPSettings */ -@property (nonatomic, strong, nullable) NSString* soundFilePath; +@property (nonatomic, strong, nullable) NSString *soundFilePath; /** * Label which is displayed on screen when camera is paused, but still exists on the screen. @@ -104,15 +121,25 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUiSettings : NSObject * * Default: PPHelpDisplayModeFirstRun */ -@property (nonatomic, assign) PPHelpDisplayMode helpDisplayMode; +@property (nonatomic, assign) PPHelpDisplayMode helpDisplayMode PP_DEPRECATED_IOS(1_0, 5_9, "Perform manual help display in your app"); + /** - * Designated initializer. Initializes the object with default settings (see above for defaults) + * Initializes the object with default settings (see above for defaults). * * @return object initialized with default values. */ - (instancetype)init; +/** + * Designated initializer. Initializes the object with default settings (see above for defaults). + * + * Also receives a path to the sound file used when scanning finishes successfully + * + * @return object initialized with default values. + */ +- (instancetype)initWithSoundFilePath:(nullable NSString *)soundFilePath NS_DESIGNATED_INITIALIZER; + @end NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPUsdlRecognizerResult.h b/MicroBlink.framework/Headers/PPUsdlRecognizerResult.h index 8dabfddf..22a7c235 100644 --- a/MicroBlink.framework/Headers/PPUsdlRecognizerResult.h +++ b/MicroBlink.framework/Headers/PPUsdlRecognizerResult.h @@ -12,8 +12,6 @@ #pragma mark - Keys for obtaining data on driver's licenses -NS_ASSUME_NONNULL_BEGIN - //==============================================================/ //============== 1. DETERMINING BARCODE VERSION ================/ //==============================================================/ @@ -27,7 +25,7 @@ NS_ASSUME_NONNULL_BEGIN Administrators (AAMVA) Card Design Standard from AAMVA DL/ID-2000 standard to DL/ID-2013 shall be designated as "AAMVA". */ -PP_EXTERN NSString* const kPPDocumentType; +PP_EXTERN NSString *_Nonnull const kPPDocumentType; /** Mandatory on all driver's licenses. @@ -53,7 +51,7 @@ PP_EXTERN NSString* const kPPDocumentType; If document type is not "AAMVA", this field defines version number of the given document type's standard. */ -PP_EXTERN NSString* const kPPStandardVersionNumber; +PP_EXTERN NSString *_Nonnull const kPPStandardVersionNumber; //==============================================================/ //========== 2. PERSONAL DATA KEYS ===========/ @@ -66,7 +64,7 @@ PP_EXTERN NSString* const kPPStandardVersionNumber; Collect full name for record, print as many characters as possible on portrait side of DL/ID. */ // internal note: Form AAMVA 01 filled by DataExpander from kFullName -PP_EXTERN NSString* const kPPCustomerFamilyName; +PP_EXTERN NSString *_Nonnull const kPPCustomerFamilyName; /** Mandatory on all AAMVA, Magnetic and Compact barcodes. @@ -74,7 +72,7 @@ PP_EXTERN NSString* const kPPCustomerFamilyName; First name of the cardholder. */ // internal note: Form AAMVA 01 filled by DataExpander from kFullName -PP_EXTERN NSString* const kPPCustomerFirstName; +PP_EXTERN NSString *_Nonnull const kPPCustomerFirstName; /** Mandatory on all AAMVA, Magnetic and Compact barcodes. @@ -94,14 +92,14 @@ PP_EXTERN NSString* const kPPCustomerFirstName; If indvidual has more than one middle name they are separated with space. */ // internal node: Filled by DataExpander -PP_EXTERN NSString* const kPPCustomerFullName; +PP_EXTERN NSString *_Nonnull const kPPCustomerFullName; /** Mandatory on all AAMVA, Magentic and Compact barcodes. Date on which the cardholder was born. (MMDDCCYY format) */ -PP_EXTERN NSString* const kPPDateOfBirth; +PP_EXTERN NSString *_Nonnull const kPPDateOfBirth; /** Mandatory on all AAMVA, Magentic barcodes. @@ -109,7 +107,7 @@ PP_EXTERN NSString* const kPPDateOfBirth; Gender of the cardholder. 1 = male, 2 = female. */ -PP_EXTERN NSString* const kPPSex; +PP_EXTERN NSString *_Nonnull const kPPSex; /** Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 barcodes. @@ -129,7 +127,7 @@ PP_EXTERN NSString* const kPPSex; DIC Dichromatic UNK Unknown */ -PP_EXTERN NSString* const kPPEyeColor; +PP_EXTERN NSString *_Nonnull const kPPEyeColor; /** Mandatory on all AAMVA and Magnetic barcodes. @@ -140,7 +138,7 @@ PP_EXTERN NSString* const kPPEyeColor; The place where the registered driver of a vehicle (individual or corporation) may be contacted such as a house number, street address etc. */ -PP_EXTERN NSString* const kPPAddressStreet; +PP_EXTERN NSString *_Nonnull const kPPAddressStreet; /** Mandatory on all AAMVA and Magnetic barcodes. @@ -149,7 +147,7 @@ PP_EXTERN NSString* const kPPAddressStreet; City portion of the cardholder address. */ -PP_EXTERN NSString* const kPPAddressCity; +PP_EXTERN NSString *_Nonnull const kPPAddressCity; /** Mandatory on all AAMVA and Magnetic barcodes. @@ -158,7 +156,7 @@ PP_EXTERN NSString* const kPPAddressCity; State portion of the cardholder address. */ -PP_EXTERN NSString* const kPPAddressJurisdictionCode; +PP_EXTERN NSString *_Nonnull const kPPAddressJurisdictionCode; /** Mandatory on all AAMVA and Magnetic barcodes. @@ -169,7 +167,7 @@ PP_EXTERN NSString* const kPPAddressJurisdictionCode; trailing portion of the postal code in the U.S. is not known, zeros can be used to fill the trailing set of numbers up to nine (9) digits. */ -PP_EXTERN NSString* const kPPAddressPostalCode; +PP_EXTERN NSString *_Nonnull const kPPAddressPostalCode; /** Mandatory on all AAMVA and Magnetic barcodes. @@ -188,7 +186,7 @@ PP_EXTERN NSString* const kPPAddressPostalCode; */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPFullAddress; +PP_EXTERN NSString *_Nonnull const kPPFullAddress; /** Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. @@ -203,7 +201,7 @@ PP_EXTERN NSString* const kPPFullAddress; example: 181 centimeters = "181 cm" */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPHeight; +PP_EXTERN NSString *_Nonnull const kPPHeight; /** Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. @@ -213,7 +211,7 @@ PP_EXTERN NSString* const kPPHeight; Example: 5'9'' = "69". */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPHeightIn; +PP_EXTERN NSString *_Nonnull const kPPHeightIn; /** Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 Compact barcodes. @@ -223,7 +221,7 @@ PP_EXTERN NSString* const kPPHeightIn; Example: 180 Centimeters = "180". */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPHeightCm; +PP_EXTERN NSString *_Nonnull const kPPHeightCm; /** Mandatory on AAMVA 04, 05, 06, 07, 08. @@ -233,7 +231,7 @@ PP_EXTERN NSString* const kPPHeightCm; shall be separated by space " ". */ // internal node: AAMVA 02 and 03 filled from kFirstName wich can contain Middle name -PP_EXTERN NSString* const kPPCustomerMiddleName; +PP_EXTERN NSString *_Nonnull const kPPCustomerMiddleName; /** Optional on all AAMVA, Magnetic and Compact barcodes. @@ -253,7 +251,7 @@ PP_EXTERN NSString* const kPPCustomerMiddleName; WHI White UNK Unknown */ -PP_EXTERN NSString* const kPPHairColor; +PP_EXTERN NSString *_Nonnull const kPPHairColor; /** Mandatory on AAMVA 02 barcodes. @@ -273,7 +271,7 @@ PP_EXTERN NSString* const kPPHairColor; - 8TH or VIII (Eighth) - 9TH or IX (Ninth) */ -PP_EXTERN NSString* const kPPNameSuffix; +PP_EXTERN NSString *_Nonnull const kPPNameSuffix; /** Optional on all AAMVA and Compact barcodes. @@ -294,7 +292,7 @@ PP_EXTERN NSString* const kPPNameSuffix; If indvidual has more than one AKA middle name they are separated with space. */ // internal node: Filled by DataExpander -PP_EXTERN NSString* const kPPAKAFullName; +PP_EXTERN NSString *_Nonnull const kPPAKAFullName; /** Optional on all AAMVA and Compact barcodes. @@ -302,7 +300,7 @@ PP_EXTERN NSString* const kPPAKAFullName; Other family name by which cardholder is known. */ // internal node: Filled by DataExpander -PP_EXTERN NSString* const kPPAKAFamilyName; +PP_EXTERN NSString *_Nonnull const kPPAKAFamilyName; /** Optional on all AAMVA and Compact barcodes. @@ -310,7 +308,7 @@ PP_EXTERN NSString* const kPPAKAFamilyName; Other given name by which cardholder is known */ // internal node: Filled by DataExpander -PP_EXTERN NSString* const kPPAKAGivenName; +PP_EXTERN NSString *_Nonnull const kPPAKAGivenName; /** Optional on all AAMVA and Compact barcodes. @@ -332,7 +330,7 @@ PP_EXTERN NSString* const kPPAKAGivenName; 9TH Ninth */ // internal node: Filled by DataExpander -PP_EXTERN NSString* const kPPAKASuffixName; +PP_EXTERN NSString *_Nonnull const kPPAKASuffixName; /** Mandatory on AAMVA 02 barcodes. @@ -351,7 +349,7 @@ PP_EXTERN NSString* const kPPAKASuffixName; 9 = 146+ kg (321+ lbs) */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPWeightRange; +PP_EXTERN NSString *_Nonnull const kPPWeightRange; /** Mandatory on AAMVA 02 barcodes. @@ -360,7 +358,7 @@ PP_EXTERN NSString* const kPPWeightRange; Cardholder weight in pounds Example: 185 lb = "185" */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPWeightPounds; +PP_EXTERN NSString *_Nonnull const kPPWeightPounds; /** Mandatory on AAMVA 02 barcodes. @@ -369,14 +367,14 @@ PP_EXTERN NSString* const kPPWeightPounds; Cardholder weight in kilograms Example: 84 kg = "084" */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPWeightKilograms; +PP_EXTERN NSString *_Nonnull const kPPWeightKilograms; /** Mandatory on all AAMVA and Compact barcodes The number assigned or calculated by the issuing authority. */ -PP_EXTERN NSString* const kPPCustomerIdNumber; +PP_EXTERN NSString *_Nonnull const kPPCustomerIdNumber; /** Mandatory on AAMVA 04, 05, 06, 07, 08 barcodes. @@ -385,7 +383,7 @@ PP_EXTERN NSString* const kPPCustomerIdNumber; A code that indicates whether a field has been truncated (T), has not been truncated (N), or – unknown whether truncated (U). */ -PP_EXTERN NSString* const kPPFamilyNameTruncation; +PP_EXTERN NSString *_Nonnull const kPPFamilyNameTruncation; /** Mandatory on AAMVA 04, 05, 06, 07, 08 barcodes. @@ -394,7 +392,7 @@ PP_EXTERN NSString* const kPPFamilyNameTruncation; A code that indicates whether a field has been truncated (T), has not been truncated (N), or – unknown whether truncated (U). */ -PP_EXTERN NSString* const kPPFirstNameTruncation; +PP_EXTERN NSString *_Nonnull const kPPFirstNameTruncation; /** Mandatory on AAMVA 04, 05, 06, 07, 08 @@ -402,14 +400,14 @@ PP_EXTERN NSString* const kPPFirstNameTruncation; A code that indicates whether a field has been truncated (T), has not been truncated (N), or – unknown whether truncated (U). */ -PP_EXTERN NSString* const kPPMiddleNameTruncation; +PP_EXTERN NSString *_Nonnull const kPPMiddleNameTruncation; /** Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes Country and municipality and/or state/province */ -PP_EXTERN NSString* const kPPPlaceOfBirth; +PP_EXTERN NSString *_Nonnull const kPPPlaceOfBirth; /** Optional on all AAMVA barcodes @@ -418,7 +416,7 @@ PP_EXTERN NSString* const kPPPlaceOfBirth; Second line of street portion of the cardholder address. */ -PP_EXTERN NSString* const kPPAddressStreet2; +PP_EXTERN NSString *_Nonnull const kPPAddressStreet2; /** Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes @@ -445,56 +443,56 @@ PP_EXTERN NSString* const kPPAddressStreet2; U Unknown */ -PP_EXTERN NSString* const kPPRaceEthnicity; +PP_EXTERN NSString *_Nonnull const kPPRaceEthnicity; /** Optional on AAMVA 01 PREFIX to Driver Name. Freeform as defined by issuing jurisdiction. */ -PP_EXTERN NSString* const kPPNamePrefix; +PP_EXTERN NSString *_Nonnull const kPPNamePrefix; /** Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes. Country in which DL/ID is issued. U.S. = USA, Canada = CAN. */ -PP_EXTERN NSString* const kPPCountryIdentification; +PP_EXTERN NSString *_Nonnull const kPPCountryIdentification; /** Optional on AAMVA version 01. Driver Residence Street Address 1. */ -PP_EXTERN NSString* const kPPResidenceStreetAddress; +PP_EXTERN NSString *_Nonnull const kPPResidenceStreetAddress; /** Optional on AAMVA version 01. Driver Residence Street Address 2. */ -PP_EXTERN NSString* const kPPResidenceStreetAddress2; +PP_EXTERN NSString *_Nonnull const kPPResidenceStreetAddress2; /** Optional on AAMVA version 01. Driver Residence City */ -PP_EXTERN NSString* const kPPResidenceCity; +PP_EXTERN NSString *_Nonnull const kPPResidenceCity; /** Optional on AAMVA version 01. Driver Residence Jurisdiction Code. */ -PP_EXTERN NSString* const kPPResidenceJurisdictionCode; +PP_EXTERN NSString *_Nonnull const kPPResidenceJurisdictionCode; /** Optional on AAMVA 01 barcodes. Driver Residence Postal Code. */ -PP_EXTERN NSString* const kPPResidencePostalCode; +PP_EXTERN NSString *_Nonnull const kPPResidencePostalCode; /** Optional on AAMVA 01 barcodes. @@ -510,42 +508,42 @@ PP_EXTERN NSString* const kPPResidencePostalCode; , (required if other address portions follow, otherwise optional) Residence ZIP - Residence Postal Code (optional) */ -PP_EXTERN NSString* const kPPResidenceFullAddress; +PP_EXTERN NSString *_Nonnull const kPPResidenceFullAddress; /** Optional on AAMVA 05, 06, 07, 08 Date on which the cardholder turns 18 years old. (MMDDCCYY format) */ -PP_EXTERN NSString* const kPPUnder18; // nakon verzije 05 +PP_EXTERN NSString *_Nonnull const kPPUnder18; // nakon verzije 05 /** Optional on AAMVA 05, 06, 07, 08 Date on which the cardholder turns 19 years old. (MMDDCCYY format) */ -PP_EXTERN NSString* const kPPUnder19; // nakon verzije 05 +PP_EXTERN NSString *_Nonnull const kPPUnder19; // nakon verzije 05 /** Optional on AAMVA 05, 06, 07, 08 Date on which the cardholder turns 21 years old. (MMDDCCYY format) */ -PP_EXTERN NSString* const kPPUnder21; // nakon verzije 05 +PP_EXTERN NSString *_Nonnull const kPPUnder21; // nakon verzije 05 /** Optional on AAMVA version 01. The number assigned to an individual by the Social Security Administration. */ -PP_EXTERN NSString* const kPPSocialSecurityNumber; +PP_EXTERN NSString *_Nonnull const kPPSocialSecurityNumber; /** Optional on AAMVA version 01. Driver "AKA" Social Security Number. FORMAT SAME AS DRIVER SOC SEC NUM. ALTERNATIVE NUMBERS(S) used as SS NUM. */ -PP_EXTERN NSString* const kPPAKASocialSecurityNumber; +PP_EXTERN NSString *_Nonnull const kPPAKASocialSecurityNumber; /** Optional on AAMVA 01 @@ -554,35 +552,35 @@ PP_EXTERN NSString* const kPPAKASocialSecurityNumber; Hyphenated names acceptable, spaces between names acceptable, but no other use of special symbols */ -PP_EXTERN NSString* const kPPAKAMiddleName; // samo 01 +PP_EXTERN NSString *_Nonnull const kPPAKAMiddleName; // samo 01 /** Optional on AAMVA 01 ALTERNATIVE PREFIX to Driver Name. Freeform as defined by issuing jurisdiction. */ -PP_EXTERN NSString* const kPPAKAPrefixName; // samo 01 +PP_EXTERN NSString *_Nonnull const kPPAKAPrefixName; // samo 01 /** Optional on AAMVA 01, 06, 07, 08 Field that indicates that the cardholder is an organ donor = "1". */ -PP_EXTERN NSString* const kPPOrganDonor; +PP_EXTERN NSString *_Nonnull const kPPOrganDonor; /** Optional on AAMVA 07, 08 Field that indicates that the cardholder is a veteran = "1" */ -PP_EXTERN NSString* const kPPVeteran; +PP_EXTERN NSString *_Nonnull const kPPVeteran; /** Optional on AAMVA 01. (MMDDCCYY format) ALTERNATIVE DATES(S) given as date of birth. */ -PP_EXTERN NSString* const kPPAKADateOfBirth; // samo za 01 +PP_EXTERN NSString *_Nonnull const kPPAKADateOfBirth; // samo za 01 //==============================================================/ //========== 3. LICENSE DATA KEYS ============/ @@ -594,7 +592,7 @@ PP_EXTERN NSString* const kPPAKADateOfBirth; // samo za 01 This number uniquely identifies the issuing jurisdiction and can be obtained by contacting the ISO Issuing Authority (AAMVA) */ -PP_EXTERN NSString* const kPPIssuerIdentificationNumber; +PP_EXTERN NSString *_Nonnull const kPPIssuerIdentificationNumber; /** Mandatory on all AAMVA, Magnetic and Compact barcodes. @@ -605,7 +603,7 @@ PP_EXTERN NSString* const kPPIssuerIdentificationNumber; no longer valid. (MMDDCCYY format) */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPDocumentExpirationDate; +PP_EXTERN NSString *_Nonnull const kPPDocumentExpirationDate; /** Mandatory on all AAMVA and Compact barcodes. @@ -620,7 +618,7 @@ PP_EXTERN NSString* const kPPDocumentExpirationDate; within each AAMVA version (above) must be noted, beginning with Jurisdiction Version 00. */ -PP_EXTERN NSString* const kPPJurisdictionVersionNumber; +PP_EXTERN NSString *_Nonnull const kPPJurisdictionVersionNumber; /** Mandatory on all AAMVA and Magnetic barcodes. @@ -628,7 +626,7 @@ PP_EXTERN NSString* const kPPJurisdictionVersionNumber; Jurisdiction-specific vehicle class / group code, designating the type of vehicle the cardholder has privilege to drive. */ -PP_EXTERN NSString* const kPPJurisdictionVehicleClass; +PP_EXTERN NSString *_Nonnull const kPPJurisdictionVehicleClass; /** Mandatory on all AAMVA barcodes. @@ -637,7 +635,7 @@ PP_EXTERN NSString* const kPPJurisdictionVehicleClass; Jurisdiction-specific codes that represent restrictions to driving privileges (such as airbrakes, automatic transmission, daylight only, etc.). */ -PP_EXTERN NSString* const kPPJurisdictionRestrictionCodes; +PP_EXTERN NSString *_Nonnull const kPPJurisdictionRestrictionCodes; /** Mandatory on all AAMVA barcodes. @@ -647,7 +645,7 @@ PP_EXTERN NSString* const kPPJurisdictionRestrictionCodes; granted to the cardholder beyond the vehicle class (such as transportation of passengers, hazardous materials, operation of motorcycles, etc.). */ -PP_EXTERN NSString* const kPPJurisdictionEndorsementCodes; +PP_EXTERN NSString *_Nonnull const kPPJurisdictionEndorsementCodes; /** Mandatory on all AAMVA and Compact barcodes. @@ -655,7 +653,7 @@ PP_EXTERN NSString* const kPPJurisdictionEndorsementCodes; Date on which the document was issued. (MMDDCCYY format) */ // internal note: Filled by DataExpander -PP_EXTERN NSString* const kPPDocumentIssueDate; +PP_EXTERN NSString *_Nonnull const kPPDocumentIssueDate; /** Mandatory on AAMVA versions 02 and 03. @@ -664,7 +662,7 @@ PP_EXTERN NSString* const kPPDocumentIssueDate; that are generally applicable to commercial motor vehicles. If the vehicle is not a commercial vehicle, "NONE" is to be entered. */ -FOUNDATION_EXPORT NSString* const kPPFederalCommercialVehicleCodes; +FOUNDATION_EXPORT NSString *_Nonnull const kPPFederalCommercialVehicleCodes; /** Optional on all AAMVA barcodes. @@ -679,7 +677,7 @@ FOUNDATION_EXPORT NSString* const kPPFederalCommercialVehicleCodes; one jurisdiction (e.g. California, Colorado, Connecticut) then other data, like the IIN or address, must be examined to determine the jurisdiction. */ -PP_EXTERN NSString* const kPPIssuingJurisdiction; +PP_EXTERN NSString *_Nonnull const kPPIssuingJurisdiction; /** Optional on all AAMVA barcodes. @@ -688,7 +686,7 @@ PP_EXTERN NSString* const kPPIssuingJurisdiction; Standard vehicle classification code(s) for cardholder. This data element is a placeholder for future efforts to standardize vehicle classifications. */ -PP_EXTERN NSString* const kPPStandardVehicleClassification; +PP_EXTERN NSString *_Nonnull const kPPStandardVehicleClassification; /** @@ -717,7 +715,7 @@ PP_EXTERN NSString* const kPPStandardVehicleClassification; X Combined Tank/HAZ-MAT - This endorsement may be issued to any driver who qualifies for both the N and H endorsements. */ -PP_EXTERN NSString* const kPPStandardEndorsementCode; +PP_EXTERN NSString *_Nonnull const kPPStandardEndorsementCode; /** Optional on all AAMVA barcodes @@ -743,7 +741,7 @@ PP_EXTERN NSString* const kPPStandardEndorsementCode; V Medical Variance Documentation Required W Farm Waiver */ -PP_EXTERN NSString* const kPPStandardRestrictionCode; +PP_EXTERN NSString *_Nonnull const kPPStandardRestrictionCode; /** Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes @@ -751,7 +749,7 @@ PP_EXTERN NSString* const kPPStandardRestrictionCode; Text that explains the jurisdiction-specific code(s) for classifications of vehicles cardholder is authorized to drive. */ -PP_EXTERN NSString* const kPPJurisdictionVehicleClassificationDescription; +PP_EXTERN NSString *_Nonnull const kPPJurisdictionVehicleClassificationDescription; /** Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes @@ -759,14 +757,14 @@ PP_EXTERN NSString* const kPPJurisdictionVehicleClassificationDescription; Text that explains the jurisdiction-specific code(s) that indicates additional driving privileges granted to the cardholder beyond the vehicle class. */ -PP_EXTERN NSString* const kPPJurisdictionEndorsmentCodeDescription; +PP_EXTERN NSString *_Nonnull const kPPJurisdictionEndorsmentCodeDescription; /** Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes Text describing the jurisdiction-specific restriction code(s) that curtail driving privileges. */ -PP_EXTERN NSString* const kPPJurisdictionRestrictionCodeDescription; +PP_EXTERN NSString *_Nonnull const kPPJurisdictionRestrictionCodeDescription; /** Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 @@ -774,7 +772,7 @@ PP_EXTERN NSString* const kPPJurisdictionRestrictionCodeDescription; A string of letters and/or numbers that is affixed to the raw materials (card stock, laminate, etc.) used in producing driver licenses and ID cards. (DHS recommended field) */ -PP_EXTERN NSString* const kPPInventoryControlNumber; +PP_EXTERN NSString *_Nonnull const kPPInventoryControlNumber; /** Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes @@ -782,7 +780,7 @@ PP_EXTERN NSString* const kPPInventoryControlNumber; DHS required field that indicates date of the most recent version change or modification to the visible format of the DL/ID (MMDDCCYY format) */ -PP_EXTERN NSString* const kPPCardRevisionDate; +PP_EXTERN NSString *_Nonnull const kPPCardRevisionDate; /** Mandatory on AAMVA 02, 03, 04, 05, 06, 07, 08 and Magnetic barcodes. @@ -792,14 +790,14 @@ PP_EXTERN NSString* const kPPCardRevisionDate; from others that may have been issued in the past. This number may serve multiple purposes of document discrimination, audit information number, and/or inventory control. */ -PP_EXTERN NSString* const kPPDocumentDiscriminator; +PP_EXTERN NSString *_Nonnull const kPPDocumentDiscriminator; /** Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes DHS required field that indicates that the cardholder has temporary lawful status = "1". */ -PP_EXTERN NSString* const kPPLimitedDurationDocument; +PP_EXTERN NSString *_Nonnull const kPPLimitedDurationDocument; /** Optional on AAMVA 02, 03, 04, 05, 06, 07, 08 and Compact barcodes @@ -808,7 +806,7 @@ PP_EXTERN NSString* const kPPLimitedDurationDocument; license/ID card was made. If audit information is not used on the card or the MRT, it must be included in the driver record. */ -PP_EXTERN NSString* const kPPAuditInformation; +PP_EXTERN NSString *_Nonnull const kPPAuditInformation; /** Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes @@ -816,42 +814,42 @@ PP_EXTERN NSString* const kPPAuditInformation; DHS required field that indicates compliance: "M" = materially compliant; "F" = fully compliant; and, "N" = non-compliant. */ -PP_EXTERN NSString* const kPPComplianceType; +PP_EXTERN NSString *_Nonnull const kPPComplianceType; /** Optional on AAMVA version 01. Issue Timestamp. A string used by some jurisdictions to validate the document against their data base. */ -PP_EXTERN NSString* const kPPIssueTimestamp; +PP_EXTERN NSString *_Nonnull const kPPIssueTimestamp; /** Optional on AAMVA version 01. Driver Permit Expiration Date. MMDDCCYY format. Date permit expires. */ -PP_EXTERN NSString* const kPPPermitExpirationDate; +PP_EXTERN NSString *_Nonnull const kPPPermitExpirationDate; /** Optional on AAMVA version 01. Type of permit. */ -PP_EXTERN NSString* const kPPPermitIdentifier; +PP_EXTERN NSString *_Nonnull const kPPPermitIdentifier; /** Optional on AAMVA version 01. Driver Permit Issue Date. MMDDCCYY format. Date permit was issued. */ -PP_EXTERN NSString* const kPPPermitIssueDate; +PP_EXTERN NSString *_Nonnull const kPPPermitIssueDate; /** Optional on AAMVA version 01. Number of duplicate cards issued for a license or ID if any. */ -PP_EXTERN NSString* const kPPNumberOfDuplicates; +PP_EXTERN NSString *_Nonnull const kPPNumberOfDuplicates; /** Optional on AAMVA 04, 05, 06, 07, 08 and Compact barcodes @@ -859,7 +857,7 @@ PP_EXTERN NSString* const kPPNumberOfDuplicates; Date on which the hazardous material endorsement granted by the document is no longer valid. (MMDDCCYY format) */ -PP_EXTERN NSString* const kPPHAZMATExpirationDate; +PP_EXTERN NSString *_Nonnull const kPPHAZMATExpirationDate; /** Optional on AAMVA version 01. @@ -867,28 +865,28 @@ PP_EXTERN NSString* const kPPHAZMATExpirationDate; Medical Indicator/Codes. STATE SPECIFIC. Freeform; Standard "TBD" */ -PP_EXTERN NSString* const kPPMedicalIndicator; +PP_EXTERN NSString *_Nonnull const kPPMedicalIndicator; /** Optional on AAMVA version 01. Non-Resident Indicator. "Y". Used by some jurisdictions to indicate holder of the document is a non-resident. */ -PP_EXTERN NSString* const kPPNonResident; +PP_EXTERN NSString *_Nonnull const kPPNonResident; /** Optional on AAMVA version 01. A number or alphanumeric string used by some jurisdictions to identify a "customer" across multiple data bases. */ -PP_EXTERN NSString* const kPPUniqueCustomerId; +PP_EXTERN NSString *_Nonnull const kPPUniqueCustomerId; /** Optional on compact barcodes. Document discriminator. */ -PP_EXTERN NSString* const kPPDataDiscriminator; +PP_EXTERN NSString *_Nonnull const kPPDataDiscriminator; /** Optional on Magnetic barcodes. @@ -896,7 +894,7 @@ PP_EXTERN NSString* const kPPDataDiscriminator; Month on which the driving and identification privileges granted by the document are no longer valid. (MMYY format) */ -PP_EXTERN NSString* const kPPDocumentExpirationMonth; +PP_EXTERN NSString *_Nonnull const kPPDocumentExpirationMonth; /** Optional on Magnetic barcodes. @@ -904,14 +902,14 @@ PP_EXTERN NSString* const kPPDocumentExpirationMonth; Field that indicates that the driving and identification privileges granted by the document are nonexpiring = "1". */ -PP_EXTERN NSString* const kPPDocumentNonexpiring; +PP_EXTERN NSString *_Nonnull const kPPDocumentNonexpiring; /** Optional on Magnetic barcodes. Security version beeing used. */ -PP_EXTERN NSString* const kPPSecurityVersion; +PP_EXTERN NSString *_Nonnull const kPPSecurityVersion; #pragma mark - Keys for accessing raw barcode results @@ -922,24 +920,25 @@ PP_EXTERN NSString* const kPPSecurityVersion; /** Raw pdf417 result */ -PP_EXTERN NSString* const kPPPdf417; +PP_EXTERN NSString *_Nonnull const kPPPdf417; /** Raw code128 result */ -PP_EXTERN NSString* const kPPCode128; +PP_EXTERN NSString *_Nonnull const kPPCode128; /** Raw code39 result */ -PP_EXTERN NSString* const kPPCode39; +PP_EXTERN NSString *_Nonnull const kPPCode39; #pragma mark - PPUsdlRecognizerResult implementation /** * Class representing result of scanning of US Driver's license barcodes. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUsdlRecognizerResult : PPRecognizerResult +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPUsdlRecognizerResult : PPRecognizerResult /** * Returns a string value for a given key. @@ -948,22 +947,20 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUsdlRecognizerResult : PPRecognizerResu * * @return value for a given key */ -- (NSString *)getField:(const NSString *)key; +- (NSString *_Nullable)getField:(const NSString *_Nonnull)key; /** * Returns all possible USDL keys with their descriptions. * * @return NSDictionary with USDL key - description pairs */ -+ (NSDictionary*)descriptionKeys; ++ (NSDictionary *_Nonnull)descriptionKeys; /** * Returns all possible USDL keys ordered as in this header. * * @return Array of all USDL keys ordered as in this header */ -+ (NSArray *)orderedKeys; ++ (NSArray *_Nonnull)orderedKeys; @end - -NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPUsdlRecognizerSettings.h b/MicroBlink.framework/Headers/PPUsdlRecognizerSettings.h index bd94ebb9..07624a46 100644 --- a/MicroBlink.framework/Headers/PPUsdlRecognizerSettings.h +++ b/MicroBlink.framework/Headers/PPUsdlRecognizerSettings.h @@ -16,7 +16,8 @@ NS_ASSUME_NONNULL_BEGIN * Usdl Recognizer recognizer is used for scanning and parsing of PDF417 * on the back sides of the US drivers license */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUsdlRecognizerSettings : PPRecognizerSettings +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPUsdlRecognizerSettings : PPRecognizerSettings /** * Set this to YES to scan even barcode not compliant with standards @@ -24,7 +25,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPUsdlRecognizerSettings : PPRecognizerSe * * Use only if necessary because it slows down the recognition process * - * Default: NO + * Default: YES */ @property (nonatomic) BOOL scanUncertain; diff --git a/MicroBlink.framework/Headers/PPViewControllerFactory.h b/MicroBlink.framework/Headers/PPViewControllerFactory.h index 8f1b8e12..c35f221e 100644 --- a/MicroBlink.framework/Headers/PPViewControllerFactory.h +++ b/MicroBlink.framework/Headers/PPViewControllerFactory.h @@ -15,7 +15,8 @@ NS_ASSUME_NONNULL_BEGIN * Factory class containing static methods for creating camera view controllers. * Camera view controllers created this way will be managed internally by the SDK, and input frames will be processed. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPViewControllerFactory : NSObject +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPViewControllerFactory : NSObject /**------------------------------------------*/ /** @name Creating Scanning view controllers */ diff --git a/MicroBlink.framework/Headers/PPViewfinderOverlaySubview.h b/MicroBlink.framework/Headers/PPViewfinderOverlaySubview.h new file mode 100644 index 00000000..63209c35 --- /dev/null +++ b/MicroBlink.framework/Headers/PPViewfinderOverlaySubview.h @@ -0,0 +1,53 @@ +// +// PPOcrLineAnimationViewLayer.h +// PhotoPayFramework +// +// Created by Jurica Cerovec on 19/11/13. +// Copyright (c) 2013 MicroBlink Ltd. All rights reserved. +// + +#import +#import +#import "PPOverlaySubview.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + A wrapper around CAShapeLayer which is used for presenting a status about payslip and barcode detection. + + The layer is used to draw a scanning window with a viewwinder. + */ +PP_CLASS_AVAILABLE_IOS(6.0) +@interface PPViewfinderOverlaySubview : PPOverlaySubview + +/* Animation layer for viewfinder */ +@property (nonatomic, strong) CAShapeLayer *trackingLayer; + +/** Initial margin of the viewfinder */ +@property (nonatomic, assign) CGFloat initialViewfinderMargin; + +/** Initial Color of the viewfinder */ +@property (nonatomic, strong) UIColor *initialColor; + +/** Success Color of the viewfinder */ +@property (nonatomic, strong) UIColor *successColor; + +/** Width of the dots */ +@property (nonatomic, assign) CGFloat strokeWidth; + +/** Duration of the animation */ +@property (nonatomic, assign) CGFloat animationDuration; + +/** YES if viewfinder should move on successful detection */ +@property (nonatomic, assign) BOOL moveable; + +/** + Initializes the layer + */ +- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER; + +- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Headers/PPZXingRecognizerResult.h b/MicroBlink.framework/Headers/PPZXingRecognizerResult.h index 88a775df..44da2fcc 100644 --- a/MicroBlink.framework/Headers/PPZXingRecognizerResult.h +++ b/MicroBlink.framework/Headers/PPZXingRecognizerResult.h @@ -9,12 +9,10 @@ #import "PPRecognizerResult.h" #import "PPBarcodeDetailedData.h" -NS_ASSUME_NONNULL_BEGIN - /** * Type of the barcode which BarDecoderRecognizer returnes */ -typedef NS_ENUM(NSUInteger, PPZXingBarcodeType){ +typedef PP_DEPRECATED_IOS(1_0, 5_9_3) NS_ENUM(NSUInteger, PPZXingBarcodeType) { /** Code 39 */ PPZXingBarcodeTypeAztec, /** Code 128 */ @@ -35,7 +33,7 @@ typedef NS_ENUM(NSUInteger, PPZXingBarcodeType){ PPZXingBarcodeTypeUPCA, /** UPCE */ PPZXingBarcodeTypeUPCE, - + }; /** @@ -43,19 +41,20 @@ typedef NS_ENUM(NSUInteger, PPZXingBarcodeType){ * * Contains raw Barcode detailed data, barcode type, and methods for getting string representation of results. */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPZXingRecognizerResult : PPRecognizerResult +PP_CLASS_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeRecognizerResult instead") +@interface PPZXingRecognizerResult : PPRecognizerResult /** * Type of the barcode scanned * * @return Type of the barcode */ -- (PPZXingBarcodeType)barcodeType; +- (PPZXingBarcodeType)barcodeType PP_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeType instead"); /** * Byte array with result of the scan */ -- (NSData *)data; +- (NSData *_Nullable)data; /** * Retrieves string content of the scanned data using guessed encoding. @@ -68,7 +67,7 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPZXingRecognizerResult : PPRecognizerRes * * @return created string, or nil if encoding couldn't be found. */ -- (NSString *)stringUsingGuessedEncoding; +- (NSString *_Nullable)stringUsingGuessedEncoding; /** * Retrieves string content of the scanned data using given encoding. @@ -77,12 +76,12 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPZXingRecognizerResult : PPRecognizerRes * * @return String created from data property, using given encoding */ -- (NSString *)stringUsingEncoding:(NSStringEncoding)encoding; +- (NSString *_Nullable)stringUsingEncoding:(NSStringEncoding)encoding; /** * Raw barcode detailed result */ -- (PPBarcodeDetailedData *)rawData; +- (PPBarcodeDetailedData *_Nullable)rawData; /** * Method which gives string representation for a given PPZXingBarcodeType enum value. @@ -91,8 +90,6 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPZXingRecognizerResult : PPRecognizerRes * * @return String representation of a given PPZXingBarcodeType enum value. */ -+ (NSString *)toTypeName:(PPZXingBarcodeType)type; ++ (NSString *_Nonnull)toTypeName:(PPZXingBarcodeType)type PP_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeType instead"); @end - -NS_ASSUME_NONNULL_END \ No newline at end of file diff --git a/MicroBlink.framework/Headers/PPZXingRecognizerSettings.h b/MicroBlink.framework/Headers/PPZXingRecognizerSettings.h index de17b741..ff5640ce 100644 --- a/MicroBlink.framework/Headers/PPZXingRecognizerSettings.h +++ b/MicroBlink.framework/Headers/PPZXingRecognizerSettings.h @@ -13,10 +13,11 @@ NS_ASSUME_NONNULL_BEGIN /** * Settings class for configuring ZXing Recognizer * - * ZXIngRecognizer recognizer is used for scanning most of 1D barcode formats, and 2D format + * ZXIngRecognizer recognizer is used for scanning most of 1D barcode formats, and 2D format * such as Aztec, DataMatrix and QR code */ -PP_CLASS_AVAILABLE_IOS(6.0) @interface PPZXingRecognizerSettings : PPRecognizerSettings +PP_CLASS_DEPRECATED_IOS(1_0, 5_9_3, "Use PPBarcodeRecognizerSettings") +@interface PPZXingRecognizerSettings : PPRecognizerSettings /** * Set this to YES to scan Aztec 2D barcodes @@ -98,6 +99,11 @@ PP_CLASS_AVAILABLE_IOS(6.0) @interface PPZXingRecognizerSettings : PPRecognizerS */ @property (nonatomic) BOOL scanInverse; +/** + * Set this to YES to allow slower, but better image processing. + */ +@property (nonatomic, assign) BOOL useSlowerThoroughScan; + @end NS_ASSUME_NONNULL_END diff --git a/MicroBlink.framework/Info.plist b/MicroBlink.framework/Info.plist index 99b28267..5f7760f3 100644 Binary files a/MicroBlink.framework/Info.plist and b/MicroBlink.framework/Info.plist differ diff --git a/MicroBlink.framework/MicroBlink b/MicroBlink.framework/MicroBlink old mode 100644 new mode 100755 index 73930983..10013d83 Binary files a/MicroBlink.framework/MicroBlink and b/MicroBlink.framework/MicroBlink differ diff --git a/MicroBlink.framework/_CodeSignature/CodeResources b/MicroBlink.framework/_CodeSignature/CodeResources index e1a5cb35..beea3f39 100644 --- a/MicroBlink.framework/_CodeSignature/CodeResources +++ b/MicroBlink.framework/_CodeSignature/CodeResources @@ -6,103 +6,231 @@ Headers/MicroBlink.h - BZBEkhvGJEMfmWLuIhsLJCB/tq4= + HsSZ0T9OlEX+WfolWVX8gP7ND8s= + + Headers/PPApp.h + + K9SFhvOJyGEA8DMSw11rKyUu+X8= Headers/PPBarDecoderRecognizerResult.h - Jaic1za6HhpEJZC+nwUW71U0IpQ= + alxQsksg5j9izQEAUb76DSXhuWY= Headers/PPBarDecoderRecognizerSettings.h - ZvUEtnDYnpGxNhKQO9ls6w95Bu8= + pQWWWnuoh9SYVs1skiMLB/wMBOc= Headers/PPBarcodeDetailedData.h - 1dPw0atd+DjWPX62msjs1LD9yLY= + 61nkeYVGKRlLOdaIlkpfbSiwgRk= + + Headers/PPBarcodeOverlayViewController.h + + F1SOhVj97kkHf3S7g6xwbjR4cwU= + + Headers/PPBarcodeRecognizerResult.h + + 7RXQVq3xkUgGktB5X5Lt/Uq/T0Y= + + Headers/PPBarcodeRecognizerSettings.h + + PCszgAYxHA9YJDynn9NaSGON/00= + + Headers/PPBaseBarcodeOverlayViewController.h + + HxxJ3wFwoz1P/z/FYB5078iqIk0= Headers/PPBaseOverlayViewController.h - s+n6x7/fKw6kbYtXQ9qsWMu6tKY= + 83Wxv/AMHGAiTr9cnIpR9adtdtc= + + Headers/PPBasePhotoPayOverlayViewController.h + + Dt8x5wG8sycbqMPONdR0VLsTzEk= Headers/PPBlinkBarcodeRecognizers.h - H2GNCrwLSr/2s77V0YpAAk25Ih0= + oNZBUiLEo8igo355TaSm2kJTn4o= + + Headers/PPBlurredFieldOfViewOverlaySubview.h + + 2M8NZ2gvbJggqN7MGzicU1Fb8bM= Headers/PPCameraCoordinator.h - g9Rzsah/SJ5urI0dcHxcB40Huck= + p2k+xex/OzWhn+MDr2oNDWW9CgA= Headers/PPCameraSettings.h - or4Y7SgAuv7V2uSrlR5Jw0hft+I= + 5bgHEukqwusGScJUHhlXRzI7Pjk= Headers/PPCoordinator.h - qaSbLY+JEw2iFmtHQdYP9m/NcRQ= + YvziSA8uVGcDqtQ/plYtQFYRPdc= Headers/PPCoordinatorDelegate.h - LcgK2dKRMlfArjzj9JaKNvUM/Ok= + cCtiF3h5tzspuFPqW7E29h5b8Ns= + + Headers/PPDateResult.h + + QJJNxKBILg/4kGY1N5x9dqHG36M= + + Headers/PPDecodingInfo.h + + 6exmD+7vEmym90L7+js0lbAnvqA= Headers/PPDetectionStatus.h - McqEEJvahY1E3Wm9MpstKCQmJOc= + 9JOkMsO+wugL5yyumb7YYw8eWJo= Headers/PPDetectorResult.h - DqFbjuHddISQU4pKcrcwS6L5eZE= + fpceL3Qqek7Qln+lsod4UpHaWZM= + + Headers/PPDetectorSettings.h + + jL2x471C2gdLVlNj/2jPMGXYGp8= + + Headers/PPDocumentDetectorResult.h + + oc4TLgLJyyVci6VnoW72tS7cueo= + + Headers/PPDotsOverlaySubview.h + + J17/lEyC/2sOjJzh8e6f26jCUJY= + + Headers/PPFaceDetectorResult.h + + V9NfANQkYP+C42bp8EcD47NcB4E= + + Headers/PPFieldOfViewOverlaySubview.h + + R8+TcFA5y7ULEvDbFQmTW2Y6XpU= + + Headers/PPFieldOfViewOverlayViewController.h + + PdL605xkpmoh9t5euVIrhDL4CEo= + + Headers/PPGeometry.h + + mEocmNdW8eFY7FNjJTBAE6Lckz4= + + Headers/PPIDCardOverlayViewController.h + + T/1WcgOTec1sUY3/LadOJefOFY8= + + Headers/PPIdCardOverlaySubview.h + + ViRBzDYt2+LPzl/Qu3ynuhRZQi4= Headers/PPImage.h - Jhz8URyKilnWqfO9/2qjPFOYvFw= + XoceAjQwAk6E+g6bnaOOKkIuGTA= Headers/PPImageMetadata.h - ZFz/uboNlzL2aKesLYCpBFJr708= + ICwsFjaaCRgr8ob0hycy4QkVNF0= Headers/PPLicenseSettings.h - RFS9a1O1Ck9/HlMek1Aw4x9GQpg= + ZQNgbSW57uF4Nrh/r+7mLmQenhw= + + Headers/PPLivenessAction.h + + hxIX1euRlqn9rlQsqndlnStA0ck= + + Headers/PPLivenessError.h + + hRzOLPuBnl8a4emqbQ5+p5oB3Q8= Headers/PPMetadata.h - TOb0MKH/BpPocCsp4QAzJD5f5pY= + uqX6U5flnye5JlYoJCHyhjn/59c= Headers/PPMetadataSettings.h - lbI1EhiTXP70fmk8zEX7zQWmRAQ= + BdB7AobhaxQS5gZrGQWzLMEJkt4= Headers/PPMicroBlinkDefines.h - vjuxiazpfw87131wRa8c1JOVaXY= + c8Gv5R+L6wLqZcT+VJCuwBjI2cc= Headers/PPModernBaseOverlayViewController.h - dBkRZAQ+TS/5RBQ9nFR0jonkNLM= + 1AKtNWIfH0CyZEvG9MnySWNg5So= + + Headers/PPModernOcrResultOverlaySubview.h + + OYDqavkz0JbdpuFfE91tzYgPO3A= Headers/PPModernOverlayViewController.h - uIZmv+aE54XYCBs+L1PztUBKivQ= + gJccDOaACw1zJ8Ju26lh0JHUSRg= + + Headers/PPModernToastOverlaySubview.h + + Ekb8Lyyke4F1Ca5ODHRHWkMRgS0= + + Headers/PPModernViewfinderOverlaySubview.h + + mM5bvwh1zDStHh8Lau2ybLs7oRk= + + Headers/PPMrtdDetectorResult.h + + RZIlLDSQlJYRhLsMUswpswcXUTk= + + Headers/PPMultiDetectorResult.h + + s7/naCSEK7gu/WSaPzBneHbqj5U= + + Headers/PPNativeResult.h + + HSdWRhCGqykM28actPnOfF2MbzA= + + Headers/PPOcrFont.h + + UTzYvIbh4FcuUe1PVSee23SIm1A= + + Headers/PPOcrLayout.h + + 7ylq08Z2SPWBtjlznL+q7JxmIbM= + + Headers/PPOcrLineOverlaySubview.h + + LwdpWStnkVRKWLKp5Vk5ttsHZl0= + + Headers/PPOcrLineOverlayViewController.h + + vXX5SZrhyDfFWwSLTBXv9mZqep0= + + Headers/PPOcrResultOverlaySubview.h + + N+MNZpWNNetBneJLhhZD/KZ6VmI= Headers/PPOverlayContainerViewController.h - P+bEQDjLSPVHoRa0NKhIhPk76v0= + +hZfu6p+p+8UTFTQJqfwzVOkB4g= Headers/PPOverlaySubview.h - Gjsh3r1P7PmLmMqbAhL0AJo+K/E= + ZoPAutXIyl8/W9UjSCnnuXYDnqA= Headers/PPOverlayViewController.h - lCa16RLid/gghAab+0RhfrxBuZU= + rNYGsNhYfgfBKnPLWqzFyIKO2wo= Headers/PPPdf417RecognizerResult.h - g8H1GYAm9UAhw/SK/fET1kSaAiI= + 5t3n2soBG59VFOslZAquZ0AkSgE= Headers/PPPdf417RecognizerSettings.h - 526BgRzmgzXBYNWeMGFOaPtTIuU= + et5sgS+N5P9tqDK3lZGvgJ4rCz4= + + Headers/PPPermissionDeniedViewController.h + + JqM7bxAsoLHnQhJzoqImLd9kT7M= Headers/PPPointsDetectorResult.h @@ -110,67 +238,107 @@ Headers/PPQuadDetectorResult.h - tOBh/UflLOHVEACT+ehSM/qFPFw= + iQqMTyvKwLZtMyyZcL27N0UYFNE= + + Headers/PPQuadDetectorSettings.h + + Q5oFEFl68FEgAKamwUHexswVOcY= Headers/PPQuadrangle.h - EgIBgGm4k0mOAr/Ap1UVjiXRzr4= + Q0RWOfWWkMZk8PKOqfdmss8iGCU= + + Headers/PPRecognitionStatusMetadata.h + + a+kfz4Fy4KbM+JD2EqEDHvFZzlw= + + Headers/PPRecognizerResult+Test.h + + 56lxOvbIaC7yVGnaLie9GqFzm1k= Headers/PPRecognizerResult.h - 9TzE5h2lo8c+PkeiKmT/hEs75Oo= + y2ud/Ypy86eiVkmTsWToqP/pZSc= Headers/PPRecognizerSettings.h - onjKsk51a1CEsdouqox3TwQQfHA= + pQ2yIU3HoPbQ72urTAC7d4Euz4o= Headers/PPScanSettings.h - bGgneNVmGtDAhi4jvVgLbz3yqIc= + FR33Swh4LvdRWd4XKhfK+rjYB3k= Headers/PPScanningDelegate.h - QYHZICYo5nRnyJyS9Dm3V243t8c= + HEiQa8Us+I83j/Qqof01wQhznCQ= Headers/PPScanningViewController.h - 8NM4XxrGdZd9KyZB9u3ThizEwNQ= + kNUcJDe76PvpcqxfxWArdna6JiU= + + Headers/PPSegmentScanOverlayViewController.h + + VnkQeME0H3QeirEPB4as/BqINVE= Headers/PPSettings.h - +1jk8JtqIm7DbYFSczqqFPNA1x0= + z/ZxcCUnAfFisSM00AlaI+uwuFU= + + Headers/PPSimNumberRecognizerResult.h + + gB0xYb9BBfzh7johu+qczGaMvL8= + + Headers/PPSimNumberRecognizerSettings.h + + 2Q4s/n8TeZGFJnDr+UwJDxpz8nI= + + Headers/PPTapToFocusOverlaySubview.h + + VA2YEXbj7QLF6lRYAAjOq0eba4Q= + + Headers/PPTemplatingOverlayViewController.h + + TFtxNd0u4FPwXZWfDV7Xjikcd1o= Headers/PPTextMetadata.h - dbEsZkgvU4D4fRDE9I37PS2ojEY= + vFevx5EMQlJFnv1TkGrGtm6CntI= + + Headers/PPToastOverlaySubview.h + + cDXVOjssUvn9TiFRU/6bmp4d9/I= Headers/PPUiSettings.h - A9LztgTZFjFKb1YwXmi8Y5fPFk0= + fGh9ZS8qSR/6F4EqP7TjpSB2SD8= Headers/PPUsdlRecognizerResult.h - CAceCS7IHQRzZrBCxkNsyzGXPhQ= + qJ4FATEGNLDB/dIsKZ0jSpNA3Pw= Headers/PPUsdlRecognizerSettings.h - AaXM8A2PoB98n5/jUoQxvIGeX+0= + U4evJ1MKchd+pEzxLdESLAOD+84= Headers/PPViewControllerFactory.h - bOU2pziCwKYyybOVEMBjnr0V9as= + Up2WDZE3qRbmWQw2P67ZchT/Fgk= + + Headers/PPViewfinderOverlaySubview.h + + UHysKa0iFVDUSJRs4aTEg2cRqiA= Headers/PPZXingRecognizerResult.h - 8YFq0XAlTb2C9gpkjmTDkpwtPZM= + u76nhlw9MIWRpb2Qo4IGWsOTKqo= Headers/PPZXingRecognizerSettings.h - 5LIzSyWudXe2CzPqFedWtsPfavs= + e3UwJpZfVaec5eWRVhGtxSTrRes= Info.plist - v7t5fur/XIGch4QyyjETKakYFjo= + mfllgnGnaNt/VdZgC3WDALnrMkg= Modules/module.modulemap @@ -183,275 +351,627 @@ hash - BZBEkhvGJEMfmWLuIhsLJCB/tq4= + HsSZ0T9OlEX+WfolWVX8gP7ND8s= + + hash2 + + q5t3boET23HGUZ7+7JPxxmVHGSX1ZVIDaMbFk2pTiSY= + + + Headers/PPApp.h + + hash + + K9SFhvOJyGEA8DMSw11rKyUu+X8= hash2 - 0Dc62RAtMHZAtbzJhBB7z1b1frCdppkvFfJD4n9yqZU= + b6iSAWRrmKlLVY2+21oyDo/zpdq9otmKcxyLKAEiiaw= Headers/PPBarDecoderRecognizerResult.h hash - Jaic1za6HhpEJZC+nwUW71U0IpQ= + alxQsksg5j9izQEAUb76DSXhuWY= hash2 - 7D7ttPQfR9J4FaSk89vuOcqsHY4Zay4pYkYwiYQN5nU= + X7Xe/BiGkT0eruVISWFECJFaKvir01lxuJY5cdsmxMQ= Headers/PPBarDecoderRecognizerSettings.h hash - ZvUEtnDYnpGxNhKQO9ls6w95Bu8= + pQWWWnuoh9SYVs1skiMLB/wMBOc= hash2 - lOTOWB7Zh6YR9GQQxXttHxYTHeEJmy4mzXWshv3JST8= + sfSw1FBm1fdejBIK3lG5ZxIpkSFuH01K+DWUi/b+t2Y= Headers/PPBarcodeDetailedData.h hash - 1dPw0atd+DjWPX62msjs1LD9yLY= + 61nkeYVGKRlLOdaIlkpfbSiwgRk= + + hash2 + + ulK5o5s3QITrAugyjndLIBh816JQeHdSvk/sav3EHZI= + + + Headers/PPBarcodeOverlayViewController.h + + hash + + F1SOhVj97kkHf3S7g6xwbjR4cwU= + + hash2 + + PXao2fIcXunL+mPytLqyXRJKdzVEe+PJsWLaBZw1QrM= + + + Headers/PPBarcodeRecognizerResult.h + + hash + + 7RXQVq3xkUgGktB5X5Lt/Uq/T0Y= + + hash2 + + jhpbNqGZqkMJPsy2moICBuYcBYiE/gUgos1Nbf0K+8E= + + + Headers/PPBarcodeRecognizerSettings.h + + hash + + PCszgAYxHA9YJDynn9NaSGON/00= hash2 - 7V/xY8TEZMYE/HfJIx3f7MMaTlhFn8tNlL9KfkqwN38= + XtPwy+tGLqn2ScI869suUGkqZP0nsqRTwOqjeSAelC0= + + + Headers/PPBaseBarcodeOverlayViewController.h + + hash + + HxxJ3wFwoz1P/z/FYB5078iqIk0= + + hash2 + + EUJYI95MpdJDLzKX8dPmjjXWW92mCH/Z7pbSS6z3A8g= Headers/PPBaseOverlayViewController.h hash - s+n6x7/fKw6kbYtXQ9qsWMu6tKY= + 83Wxv/AMHGAiTr9cnIpR9adtdtc= + + hash2 + + 0A2ObfIRbp25kT1VTIH6VRxgfWg/drxPW16eW/5hFfI= + + + Headers/PPBasePhotoPayOverlayViewController.h + + hash + + Dt8x5wG8sycbqMPONdR0VLsTzEk= hash2 - hc1ACgNWEK2L2jKAz2j3nVvT/GC8eiKrAYqAiEaDRC8= + wnkjjBegEUUGPTGlSL1la5r0PXGdQ/zMAYR20DRC9lk= Headers/PPBlinkBarcodeRecognizers.h hash - H2GNCrwLSr/2s77V0YpAAk25Ih0= + oNZBUiLEo8igo355TaSm2kJTn4o= hash2 - rhKnuk17Al+Pg12irvixTnx5sM3z0m7fJTpj3WFj2OQ= + 9nITasoz2o1jrHYtnvjJP1cSSNBMMUI6NUlo1Q0vh/c= + + + Headers/PPBlurredFieldOfViewOverlaySubview.h + + hash + + 2M8NZ2gvbJggqN7MGzicU1Fb8bM= + + hash2 + + SLiqaXOxPtrCQziQXMbDkOZD73Zk5B5o5WyYEpO5ABM= Headers/PPCameraCoordinator.h hash - g9Rzsah/SJ5urI0dcHxcB40Huck= + p2k+xex/OzWhn+MDr2oNDWW9CgA= hash2 - wYZLksWOleLJRhPwN0Z7TOfFHo7e3rKKTegYVg6ya1A= + +UTnoDVpc3qITqcX3NhrPmePIWAFSBsgliCA0hr39ek= Headers/PPCameraSettings.h hash - or4Y7SgAuv7V2uSrlR5Jw0hft+I= + 5bgHEukqwusGScJUHhlXRzI7Pjk= hash2 - CGzLrq+RTOPVrD+OUFbVFDRFeXLyRNg/5ZzUqto0JLE= + yfVi0+5Mm/42znaqBqfNYWVWihUSRLBsCfDXb5tEFWA= Headers/PPCoordinator.h hash - qaSbLY+JEw2iFmtHQdYP9m/NcRQ= + YvziSA8uVGcDqtQ/plYtQFYRPdc= hash2 - ymqPAp5Wa7KecnkgUKL2K772YJnxK+kdgvcqN+W9Yjk= + uMZK3V4lJvH7xxWyiO5KixrmMTJ+xYpkBKBGB9opFqg= Headers/PPCoordinatorDelegate.h hash - LcgK2dKRMlfArjzj9JaKNvUM/Ok= + cCtiF3h5tzspuFPqW7E29h5b8Ns= + + hash2 + + 5keJgfmmdD0vVr6THQFvroDJzSsfqdm445SdFvDdndk= + + + Headers/PPDateResult.h + + hash + + QJJNxKBILg/4kGY1N5x9dqHG36M= hash2 - LKOe5DV83VjBGvMxhE3yt2E6v8rPtQCqEoeKzzvMLoo= + +CG4wbROp6BfQbxwszhk8Q65fKE7JaemiQqhkasCMz8= + + + Headers/PPDecodingInfo.h + + hash + + 6exmD+7vEmym90L7+js0lbAnvqA= + + hash2 + + VCJYC9N1unDoJyhJkedWFlcH8fSnUdaUYTARdOfl9Jg= Headers/PPDetectionStatus.h hash - McqEEJvahY1E3Wm9MpstKCQmJOc= + 9JOkMsO+wugL5yyumb7YYw8eWJo= hash2 - xzZiRfKDEQ/JlT553a3xxcsKgaHtX8coEYSJhMSk+lc= + rx/9bm5nSPn8LaOVsChTm5VDusNvMWgKqADZ2knaI3I= Headers/PPDetectorResult.h hash - DqFbjuHddISQU4pKcrcwS6L5eZE= + fpceL3Qqek7Qln+lsod4UpHaWZM= + + hash2 + + CO2hEncVhSIl/bizhMzGGLtfnWRlYY8U2H001vlvEvE= + + + Headers/PPDetectorSettings.h + + hash + + jL2x471C2gdLVlNj/2jPMGXYGp8= + + hash2 + + m3hzeAsuPFz4ixMd8VdSwdQf33uZ1Gvcq3sitaU7gi8= + + + Headers/PPDocumentDetectorResult.h + + hash + + oc4TLgLJyyVci6VnoW72tS7cueo= + + hash2 + + 1YsBPmClEghuD7nnYU39etgoIp4j/UYHoIUDTwnXGZ0= + + + Headers/PPDotsOverlaySubview.h + + hash + + J17/lEyC/2sOjJzh8e6f26jCUJY= + + hash2 + + 4Z3goSBv8o9SsVdTXxQOdJLPHSatnpZBdECAZ7MJH1M= + + + Headers/PPFaceDetectorResult.h + + hash + + V9NfANQkYP+C42bp8EcD47NcB4E= + + hash2 + + lmkFUMjN8/5S3iNvj4DI4LoHnIyx6VeqEPCmknzRpS0= + + + Headers/PPFieldOfViewOverlaySubview.h + + hash + + R8+TcFA5y7ULEvDbFQmTW2Y6XpU= + + hash2 + + wNi5KKrt1DtM22LlrJn8NPkNy7JIBxzZcM4O7zm2kLQ= + + + Headers/PPFieldOfViewOverlayViewController.h + + hash + + PdL605xkpmoh9t5euVIrhDL4CEo= + + hash2 + + G3EvjaPuwoVpfzu9KgPgz42dy7fqcfc/+6ZGrdeoZBc= + + + Headers/PPGeometry.h + + hash + + mEocmNdW8eFY7FNjJTBAE6Lckz4= + + hash2 + + V3cu5RcM3SVrJ+9NZ4HUwrckYuz2YUqPIjVmiStKMSg= + + + Headers/PPIDCardOverlayViewController.h + + hash + + T/1WcgOTec1sUY3/LadOJefOFY8= hash2 - GTWyUmOuMErVXYC72SV6n4pM78R+j8IBk68Bf1pIDOI= + RAtR5c0I4pf/7qzi1HjQoHwCZH5JNscAiVnjOZu9ZmM= + + + Headers/PPIdCardOverlaySubview.h + + hash + + ViRBzDYt2+LPzl/Qu3ynuhRZQi4= + + hash2 + + 1ezyi5Rv2QoC51+sfi7qXW3+FGAjxmDicd+R3Zu29bs= Headers/PPImage.h hash - Jhz8URyKilnWqfO9/2qjPFOYvFw= + XoceAjQwAk6E+g6bnaOOKkIuGTA= hash2 - g3i6o3HaCavsqzlH2/k88CuDIb8iwNr4cElJcSjAkgc= + DRmEQ78HsIGLFTLMycdN0cmOrdBbL+UqwP4wOYupVYc= Headers/PPImageMetadata.h hash - ZFz/uboNlzL2aKesLYCpBFJr708= + ICwsFjaaCRgr8ob0hycy4QkVNF0= hash2 - VHiobwHCT6JnXJBJ0vvz7acU26oqpZEm6tg6JmzPMEQ= + eDlHHM39KWW+JdtwnTsdENN0Fii9TRd4mkHhJU6QINw= Headers/PPLicenseSettings.h hash - RFS9a1O1Ck9/HlMek1Aw4x9GQpg= + ZQNgbSW57uF4Nrh/r+7mLmQenhw= hash2 - WuMejoLU19vsjHlk0oeSfIOLkTqOwQVhBFNt4T9xfYo= + +PphYR5IZBsoJLV50DZeQDjUzPtEGtmYYaYZf94ZLSA= + + + Headers/PPLivenessAction.h + + hash + + hxIX1euRlqn9rlQsqndlnStA0ck= + + hash2 + + hG5HgIYWko8tMg/N052U5KGcFIUSvepe+wxQcXAjoz0= + + + Headers/PPLivenessError.h + + hash + + hRzOLPuBnl8a4emqbQ5+p5oB3Q8= + + hash2 + + 1rwYxQtM0ltOT+0n6HF2Z9VC2FP3CFFFsImgwipG8Qw= Headers/PPMetadata.h hash - TOb0MKH/BpPocCsp4QAzJD5f5pY= + uqX6U5flnye5JlYoJCHyhjn/59c= hash2 - HNhl8DtTF1SWQDjdGPpbVmb1sexXItOdWEi+gVwq2FY= + tkqlafK8Q/kNREsbC94Lo1NXRdMgYvAee0184gvgUnQ= Headers/PPMetadataSettings.h hash - lbI1EhiTXP70fmk8zEX7zQWmRAQ= + BdB7AobhaxQS5gZrGQWzLMEJkt4= hash2 - DacEFaMcrTub6IAzgFuncs7/C0js1Ad9a9jq2CDo0mg= + 3w15BicG+dolmpICyvN00Pigc76EM3TqqrXbWjr54Gs= Headers/PPMicroBlinkDefines.h hash - vjuxiazpfw87131wRa8c1JOVaXY= + c8Gv5R+L6wLqZcT+VJCuwBjI2cc= hash2 - PCpDYzA1IL2gLOmD6yQqb0Z6JYZ9VYbIvGym466boWE= + DUo/o9HU1fG3CfQxTW6Y617C/HarYZPxqWhpwJzk7n8= Headers/PPModernBaseOverlayViewController.h hash - dBkRZAQ+TS/5RBQ9nFR0jonkNLM= + 1AKtNWIfH0CyZEvG9MnySWNg5So= + + hash2 + + AjeME1CNvda4ZDQywpgfj0EP2UDhQn4iC1wqWnYu40w= + + + Headers/PPModernOcrResultOverlaySubview.h + + hash + + OYDqavkz0JbdpuFfE91tzYgPO3A= hash2 - oe5V0p1JhV9JeMCbdfetReIErnTCGyEQyPOE8Is9NnM= + TUWSBj5Lw5/p1eZUbBe9vE9rOwC7aiCeY/Q9fw8mwUE= Headers/PPModernOverlayViewController.h hash - uIZmv+aE54XYCBs+L1PztUBKivQ= + gJccDOaACw1zJ8Ju26lh0JHUSRg= + + hash2 + + Yk/Ux+n2epgmT5JcwJtPx7o52N5X2/EVA8bFnafIiSA= + + + Headers/PPModernToastOverlaySubview.h + + hash + + Ekb8Lyyke4F1Ca5ODHRHWkMRgS0= + + hash2 + + lNvWJdAoIHGYX7zgRIqkLegQ3fxh4wC3a1VHqpFyyy8= + + + Headers/PPModernViewfinderOverlaySubview.h + + hash + + mM5bvwh1zDStHh8Lau2ybLs7oRk= + + hash2 + + a264Djo78GVd+jXtkLzzY2HMqX7IbLIAU4RBwNuEE58= + + + Headers/PPMrtdDetectorResult.h + + hash + + RZIlLDSQlJYRhLsMUswpswcXUTk= + + hash2 + + Y1X+Skbb4if0c5vz0Tzi67pHI2NtU6p8EsEY/1kO/c8= + + + Headers/PPMultiDetectorResult.h + + hash + + s7/naCSEK7gu/WSaPzBneHbqj5U= + + hash2 + + ameKonus9lHf43aZ9aiPqchMk5ljygcqLt1DpBjRiLc= + + + Headers/PPNativeResult.h + + hash + + HSdWRhCGqykM28actPnOfF2MbzA= + + hash2 + + a8nDvOfJi8QY2y5mD+Or3fhiP7AxiT2hsFVpqkhUwGk= + + + Headers/PPOcrFont.h + + hash + + UTzYvIbh4FcuUe1PVSee23SIm1A= + + hash2 + + bA8Jo6z8n/gDLjx04E3JZQdqE5/iN7hx9wQeLKvEMEI= + + + Headers/PPOcrLayout.h + + hash + + 7ylq08Z2SPWBtjlznL+q7JxmIbM= + + hash2 + + icWefukfRVnIQleUdKtLyu5FfEZizrP0Lk1i4PbOdSI= + + + Headers/PPOcrLineOverlaySubview.h + + hash + + LwdpWStnkVRKWLKp5Vk5ttsHZl0= + + hash2 + + tKx04byltjZTzK8J5WtqfHz3/ZNOSZTwrg3en8zlkeA= + + + Headers/PPOcrLineOverlayViewController.h + + hash + + vXX5SZrhyDfFWwSLTBXv9mZqep0= hash2 - Y89X0q1irHjOJdp7gGCp5PwUXBTonzMokWdVu2okTfc= + etlR1ua/MaNNy5ZwaGkJQFP6jMvVm+gmQ/SElSZmG8A= + + + Headers/PPOcrResultOverlaySubview.h + + hash + + N+MNZpWNNetBneJLhhZD/KZ6VmI= + + hash2 + + Nf9dOKcHRfseVVZLFGcIDpg/kqN7+gQPZ7xIjoNz0zc= Headers/PPOverlayContainerViewController.h hash - P+bEQDjLSPVHoRa0NKhIhPk76v0= + +hZfu6p+p+8UTFTQJqfwzVOkB4g= hash2 - EZZXr1Cj/h2AFk9D5CznITEtTyybT2uz+W+2QiVEauw= + 8j20X6QJMB5JWeQHIuVnJTH3GoF5tMHebwtS2Fu38Gc= Headers/PPOverlaySubview.h hash - Gjsh3r1P7PmLmMqbAhL0AJo+K/E= + ZoPAutXIyl8/W9UjSCnnuXYDnqA= hash2 - TFu8WgKN91iqoL5QIPNUQ1Ng6xOVGceOornmUBh7UD8= + iW7iEAAemI2s3LvlKemwOwS7TqgKe2bANsbpEx8YSKc= Headers/PPOverlayViewController.h hash - lCa16RLid/gghAab+0RhfrxBuZU= + rNYGsNhYfgfBKnPLWqzFyIKO2wo= hash2 - XNo6GKRaBx806Pk8EMO1iX3sewCgTusdI/kHnV+iQEY= + 5Iei9aF1nw1/W/GHw/Jsiyxx3toHC5LU5+xbRC53X9A= Headers/PPPdf417RecognizerResult.h hash - g8H1GYAm9UAhw/SK/fET1kSaAiI= + 5t3n2soBG59VFOslZAquZ0AkSgE= hash2 - ZVji1EBt5lDZGd5bxEfJiS/mbYVie7uZkX3Prezsh1I= + xaF8981SSVnAhe8ondTWrVYLkTjGOmpxdRAmxSD6nck= Headers/PPPdf417RecognizerSettings.h hash - 526BgRzmgzXBYNWeMGFOaPtTIuU= + et5sgS+N5P9tqDK3lZGvgJ4rCz4= hash2 - UAP4RaFQsdsCguHCHaScCAjDGbTs3q1PnuqkYdOkDUc= + DDT9itFywEWWnhlLuCoaC72sB+GvrxGBnhe1OsnatAU= + + + Headers/PPPermissionDeniedViewController.h + + hash + + JqM7bxAsoLHnQhJzoqImLd9kT7M= + + hash2 + + GBUCaoES/HM9LTMaSBx6qSqBMAxh6WM1BGaNWSf2kd8= Headers/PPPointsDetectorResult.h @@ -469,165 +989,275 @@ hash - tOBh/UflLOHVEACT+ehSM/qFPFw= + iQqMTyvKwLZtMyyZcL27N0UYFNE= hash2 - 368nlUAg6HZMggrBhOhnI5q/932l+XC26qqWduP0nrE= + gTWrHwI4mRhaeH//M9KqvORW5myL7Ir4KP5ormoBTVU= + + + Headers/PPQuadDetectorSettings.h + + hash + + Q5oFEFl68FEgAKamwUHexswVOcY= + + hash2 + + yYsVKKAX3INP8VkZ5C4ufKZ/+0RAt61HrVUjYokKwfs= Headers/PPQuadrangle.h hash - EgIBgGm4k0mOAr/Ap1UVjiXRzr4= + Q0RWOfWWkMZk8PKOqfdmss8iGCU= + + hash2 + + PyphUCMDiqdMJ1rTvlGvZgUDXPwjxOmP5clcNKT9c6c= + + + Headers/PPRecognitionStatusMetadata.h + + hash + + a+kfz4Fy4KbM+JD2EqEDHvFZzlw= hash2 - /tWGMhEG24rdBOH8Luj8ZYINqBad8AxPatJ8iG3bIWY= + C/afUkwPWecDRh+3ieNMs6XiMcwEFsZxVZr3aMODKA8= + + + Headers/PPRecognizerResult+Test.h + + hash + + 56lxOvbIaC7yVGnaLie9GqFzm1k= + + hash2 + + Of6/3TmwuAPszw7EqoNN9cylEj9XK6BwiwFqMseYbig= Headers/PPRecognizerResult.h hash - 9TzE5h2lo8c+PkeiKmT/hEs75Oo= + y2ud/Ypy86eiVkmTsWToqP/pZSc= hash2 - s61RwDZAlFRph2xduoQkElWji01ewDdeN5PcEHNeESY= + 5MAfHrqJIa+qIxm5bqYLX6WtrJbcfAN/fIdFJ/amgMo= Headers/PPRecognizerSettings.h hash - onjKsk51a1CEsdouqox3TwQQfHA= + pQ2yIU3HoPbQ72urTAC7d4Euz4o= hash2 - cTtuwQZHm3mgwAD8hCkVaCtO5du0I27c/HFBC9nRWcA= + FvXI+sDTJUgz5wBe7NOboKot+mLZ0bPF9Up6+sx2zl8= Headers/PPScanSettings.h hash - bGgneNVmGtDAhi4jvVgLbz3yqIc= + FR33Swh4LvdRWd4XKhfK+rjYB3k= hash2 - KkJLQYJFpoKmSB5iJ7SQLsWAKpgRmeks6RZJLbP6s3s= + YpmPULbxR6lX5VbETN3xQp9Ak73K94kGe3T85xEebbw= Headers/PPScanningDelegate.h hash - QYHZICYo5nRnyJyS9Dm3V243t8c= + HEiQa8Us+I83j/Qqof01wQhznCQ= hash2 - cQ8buhAS6lvBORSMa9JS/IqoMVmIXO46Zyu4sxZ1Z04= + hRdSk5nZst2OW+k2wbXfLpEaCYb9u+XVA55ejHu4uBw= Headers/PPScanningViewController.h hash - 8NM4XxrGdZd9KyZB9u3ThizEwNQ= + kNUcJDe76PvpcqxfxWArdna6JiU= hash2 - IuxqgYLgLxW7FgdmHaTQQUAI0mDHkGCcgXiQ5P8T6oU= + p7gb20ifsKGqQ67ATz4tHlFqBfIasarnPeNZsY0aPPs= + + + Headers/PPSegmentScanOverlayViewController.h + + hash + + VnkQeME0H3QeirEPB4as/BqINVE= + + hash2 + + bOBcYsGaqDrgDsLa+ZbrWtcvm9nsIKQvlNCHkfiWKEs= Headers/PPSettings.h hash - +1jk8JtqIm7DbYFSczqqFPNA1x0= + z/ZxcCUnAfFisSM00AlaI+uwuFU= + + hash2 + + N7dnxVL4g4p2BeRToueZNGQSbSr7mf7ZxhRx3WRWPp0= + + + Headers/PPSimNumberRecognizerResult.h + + hash + + gB0xYb9BBfzh7johu+qczGaMvL8= + + hash2 + + cRNb26MGIub/lD7EFfF1JuUTJVzU8ZShyN1Af7Ype2U= + + + Headers/PPSimNumberRecognizerSettings.h + + hash + + 2Q4s/n8TeZGFJnDr+UwJDxpz8nI= + + hash2 + + /Vp+WsTVa/je50gp2IOiH0fsFVgzPsFlrcenM3uahUw= + + + Headers/PPTapToFocusOverlaySubview.h + + hash + + VA2YEXbj7QLF6lRYAAjOq0eba4Q= hash2 - R8GMfZJe8+3Icx8VUJdzZ+Fvm6ZscsbbpycI4qhjJuw= + 2STgVrtF5mpicN7EwfEzJ/x8OzrbZQxfujpCsLbRtqs= + + + Headers/PPTemplatingOverlayViewController.h + + hash + + TFtxNd0u4FPwXZWfDV7Xjikcd1o= + + hash2 + + tHfC0tEZtL3eXm/j4Y2DowJvag7MwlvxsRwC7YMZEiY= Headers/PPTextMetadata.h hash - dbEsZkgvU4D4fRDE9I37PS2ojEY= + vFevx5EMQlJFnv1TkGrGtm6CntI= + + hash2 + + Kx4BAOPr97LGUuNBtSHdccuweENwwSiTo0CkMEanIB8= + + + Headers/PPToastOverlaySubview.h + + hash + + cDXVOjssUvn9TiFRU/6bmp4d9/I= hash2 - eyqgudvzEqVEtToOVZG4mKgl4NKY40sZvsEDQ/BEFp4= + XrsS2Pd5nrJRy+jgoC58rZ5Rnl6jX69xzB8w3Q1EwAQ= Headers/PPUiSettings.h hash - A9LztgTZFjFKb1YwXmi8Y5fPFk0= + fGh9ZS8qSR/6F4EqP7TjpSB2SD8= hash2 - KyK0jtcLZWritL/oSyolshwBKz864lEVd3ZzyD3ot7I= + GonfZqhBrQSV68P9pXdSV5yMeLpnG9HR3oh72zWK0bQ= Headers/PPUsdlRecognizerResult.h hash - CAceCS7IHQRzZrBCxkNsyzGXPhQ= + qJ4FATEGNLDB/dIsKZ0jSpNA3Pw= hash2 - 4vAP+6NTW9BcUzberNsNgWYcOALTydl5N3vsuCPv6Bs= + XyPU8trndvQvPtjOwKBuvJ7Ljqh+RqVCJTCcBO0Em7A= Headers/PPUsdlRecognizerSettings.h hash - AaXM8A2PoB98n5/jUoQxvIGeX+0= + U4evJ1MKchd+pEzxLdESLAOD+84= hash2 - 6qbceEeHPdZc+aJqAPVSAUOgYTfctb+U4czYx2etqi0= + UP+KlgBEmKBNnDrXjfAkyV6/Fxs4bX+LM3BYCHY3RH4= Headers/PPViewControllerFactory.h hash - bOU2pziCwKYyybOVEMBjnr0V9as= + Up2WDZE3qRbmWQw2P67ZchT/Fgk= + + hash2 + + uye/AauEvMVlAo/VTKGTA3P3UhzmWTsloaZ1YEm/UIQ= + + + Headers/PPViewfinderOverlaySubview.h + + hash + + UHysKa0iFVDUSJRs4aTEg2cRqiA= hash2 - M2cp3WZ+6XR3456K5DYZJJztIdrJ0t3yJrpiL9A4yiA= + 6ABpal67Ud5mE0FW2nCaNgzbTBuqiJK3YJ0kHETcY/o= Headers/PPZXingRecognizerResult.h hash - 8YFq0XAlTb2C9gpkjmTDkpwtPZM= + u76nhlw9MIWRpb2Qo4IGWsOTKqo= hash2 - +XGVyaSkAPGbt72302icZR/JolwoAPdmzihau2m8CzQ= + HUntFc8ZUnhHlzGuewIa50PP/ZDXzFZoa5pmqfWSmwY= Headers/PPZXingRecognizerSettings.h hash - 5LIzSyWudXe2CzPqFedWtsPfavs= + e3UwJpZfVaec5eWRVhGtxSTrRes= hash2 - 5dlj9LKD3Q+Gfyha9cclgr7MspSQHBDoKfyXgO/vSRs= + spJG8Ua6oF2DYfIJEP/yv5iNv/M88QSuGmnY/GY/n2k= Modules/module.modulemap