isbn 2.0.4 → 2.0.5

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 (288) hide show
  1. data/{README → README.md} +5 -11
  2. data/Rakefile +20 -14
  3. data/isbn.gemspec +23 -0
  4. data/lib/isbn.rb +2 -0
  5. data/test/isbn_spec.rb +1 -1
  6. metadata +29 -316
  7. data/VERSION +0 -1
  8. data/src/gocr-0.48/.cvsignore +0 -6
  9. data/src/gocr-0.48/AUTHORS +0 -7
  10. data/src/gocr-0.48/BUGS +0 -55
  11. data/src/gocr-0.48/CREDITS +0 -17
  12. data/src/gocr-0.48/HISTORY +0 -243
  13. data/src/gocr-0.48/INSTALL +0 -83
  14. data/src/gocr-0.48/Makefile +0 -193
  15. data/src/gocr-0.48/Makefile.in +0 -193
  16. data/src/gocr-0.48/README +0 -165
  17. data/src/gocr-0.48/READMEde.txt +0 -80
  18. data/src/gocr-0.48/REMARK.txt +0 -18
  19. data/src/gocr-0.48/REVIEW +0 -538
  20. data/src/gocr-0.48/TODO +0 -65
  21. data/src/gocr-0.48/bin/.cvsignore +0 -2
  22. data/src/gocr-0.48/bin/create_db +0 -38
  23. data/src/gocr-0.48/bin/gocr.tcl +0 -527
  24. data/src/gocr-0.48/bin/gocr_chk.sh +0 -44
  25. data/src/gocr-0.48/configure +0 -4689
  26. data/src/gocr-0.48/configure.in +0 -71
  27. data/src/gocr-0.48/doc/.#Makefile.1.6 +0 -39
  28. data/src/gocr-0.48/doc/.cvsignore +0 -2
  29. data/src/gocr-0.48/doc/Makefile +0 -39
  30. data/src/gocr-0.48/doc/Makefile.in +0 -39
  31. data/src/gocr-0.48/doc/example.dtd +0 -53
  32. data/src/gocr-0.48/doc/example.xml +0 -21
  33. data/src/gocr-0.48/doc/examples.txt +0 -67
  34. data/src/gocr-0.48/doc/gocr.html +0 -578
  35. data/src/gocr-0.48/doc/unicode.txt +0 -57
  36. data/src/gocr-0.48/examples/.#Makefile.1.22 +0 -166
  37. data/src/gocr-0.48/examples/4x6.png +0 -0
  38. data/src/gocr-0.48/examples/4x6.txt +0 -2
  39. data/src/gocr-0.48/examples/5x7.png +0 -0
  40. data/src/gocr-0.48/examples/5x7.png.txt +0 -2
  41. data/src/gocr-0.48/examples/5x8.png +0 -0
  42. data/src/gocr-0.48/examples/5x8.png.txt +0 -2
  43. data/src/gocr-0.48/examples/Makefile +0 -166
  44. data/src/gocr-0.48/examples/color.fig +0 -20
  45. data/src/gocr-0.48/examples/ex.fig +0 -16
  46. data/src/gocr-0.48/examples/font.tex +0 -22
  47. data/src/gocr-0.48/examples/font1.tex +0 -46
  48. data/src/gocr-0.48/examples/font2.fig +0 -27
  49. data/src/gocr-0.48/examples/font_nw.tex +0 -24
  50. data/src/gocr-0.48/examples/handwrt1.jpg +0 -0
  51. data/src/gocr-0.48/examples/handwrt1.txt +0 -10
  52. data/src/gocr-0.48/examples/inverse.fig +0 -20
  53. data/src/gocr-0.48/examples/matrix.jpg +0 -0
  54. data/src/gocr-0.48/examples/ocr-a-subset.png +0 -0
  55. data/src/gocr-0.48/examples/ocr-a-subset.png.txt +0 -4
  56. data/src/gocr-0.48/examples/ocr-a.png +0 -0
  57. data/src/gocr-0.48/examples/ocr-a.txt +0 -6
  58. data/src/gocr-0.48/examples/ocr-b.png +0 -0
  59. data/src/gocr-0.48/examples/ocr-b.png.txt +0 -4
  60. data/src/gocr-0.48/examples/polish.tex +0 -28
  61. data/src/gocr-0.48/examples/rotate45.fig +0 -14
  62. data/src/gocr-0.48/examples/score +0 -36
  63. data/src/gocr-0.48/examples/text.tex +0 -28
  64. data/src/gocr-0.48/gpl.html +0 -537
  65. data/src/gocr-0.48/include/.cvsignore +0 -2
  66. data/src/gocr-0.48/include/config.h +0 -36
  67. data/src/gocr-0.48/include/config.h.in +0 -36
  68. data/src/gocr-0.48/include/version.h +0 -2
  69. data/src/gocr-0.48/install-sh +0 -3
  70. data/src/gocr-0.48/make.bat +0 -57
  71. data/src/gocr-0.48/man/.cvsignore +0 -2
  72. data/src/gocr-0.48/man/Makefile +0 -29
  73. data/src/gocr-0.48/man/Makefile.in +0 -29
  74. data/src/gocr-0.48/man/man1/gocr.1 +0 -166
  75. data/src/gocr-0.48/src/.cvsignore +0 -4
  76. data/src/gocr-0.48/src/Makefile +0 -132
  77. data/src/gocr-0.48/src/Makefile.in +0 -132
  78. data/src/gocr-0.48/src/amiga.h +0 -31
  79. data/src/gocr-0.48/src/barcode.c +0 -846
  80. data/src/gocr-0.48/src/barcode.c.orig +0 -593
  81. data/src/gocr-0.48/src/barcode.h +0 -11
  82. data/src/gocr-0.48/src/box.c +0 -372
  83. data/src/gocr-0.48/src/database.c +0 -462
  84. data/src/gocr-0.48/src/detect.c +0 -943
  85. data/src/gocr-0.48/src/gocr.c +0 -373
  86. data/src/gocr-0.48/src/gocr.h +0 -288
  87. data/src/gocr-0.48/src/jconv.c +0 -168
  88. data/src/gocr-0.48/src/job.c +0 -84
  89. data/src/gocr-0.48/src/lines.c +0 -350
  90. data/src/gocr-0.48/src/list.c +0 -334
  91. data/src/gocr-0.48/src/list.h +0 -90
  92. data/src/gocr-0.48/src/ocr0.c +0 -6756
  93. data/src/gocr-0.48/src/ocr0.h +0 -63
  94. data/src/gocr-0.48/src/ocr0n.c +0 -1475
  95. data/src/gocr-0.48/src/ocr1.c +0 -85
  96. data/src/gocr-0.48/src/ocr1.h +0 -3
  97. data/src/gocr-0.48/src/otsu.c +0 -289
  98. data/src/gocr-0.48/src/otsu.h +0 -23
  99. data/src/gocr-0.48/src/output.c +0 -289
  100. data/src/gocr-0.48/src/output.h +0 -37
  101. data/src/gocr-0.48/src/pcx.c +0 -153
  102. data/src/gocr-0.48/src/pcx.h +0 -9
  103. data/src/gocr-0.48/src/pgm2asc.c +0 -2893
  104. data/src/gocr-0.48/src/pgm2asc.h +0 -105
  105. data/src/gocr-0.48/src/pixel.c +0 -537
  106. data/src/gocr-0.48/src/pnm.c +0 -533
  107. data/src/gocr-0.48/src/pnm.h +0 -35
  108. data/src/gocr-0.48/src/progress.c +0 -87
  109. data/src/gocr-0.48/src/progress.h +0 -42
  110. data/src/gocr-0.48/src/remove.c +0 -703
  111. data/src/gocr-0.48/src/tga.c +0 -87
  112. data/src/gocr-0.48/src/tga.h +0 -6
  113. data/src/gocr-0.48/src/unicode.c +0 -1314
  114. data/src/gocr-0.48/src/unicode.h +0 -1257
  115. data/src/jpeg-7/Makefile.am +0 -133
  116. data/src/jpeg-7/Makefile.in +0 -1089
  117. data/src/jpeg-7/README +0 -322
  118. data/src/jpeg-7/aclocal.m4 +0 -8990
  119. data/src/jpeg-7/ansi2knr.1 +0 -36
  120. data/src/jpeg-7/ansi2knr.c +0 -739
  121. data/src/jpeg-7/cderror.h +0 -132
  122. data/src/jpeg-7/cdjpeg.c +0 -181
  123. data/src/jpeg-7/cdjpeg.h +0 -187
  124. data/src/jpeg-7/change.log +0 -270
  125. data/src/jpeg-7/cjpeg.1 +0 -325
  126. data/src/jpeg-7/cjpeg.c +0 -616
  127. data/src/jpeg-7/ckconfig.c +0 -402
  128. data/src/jpeg-7/coderules.txt +0 -118
  129. data/src/jpeg-7/config.guess +0 -1561
  130. data/src/jpeg-7/config.sub +0 -1686
  131. data/src/jpeg-7/configure +0 -17139
  132. data/src/jpeg-7/configure.ac +0 -317
  133. data/src/jpeg-7/depcomp +0 -630
  134. data/src/jpeg-7/djpeg.1 +0 -251
  135. data/src/jpeg-7/djpeg.c +0 -617
  136. data/src/jpeg-7/example.c +0 -433
  137. data/src/jpeg-7/filelist.txt +0 -215
  138. data/src/jpeg-7/install-sh +0 -520
  139. data/src/jpeg-7/install.txt +0 -1097
  140. data/src/jpeg-7/jaricom.c +0 -148
  141. data/src/jpeg-7/jcapimin.c +0 -282
  142. data/src/jpeg-7/jcapistd.c +0 -161
  143. data/src/jpeg-7/jcarith.c +0 -921
  144. data/src/jpeg-7/jccoefct.c +0 -453
  145. data/src/jpeg-7/jccolor.c +0 -459
  146. data/src/jpeg-7/jcdctmgr.c +0 -482
  147. data/src/jpeg-7/jchuff.c +0 -1612
  148. data/src/jpeg-7/jcinit.c +0 -65
  149. data/src/jpeg-7/jcmainct.c +0 -293
  150. data/src/jpeg-7/jcmarker.c +0 -667
  151. data/src/jpeg-7/jcmaster.c +0 -770
  152. data/src/jpeg-7/jcomapi.c +0 -106
  153. data/src/jpeg-7/jconfig.bcc +0 -48
  154. data/src/jpeg-7/jconfig.cfg +0 -45
  155. data/src/jpeg-7/jconfig.dj +0 -38
  156. data/src/jpeg-7/jconfig.mac +0 -43
  157. data/src/jpeg-7/jconfig.manx +0 -43
  158. data/src/jpeg-7/jconfig.mc6 +0 -52
  159. data/src/jpeg-7/jconfig.sas +0 -43
  160. data/src/jpeg-7/jconfig.st +0 -42
  161. data/src/jpeg-7/jconfig.txt +0 -155
  162. data/src/jpeg-7/jconfig.vc +0 -45
  163. data/src/jpeg-7/jconfig.vms +0 -37
  164. data/src/jpeg-7/jconfig.wat +0 -38
  165. data/src/jpeg-7/jcparam.c +0 -632
  166. data/src/jpeg-7/jcprepct.c +0 -358
  167. data/src/jpeg-7/jcsample.c +0 -545
  168. data/src/jpeg-7/jctrans.c +0 -381
  169. data/src/jpeg-7/jdapimin.c +0 -396
  170. data/src/jpeg-7/jdapistd.c +0 -275
  171. data/src/jpeg-7/jdarith.c +0 -762
  172. data/src/jpeg-7/jdatadst.c +0 -151
  173. data/src/jpeg-7/jdatasrc.c +0 -212
  174. data/src/jpeg-7/jdcoefct.c +0 -736
  175. data/src/jpeg-7/jdcolor.c +0 -396
  176. data/src/jpeg-7/jdct.h +0 -393
  177. data/src/jpeg-7/jddctmgr.c +0 -382
  178. data/src/jpeg-7/jdhuff.c +0 -1309
  179. data/src/jpeg-7/jdinput.c +0 -384
  180. data/src/jpeg-7/jdmainct.c +0 -512
  181. data/src/jpeg-7/jdmarker.c +0 -1360
  182. data/src/jpeg-7/jdmaster.c +0 -663
  183. data/src/jpeg-7/jdmerge.c +0 -400
  184. data/src/jpeg-7/jdpostct.c +0 -290
  185. data/src/jpeg-7/jdsample.c +0 -361
  186. data/src/jpeg-7/jdtrans.c +0 -136
  187. data/src/jpeg-7/jerror.c +0 -252
  188. data/src/jpeg-7/jerror.h +0 -304
  189. data/src/jpeg-7/jfdctflt.c +0 -174
  190. data/src/jpeg-7/jfdctfst.c +0 -230
  191. data/src/jpeg-7/jfdctint.c +0 -4348
  192. data/src/jpeg-7/jidctflt.c +0 -242
  193. data/src/jpeg-7/jidctfst.c +0 -368
  194. data/src/jpeg-7/jidctint.c +0 -5137
  195. data/src/jpeg-7/jinclude.h +0 -91
  196. data/src/jpeg-7/jmemansi.c +0 -167
  197. data/src/jpeg-7/jmemdos.c +0 -638
  198. data/src/jpeg-7/jmemdosa.asm +0 -379
  199. data/src/jpeg-7/jmemmac.c +0 -289
  200. data/src/jpeg-7/jmemmgr.c +0 -1118
  201. data/src/jpeg-7/jmemname.c +0 -276
  202. data/src/jpeg-7/jmemnobs.c +0 -109
  203. data/src/jpeg-7/jmemsys.h +0 -198
  204. data/src/jpeg-7/jmorecfg.h +0 -369
  205. data/src/jpeg-7/jpegint.h +0 -395
  206. data/src/jpeg-7/jpeglib.h +0 -1135
  207. data/src/jpeg-7/jpegtran.1 +0 -272
  208. data/src/jpeg-7/jpegtran.c +0 -546
  209. data/src/jpeg-7/jquant1.c +0 -856
  210. data/src/jpeg-7/jquant2.c +0 -1310
  211. data/src/jpeg-7/jutils.c +0 -179
  212. data/src/jpeg-7/jversion.h +0 -14
  213. data/src/jpeg-7/libjpeg.map +0 -4
  214. data/src/jpeg-7/libjpeg.txt +0 -3067
  215. data/src/jpeg-7/ltmain.sh +0 -8406
  216. data/src/jpeg-7/makcjpeg.st +0 -36
  217. data/src/jpeg-7/makdjpeg.st +0 -36
  218. data/src/jpeg-7/makeadsw.vc6 +0 -77
  219. data/src/jpeg-7/makeasln.vc9 +0 -33
  220. data/src/jpeg-7/makecdep.vc6 +0 -82
  221. data/src/jpeg-7/makecdsp.vc6 +0 -130
  222. data/src/jpeg-7/makecmak.vc6 +0 -159
  223. data/src/jpeg-7/makecvcp.vc9 +0 -186
  224. data/src/jpeg-7/makeddep.vc6 +0 -82
  225. data/src/jpeg-7/makeddsp.vc6 +0 -130
  226. data/src/jpeg-7/makedmak.vc6 +0 -159
  227. data/src/jpeg-7/makedvcp.vc9 +0 -186
  228. data/src/jpeg-7/makefile.ansi +0 -220
  229. data/src/jpeg-7/makefile.bcc +0 -291
  230. data/src/jpeg-7/makefile.dj +0 -226
  231. data/src/jpeg-7/makefile.manx +0 -220
  232. data/src/jpeg-7/makefile.mc6 +0 -255
  233. data/src/jpeg-7/makefile.mms +0 -224
  234. data/src/jpeg-7/makefile.sas +0 -258
  235. data/src/jpeg-7/makefile.unix +0 -234
  236. data/src/jpeg-7/makefile.vc +0 -217
  237. data/src/jpeg-7/makefile.vms +0 -142
  238. data/src/jpeg-7/makefile.wat +0 -239
  239. data/src/jpeg-7/makejdep.vc6 +0 -423
  240. data/src/jpeg-7/makejdsp.vc6 +0 -285
  241. data/src/jpeg-7/makejdsw.vc6 +0 -29
  242. data/src/jpeg-7/makejmak.vc6 +0 -425
  243. data/src/jpeg-7/makejsln.vc9 +0 -17
  244. data/src/jpeg-7/makejvcp.vc9 +0 -328
  245. data/src/jpeg-7/makeproj.mac +0 -213
  246. data/src/jpeg-7/makerdep.vc6 +0 -6
  247. data/src/jpeg-7/makerdsp.vc6 +0 -78
  248. data/src/jpeg-7/makermak.vc6 +0 -110
  249. data/src/jpeg-7/makervcp.vc9 +0 -133
  250. data/src/jpeg-7/maketdep.vc6 +0 -43
  251. data/src/jpeg-7/maketdsp.vc6 +0 -122
  252. data/src/jpeg-7/maketmak.vc6 +0 -131
  253. data/src/jpeg-7/maketvcp.vc9 +0 -178
  254. data/src/jpeg-7/makewdep.vc6 +0 -6
  255. data/src/jpeg-7/makewdsp.vc6 +0 -78
  256. data/src/jpeg-7/makewmak.vc6 +0 -110
  257. data/src/jpeg-7/makewvcp.vc9 +0 -133
  258. data/src/jpeg-7/makljpeg.st +0 -68
  259. data/src/jpeg-7/maktjpeg.st +0 -30
  260. data/src/jpeg-7/makvms.opt +0 -4
  261. data/src/jpeg-7/missing +0 -376
  262. data/src/jpeg-7/rdbmp.c +0 -439
  263. data/src/jpeg-7/rdcolmap.c +0 -253
  264. data/src/jpeg-7/rdgif.c +0 -38
  265. data/src/jpeg-7/rdjpgcom.1 +0 -63
  266. data/src/jpeg-7/rdjpgcom.c +0 -515
  267. data/src/jpeg-7/rdppm.c +0 -459
  268. data/src/jpeg-7/rdrle.c +0 -387
  269. data/src/jpeg-7/rdswitch.c +0 -365
  270. data/src/jpeg-7/rdtarga.c +0 -500
  271. data/src/jpeg-7/structure.txt +0 -945
  272. data/src/jpeg-7/testimg.bmp +0 -0
  273. data/src/jpeg-7/testimg.jpg +0 -0
  274. data/src/jpeg-7/testimg.ppm +0 -4
  275. data/src/jpeg-7/testimgp.jpg +0 -0
  276. data/src/jpeg-7/testorig.jpg +0 -0
  277. data/src/jpeg-7/testprog.jpg +0 -0
  278. data/src/jpeg-7/transupp.c +0 -1533
  279. data/src/jpeg-7/transupp.h +0 -205
  280. data/src/jpeg-7/usage.txt +0 -605
  281. data/src/jpeg-7/wizard.txt +0 -211
  282. data/src/jpeg-7/wrbmp.c +0 -442
  283. data/src/jpeg-7/wrgif.c +0 -399
  284. data/src/jpeg-7/wrjpgcom.1 +0 -103
  285. data/src/jpeg-7/wrjpgcom.c +0 -583
  286. data/src/jpeg-7/wrppm.c +0 -269
  287. data/src/jpeg-7/wrrle.c +0 -305
  288. data/src/jpeg-7/wrtarga.c +0 -253
data/src/jpeg-7/rdppm.c DELETED
@@ -1,459 +0,0 @@
1
- /*
2
- * rdppm.c
3
- *
4
- * Copyright (C) 1991-1997, Thomas G. Lane.
5
- * Modified 2009 by Bill Allombert, Guido Vollbeding.
6
- * This file is part of the Independent JPEG Group's software.
7
- * For conditions of distribution and use, see the accompanying README file.
8
- *
9
- * This file contains routines to read input images in PPM/PGM format.
10
- * The extended 2-byte-per-sample raw PPM/PGM formats are supported.
11
- * The PBMPLUS library is NOT required to compile this software
12
- * (but it is highly useful as a set of PPM image manipulation programs).
13
- *
14
- * These routines may need modification for non-Unix environments or
15
- * specialized applications. As they stand, they assume input from
16
- * an ordinary stdio stream. They further assume that reading begins
17
- * at the start of the file; start_input may need work if the
18
- * user interface has already read some data (e.g., to determine that
19
- * the file is indeed PPM format).
20
- */
21
-
22
- #include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
23
-
24
- #ifdef PPM_SUPPORTED
25
-
26
-
27
- /* Portions of this code are based on the PBMPLUS library, which is:
28
- **
29
- ** Copyright (C) 1988 by Jef Poskanzer.
30
- **
31
- ** Permission to use, copy, modify, and distribute this software and its
32
- ** documentation for any purpose and without fee is hereby granted, provided
33
- ** that the above copyright notice appear in all copies and that both that
34
- ** copyright notice and this permission notice appear in supporting
35
- ** documentation. This software is provided "as is" without express or
36
- ** implied warranty.
37
- */
38
-
39
-
40
- /* Macros to deal with unsigned chars as efficiently as compiler allows */
41
-
42
- #ifdef HAVE_UNSIGNED_CHAR
43
- typedef unsigned char U_CHAR;
44
- #define UCH(x) ((int) (x))
45
- #else /* !HAVE_UNSIGNED_CHAR */
46
- #ifdef CHAR_IS_UNSIGNED
47
- typedef char U_CHAR;
48
- #define UCH(x) ((int) (x))
49
- #else
50
- typedef char U_CHAR;
51
- #define UCH(x) ((int) (x) & 0xFF)
52
- #endif
53
- #endif /* HAVE_UNSIGNED_CHAR */
54
-
55
-
56
- #define ReadOK(file,buffer,len) (JFREAD(file,buffer,len) == ((size_t) (len)))
57
-
58
-
59
- /*
60
- * On most systems, reading individual bytes with getc() is drastically less
61
- * efficient than buffering a row at a time with fread(). On PCs, we must
62
- * allocate the buffer in near data space, because we are assuming small-data
63
- * memory model, wherein fread() can't reach far memory. If you need to
64
- * process very wide images on a PC, you might have to compile in large-memory
65
- * model, or else replace fread() with a getc() loop --- which will be much
66
- * slower.
67
- */
68
-
69
-
70
- /* Private version of data source object */
71
-
72
- typedef struct {
73
- struct cjpeg_source_struct pub; /* public fields */
74
-
75
- U_CHAR *iobuffer; /* non-FAR pointer to I/O buffer */
76
- JSAMPROW pixrow; /* FAR pointer to same */
77
- size_t buffer_width; /* width of I/O buffer */
78
- JSAMPLE *rescale; /* => maxval-remapping array, or NULL */
79
- } ppm_source_struct;
80
-
81
- typedef ppm_source_struct * ppm_source_ptr;
82
-
83
-
84
- LOCAL(int)
85
- pbm_getc (FILE * infile)
86
- /* Read next char, skipping over any comments */
87
- /* A comment/newline sequence is returned as a newline */
88
- {
89
- register int ch;
90
-
91
- ch = getc(infile);
92
- if (ch == '#') {
93
- do {
94
- ch = getc(infile);
95
- } while (ch != '\n' && ch != EOF);
96
- }
97
- return ch;
98
- }
99
-
100
-
101
- LOCAL(unsigned int)
102
- read_pbm_integer (j_compress_ptr cinfo, FILE * infile)
103
- /* Read an unsigned decimal integer from the PPM file */
104
- /* Swallows one trailing character after the integer */
105
- /* Note that on a 16-bit-int machine, only values up to 64k can be read. */
106
- /* This should not be a problem in practice. */
107
- {
108
- register int ch;
109
- register unsigned int val;
110
-
111
- /* Skip any leading whitespace */
112
- do {
113
- ch = pbm_getc(infile);
114
- if (ch == EOF)
115
- ERREXIT(cinfo, JERR_INPUT_EOF);
116
- } while (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r');
117
-
118
- if (ch < '0' || ch > '9')
119
- ERREXIT(cinfo, JERR_PPM_NONNUMERIC);
120
-
121
- val = ch - '0';
122
- while ((ch = pbm_getc(infile)) >= '0' && ch <= '9') {
123
- val *= 10;
124
- val += ch - '0';
125
- }
126
- return val;
127
- }
128
-
129
-
130
- /*
131
- * Read one row of pixels.
132
- *
133
- * We provide several different versions depending on input file format.
134
- * In all cases, input is scaled to the size of JSAMPLE.
135
- *
136
- * A really fast path is provided for reading byte/sample raw files with
137
- * maxval = MAXJSAMPLE, which is the normal case for 8-bit data.
138
- */
139
-
140
-
141
- METHODDEF(JDIMENSION)
142
- get_text_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
143
- /* This version is for reading text-format PGM files with any maxval */
144
- {
145
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
146
- FILE * infile = source->pub.input_file;
147
- register JSAMPROW ptr;
148
- register JSAMPLE *rescale = source->rescale;
149
- JDIMENSION col;
150
-
151
- ptr = source->pub.buffer[0];
152
- for (col = cinfo->image_width; col > 0; col--) {
153
- *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
154
- }
155
- return 1;
156
- }
157
-
158
-
159
- METHODDEF(JDIMENSION)
160
- get_text_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
161
- /* This version is for reading text-format PPM files with any maxval */
162
- {
163
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
164
- FILE * infile = source->pub.input_file;
165
- register JSAMPROW ptr;
166
- register JSAMPLE *rescale = source->rescale;
167
- JDIMENSION col;
168
-
169
- ptr = source->pub.buffer[0];
170
- for (col = cinfo->image_width; col > 0; col--) {
171
- *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
172
- *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
173
- *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
174
- }
175
- return 1;
176
- }
177
-
178
-
179
- METHODDEF(JDIMENSION)
180
- get_scaled_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
181
- /* This version is for reading raw-byte-format PGM files with any maxval */
182
- {
183
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
184
- register JSAMPROW ptr;
185
- register U_CHAR * bufferptr;
186
- register JSAMPLE *rescale = source->rescale;
187
- JDIMENSION col;
188
-
189
- if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
190
- ERREXIT(cinfo, JERR_INPUT_EOF);
191
- ptr = source->pub.buffer[0];
192
- bufferptr = source->iobuffer;
193
- for (col = cinfo->image_width; col > 0; col--) {
194
- *ptr++ = rescale[UCH(*bufferptr++)];
195
- }
196
- return 1;
197
- }
198
-
199
-
200
- METHODDEF(JDIMENSION)
201
- get_scaled_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
202
- /* This version is for reading raw-byte-format PPM files with any maxval */
203
- {
204
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
205
- register JSAMPROW ptr;
206
- register U_CHAR * bufferptr;
207
- register JSAMPLE *rescale = source->rescale;
208
- JDIMENSION col;
209
-
210
- if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
211
- ERREXIT(cinfo, JERR_INPUT_EOF);
212
- ptr = source->pub.buffer[0];
213
- bufferptr = source->iobuffer;
214
- for (col = cinfo->image_width; col > 0; col--) {
215
- *ptr++ = rescale[UCH(*bufferptr++)];
216
- *ptr++ = rescale[UCH(*bufferptr++)];
217
- *ptr++ = rescale[UCH(*bufferptr++)];
218
- }
219
- return 1;
220
- }
221
-
222
-
223
- METHODDEF(JDIMENSION)
224
- get_raw_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
225
- /* This version is for reading raw-byte-format files with maxval = MAXJSAMPLE.
226
- * In this case we just read right into the JSAMPLE buffer!
227
- * Note that same code works for PPM and PGM files.
228
- */
229
- {
230
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
231
-
232
- if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
233
- ERREXIT(cinfo, JERR_INPUT_EOF);
234
- return 1;
235
- }
236
-
237
-
238
- METHODDEF(JDIMENSION)
239
- get_word_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
240
- /* This version is for reading raw-word-format PGM files with any maxval */
241
- {
242
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
243
- register JSAMPROW ptr;
244
- register U_CHAR * bufferptr;
245
- register JSAMPLE *rescale = source->rescale;
246
- JDIMENSION col;
247
-
248
- if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
249
- ERREXIT(cinfo, JERR_INPUT_EOF);
250
- ptr = source->pub.buffer[0];
251
- bufferptr = source->iobuffer;
252
- for (col = cinfo->image_width; col > 0; col--) {
253
- register int temp;
254
- temp = UCH(*bufferptr++) << 8;
255
- temp |= UCH(*bufferptr++);
256
- *ptr++ = rescale[temp];
257
- }
258
- return 1;
259
- }
260
-
261
-
262
- METHODDEF(JDIMENSION)
263
- get_word_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
264
- /* This version is for reading raw-word-format PPM files with any maxval */
265
- {
266
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
267
- register JSAMPROW ptr;
268
- register U_CHAR * bufferptr;
269
- register JSAMPLE *rescale = source->rescale;
270
- JDIMENSION col;
271
-
272
- if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
273
- ERREXIT(cinfo, JERR_INPUT_EOF);
274
- ptr = source->pub.buffer[0];
275
- bufferptr = source->iobuffer;
276
- for (col = cinfo->image_width; col > 0; col--) {
277
- register int temp;
278
- temp = UCH(*bufferptr++) << 8;
279
- temp |= UCH(*bufferptr++);
280
- *ptr++ = rescale[temp];
281
- temp = UCH(*bufferptr++) << 8;
282
- temp |= UCH(*bufferptr++);
283
- *ptr++ = rescale[temp];
284
- temp = UCH(*bufferptr++) << 8;
285
- temp |= UCH(*bufferptr++);
286
- *ptr++ = rescale[temp];
287
- }
288
- return 1;
289
- }
290
-
291
-
292
- /*
293
- * Read the file header; return image size and component count.
294
- */
295
-
296
- METHODDEF(void)
297
- start_input_ppm (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
298
- {
299
- ppm_source_ptr source = (ppm_source_ptr) sinfo;
300
- int c;
301
- unsigned int w, h, maxval;
302
- boolean need_iobuffer, use_raw_buffer, need_rescale;
303
-
304
- if (getc(source->pub.input_file) != 'P')
305
- ERREXIT(cinfo, JERR_PPM_NOT);
306
-
307
- c = getc(source->pub.input_file); /* subformat discriminator character */
308
-
309
- /* detect unsupported variants (ie, PBM) before trying to read header */
310
- switch (c) {
311
- case '2': /* it's a text-format PGM file */
312
- case '3': /* it's a text-format PPM file */
313
- case '5': /* it's a raw-format PGM file */
314
- case '6': /* it's a raw-format PPM file */
315
- break;
316
- default:
317
- ERREXIT(cinfo, JERR_PPM_NOT);
318
- break;
319
- }
320
-
321
- /* fetch the remaining header info */
322
- w = read_pbm_integer(cinfo, source->pub.input_file);
323
- h = read_pbm_integer(cinfo, source->pub.input_file);
324
- maxval = read_pbm_integer(cinfo, source->pub.input_file);
325
-
326
- if (w <= 0 || h <= 0 || maxval <= 0) /* error check */
327
- ERREXIT(cinfo, JERR_PPM_NOT);
328
-
329
- cinfo->data_precision = BITS_IN_JSAMPLE; /* we always rescale data to this */
330
- cinfo->image_width = (JDIMENSION) w;
331
- cinfo->image_height = (JDIMENSION) h;
332
-
333
- /* initialize flags to most common settings */
334
- need_iobuffer = TRUE; /* do we need an I/O buffer? */
335
- use_raw_buffer = FALSE; /* do we map input buffer onto I/O buffer? */
336
- need_rescale = TRUE; /* do we need a rescale array? */
337
-
338
- switch (c) {
339
- case '2': /* it's a text-format PGM file */
340
- cinfo->input_components = 1;
341
- cinfo->in_color_space = JCS_GRAYSCALE;
342
- TRACEMS2(cinfo, 1, JTRC_PGM_TEXT, w, h);
343
- source->pub.get_pixel_rows = get_text_gray_row;
344
- need_iobuffer = FALSE;
345
- break;
346
-
347
- case '3': /* it's a text-format PPM file */
348
- cinfo->input_components = 3;
349
- cinfo->in_color_space = JCS_RGB;
350
- TRACEMS2(cinfo, 1, JTRC_PPM_TEXT, w, h);
351
- source->pub.get_pixel_rows = get_text_rgb_row;
352
- need_iobuffer = FALSE;
353
- break;
354
-
355
- case '5': /* it's a raw-format PGM file */
356
- cinfo->input_components = 1;
357
- cinfo->in_color_space = JCS_GRAYSCALE;
358
- TRACEMS2(cinfo, 1, JTRC_PGM, w, h);
359
- if (maxval > 255) {
360
- source->pub.get_pixel_rows = get_word_gray_row;
361
- } else if (maxval == MAXJSAMPLE && SIZEOF(JSAMPLE) == SIZEOF(U_CHAR)) {
362
- source->pub.get_pixel_rows = get_raw_row;
363
- use_raw_buffer = TRUE;
364
- need_rescale = FALSE;
365
- } else {
366
- source->pub.get_pixel_rows = get_scaled_gray_row;
367
- }
368
- break;
369
-
370
- case '6': /* it's a raw-format PPM file */
371
- cinfo->input_components = 3;
372
- cinfo->in_color_space = JCS_RGB;
373
- TRACEMS2(cinfo, 1, JTRC_PPM, w, h);
374
- if (maxval > 255) {
375
- source->pub.get_pixel_rows = get_word_rgb_row;
376
- } else if (maxval == MAXJSAMPLE && SIZEOF(JSAMPLE) == SIZEOF(U_CHAR)) {
377
- source->pub.get_pixel_rows = get_raw_row;
378
- use_raw_buffer = TRUE;
379
- need_rescale = FALSE;
380
- } else {
381
- source->pub.get_pixel_rows = get_scaled_rgb_row;
382
- }
383
- break;
384
- }
385
-
386
- /* Allocate space for I/O buffer: 1 or 3 bytes or words/pixel. */
387
- if (need_iobuffer) {
388
- source->buffer_width = (size_t) w * cinfo->input_components *
389
- ((maxval<=255) ? SIZEOF(U_CHAR) : (2*SIZEOF(U_CHAR)));
390
- source->iobuffer = (U_CHAR *)
391
- (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
392
- source->buffer_width);
393
- }
394
-
395
- /* Create compressor input buffer. */
396
- if (use_raw_buffer) {
397
- /* For unscaled raw-input case, we can just map it onto the I/O buffer. */
398
- /* Synthesize a JSAMPARRAY pointer structure */
399
- /* Cast here implies near->far pointer conversion on PCs */
400
- source->pixrow = (JSAMPROW) source->iobuffer;
401
- source->pub.buffer = & source->pixrow;
402
- source->pub.buffer_height = 1;
403
- } else {
404
- /* Need to translate anyway, so make a separate sample buffer. */
405
- source->pub.buffer = (*cinfo->mem->alloc_sarray)
406
- ((j_common_ptr) cinfo, JPOOL_IMAGE,
407
- (JDIMENSION) w * cinfo->input_components, (JDIMENSION) 1);
408
- source->pub.buffer_height = 1;
409
- }
410
-
411
- /* Compute the rescaling array if required. */
412
- if (need_rescale) {
413
- INT32 val, half_maxval;
414
-
415
- /* On 16-bit-int machines we have to be careful of maxval = 65535 */
416
- source->rescale = (JSAMPLE *)
417
- (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
418
- (size_t) (((long) maxval + 1L) * SIZEOF(JSAMPLE)));
419
- half_maxval = maxval / 2;
420
- for (val = 0; val <= (INT32) maxval; val++) {
421
- /* The multiplication here must be done in 32 bits to avoid overflow */
422
- source->rescale[val] = (JSAMPLE) ((val*MAXJSAMPLE + half_maxval)/maxval);
423
- }
424
- }
425
- }
426
-
427
-
428
- /*
429
- * Finish up at the end of the file.
430
- */
431
-
432
- METHODDEF(void)
433
- finish_input_ppm (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
434
- {
435
- /* no work */
436
- }
437
-
438
-
439
- /*
440
- * The module selection routine for PPM format input.
441
- */
442
-
443
- GLOBAL(cjpeg_source_ptr)
444
- jinit_read_ppm (j_compress_ptr cinfo)
445
- {
446
- ppm_source_ptr source;
447
-
448
- /* Create module interface object */
449
- source = (ppm_source_ptr)
450
- (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
451
- SIZEOF(ppm_source_struct));
452
- /* Fill in method ptrs, except get_pixel_rows which start_input sets */
453
- source->pub.start_input = start_input_ppm;
454
- source->pub.finish_input = finish_input_ppm;
455
-
456
- return (cjpeg_source_ptr) source;
457
- }
458
-
459
- #endif /* PPM_SUPPORTED */