@thegrizzlylabs/react-native-genius-scan 4.4.7 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +12 -26
  2. package/android/build.gradle +2 -2
  3. package/ios/GSSDK/GSSDKCore.xcframework/Info.plist +5 -5
  4. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/GSSDKCore +0 -0
  5. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Headers/GSKCore.h +22 -0
  6. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Headers/GSKEditFrameView.h +26 -1
  7. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Headers/GSKEditFrameViewController.h +1 -1
  8. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Headers/GSKEditableFrame.h +26 -1
  9. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Headers/GSKMagnifierView.h +47 -0
  10. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Headers/GSKScanProcessor.h +41 -6
  11. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Headers/GSSDKCore.h +1 -0
  12. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/Info.plist +0 -0
  13. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64/GSSDKCore.framework/mobilenetV2_orientation_quant_opti.tflite +0 -0
  14. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/GSSDKCore +0 -0
  15. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Headers/GSKCore.h +22 -0
  16. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Headers/GSKEditFrameView.h +26 -1
  17. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Headers/GSKEditFrameViewController.h +1 -1
  18. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Headers/GSKEditableFrame.h +26 -1
  19. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Headers/GSKMagnifierView.h +47 -0
  20. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Headers/GSKScanProcessor.h +41 -6
  21. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Headers/GSSDKCore.h +1 -0
  22. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/Info.plist +0 -0
  23. package/ios/GSSDK/GSSDKCore.xcframework/ios-arm64_x86_64-simulator/GSSDKCore.framework/mobilenetV2_orientation_quant_opti.tflite +0 -0
  24. package/ios/GSSDK/GSSDKOCR.xcframework/ios-arm64/GSSDKOCR.framework/GSSDKOCR +0 -0
  25. package/ios/GSSDK/GSSDKOCR.xcframework/ios-arm64/GSSDKOCR.framework/Info.plist +0 -0
  26. package/ios/GSSDK/GSSDKOCR.xcframework/ios-arm64_x86_64-simulator/GSSDKOCR.framework/GSSDKOCR +0 -0
  27. package/ios/GSSDK/GSSDKOCR.xcframework/ios-arm64_x86_64-simulator/GSSDKOCR.framework/Info.plist +0 -0
  28. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Assets.car +0 -0
  29. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/GSSDKScanFlow +0 -0
  30. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Headers/GSKScanFlow.h +24 -1
  31. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Headers/GSKScanFlowScan.h +3 -0
  32. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Headers/GSSDKScanFlow-Swift.h +22 -3
  33. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Info.plist +0 -0
  34. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  35. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64-apple-ios.swiftinterface +42 -4
  36. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/ar.lproj/GSSDK.strings +0 -0
  37. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/da.lproj/GSSDK.strings +0 -0
  38. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/de.lproj/GSSDK.strings +0 -0
  39. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/en.lproj/GSSDK.strings +0 -0
  40. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/es.lproj/GSSDK.strings +0 -0
  41. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/fr.lproj/GSSDK.strings +0 -0
  42. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/he.lproj/GSSDK.strings +0 -0
  43. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/id.lproj/GSSDK.strings +0 -0
  44. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/it.lproj/GSSDK.strings +0 -0
  45. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/ja.lproj/GSSDK.strings +0 -0
  46. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/ko.lproj/GSSDK.strings +0 -0
  47. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/nl.lproj/GSSDK.strings +0 -0
  48. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/pt-BR.lproj/GSSDK.strings +0 -0
  49. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/ru.lproj/GSSDK.strings +0 -0
  50. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/sv.lproj/GSSDK.strings +0 -0
  51. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/tr.lproj/GSSDK.strings +0 -0
  52. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/vi.lproj/GSSDK.strings +0 -0
  53. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/zh-Hans.lproj/GSSDK.strings +0 -0
  54. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/zh-Hant.lproj/GSSDK.strings +0 -0
  55. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Assets.car +0 -0
  56. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/GSSDKScanFlow +0 -0
  57. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Headers/GSKScanFlow.h +24 -1
  58. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Headers/GSKScanFlowScan.h +3 -0
  59. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Headers/GSSDKScanFlow-Swift.h +44 -6
  60. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Info.plist +0 -0
  61. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  62. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64-apple-ios-simulator.swiftinterface +42 -4
  63. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  64. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +42 -4
  65. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/ar.lproj/GSSDK.strings +0 -0
  66. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/da.lproj/GSSDK.strings +0 -0
  67. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/de.lproj/GSSDK.strings +0 -0
  68. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/en.lproj/GSSDK.strings +0 -0
  69. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/es.lproj/GSSDK.strings +0 -0
  70. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/fr.lproj/GSSDK.strings +0 -0
  71. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/he.lproj/GSSDK.strings +0 -0
  72. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/id.lproj/GSSDK.strings +0 -0
  73. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/it.lproj/GSSDK.strings +0 -0
  74. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/ja.lproj/GSSDK.strings +0 -0
  75. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/ko.lproj/GSSDK.strings +0 -0
  76. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/nl.lproj/GSSDK.strings +0 -0
  77. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/pt-BR.lproj/GSSDK.strings +0 -0
  78. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/ru.lproj/GSSDK.strings +0 -0
  79. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/sv.lproj/GSSDK.strings +0 -0
  80. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/tr.lproj/GSSDK.strings +0 -0
  81. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/vi.lproj/GSSDK.strings +0 -0
  82. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/zh-Hans.lproj/GSSDK.strings +0 -0
  83. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/zh-Hant.lproj/GSSDK.strings +0 -0
  84. package/package.json +1 -1
  85. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64.swiftdoc +0 -0
  86. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64.swiftinterface +0 -24
  87. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64.swiftdoc +0 -0
  88. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/arm64.swiftinterface +0 -24
  89. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/x86_64.swiftdoc +0 -0
  90. package/ios/GSSDK/GSSDKScanFlow.xcframework/ios-arm64_x86_64-simulator/GSSDKScanFlow.framework/Modules/GSSDKScanFlow.swiftmodule/x86_64.swiftinterface +0 -24
package/README.md CHANGED
@@ -7,7 +7,7 @@ This React Native component allows you to access the [Genius Scan SDK](https://g
7
7
 
8
8
  - Automatic document detection
9
9
  - Document perspective correction
10
- - Image enhancement with 3 different modes (Black & white, Color, Photo)
10
+ - Image enhancement with 4 different modes (Black & white, Monochrome, Color, Photo)
11
11
  - Batch scanning of several pages in row
12
12
  - OCR to extract raw text from images and generate PDF with invisible text layer
13
13
 
@@ -16,7 +16,11 @@ This React Native component allows you to access the [Genius Scan SDK](https://g
16
16
  This component is based on the Genius Scan SDK for which you need to [setup a licence](#api).
17
17
  You can already try the "demo" version for free by not setting a licence key, the only limitation being that the app will exit after 60 seconds.
18
18
 
19
- To buy a licence or for any question regarding the SDK, please contact us at sdk@thegrizzlylabs.com.
19
+ To buy a license:
20
+ 1. [Sign up](https://sdk.geniusscan.com/apps) to our developer console
21
+ 2. Submit a quote request for each application
22
+
23
+ You can learn more about [licensing](https://geniusscansdk.com/license/licensing) on our website and contact us at sdk@geniusscan.com for further questions.
20
24
 
21
25
  ## Demo application
22
26
 
@@ -91,7 +95,8 @@ The method `scanWithConfiguration` takes a `configuration` parameter which can t
91
95
  - `source`: `camera` or `image` (defaults to camera)
92
96
  - `sourceImageUrl`: an absolute image url, required if `source` is `image`. Example: `file:///var/…/image.png`
93
97
  - `multiPage`: boolean (defaults to true). If true, after a page is scanned, a prompt to scan another page will be displayed. If false, a single page will be scanned.
94
- - `defaultFilter`: `none`, `blackAndWhite`, `color`, `photo` (by default, the filter is chosen automatically)
98
+ - `multiPageFormat`: `pdf`, `tiff`, `none` (defaults to `pdf`)
99
+ - `defaultFilter`: `none`, `blackAndWhite`, `monochrome`, `color`, `photo` (by default, the filter is chosen automatically)
95
100
  - `pdfPageSize`: `fit`, `a4`, `letter`, defaults to fit.
96
101
  - `pdfMaxScanDimension`: max dimension in pixels when images are scaled before PDF generation, for example 2000 to fit both height and width within 2000px. Defaults to 0, which means no scaling is performed.
97
102
  - `jpegQuality`: JPEG quality used to compress captured images. Between 0 and 100, 100 being the best quality. Default is 60.
@@ -108,7 +113,7 @@ The method `scanWithConfiguration` takes a `configuration` parameter which can t
108
113
 
109
114
  It returns a promise with `result` object containing:
110
115
 
111
- - `pdfUrl`: a PDF file of the scanned pages (example: "file://<filepath>.pdf")
116
+ - `multiPageDocumentUrl`: a document containing all the scanned pages (example: "file://<filepath>.pdf")
112
117
  - `scans`: an array of scan objects. Each scan object has:
113
118
  - `originalUrl`: the original file as scanned from the camera. "file://<filepath>.jpeg"
114
119
  - `enhancedUrl`: the cropped and enhanced file, as processed by the SDK. "file://<filepath>.{jpeg|png}"
@@ -157,34 +162,15 @@ RNGeniusScan.setLicenceKey('REPLACE_WITH_YOUR_LICENCE_KEY')
157
162
 
158
163
  ## How do I get the UI translated to another language?
159
164
 
160
- The plugin supports a wide variety of languages:
161
- - English (default)
162
- - Arabic
163
- - Danish
164
- - German
165
- - Spanish
166
- - French
167
- - Hebrew
168
- - Indonesian
169
- - Italian
170
- - Japanese
171
- - Korean
172
- - Dutch
173
- - Portuguese
174
- - Russian
175
- - Swedish
176
- - Turkish
177
- - Vietnamese
178
- - Chinese (Simplified)
179
- - Chinese (Traditional)
180
-
181
165
  The device's locale determines the languages used by the plugin for all strings: user guidance, menus, dialogs…
182
166
 
167
+ The plugin supports a wide variety of languages: English (default), Arabic, Chinese (Simplified), Chinese (Traditional), Danish, Dutch, French, German, Hebrew, Indonesian, Italian, Japanese, Korean, Portuguese, Russian, Spanish, Swedish, Turkish, Vietnamese.
168
+
183
169
  NB: iOS applications must be [localized in XCode by adding each language to the project](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html#//apple_ref/doc/uid/10000171i-CH5-SW2).
184
170
 
185
171
  ## What should I do if my license is invalid?
186
172
 
187
- Make sure that the license key is correct, that is has not expired, and that it is used with the App ID it was generated for. Contact us at sdk@thegrizzlylabs.com for any information regarding the procurement and replacement of license keys.
173
+ Make sure that the license key is correct, that is has not expired, and that it is used with the App ID it was generated for. To learn more about the procurement and replacement of license keys, refer to the [Licensing FAQ](https://geniusscansdk.com/license/licensing).
188
174
 
189
175
  # Changelog
190
176
 
@@ -40,6 +40,6 @@ rootProject.allprojects {
40
40
 
41
41
  dependencies {
42
42
  implementation 'com.facebook.react:react-native:+'
43
- implementation 'com.geniusscansdk:gssdk-scanflow:4.4.7'
44
- implementation 'com.geniusscansdk:gssdk-ocr:4.4.7'
43
+ implementation 'com.geniusscansdk:gssdk-scanflow:4.5.2'
44
+ implementation 'com.geniusscansdk:gssdk-ocr:4.5.2'
45
45
  }
@@ -6,30 +6,30 @@
6
6
  <array>
7
7
  <dict>
8
8
  <key>LibraryIdentifier</key>
9
- <string>ios-arm64</string>
9
+ <string>ios-arm64_x86_64-simulator</string>
10
10
  <key>LibraryPath</key>
11
11
  <string>GSSDKCore.framework</string>
12
12
  <key>SupportedArchitectures</key>
13
13
  <array>
14
14
  <string>arm64</string>
15
+ <string>x86_64</string>
15
16
  </array>
16
17
  <key>SupportedPlatform</key>
17
18
  <string>ios</string>
19
+ <key>SupportedPlatformVariant</key>
20
+ <string>simulator</string>
18
21
  </dict>
19
22
  <dict>
20
23
  <key>LibraryIdentifier</key>
21
- <string>ios-arm64_x86_64-simulator</string>
24
+ <string>ios-arm64</string>
22
25
  <key>LibraryPath</key>
23
26
  <string>GSSDKCore.framework</string>
24
27
  <key>SupportedArchitectures</key>
25
28
  <array>
26
29
  <string>arm64</string>
27
- <string>x86_64</string>
28
30
  </array>
29
31
  <key>SupportedPlatform</key>
30
32
  <string>ios</string>
31
- <key>SupportedPlatformVariant</key>
32
- <string>simulator</string>
33
33
  </dict>
34
34
  </array>
35
35
  <key>CFBundlePackageType</key>
@@ -74,4 +74,26 @@ NS_ASSUME_NONNULL_BEGIN
74
74
 
75
75
  @end
76
76
 
77
+ /**
78
+ GSKTIFF encapsulate the generation of a TIFF document.
79
+ */
80
+ @interface GSKTIFF : NSObject
81
+
82
+ /**
83
+ Write the given TIFF document to the specified file path.
84
+
85
+ @param document The TIFF document.
86
+ @param filePath The file path to write the TIFF to.
87
+ @param error On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
88
+
89
+ @return YES if the TIFF was generated successfully, NO if an error occured.
90
+
91
+ This method will take some time, proportionally to the number of pages of the TIFF document.
92
+ */
93
+ + (BOOL)generateTIFFDocument:(GSKPDFDocument *)document
94
+ toPath:(NSString *)filePath
95
+ error:(NSError * _Nullable *)error;
96
+
97
+ @end
98
+
77
99
  NS_ASSUME_NONNULL_END
@@ -10,6 +10,7 @@
10
10
  #import <UIKit/UIKit.h>
11
11
 
12
12
  @class GSKEditableFrame;
13
+ @class GSKMagnifierView;
13
14
  @class GSKQuadrangle;
14
15
 
15
16
  NS_ASSUME_NONNULL_BEGIN
@@ -19,12 +20,22 @@ NS_ASSUME_NONNULL_BEGIN
19
20
 
20
21
  It displays an editable quadrangle overlaid on the original image.
21
22
  */
22
- @interface GSKEditFrameView : UIImageView
23
+ @interface GSKEditFrameView : UIView
23
24
 
24
25
  - (void)clearSelection;
25
26
 
27
+ /**
28
+ The overlay representing the quadrangle.
29
+
30
+ In particular, this lets you customize the colors used for the frame overlay.
31
+ */
26
32
  @property (nonatomic, readonly) GSKEditableFrame *imageSelection;
27
33
 
34
+ /**
35
+ The magnifier "loupe" that displays a magnified view of the quadrangle corner being moved.
36
+ */
37
+ @property (nonatomic, readonly) GSKMagnifierView *magnifierView;
38
+
28
39
  // Normalized quadrangle
29
40
  @property (nonatomic, strong) GSKQuadrangle *quadrangle;
30
41
 
@@ -39,6 +50,20 @@ NS_ASSUME_NONNULL_BEGIN
39
50
 
40
51
  @property (nonatomic, assign) BOOL noCrop;
41
52
 
53
+ /**
54
+ Set the image to be displayed by the frame view.
55
+
56
+ The frame view will resize the image to reduce memory usage.
57
+ */
58
+ - (void)setImage:(UIImage *)image;
59
+
60
+ /**
61
+ Inset for the image.
62
+
63
+ By default this inset takes in account the `imageSelection`'s `handleWidth` to make sure the handles are visible even when selection is maximized.
64
+ */
65
+ @property (nonatomic, assign) CGFloat inset;
66
+
42
67
  @end
43
68
 
44
69
  NS_ASSUME_NONNULL_END
@@ -50,7 +50,7 @@ NS_ASSUME_NONNULL_BEGIN
50
50
  /**
51
51
  Customize the color of the shade within the quadrangle.
52
52
  */
53
- @property (nonatomic, copy) UIColor *shadeColor;
53
+ @property (nonatomic, copy) UIColor *shadeColor DEPRECATED_MSG_ATTRIBUTE("Deprecated in favor of frameView.imageSelection.insideShadeColor].");
54
54
 
55
55
  /**
56
56
  Customize the color of the line used to draw the quadrangle.
@@ -14,6 +14,8 @@
14
14
 
15
15
  NS_ASSUME_NONNULL_BEGIN
16
16
 
17
+ extern const CGFloat GSKEditableFrameDefaultHandleWidth;
18
+
17
19
  /**
18
20
  Represents the quadrangle in the quadrangle edition screen.
19
21
  */
@@ -33,9 +35,32 @@ NS_ASSUME_NONNULL_BEGIN
33
35
 
34
36
  @property (nonatomic, weak, nullable) id <GSKEditableFrameDelegate> delegate;
35
37
 
36
- @property (nonatomic, copy) UIColor *shadeColor;
38
+ /**
39
+ The color of the area outside of the quadrangle.
40
+ */
41
+ @property (nonatomic, copy) UIColor *outsideShadeColor;
42
+
43
+ /**
44
+ The color of the area inside of the quadrangle.
45
+ */
46
+ @property (nonatomic, copy) UIColor *insideShadeColor;
47
+
48
+ /**
49
+ The color of the area inside of the quadrangle.
50
+ */
51
+ @property (nonatomic, copy) UIColor *shadeColor DEPRECATED_MSG_ATTRIBUTE("Deprecated in favor of `insideShadeColor`.");
52
+
53
+ /**
54
+ The color of the edges and grid lines.
55
+ */
37
56
  @property (nonatomic, copy) UIColor *lineColor;
38
57
 
58
+ /**
59
+ The width of the handle that signify that corners can be dragged.
60
+
61
+ Default: 5
62
+ */
63
+ @property (nonatomic, assign) CGFloat handleWidth;
39
64
  @property (nonatomic, assign) BOOL noCrop;
40
65
 
41
66
  @end
@@ -0,0 +1,47 @@
1
+ //
2
+ // Genius Scan SDK
3
+ //
4
+ // Copyright 2010-2019 The Grizzly Labs
5
+ //
6
+ // Subject to the Genius Scan SDK Licensing Agreement
7
+ // sdk@thegrizzlylabs.com
8
+ //
9
+
10
+ #import <UIKit/UIKit.h>
11
+
12
+ typedef NS_ENUM(NSInteger, GSKMagnifierViewCenterStyle) {
13
+ GSKMagnifierViewCenterStyleCrosshair,
14
+ GSKMagnifierViewCenterStyleQuadrangle
15
+ };
16
+
17
+ @class GSKQuadrangle;
18
+
19
+ @interface GSKMagnifierView : UIView
20
+
21
+ /**
22
+ The style of the crosshair
23
+ */
24
+ @property (nonatomic, assign) GSKMagnifierViewCenterStyle centerStyle;
25
+
26
+ /**
27
+ Default line width for the crosshair.
28
+ */
29
+ @property (nonatomic, assign) CGFloat crosshairLineWidth;
30
+
31
+ /**
32
+ Default line width for the quadrangle.
33
+ */
34
+ @property (nonatomic, assign) CGFloat quadrangleLineWidth;
35
+
36
+
37
+ /**
38
+ The color of the quadrangle crosshair.
39
+
40
+ This only applies when the crosshair is of style GSKMagnifierCrosshairStyleQuadrangle.
41
+ */
42
+ @property (nonatomic, copy) UIColor *quadrangleColor;
43
+
44
+ - (void)setSourceImage:(UIImage *)sourceImage;
45
+ - (void)setSourceImagePosition:(CGPoint)position quadrangle:(GSKQuadrangle *)quadrangle;
46
+
47
+ @end
@@ -80,18 +80,31 @@ typedef NS_ENUM(NSInteger, GSKRotation) {
80
80
  GSKRotationNone = 0,
81
81
  GSKRotationClockwise = 1,
82
82
  GSKRotation180 = 2,
83
- GSKRotationCounterClockwise = 3,
83
+ GSKRotationCounterClockwise = 3
84
84
  };
85
85
 
86
86
  /// Returns the resulting rotation when applying firstRotation, then secondRotation.
87
87
  FOUNDATION_EXPORT GSKRotation GSKCombineRotation(GSKRotation firstRotation, GSKRotation secondRotation);
88
+ /// Returns the resulting rotation when applying firstRotation, then subtracting secondRotation.
89
+ FOUNDATION_EXPORT GSKRotation GSKSubtractRotation(GSKRotation firstRotation, GSKRotation secondRotation);
88
90
 
89
91
  /// A GSKRotationConfiguration defines the behavior of a GSKScanProcessor when rotating the processed image.
90
92
  @interface GSKRotationConfiguration: NSObject
91
93
 
92
- - (instancetype)initWithRotation:(GSKRotation)rotation;
94
+ /**
95
+ A rotation configuration where no rotation is applied.
96
+ */
97
+ + (instancetype)noRotationConfiguration;
93
98
 
94
- @property (nonatomic, assign) GSKRotation rotation;
99
+ /**
100
+ A rotation configuration where Genius Scan automatically detects the document's orientation.
101
+ */
102
+ + (instancetype)automaticRotationConfiguration;
103
+
104
+ /**
105
+ A rotation with a specific angle. No automatic rotation is applied.
106
+ */
107
+ + (instancetype)rotationConfigurationWithRotation:(GSKRotation)rotation;
95
108
 
96
109
  @end
97
110
 
@@ -143,6 +156,28 @@ FOUNDATION_EXPORT GSKRotation GSKCombineRotation(GSKRotation firstRotation, GSKR
143
156
 
144
157
  /// The filter that was applied during the enhancement phase
145
158
  @property (nonatomic, assign, readonly) GSKFilterType appliedFilter;
159
+
160
+ /**
161
+ The rotation applied during the rotation phase.
162
+
163
+ If you specified a rotation angle as part of GSKRotationConfiguration, you will get this angle back here.
164
+ If you requested an automatic orientation detection as part of the GSKRotationConfiguration, appliedRotation will correspond the rotation applied by the SDK
165
+ to rotate the image according to the estimated orientation.
166
+
167
+ Note: The output of the processing is always an up-oriented image, even if the original image had an EXIF orientation (see UIImage's imageOrientation property).
168
+ `appliedRotation` doesn't include the rotation applied to the image buffer to remove the EXIF information. The `appliedRotation` only includes the "visual" rotation
169
+ needed to display the image to the user:
170
+
171
+ - If the input image imageOrientation is UIImageOrientationUp, and you request a clockwise rotation, appliedRotation will be GSKRotationClockwise.
172
+ - If the input image imageOrientation is UIImageOrientationUp, and you request an automatic rotation, which detects that the image must be rotated clockwise to
173
+ look "straight", appliedRotation will be GSKRotationClockwise.
174
+ - If the input image imageOrientation is UIImageOrientationRight, and you request a clockwise rotation, appliedRotation will be GSKRotationClockwise. The output
175
+ image orientation will be UIImageOrientationUp.
176
+ - If the input image imageOrientation is UIImageOrientationUp, and you request an automatic rotation, which detects that the image must be rotated clockwise to
177
+ look "straight", appliedRotation will be GSKRotationClockwise. The output image orientation will be UIImageOrientationUp.
178
+ */
179
+ @property (nonatomic, assign, readonly) GSKRotation appliedRotation;
180
+
146
181
  @end
147
182
 
148
183
  /// The result of a resizing operation
@@ -166,11 +201,11 @@ FOUNDATION_EXPORT GSKRotation GSKCombineRotation(GSKRotation firstRotation, GSKR
166
201
  + (instancetype)configurationWithPerspectiveCorrectionConfiguration:(GSKPerspectiveCorrectionConfiguration *)perspectiveCorrectionConfiguration
167
202
  curvatureCorrectionConfiguration:(GSKCurvatureCorrectionConfiguration *)curvatureCorrectionConfiguration
168
203
  enhancementConfiguration:(GSKEnhancementConfiguration *)enhancementConfiguration
169
- rotationConfiguration:(GSKRotationConfiguration * _Nullable)rotationConfiguration
204
+ rotationConfiguration:(GSKRotationConfiguration *)rotationConfiguration
170
205
  outputConfiguration:(GSKOutputConfiguration *)outputConfiguration;
171
206
 
172
207
  /**
173
- Automatic perspective correction, distortion correction, followed by automatic enhancement. Output is JPEG.
208
+ Automatic perspective correction, distortion correction, followed by automatic enhancement and automatic rotation. Output is JPEG.
174
209
  */
175
210
  + (instancetype)defaultConfiguration;
176
211
 
@@ -184,7 +219,7 @@ FOUNDATION_EXPORT GSKRotation GSKCombineRotation(GSKRotation firstRotation, GSKR
184
219
  @property (nonatomic, strong, readonly) GSKEnhancementConfiguration *enhancementConfiguration;
185
220
 
186
221
  /// The rotation configuration. The rotation will be applied after all the other processing.
187
- @property (nonatomic, strong, readonly, nullable) GSKRotationConfiguration *rotationConfiguration;
222
+ @property (nonatomic, strong, readonly) GSKRotationConfiguration *rotationConfiguration;
188
223
 
189
224
  /// Configures the output format of the processing.
190
225
  @property (nonatomic, strong, readonly) GSKOutputConfiguration *outputConfiguration;
@@ -38,6 +38,7 @@ FOUNDATION_EXPORT const unsigned char GSSDKVersionString[];
38
38
  #import <GSSDKCore/GSKQuadrangle.h>
39
39
  #import <GSSDKCore/GSKScan.h>
40
40
  #import <GSSDKCore/GSKTriggerDecider.h>
41
+ #import <GSSDKCore/GSKMagnifierView.h>
41
42
 
42
43
  // PDF
43
44
  #import <GSSDKCore/GSKPDFDocument.h>
@@ -74,4 +74,26 @@ NS_ASSUME_NONNULL_BEGIN
74
74
 
75
75
  @end
76
76
 
77
+ /**
78
+ GSKTIFF encapsulate the generation of a TIFF document.
79
+ */
80
+ @interface GSKTIFF : NSObject
81
+
82
+ /**
83
+ Write the given TIFF document to the specified file path.
84
+
85
+ @param document The TIFF document.
86
+ @param filePath The file path to write the TIFF to.
87
+ @param error On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information.
88
+
89
+ @return YES if the TIFF was generated successfully, NO if an error occured.
90
+
91
+ This method will take some time, proportionally to the number of pages of the TIFF document.
92
+ */
93
+ + (BOOL)generateTIFFDocument:(GSKPDFDocument *)document
94
+ toPath:(NSString *)filePath
95
+ error:(NSError * _Nullable *)error;
96
+
97
+ @end
98
+
77
99
  NS_ASSUME_NONNULL_END
@@ -10,6 +10,7 @@
10
10
  #import <UIKit/UIKit.h>
11
11
 
12
12
  @class GSKEditableFrame;
13
+ @class GSKMagnifierView;
13
14
  @class GSKQuadrangle;
14
15
 
15
16
  NS_ASSUME_NONNULL_BEGIN
@@ -19,12 +20,22 @@ NS_ASSUME_NONNULL_BEGIN
19
20
 
20
21
  It displays an editable quadrangle overlaid on the original image.
21
22
  */
22
- @interface GSKEditFrameView : UIImageView
23
+ @interface GSKEditFrameView : UIView
23
24
 
24
25
  - (void)clearSelection;
25
26
 
27
+ /**
28
+ The overlay representing the quadrangle.
29
+
30
+ In particular, this lets you customize the colors used for the frame overlay.
31
+ */
26
32
  @property (nonatomic, readonly) GSKEditableFrame *imageSelection;
27
33
 
34
+ /**
35
+ The magnifier "loupe" that displays a magnified view of the quadrangle corner being moved.
36
+ */
37
+ @property (nonatomic, readonly) GSKMagnifierView *magnifierView;
38
+
28
39
  // Normalized quadrangle
29
40
  @property (nonatomic, strong) GSKQuadrangle *quadrangle;
30
41
 
@@ -39,6 +50,20 @@ NS_ASSUME_NONNULL_BEGIN
39
50
 
40
51
  @property (nonatomic, assign) BOOL noCrop;
41
52
 
53
+ /**
54
+ Set the image to be displayed by the frame view.
55
+
56
+ The frame view will resize the image to reduce memory usage.
57
+ */
58
+ - (void)setImage:(UIImage *)image;
59
+
60
+ /**
61
+ Inset for the image.
62
+
63
+ By default this inset takes in account the `imageSelection`'s `handleWidth` to make sure the handles are visible even when selection is maximized.
64
+ */
65
+ @property (nonatomic, assign) CGFloat inset;
66
+
42
67
  @end
43
68
 
44
69
  NS_ASSUME_NONNULL_END
@@ -50,7 +50,7 @@ NS_ASSUME_NONNULL_BEGIN
50
50
  /**
51
51
  Customize the color of the shade within the quadrangle.
52
52
  */
53
- @property (nonatomic, copy) UIColor *shadeColor;
53
+ @property (nonatomic, copy) UIColor *shadeColor DEPRECATED_MSG_ATTRIBUTE("Deprecated in favor of frameView.imageSelection.insideShadeColor].");
54
54
 
55
55
  /**
56
56
  Customize the color of the line used to draw the quadrangle.
@@ -14,6 +14,8 @@
14
14
 
15
15
  NS_ASSUME_NONNULL_BEGIN
16
16
 
17
+ extern const CGFloat GSKEditableFrameDefaultHandleWidth;
18
+
17
19
  /**
18
20
  Represents the quadrangle in the quadrangle edition screen.
19
21
  */
@@ -33,9 +35,32 @@ NS_ASSUME_NONNULL_BEGIN
33
35
 
34
36
  @property (nonatomic, weak, nullable) id <GSKEditableFrameDelegate> delegate;
35
37
 
36
- @property (nonatomic, copy) UIColor *shadeColor;
38
+ /**
39
+ The color of the area outside of the quadrangle.
40
+ */
41
+ @property (nonatomic, copy) UIColor *outsideShadeColor;
42
+
43
+ /**
44
+ The color of the area inside of the quadrangle.
45
+ */
46
+ @property (nonatomic, copy) UIColor *insideShadeColor;
47
+
48
+ /**
49
+ The color of the area inside of the quadrangle.
50
+ */
51
+ @property (nonatomic, copy) UIColor *shadeColor DEPRECATED_MSG_ATTRIBUTE("Deprecated in favor of `insideShadeColor`.");
52
+
53
+ /**
54
+ The color of the edges and grid lines.
55
+ */
37
56
  @property (nonatomic, copy) UIColor *lineColor;
38
57
 
58
+ /**
59
+ The width of the handle that signify that corners can be dragged.
60
+
61
+ Default: 5
62
+ */
63
+ @property (nonatomic, assign) CGFloat handleWidth;
39
64
  @property (nonatomic, assign) BOOL noCrop;
40
65
 
41
66
  @end
@@ -0,0 +1,47 @@
1
+ //
2
+ // Genius Scan SDK
3
+ //
4
+ // Copyright 2010-2019 The Grizzly Labs
5
+ //
6
+ // Subject to the Genius Scan SDK Licensing Agreement
7
+ // sdk@thegrizzlylabs.com
8
+ //
9
+
10
+ #import <UIKit/UIKit.h>
11
+
12
+ typedef NS_ENUM(NSInteger, GSKMagnifierViewCenterStyle) {
13
+ GSKMagnifierViewCenterStyleCrosshair,
14
+ GSKMagnifierViewCenterStyleQuadrangle
15
+ };
16
+
17
+ @class GSKQuadrangle;
18
+
19
+ @interface GSKMagnifierView : UIView
20
+
21
+ /**
22
+ The style of the crosshair
23
+ */
24
+ @property (nonatomic, assign) GSKMagnifierViewCenterStyle centerStyle;
25
+
26
+ /**
27
+ Default line width for the crosshair.
28
+ */
29
+ @property (nonatomic, assign) CGFloat crosshairLineWidth;
30
+
31
+ /**
32
+ Default line width for the quadrangle.
33
+ */
34
+ @property (nonatomic, assign) CGFloat quadrangleLineWidth;
35
+
36
+
37
+ /**
38
+ The color of the quadrangle crosshair.
39
+
40
+ This only applies when the crosshair is of style GSKMagnifierCrosshairStyleQuadrangle.
41
+ */
42
+ @property (nonatomic, copy) UIColor *quadrangleColor;
43
+
44
+ - (void)setSourceImage:(UIImage *)sourceImage;
45
+ - (void)setSourceImagePosition:(CGPoint)position quadrangle:(GSKQuadrangle *)quadrangle;
46
+
47
+ @end