motion-ocr 0.0.1

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 (67) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +10 -0
  4. data/LICENSE +28 -0
  5. data/README.md +22 -0
  6. data/Rakefile +17 -0
  7. data/app/app_delegate.rb +2 -0
  8. data/lib/motion-ocr.rb +26 -0
  9. data/lib/motion-ocr/version.rb +3 -0
  10. data/motion-ocr.gemspec +20 -0
  11. data/resources/tessdata/configs/nodict +3 -0
  12. data/resources/tessdata/eng.traineddata +0 -0
  13. data/spec/motion_ocr_spec.rb +23 -0
  14. data/spec/support/phototest.gif +0 -0
  15. data/vendor/MotionOCR/MotionOCR.bridgesupport +14722 -0
  16. data/vendor/MotionOCR/MotionOCR.xcodeproj/project.pbxproj +390 -0
  17. data/vendor/MotionOCR/MotionOCR.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  18. data/vendor/MotionOCR/MotionOCR.xcodeproj/project.xcworkspace/xcuserdata/fer.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  19. data/vendor/MotionOCR/MotionOCR.xcodeproj/xcuserdata/fer.xcuserdatad/xcschemes/MotionOCR.xcscheme +59 -0
  20. data/vendor/MotionOCR/MotionOCR.xcodeproj/xcuserdata/fer.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
  21. data/vendor/MotionOCR/MotionOCR/MotionOCR-Prefix.pch +7 -0
  22. data/vendor/MotionOCR/MotionOCR/MotionOCR.h +22 -0
  23. data/vendor/MotionOCR/MotionOCR/MotionOCR.mm +89 -0
  24. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/allheaders.h +32 -0
  25. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/alltypes.h +49 -0
  26. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/array.h +125 -0
  27. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/arrayaccess.h +194 -0
  28. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bbuffer.h +46 -0
  29. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bmf.h +51 -0
  30. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bmp.h +74 -0
  31. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/ccbord.h +103 -0
  32. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/dewarp.h +57 -0
  33. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/endianness.h +11 -0
  34. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/environ.h +281 -0
  35. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/freetype.h +23 -0
  36. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/gplot.h +77 -0
  37. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/heap.h +73 -0
  38. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/imageio.h +153 -0
  39. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/jbclass.h +122 -0
  40. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/leptprotos.h +2058 -0
  41. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/leptwin.h +34 -0
  42. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/list.h +76 -0
  43. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/morph.h +218 -0
  44. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/pix.h +945 -0
  45. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/ptra.h +80 -0
  46. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/queue.h +63 -0
  47. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/readbarcode.h +220 -0
  48. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/regutils.h +122 -0
  49. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/stack.h +55 -0
  50. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/sudoku.h +62 -0
  51. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/watershed.h +52 -0
  52. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/apitypes.h +31 -0
  53. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/baseapi.h +664 -0
  54. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/errcode.h +104 -0
  55. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/genericvector.h +763 -0
  56. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/helpers.h +139 -0
  57. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/host.h +180 -0
  58. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/ndminx.h +31 -0
  59. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/ocrclass.h +335 -0
  60. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/platform.h +48 -0
  61. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/publictypes.h +202 -0
  62. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/tesscallback.h +1238 -0
  63. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/thresholder.h +170 -0
  64. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/unichar.h +85 -0
  65. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/lib/liblept.a +0 -0
  66. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/lib/libtesseract_all.a +0 -0
  67. metadata +113 -0
@@ -0,0 +1,80 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_PTRA_H
17
+ #define LEPTONICA_PTRA_H
18
+
19
+ /*
20
+ * Contains the following structs:
21
+ * struct L_Ptra
22
+ * struct L_Ptraa
23
+ *
24
+ * Contains definitions for:
25
+ * L_Ptra compaction flags for removal
26
+ * L_Ptra shifting flags for insert
27
+ * L_Ptraa accessor flags
28
+ */
29
+
30
+
31
+ /*------------------------------------------------------------------------*
32
+ * Generic Ptr Array Structs *
33
+ *------------------------------------------------------------------------*/
34
+
35
+ /* Generic pointer array */
36
+ struct L_Ptra
37
+ {
38
+ l_int32 nalloc; /* size of allocated ptr array */
39
+ l_int32 imax; /* greatest valid index */
40
+ l_int32 nactual; /* actual number of stored elements */
41
+ void **array; /* ptr array */
42
+ };
43
+ typedef struct L_Ptra L_PTRA;
44
+
45
+
46
+ /* Array of generic pointer arrays */
47
+ struct L_Ptraa
48
+ {
49
+ l_int32 nalloc; /* size of allocated ptr array */
50
+ struct L_Ptra **ptra; /* array of ptra */
51
+ };
52
+ typedef struct L_Ptraa L_PTRAA;
53
+
54
+
55
+
56
+ /*------------------------------------------------------------------------*
57
+ * Array flags *
58
+ *------------------------------------------------------------------------*/
59
+
60
+ /* Flags for removal from L_Ptra */
61
+ enum {
62
+ L_NO_COMPACTION = 1, /* null the pointer only */
63
+ L_COMPACTION = 2 /* compact the array */
64
+ };
65
+
66
+ /* Flags for insertion into L_Ptra */
67
+ enum {
68
+ L_AUTO_DOWNSHIFT = 0, /* choose based on number of holes */
69
+ L_MIN_DOWNSHIFT = 1, /* downshifts min # of ptrs below insert */
70
+ L_FULL_DOWNSHIFT = 2 /* downshifts all ptrs below insert */
71
+ };
72
+
73
+ /* Accessor flags for L_Ptraa */
74
+ enum {
75
+ L_HANDLE_ONLY = 0, /* ptr to L_Ptra; caller can inspect only */
76
+ L_REMOVE = 1 /* caller owns; destroy or save in L_Ptraa */
77
+ };
78
+
79
+
80
+ #endif /* LEPTONICA_PTRA_H */
@@ -0,0 +1,63 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_QUEUE_H
17
+ #define LEPTONICA_QUEUE_H
18
+
19
+ /*
20
+ * queue.h
21
+ *
22
+ * Expandable pointer queue for arbitrary void* data.
23
+ *
24
+ * The L_Queue is a fifo that implements a queue of void* pointers.
25
+ * It can be used to hold a queue of any type of struct.
26
+ *
27
+ * Internally, it maintains two counters:
28
+ * nhead: location of head (in ptrs) from the beginning
29
+ * of the array.
30
+ * nelem: number of ptr elements stored in the queue.
31
+ *
32
+ * The element at the head of the queue, which is the next to
33
+ * be removed, is array[nhead]. The location at the tail of the
34
+ * queue to which the next element will be added is
35
+ * array[nhead + nelem].
36
+ *
37
+ * As items are added to the queue, nelem increases.
38
+ * As items are removed, nhead increases and nelem decreases.
39
+ * Any time the tail reaches the end of the allocated array,
40
+ * all the pointers are shifted to the left, so that the head
41
+ * is at the beginning of the array.
42
+ * If the array becomes more than 3/4 full, it doubles in size.
43
+ *
44
+ * The auxiliary stack can be used in a wrapper for re-using
45
+ * items popped from the queue. It is not made by default.
46
+ *
47
+ * For further implementation details, see queue.c.
48
+ */
49
+
50
+ struct L_Queue
51
+ {
52
+ l_int32 nalloc; /* size of allocated ptr array */
53
+ l_int32 nhead; /* location of head (in ptrs) from the */
54
+ /* beginning of the array */
55
+ l_int32 nelem; /* number of elements stored in the queue */
56
+ void **array; /* ptr array */
57
+ struct L_Stack *stack; /* auxiliary stack */
58
+
59
+ };
60
+ typedef struct L_Queue L_QUEUE;
61
+
62
+
63
+ #endif /* LEPTONICA_QUEUE_H */
@@ -0,0 +1,220 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_READBARCODE_H
17
+ #define LEPTONICA_READBARCODE_H
18
+
19
+ /* ----------------------------------------------------------------- *
20
+ * Flags for method of extracting barcode widths *
21
+ * ----------------------------------------------------------------- */
22
+ enum {
23
+ L_USE_WIDTHS = 1, /* use histogram of barcode widths */
24
+ L_USE_WINDOWS = 2 /* find best window for decoding transitions */
25
+ };
26
+
27
+ /* ----------------------------------------------------------------- *
28
+ * Flags for barcode formats *
29
+ * These are used both to identify a barcode format and to identify *
30
+ * the decoding method to use on a barcode. *
31
+ * ----------------------------------------------------------------- */
32
+ enum {
33
+ L_BF_UNKNOWN = 0, /* unknown format */
34
+ L_BF_ANY = 1, /* try decoding with all known formats */
35
+ L_BF_CODE128 = 2, /* decode with Code128 format */
36
+ L_BF_EAN8 = 3, /* decode with EAN8 format */
37
+ L_BF_EAN13 = 4, /* decode with EAN13 format */
38
+ L_BF_CODE2OF5 = 5, /* decode with Code 2 of 5 format */
39
+ L_BF_CODEI2OF5 = 6, /* decode with Interleaved 2 of 5 format */
40
+ L_BF_CODE39 = 7, /* decode with Code39 format */
41
+ L_BF_CODE93 = 8, /* decode with Code93 format */
42
+ L_BF_CODABAR = 9, /* decode with Code93 format */
43
+ L_BF_UPCA = 10 /* decode with UPC A format */
44
+ };
45
+
46
+ /* ----------------------------------------------------------------- *
47
+ * Currently supported formats *
48
+ * Update these arrays as new formats are added. *
49
+ * ----------------------------------------------------------------- */
50
+ static const l_int32 SupportedBarcodeFormat[] = {
51
+ L_BF_CODE2OF5,
52
+ L_BF_CODEI2OF5,
53
+ L_BF_CODE93,
54
+ L_BF_CODE39,
55
+ L_BF_CODABAR,
56
+ L_BF_UPCA,
57
+ L_BF_EAN13
58
+ };
59
+ static const char *SupportedBarcodeFormatName[] = {
60
+ "Code2of5",
61
+ "CodeI2of5",
62
+ "Code93",
63
+ "Code39",
64
+ "Codabar",
65
+ "Upca",
66
+ "Ean13"
67
+ };
68
+ static const l_int32 NumSupportedBarcodeFormats = 7;
69
+
70
+
71
+ /* ----------------------------------------------------------------- *
72
+ * Code 2 of 5 symbology *
73
+ * ----------------------------------------------------------------- */
74
+ static const char *Code2of5[] = {
75
+ "111121211", "211111112", "112111112", "212111111", /* 0 - 3 */
76
+ "111121112", "211121111", "112121111", "111111212", /* 4 - 7 */
77
+ "211111211", "112111211", /* 8 - 9 */
78
+ "21211", "21112" /* Start, Stop */
79
+ };
80
+
81
+ static const l_int32 C25_START = 10;
82
+ static const l_int32 C25_STOP = 11;
83
+
84
+
85
+ /* ----------------------------------------------------------------- *
86
+ * Code Interleaved 2 of 5 symbology *
87
+ * ----------------------------------------------------------------- */
88
+ static const char *CodeI2of5[] = {
89
+ "11221", "21112", "12112", "22111", "11212", /* 0 - 4 */
90
+ "21211", "12211", "11122", "21121", "12121", /* 5 - 9 */
91
+ "1111", "211" /* start, stop */
92
+ };
93
+
94
+ static const l_int32 CI25_START = 10;
95
+ static const l_int32 CI25_STOP = 11;
96
+
97
+
98
+ /* ----------------------------------------------------------------- *
99
+ * Code 93 symbology *
100
+ * ----------------------------------------------------------------- */
101
+ static const char *Code93[] = {
102
+ "131112", "111213", "111312", "111411", "121113", /* 0: 0 - 4 */
103
+ "121212", "121311", "111114", "131211", "141111", /* 5: 5 - 9 */
104
+ "211113", "211212", "211311", "221112", "221211", /* 10: A - E */
105
+ "231111", "112113", "112212", "112311", "122112", /* 15: F - J */
106
+ "132111", "111123", "111222", "111321", "121122", /* 20: K - O */
107
+ "131121", "212112", "212211", "211122", "211221", /* 25: P - T */
108
+ "221121", "222111", "112122", "112221", "122121", /* 30: U - Y */
109
+ "123111", "121131", "311112", "311211", "321111", /* 35: Z,-,.,SP,$ */
110
+ "112131", "113121", "211131", "131221", "312111", /* 40: /,+,%,($),(%) */
111
+ "311121", "122211", "111141" /* 45: (/),(+), Start */
112
+ };
113
+
114
+ /* Use "[]{}#" to represent special codes 43-47 */
115
+ static const char Code93Val[] =
116
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%[]{}#";
117
+
118
+ static const l_int32 C93_START = 47;
119
+ static const l_int32 C93_STOP = 47;
120
+
121
+
122
+ /* ----------------------------------------------------------------- *
123
+ * Code 39 symbology *
124
+ * ----------------------------------------------------------------- */
125
+ static const char *Code39[] = {
126
+ "111221211", "211211112", "112211112", "212211111", /* 0: 0 - 3 */
127
+ "111221112", "211221111", "112221111", "111211212", /* 4: 4 - 7 */
128
+ "211211211", "112211211", "211112112", "112112112", /* 8: 8 - B */
129
+ "212112111", "111122112", "211122111", "112122111", /* 12: C - F */
130
+ "111112212", "211112211", "112112211", "111122211", /* 16: G - J */
131
+ "211111122", "112111122", "212111121", "111121122", /* 20: K - N */
132
+ "211121121", "112121121", "111111222", "211111221", /* 24: O - R */
133
+ "112111221", "111121221", "221111112", "122111112", /* 28: S - V */
134
+ "222111111", "121121112", "221121111", "122121111", /* 32: W - Z */
135
+ "121111212", "221111211", "122111211", "121212111", /* 36: -,.,SP,$ */
136
+ "121211121", "121112121", "111212121", "121121211" /* 40: /,+,%,* */
137
+ };
138
+
139
+ /* Use "*" to represent the Start and Stop codes (43) */
140
+ static const char Code39Val[] =
141
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*";
142
+
143
+ static const l_int32 C39_START = 43;
144
+ static const l_int32 C39_STOP = 43;
145
+
146
+
147
+ /* ----------------------------------------------------------------- *
148
+ * Codabar symbology *
149
+ * ----------------------------------------------------------------- */
150
+ static const char *Codabar[] = {
151
+ "1111122", "1111221", "1112112", "2211111", "1121121", /* 0: 0 - 4 */
152
+ "2111121", "1211112", "1211211", "1221111", "2112111", /* 5: 5 - 9 */
153
+ "1112211", "1122111", "2111212", "2121112", "2121211", /* 10: -,$,:,/,. */
154
+ "1121212", "1122121", "1212112", "1112122", "1112221" /* 15: +,A,B,C,D */
155
+ };
156
+
157
+ /* Ascii representations for codes 16-19: (A or T), (B or N), (C or *),
158
+ * (D or E). These are used in pairs for the Start and Stop codes. */
159
+ static const char CodabarVal[] = "0123456789-$:/.+ABCD";
160
+
161
+
162
+ /* ----------------------------------------------------------------- *
163
+ * UPC-A symbology *
164
+ * ----------------------------------------------------------------- */
165
+ static const char *Upca[] = {
166
+ "3211", "2221", "2122", "1411", "1132", /* 0: 0 - 4 */
167
+ "1231", "1114", "1312", "1213", "3112", /* 5: 5 - 9 */
168
+ "111", "111", "11111" /* 10: Start, Stop, Mid */
169
+ };
170
+
171
+ static const l_int32 UPCA_START = 10;
172
+ static const l_int32 UPCA_STOP = 11;
173
+ static const l_int32 UPCA_MID = 12;
174
+
175
+
176
+ /* ----------------------------------------------------------------- *
177
+ * Code128 symbology *
178
+ * ----------------------------------------------------------------- */
179
+ static const char *Code128[] = {
180
+ "212222", "222122", "222221", "121223", "121322", /* 0 - 4 */
181
+ "131222", "122213", "122312", "132212", "221213", /* 5 - 9 */
182
+ "221312", "231212", "112232", "122132", "122231", /* 10 - 14 */
183
+ "113222", "123122", "123221", "223211", "221132", /* 15 - 19 */
184
+ "221231", "213212", "223112", "312131", "311222", /* 20 - 24 */
185
+ "321122", "321221", "312212", "322112", "322211", /* 25 - 29 */
186
+ "212123", "212321", "232121", "111323", "131123", /* 30 - 34 */
187
+ "131321", "112313", "132113", "132311", "211313", /* 35 - 39 */
188
+ "231113", "231311", "112133", "112331", "132131", /* 40 - 44 */
189
+ "113123", "113321", "133121", "313121", "211331", /* 45 - 49 */
190
+ "231131", "213113", "213311", "213131", "311123", /* 50 - 54 */
191
+ "311321", "331121", "312113", "312311", "332111", /* 55 - 59 */
192
+ "314111", "221411", "431111", "111224", "111422", /* 60 - 64 */
193
+ "121124", "121421", "141122", "141221", "112214", /* 65 - 69 */
194
+ "112412", "122114", "122411", "142112", "142211", /* 70 - 74 */
195
+ "241211", "221114", "413111", "241112", "134111", /* 75 - 79 */
196
+ "111242", "121142", "121241", "114212", "124112", /* 80 - 84 */
197
+ "124211", "411212", "421112", "421211", "212141", /* 85 - 89 */
198
+ "214121", "412121", "111143", "111341", "131141", /* 90 - 94 */
199
+ "114113", "114311", "411113", "411311", "113141", /* 95 - 99 */
200
+ "114131", "311141", "411131", "211412", "211214", /* 100 - 104 */
201
+ "211232", "2331112" /* 105 - 106 */
202
+ };
203
+
204
+ static const l_int32 C128_FUN_3 = 96; /* in A or B only; in C it is 96 */
205
+ static const l_int32 C128_FUNC_2 = 97; /* in A or B only; in C it is 97 */
206
+ static const l_int32 C128_SHIFT = 98; /* in A or B only; in C it is 98 */
207
+ static const l_int32 C128_GOTO_C = 99; /* in A or B only; in C it is 99 */
208
+ static const l_int32 C128_GOTO_B = 100;
209
+ static const l_int32 C128_GOTO_A = 101;
210
+ static const l_int32 C128_FUNC_1 = 102;
211
+ static const l_int32 C128_START_A = 103;
212
+ static const l_int32 C128_START_B = 104;
213
+ static const l_int32 C128_START_C = 105;
214
+ static const l_int32 C128_STOP = 106;
215
+ /* code 128 symbols are 11 units */
216
+ static const l_int32 C128_SYMBOL_WIDTH = 11;
217
+
218
+
219
+
220
+ #endif /* LEPTONICA_READBARCODE_H */
@@ -0,0 +1,122 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_REGUTILS_H
17
+ #define LEPTONICA_REGUTILS_H
18
+
19
+ /*
20
+ * regutils.h
21
+ *
22
+ * Contains this regression test parameter packaging struct
23
+ * struct L_RegParams
24
+ *
25
+ *
26
+ * The regression test utility allows you to write regression tests
27
+ * that compare results with existing "golden files".
28
+ *
29
+ * Such regression tests can be called in three ways.
30
+ * For example, for distance_reg:
31
+ *
32
+ * Case 1: distance_reg generate
33
+ * This generates golden files in /tmp for the reg test.
34
+ *
35
+ * Case 2: distance_reg compare
36
+ * This runs the test against the set of golden files. It
37
+ * appends to 'outfile.txt' either "SUCCESS" or "FAILURE",
38
+ * as well as the details of any parts of the test that failed.
39
+ * It writes to a temporary file stream (fp)
40
+ *
41
+ * Case 3: distance_reg [display]
42
+ * This runs the test but makes no comparison of the output
43
+ * against the set of golden files. In addition, this displays
44
+ * images and plots that are specified in the test under
45
+ * control of the display variable. Display is enabled only
46
+ * for this case. Using 'display' on the command line is optional.
47
+ *
48
+ * Regression tests follow the pattern given below. In an actual
49
+ * case, comparisons of pix and of files can occur in any order.
50
+ * We give a specific order here for clarity.
51
+ *
52
+ * L_REGPARAMS *rp; // holds data required by the test functions
53
+ *
54
+ * // Setup variables; optionally open stream
55
+ * if (regTestSetup(argc, argv, &rp))
56
+ * return 1;
57
+ *
58
+ * // Test pairs of generated pix for identity. This compares
59
+ * // two pix; no golden file is generated.
60
+ * regTestComparePix(rp, pix1, pix2);
61
+ *
62
+ * // Test pairs of generated pix for similarity. This compares
63
+ * // two pix; no golden file is generated. The last arg determines
64
+ * // if stats are to be written to stderr.
65
+ * regTestCompareSimilarPix(rp, pix1, pix2, 15, 0.001, 0);
66
+ *
67
+ * // Generation of <newfile*> outputs and testing for identity
68
+ * // These files can be anything, of course.
69
+ * regTestCheckFile(rp, <newfile0>);
70
+ * regTestCheckFile(rp, <newfile1>);
71
+ *
72
+ * // Test pairs of output golden files for identity. Here we
73
+ * // are comparing golden files 4 and 5.
74
+ * regTestCompareFiles(rp, 4, 5);
75
+ *
76
+ * // "Write and check". This writes a pix using a canonical
77
+ * // formulation for the local filename and either:
78
+ * // case 1: generates a golden file
79
+ * // case 2: compares the local file with a golden file
80
+ * // case 3: generates local files and displays
81
+ * // Here we write the pix compressed with png and jpeg, respectively;
82
+ * // Then check against the golden file. The internal @index
83
+ * // is incremented; it is embedded in the local filename and,
84
+ * // if generating, in the golden file as well.
85
+ * regTestWritePixAndCheck(rp, pix1, IFF_PNG);
86
+ * regTestWritePixAndCheck(rp, pix2, IFF_JFIF_JPEG);
87
+ *
88
+ * // Display if reg test was called in 'display' mode
89
+ * pixDisplayWithTitle(pix1, 100, 100, NULL, rp->display);
90
+ *
91
+ * // Clean up and output result
92
+ * regTestCleanup(rp);
93
+ */
94
+
95
+
96
+ /*-------------------------------------------------------------------------*
97
+ * Regression test parameter packer *
98
+ *-------------------------------------------------------------------------*/
99
+ struct L_RegParams
100
+ {
101
+ FILE *fp; /* stream to temporary output file for compare mode */
102
+ char *testname; /* name of test, without '_reg' */
103
+ char *tempfile; /* name of temp file for compare mode output */
104
+ l_int32 mode; /* generate, compare or display */
105
+ l_int32 index; /* index into saved files for this test; 0-based */
106
+ l_int32 success; /* overall result of the test */
107
+ l_int32 display; /* 1 if in display mode; 0 otherwise */
108
+ L_TIMER tstart; /* marks beginning of the reg test */
109
+ };
110
+ typedef struct L_RegParams L_REGPARAMS;
111
+
112
+
113
+ /* Running modes for the test */
114
+ enum {
115
+ L_REG_GENERATE = 0,
116
+ L_REG_COMPARE = 1,
117
+ L_REG_DISPLAY = 2
118
+ };
119
+
120
+
121
+ #endif /* LEPTONICA_REGUTILS_H */
122
+