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/rdbmp.c DELETED
@@ -1,439 +0,0 @@
1
- /*
2
- * rdbmp.c
3
- *
4
- * Copyright (C) 1994-1996, Thomas G. Lane.
5
- * This file is part of the Independent JPEG Group's software.
6
- * For conditions of distribution and use, see the accompanying README file.
7
- *
8
- * This file contains routines to read input images in Microsoft "BMP"
9
- * format (MS Windows 3.x, OS/2 1.x, and OS/2 2.x flavors).
10
- * Currently, only 8-bit and 24-bit images are supported, not 1-bit or
11
- * 4-bit (feeding such low-depth images into JPEG would be silly anyway).
12
- * Also, we don't support RLE-compressed files.
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 BMP format).
20
- *
21
- * This code contributed by James Arthur Boucher.
22
- */
23
-
24
- #include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
25
-
26
- #ifdef BMP_SUPPORTED
27
-
28
-
29
- /* Macros to deal with unsigned chars as efficiently as compiler allows */
30
-
31
- #ifdef HAVE_UNSIGNED_CHAR
32
- typedef unsigned char U_CHAR;
33
- #define UCH(x) ((int) (x))
34
- #else /* !HAVE_UNSIGNED_CHAR */
35
- #ifdef CHAR_IS_UNSIGNED
36
- typedef char U_CHAR;
37
- #define UCH(x) ((int) (x))
38
- #else
39
- typedef char U_CHAR;
40
- #define UCH(x) ((int) (x) & 0xFF)
41
- #endif
42
- #endif /* HAVE_UNSIGNED_CHAR */
43
-
44
-
45
- #define ReadOK(file,buffer,len) (JFREAD(file,buffer,len) == ((size_t) (len)))
46
-
47
-
48
- /* Private version of data source object */
49
-
50
- typedef struct _bmp_source_struct * bmp_source_ptr;
51
-
52
- typedef struct _bmp_source_struct {
53
- struct cjpeg_source_struct pub; /* public fields */
54
-
55
- j_compress_ptr cinfo; /* back link saves passing separate parm */
56
-
57
- JSAMPARRAY colormap; /* BMP colormap (converted to my format) */
58
-
59
- jvirt_sarray_ptr whole_image; /* Needed to reverse row order */
60
- JDIMENSION source_row; /* Current source row number */
61
- JDIMENSION row_width; /* Physical width of scanlines in file */
62
-
63
- int bits_per_pixel; /* remembers 8- or 24-bit format */
64
- } bmp_source_struct;
65
-
66
-
67
- LOCAL(int)
68
- read_byte (bmp_source_ptr sinfo)
69
- /* Read next byte from BMP file */
70
- {
71
- register FILE *infile = sinfo->pub.input_file;
72
- register int c;
73
-
74
- if ((c = getc(infile)) == EOF)
75
- ERREXIT(sinfo->cinfo, JERR_INPUT_EOF);
76
- return c;
77
- }
78
-
79
-
80
- LOCAL(void)
81
- read_colormap (bmp_source_ptr sinfo, int cmaplen, int mapentrysize)
82
- /* Read the colormap from a BMP file */
83
- {
84
- int i;
85
-
86
- switch (mapentrysize) {
87
- case 3:
88
- /* BGR format (occurs in OS/2 files) */
89
- for (i = 0; i < cmaplen; i++) {
90
- sinfo->colormap[2][i] = (JSAMPLE) read_byte(sinfo);
91
- sinfo->colormap[1][i] = (JSAMPLE) read_byte(sinfo);
92
- sinfo->colormap[0][i] = (JSAMPLE) read_byte(sinfo);
93
- }
94
- break;
95
- case 4:
96
- /* BGR0 format (occurs in MS Windows files) */
97
- for (i = 0; i < cmaplen; i++) {
98
- sinfo->colormap[2][i] = (JSAMPLE) read_byte(sinfo);
99
- sinfo->colormap[1][i] = (JSAMPLE) read_byte(sinfo);
100
- sinfo->colormap[0][i] = (JSAMPLE) read_byte(sinfo);
101
- (void) read_byte(sinfo);
102
- }
103
- break;
104
- default:
105
- ERREXIT(sinfo->cinfo, JERR_BMP_BADCMAP);
106
- break;
107
- }
108
- }
109
-
110
-
111
- /*
112
- * Read one row of pixels.
113
- * The image has been read into the whole_image array, but is otherwise
114
- * unprocessed. We must read it out in top-to-bottom row order, and if
115
- * it is an 8-bit image, we must expand colormapped pixels to 24bit format.
116
- */
117
-
118
- METHODDEF(JDIMENSION)
119
- get_8bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
120
- /* This version is for reading 8-bit colormap indexes */
121
- {
122
- bmp_source_ptr source = (bmp_source_ptr) sinfo;
123
- register JSAMPARRAY colormap = source->colormap;
124
- JSAMPARRAY image_ptr;
125
- register int t;
126
- register JSAMPROW inptr, outptr;
127
- register JDIMENSION col;
128
-
129
- /* Fetch next row from virtual array */
130
- source->source_row--;
131
- image_ptr = (*cinfo->mem->access_virt_sarray)
132
- ((j_common_ptr) cinfo, source->whole_image,
133
- source->source_row, (JDIMENSION) 1, FALSE);
134
-
135
- /* Expand the colormap indexes to real data */
136
- inptr = image_ptr[0];
137
- outptr = source->pub.buffer[0];
138
- for (col = cinfo->image_width; col > 0; col--) {
139
- t = GETJSAMPLE(*inptr++);
140
- *outptr++ = colormap[0][t]; /* can omit GETJSAMPLE() safely */
141
- *outptr++ = colormap[1][t];
142
- *outptr++ = colormap[2][t];
143
- }
144
-
145
- return 1;
146
- }
147
-
148
-
149
- METHODDEF(JDIMENSION)
150
- get_24bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
151
- /* This version is for reading 24-bit pixels */
152
- {
153
- bmp_source_ptr source = (bmp_source_ptr) sinfo;
154
- JSAMPARRAY image_ptr;
155
- register JSAMPROW inptr, outptr;
156
- register JDIMENSION col;
157
-
158
- /* Fetch next row from virtual array */
159
- source->source_row--;
160
- image_ptr = (*cinfo->mem->access_virt_sarray)
161
- ((j_common_ptr) cinfo, source->whole_image,
162
- source->source_row, (JDIMENSION) 1, FALSE);
163
-
164
- /* Transfer data. Note source values are in BGR order
165
- * (even though Microsoft's own documents say the opposite).
166
- */
167
- inptr = image_ptr[0];
168
- outptr = source->pub.buffer[0];
169
- for (col = cinfo->image_width; col > 0; col--) {
170
- outptr[2] = *inptr++; /* can omit GETJSAMPLE() safely */
171
- outptr[1] = *inptr++;
172
- outptr[0] = *inptr++;
173
- outptr += 3;
174
- }
175
-
176
- return 1;
177
- }
178
-
179
-
180
- /*
181
- * This method loads the image into whole_image during the first call on
182
- * get_pixel_rows. The get_pixel_rows pointer is then adjusted to call
183
- * get_8bit_row or get_24bit_row on subsequent calls.
184
- */
185
-
186
- METHODDEF(JDIMENSION)
187
- preload_image (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
188
- {
189
- bmp_source_ptr source = (bmp_source_ptr) sinfo;
190
- register FILE *infile = source->pub.input_file;
191
- register int c;
192
- register JSAMPROW out_ptr;
193
- JSAMPARRAY image_ptr;
194
- JDIMENSION row, col;
195
- cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
196
-
197
- /* Read the data into a virtual array in input-file row order. */
198
- for (row = 0; row < cinfo->image_height; row++) {
199
- if (progress != NULL) {
200
- progress->pub.pass_counter = (long) row;
201
- progress->pub.pass_limit = (long) cinfo->image_height;
202
- (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
203
- }
204
- image_ptr = (*cinfo->mem->access_virt_sarray)
205
- ((j_common_ptr) cinfo, source->whole_image,
206
- row, (JDIMENSION) 1, TRUE);
207
- out_ptr = image_ptr[0];
208
- for (col = source->row_width; col > 0; col--) {
209
- /* inline copy of read_byte() for speed */
210
- if ((c = getc(infile)) == EOF)
211
- ERREXIT(cinfo, JERR_INPUT_EOF);
212
- *out_ptr++ = (JSAMPLE) c;
213
- }
214
- }
215
- if (progress != NULL)
216
- progress->completed_extra_passes++;
217
-
218
- /* Set up to read from the virtual array in top-to-bottom order */
219
- switch (source->bits_per_pixel) {
220
- case 8:
221
- source->pub.get_pixel_rows = get_8bit_row;
222
- break;
223
- case 24:
224
- source->pub.get_pixel_rows = get_24bit_row;
225
- break;
226
- default:
227
- ERREXIT(cinfo, JERR_BMP_BADDEPTH);
228
- }
229
- source->source_row = cinfo->image_height;
230
-
231
- /* And read the first row */
232
- return (*source->pub.get_pixel_rows) (cinfo, sinfo);
233
- }
234
-
235
-
236
- /*
237
- * Read the file header; return image size and component count.
238
- */
239
-
240
- METHODDEF(void)
241
- start_input_bmp (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
242
- {
243
- bmp_source_ptr source = (bmp_source_ptr) sinfo;
244
- U_CHAR bmpfileheader[14];
245
- U_CHAR bmpinfoheader[64];
246
- #define GET_2B(array,offset) ((unsigned int) UCH(array[offset]) + \
247
- (((unsigned int) UCH(array[offset+1])) << 8))
248
- #define GET_4B(array,offset) ((INT32) UCH(array[offset]) + \
249
- (((INT32) UCH(array[offset+1])) << 8) + \
250
- (((INT32) UCH(array[offset+2])) << 16) + \
251
- (((INT32) UCH(array[offset+3])) << 24))
252
- INT32 bfOffBits;
253
- INT32 headerSize;
254
- INT32 biWidth = 0; /* initialize to avoid compiler warning */
255
- INT32 biHeight = 0;
256
- unsigned int biPlanes;
257
- INT32 biCompression;
258
- INT32 biXPelsPerMeter,biYPelsPerMeter;
259
- INT32 biClrUsed = 0;
260
- int mapentrysize = 0; /* 0 indicates no colormap */
261
- INT32 bPad;
262
- JDIMENSION row_width;
263
-
264
- /* Read and verify the bitmap file header */
265
- if (! ReadOK(source->pub.input_file, bmpfileheader, 14))
266
- ERREXIT(cinfo, JERR_INPUT_EOF);
267
- if (GET_2B(bmpfileheader,0) != 0x4D42) /* 'BM' */
268
- ERREXIT(cinfo, JERR_BMP_NOT);
269
- bfOffBits = (INT32) GET_4B(bmpfileheader,10);
270
- /* We ignore the remaining fileheader fields */
271
-
272
- /* The infoheader might be 12 bytes (OS/2 1.x), 40 bytes (Windows),
273
- * or 64 bytes (OS/2 2.x). Check the first 4 bytes to find out which.
274
- */
275
- if (! ReadOK(source->pub.input_file, bmpinfoheader, 4))
276
- ERREXIT(cinfo, JERR_INPUT_EOF);
277
- headerSize = (INT32) GET_4B(bmpinfoheader,0);
278
- if (headerSize < 12 || headerSize > 64)
279
- ERREXIT(cinfo, JERR_BMP_BADHEADER);
280
- if (! ReadOK(source->pub.input_file, bmpinfoheader+4, headerSize-4))
281
- ERREXIT(cinfo, JERR_INPUT_EOF);
282
-
283
- switch ((int) headerSize) {
284
- case 12:
285
- /* Decode OS/2 1.x header (Microsoft calls this a BITMAPCOREHEADER) */
286
- biWidth = (INT32) GET_2B(bmpinfoheader,4);
287
- biHeight = (INT32) GET_2B(bmpinfoheader,6);
288
- biPlanes = GET_2B(bmpinfoheader,8);
289
- source->bits_per_pixel = (int) GET_2B(bmpinfoheader,10);
290
-
291
- switch (source->bits_per_pixel) {
292
- case 8: /* colormapped image */
293
- mapentrysize = 3; /* OS/2 uses RGBTRIPLE colormap */
294
- TRACEMS2(cinfo, 1, JTRC_BMP_OS2_MAPPED, (int) biWidth, (int) biHeight);
295
- break;
296
- case 24: /* RGB image */
297
- TRACEMS2(cinfo, 1, JTRC_BMP_OS2, (int) biWidth, (int) biHeight);
298
- break;
299
- default:
300
- ERREXIT(cinfo, JERR_BMP_BADDEPTH);
301
- break;
302
- }
303
- if (biPlanes != 1)
304
- ERREXIT(cinfo, JERR_BMP_BADPLANES);
305
- break;
306
- case 40:
307
- case 64:
308
- /* Decode Windows 3.x header (Microsoft calls this a BITMAPINFOHEADER) */
309
- /* or OS/2 2.x header, which has additional fields that we ignore */
310
- biWidth = GET_4B(bmpinfoheader,4);
311
- biHeight = GET_4B(bmpinfoheader,8);
312
- biPlanes = GET_2B(bmpinfoheader,12);
313
- source->bits_per_pixel = (int) GET_2B(bmpinfoheader,14);
314
- biCompression = GET_4B(bmpinfoheader,16);
315
- biXPelsPerMeter = GET_4B(bmpinfoheader,24);
316
- biYPelsPerMeter = GET_4B(bmpinfoheader,28);
317
- biClrUsed = GET_4B(bmpinfoheader,32);
318
- /* biSizeImage, biClrImportant fields are ignored */
319
-
320
- switch (source->bits_per_pixel) {
321
- case 8: /* colormapped image */
322
- mapentrysize = 4; /* Windows uses RGBQUAD colormap */
323
- TRACEMS2(cinfo, 1, JTRC_BMP_MAPPED, (int) biWidth, (int) biHeight);
324
- break;
325
- case 24: /* RGB image */
326
- TRACEMS2(cinfo, 1, JTRC_BMP, (int) biWidth, (int) biHeight);
327
- break;
328
- default:
329
- ERREXIT(cinfo, JERR_BMP_BADDEPTH);
330
- break;
331
- }
332
- if (biPlanes != 1)
333
- ERREXIT(cinfo, JERR_BMP_BADPLANES);
334
- if (biCompression != 0)
335
- ERREXIT(cinfo, JERR_BMP_COMPRESSED);
336
-
337
- if (biXPelsPerMeter > 0 && biYPelsPerMeter > 0) {
338
- /* Set JFIF density parameters from the BMP data */
339
- cinfo->X_density = (UINT16) (biXPelsPerMeter/100); /* 100 cm per meter */
340
- cinfo->Y_density = (UINT16) (biYPelsPerMeter/100);
341
- cinfo->density_unit = 2; /* dots/cm */
342
- }
343
- break;
344
- default:
345
- ERREXIT(cinfo, JERR_BMP_BADHEADER);
346
- break;
347
- }
348
-
349
- /* Compute distance to bitmap data --- will adjust for colormap below */
350
- bPad = bfOffBits - (headerSize + 14);
351
-
352
- /* Read the colormap, if any */
353
- if (mapentrysize > 0) {
354
- if (biClrUsed <= 0)
355
- biClrUsed = 256; /* assume it's 256 */
356
- else if (biClrUsed > 256)
357
- ERREXIT(cinfo, JERR_BMP_BADCMAP);
358
- /* Allocate space to store the colormap */
359
- source->colormap = (*cinfo->mem->alloc_sarray)
360
- ((j_common_ptr) cinfo, JPOOL_IMAGE,
361
- (JDIMENSION) biClrUsed, (JDIMENSION) 3);
362
- /* and read it from the file */
363
- read_colormap(source, (int) biClrUsed, mapentrysize);
364
- /* account for size of colormap */
365
- bPad -= biClrUsed * mapentrysize;
366
- }
367
-
368
- /* Skip any remaining pad bytes */
369
- if (bPad < 0) /* incorrect bfOffBits value? */
370
- ERREXIT(cinfo, JERR_BMP_BADHEADER);
371
- while (--bPad >= 0) {
372
- (void) read_byte(source);
373
- }
374
-
375
- /* Compute row width in file, including padding to 4-byte boundary */
376
- if (source->bits_per_pixel == 24)
377
- row_width = (JDIMENSION) (biWidth * 3);
378
- else
379
- row_width = (JDIMENSION) biWidth;
380
- while ((row_width & 3) != 0) row_width++;
381
- source->row_width = row_width;
382
-
383
- /* Allocate space for inversion array, prepare for preload pass */
384
- source->whole_image = (*cinfo->mem->request_virt_sarray)
385
- ((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
386
- row_width, (JDIMENSION) biHeight, (JDIMENSION) 1);
387
- source->pub.get_pixel_rows = preload_image;
388
- if (cinfo->progress != NULL) {
389
- cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
390
- progress->total_extra_passes++; /* count file input as separate pass */
391
- }
392
-
393
- /* Allocate one-row buffer for returned data */
394
- source->pub.buffer = (*cinfo->mem->alloc_sarray)
395
- ((j_common_ptr) cinfo, JPOOL_IMAGE,
396
- (JDIMENSION) (biWidth * 3), (JDIMENSION) 1);
397
- source->pub.buffer_height = 1;
398
-
399
- cinfo->in_color_space = JCS_RGB;
400
- cinfo->input_components = 3;
401
- cinfo->data_precision = 8;
402
- cinfo->image_width = (JDIMENSION) biWidth;
403
- cinfo->image_height = (JDIMENSION) biHeight;
404
- }
405
-
406
-
407
- /*
408
- * Finish up at the end of the file.
409
- */
410
-
411
- METHODDEF(void)
412
- finish_input_bmp (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
413
- {
414
- /* no work */
415
- }
416
-
417
-
418
- /*
419
- * The module selection routine for BMP format input.
420
- */
421
-
422
- GLOBAL(cjpeg_source_ptr)
423
- jinit_read_bmp (j_compress_ptr cinfo)
424
- {
425
- bmp_source_ptr source;
426
-
427
- /* Create module interface object */
428
- source = (bmp_source_ptr)
429
- (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
430
- SIZEOF(bmp_source_struct));
431
- source->cinfo = cinfo; /* make back link for subroutines */
432
- /* Fill in method ptrs, except get_pixel_rows which start_input sets */
433
- source->pub.start_input = start_input_bmp;
434
- source->pub.finish_input = finish_input_bmp;
435
-
436
- return (cjpeg_source_ptr) source;
437
- }
438
-
439
- #endif /* BMP_SUPPORTED */
@@ -1,253 +0,0 @@
1
- /*
2
- * rdcolmap.c
3
- *
4
- * Copyright (C) 1994-1996, Thomas G. Lane.
5
- * This file is part of the Independent JPEG Group's software.
6
- * For conditions of distribution and use, see the accompanying README file.
7
- *
8
- * This file implements djpeg's "-map file" switch. It reads a source image
9
- * and constructs a colormap to be supplied to the JPEG decompressor.
10
- *
11
- * Currently, these file formats are supported for the map file:
12
- * GIF: the contents of the GIF's global colormap are used.
13
- * PPM (either text or raw flavor): the entire file is read and
14
- * each unique pixel value is entered in the map.
15
- * Note that reading a large PPM file will be horrendously slow.
16
- * Typically, a PPM-format map file should contain just one pixel
17
- * of each desired color. Such a file can be extracted from an
18
- * ordinary image PPM file with ppmtomap(1).
19
- *
20
- * Rescaling a PPM that has a maxval unequal to MAXJSAMPLE is not
21
- * currently implemented.
22
- */
23
-
24
- #include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
25
-
26
- #ifdef QUANT_2PASS_SUPPORTED /* otherwise can't quantize to supplied map */
27
-
28
- /* Portions of this code are based on the PBMPLUS library, which is:
29
- **
30
- ** Copyright (C) 1988 by Jef Poskanzer.
31
- **
32
- ** Permission to use, copy, modify, and distribute this software and its
33
- ** documentation for any purpose and without fee is hereby granted, provided
34
- ** that the above copyright notice appear in all copies and that both that
35
- ** copyright notice and this permission notice appear in supporting
36
- ** documentation. This software is provided "as is" without express or
37
- ** implied warranty.
38
- */
39
-
40
-
41
- /*
42
- * Add a (potentially) new color to the color map.
43
- */
44
-
45
- LOCAL(void)
46
- add_map_entry (j_decompress_ptr cinfo, int R, int G, int B)
47
- {
48
- JSAMPROW colormap0 = cinfo->colormap[0];
49
- JSAMPROW colormap1 = cinfo->colormap[1];
50
- JSAMPROW colormap2 = cinfo->colormap[2];
51
- int ncolors = cinfo->actual_number_of_colors;
52
- int index;
53
-
54
- /* Check for duplicate color. */
55
- for (index = 0; index < ncolors; index++) {
56
- if (GETJSAMPLE(colormap0[index]) == R &&
57
- GETJSAMPLE(colormap1[index]) == G &&
58
- GETJSAMPLE(colormap2[index]) == B)
59
- return; /* color is already in map */
60
- }
61
-
62
- /* Check for map overflow. */
63
- if (ncolors >= (MAXJSAMPLE+1))
64
- ERREXIT1(cinfo, JERR_QUANT_MANY_COLORS, (MAXJSAMPLE+1));
65
-
66
- /* OK, add color to map. */
67
- colormap0[ncolors] = (JSAMPLE) R;
68
- colormap1[ncolors] = (JSAMPLE) G;
69
- colormap2[ncolors] = (JSAMPLE) B;
70
- cinfo->actual_number_of_colors++;
71
- }
72
-
73
-
74
- /*
75
- * Extract color map from a GIF file.
76
- */
77
-
78
- LOCAL(void)
79
- read_gif_map (j_decompress_ptr cinfo, FILE * infile)
80
- {
81
- int header[13];
82
- int i, colormaplen;
83
- int R, G, B;
84
-
85
- /* Initial 'G' has already been read by read_color_map */
86
- /* Read the rest of the GIF header and logical screen descriptor */
87
- for (i = 1; i < 13; i++) {
88
- if ((header[i] = getc(infile)) == EOF)
89
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
90
- }
91
-
92
- /* Verify GIF Header */
93
- if (header[1] != 'I' || header[2] != 'F')
94
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
95
-
96
- /* There must be a global color map. */
97
- if ((header[10] & 0x80) == 0)
98
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
99
-
100
- /* OK, fetch it. */
101
- colormaplen = 2 << (header[10] & 0x07);
102
-
103
- for (i = 0; i < colormaplen; i++) {
104
- R = getc(infile);
105
- G = getc(infile);
106
- B = getc(infile);
107
- if (R == EOF || G == EOF || B == EOF)
108
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
109
- add_map_entry(cinfo,
110
- R << (BITS_IN_JSAMPLE-8),
111
- G << (BITS_IN_JSAMPLE-8),
112
- B << (BITS_IN_JSAMPLE-8));
113
- }
114
- }
115
-
116
-
117
- /* Support routines for reading PPM */
118
-
119
-
120
- LOCAL(int)
121
- pbm_getc (FILE * infile)
122
- /* Read next char, skipping over any comments */
123
- /* A comment/newline sequence is returned as a newline */
124
- {
125
- register int ch;
126
-
127
- ch = getc(infile);
128
- if (ch == '#') {
129
- do {
130
- ch = getc(infile);
131
- } while (ch != '\n' && ch != EOF);
132
- }
133
- return ch;
134
- }
135
-
136
-
137
- LOCAL(unsigned int)
138
- read_pbm_integer (j_decompress_ptr cinfo, FILE * infile)
139
- /* Read an unsigned decimal integer from the PPM file */
140
- /* Swallows one trailing character after the integer */
141
- /* Note that on a 16-bit-int machine, only values up to 64k can be read. */
142
- /* This should not be a problem in practice. */
143
- {
144
- register int ch;
145
- register unsigned int val;
146
-
147
- /* Skip any leading whitespace */
148
- do {
149
- ch = pbm_getc(infile);
150
- if (ch == EOF)
151
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
152
- } while (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r');
153
-
154
- if (ch < '0' || ch > '9')
155
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
156
-
157
- val = ch - '0';
158
- while ((ch = pbm_getc(infile)) >= '0' && ch <= '9') {
159
- val *= 10;
160
- val += ch - '0';
161
- }
162
- return val;
163
- }
164
-
165
-
166
- /*
167
- * Extract color map from a PPM file.
168
- */
169
-
170
- LOCAL(void)
171
- read_ppm_map (j_decompress_ptr cinfo, FILE * infile)
172
- {
173
- int c;
174
- unsigned int w, h, maxval, row, col;
175
- int R, G, B;
176
-
177
- /* Initial 'P' has already been read by read_color_map */
178
- c = getc(infile); /* save format discriminator for a sec */
179
-
180
- /* while we fetch the remaining header info */
181
- w = read_pbm_integer(cinfo, infile);
182
- h = read_pbm_integer(cinfo, infile);
183
- maxval = read_pbm_integer(cinfo, infile);
184
-
185
- if (w <= 0 || h <= 0 || maxval <= 0) /* error check */
186
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
187
-
188
- /* For now, we don't support rescaling from an unusual maxval. */
189
- if (maxval != (unsigned int) MAXJSAMPLE)
190
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
191
-
192
- switch (c) {
193
- case '3': /* it's a text-format PPM file */
194
- for (row = 0; row < h; row++) {
195
- for (col = 0; col < w; col++) {
196
- R = read_pbm_integer(cinfo, infile);
197
- G = read_pbm_integer(cinfo, infile);
198
- B = read_pbm_integer(cinfo, infile);
199
- add_map_entry(cinfo, R, G, B);
200
- }
201
- }
202
- break;
203
-
204
- case '6': /* it's a raw-format PPM file */
205
- for (row = 0; row < h; row++) {
206
- for (col = 0; col < w; col++) {
207
- R = getc(infile);
208
- G = getc(infile);
209
- B = getc(infile);
210
- if (R == EOF || G == EOF || B == EOF)
211
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
212
- add_map_entry(cinfo, R, G, B);
213
- }
214
- }
215
- break;
216
-
217
- default:
218
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
219
- break;
220
- }
221
- }
222
-
223
-
224
- /*
225
- * Main entry point from djpeg.c.
226
- * Input: opened input file (from file name argument on command line).
227
- * Output: colormap and actual_number_of_colors fields are set in cinfo.
228
- */
229
-
230
- GLOBAL(void)
231
- read_color_map (j_decompress_ptr cinfo, FILE * infile)
232
- {
233
- /* Allocate space for a color map of maximum supported size. */
234
- cinfo->colormap = (*cinfo->mem->alloc_sarray)
235
- ((j_common_ptr) cinfo, JPOOL_IMAGE,
236
- (JDIMENSION) (MAXJSAMPLE+1), (JDIMENSION) 3);
237
- cinfo->actual_number_of_colors = 0; /* initialize map to empty */
238
-
239
- /* Read first byte to determine file format */
240
- switch (getc(infile)) {
241
- case 'G':
242
- read_gif_map(cinfo, infile);
243
- break;
244
- case 'P':
245
- read_ppm_map(cinfo, infile);
246
- break;
247
- default:
248
- ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
249
- break;
250
- }
251
- }
252
-
253
- #endif /* QUANT_2PASS_SUPPORTED */