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/wrgif.c DELETED
@@ -1,399 +0,0 @@
1
- /*
2
- * wrgif.c
3
- *
4
- * Copyright (C) 1991-1997, 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 write output images in GIF format.
9
- *
10
- **************************************************************************
11
- * NOTE: to avoid entanglements with Unisys' patent on LZW compression, *
12
- * this code has been modified to output "uncompressed GIF" files. *
13
- * There is no trace of the LZW algorithm in this file. *
14
- **************************************************************************
15
- *
16
- * These routines may need modification for non-Unix environments or
17
- * specialized applications. As they stand, they assume output to
18
- * an ordinary stdio stream.
19
- */
20
-
21
- /*
22
- * This code is loosely based on ppmtogif from the PBMPLUS distribution
23
- * of Feb. 1991. That file contains the following copyright notice:
24
- * Based on GIFENCODE by David Rowley <mgardi@watdscu.waterloo.edu>.
25
- * Lempel-Ziv compression based on "compress" by Spencer W. Thomas et al.
26
- * Copyright (C) 1989 by Jef Poskanzer.
27
- * Permission to use, copy, modify, and distribute this software and its
28
- * documentation for any purpose and without fee is hereby granted, provided
29
- * that the above copyright notice appear in all copies and that both that
30
- * copyright notice and this permission notice appear in supporting
31
- * documentation. This software is provided "as is" without express or
32
- * implied warranty.
33
- *
34
- * We are also required to state that
35
- * "The Graphics Interchange Format(c) is the Copyright property of
36
- * CompuServe Incorporated. GIF(sm) is a Service Mark property of
37
- * CompuServe Incorporated."
38
- */
39
-
40
- #include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
41
-
42
- #ifdef GIF_SUPPORTED
43
-
44
-
45
- /* Private version of data destination object */
46
-
47
- typedef struct {
48
- struct djpeg_dest_struct pub; /* public fields */
49
-
50
- j_decompress_ptr cinfo; /* back link saves passing separate parm */
51
-
52
- /* State for packing variable-width codes into a bitstream */
53
- int n_bits; /* current number of bits/code */
54
- int maxcode; /* maximum code, given n_bits */
55
- INT32 cur_accum; /* holds bits not yet output */
56
- int cur_bits; /* # of bits in cur_accum */
57
-
58
- /* State for GIF code assignment */
59
- int ClearCode; /* clear code (doesn't change) */
60
- int EOFCode; /* EOF code (ditto) */
61
- int code_counter; /* counts output symbols */
62
-
63
- /* GIF data packet construction buffer */
64
- int bytesinpkt; /* # of bytes in current packet */
65
- char packetbuf[256]; /* workspace for accumulating packet */
66
-
67
- } gif_dest_struct;
68
-
69
- typedef gif_dest_struct * gif_dest_ptr;
70
-
71
- /* Largest value that will fit in N bits */
72
- #define MAXCODE(n_bits) ((1 << (n_bits)) - 1)
73
-
74
-
75
- /*
76
- * Routines to package finished data bytes into GIF data blocks.
77
- * A data block consists of a count byte (1..255) and that many data bytes.
78
- */
79
-
80
- LOCAL(void)
81
- flush_packet (gif_dest_ptr dinfo)
82
- /* flush any accumulated data */
83
- {
84
- if (dinfo->bytesinpkt > 0) { /* never write zero-length packet */
85
- dinfo->packetbuf[0] = (char) dinfo->bytesinpkt++;
86
- if (JFWRITE(dinfo->pub.output_file, dinfo->packetbuf, dinfo->bytesinpkt)
87
- != (size_t) dinfo->bytesinpkt)
88
- ERREXIT(dinfo->cinfo, JERR_FILE_WRITE);
89
- dinfo->bytesinpkt = 0;
90
- }
91
- }
92
-
93
-
94
- /* Add a character to current packet; flush to disk if necessary */
95
- #define CHAR_OUT(dinfo,c) \
96
- { (dinfo)->packetbuf[++(dinfo)->bytesinpkt] = (char) (c); \
97
- if ((dinfo)->bytesinpkt >= 255) \
98
- flush_packet(dinfo); \
99
- }
100
-
101
-
102
- /* Routine to convert variable-width codes into a byte stream */
103
-
104
- LOCAL(void)
105
- output (gif_dest_ptr dinfo, int code)
106
- /* Emit a code of n_bits bits */
107
- /* Uses cur_accum and cur_bits to reblock into 8-bit bytes */
108
- {
109
- dinfo->cur_accum |= ((INT32) code) << dinfo->cur_bits;
110
- dinfo->cur_bits += dinfo->n_bits;
111
-
112
- while (dinfo->cur_bits >= 8) {
113
- CHAR_OUT(dinfo, dinfo->cur_accum & 0xFF);
114
- dinfo->cur_accum >>= 8;
115
- dinfo->cur_bits -= 8;
116
- }
117
- }
118
-
119
-
120
- /* The pseudo-compression algorithm.
121
- *
122
- * In this module we simply output each pixel value as a separate symbol;
123
- * thus, no compression occurs. In fact, there is expansion of one bit per
124
- * pixel, because we use a symbol width one bit wider than the pixel width.
125
- *
126
- * GIF ordinarily uses variable-width symbols, and the decoder will expect
127
- * to ratchet up the symbol width after a fixed number of symbols.
128
- * To simplify the logic and keep the expansion penalty down, we emit a
129
- * GIF Clear code to reset the decoder just before the width would ratchet up.
130
- * Thus, all the symbols in the output file will have the same bit width.
131
- * Note that emitting the Clear codes at the right times is a mere matter of
132
- * counting output symbols and is in no way dependent on the LZW patent.
133
- *
134
- * With a small basic pixel width (low color count), Clear codes will be
135
- * needed very frequently, causing the file to expand even more. So this
136
- * simplistic approach wouldn't work too well on bilevel images, for example.
137
- * But for output of JPEG conversions the pixel width will usually be 8 bits
138
- * (129 to 256 colors), so the overhead added by Clear symbols is only about
139
- * one symbol in every 256.
140
- */
141
-
142
- LOCAL(void)
143
- compress_init (gif_dest_ptr dinfo, int i_bits)
144
- /* Initialize pseudo-compressor */
145
- {
146
- /* init all the state variables */
147
- dinfo->n_bits = i_bits;
148
- dinfo->maxcode = MAXCODE(dinfo->n_bits);
149
- dinfo->ClearCode = (1 << (i_bits - 1));
150
- dinfo->EOFCode = dinfo->ClearCode + 1;
151
- dinfo->code_counter = dinfo->ClearCode + 2;
152
- /* init output buffering vars */
153
- dinfo->bytesinpkt = 0;
154
- dinfo->cur_accum = 0;
155
- dinfo->cur_bits = 0;
156
- /* GIF specifies an initial Clear code */
157
- output(dinfo, dinfo->ClearCode);
158
- }
159
-
160
-
161
- LOCAL(void)
162
- compress_pixel (gif_dest_ptr dinfo, int c)
163
- /* Accept and "compress" one pixel value.
164
- * The given value must be less than n_bits wide.
165
- */
166
- {
167
- /* Output the given pixel value as a symbol. */
168
- output(dinfo, c);
169
- /* Issue Clear codes often enough to keep the reader from ratcheting up
170
- * its symbol size.
171
- */
172
- if (dinfo->code_counter < dinfo->maxcode) {
173
- dinfo->code_counter++;
174
- } else {
175
- output(dinfo, dinfo->ClearCode);
176
- dinfo->code_counter = dinfo->ClearCode + 2; /* reset the counter */
177
- }
178
- }
179
-
180
-
181
- LOCAL(void)
182
- compress_term (gif_dest_ptr dinfo)
183
- /* Clean up at end */
184
- {
185
- /* Send an EOF code */
186
- output(dinfo, dinfo->EOFCode);
187
- /* Flush the bit-packing buffer */
188
- if (dinfo->cur_bits > 0) {
189
- CHAR_OUT(dinfo, dinfo->cur_accum & 0xFF);
190
- }
191
- /* Flush the packet buffer */
192
- flush_packet(dinfo);
193
- }
194
-
195
-
196
- /* GIF header construction */
197
-
198
-
199
- LOCAL(void)
200
- put_word (gif_dest_ptr dinfo, unsigned int w)
201
- /* Emit a 16-bit word, LSB first */
202
- {
203
- putc(w & 0xFF, dinfo->pub.output_file);
204
- putc((w >> 8) & 0xFF, dinfo->pub.output_file);
205
- }
206
-
207
-
208
- LOCAL(void)
209
- put_3bytes (gif_dest_ptr dinfo, int val)
210
- /* Emit 3 copies of same byte value --- handy subr for colormap construction */
211
- {
212
- putc(val, dinfo->pub.output_file);
213
- putc(val, dinfo->pub.output_file);
214
- putc(val, dinfo->pub.output_file);
215
- }
216
-
217
-
218
- LOCAL(void)
219
- emit_header (gif_dest_ptr dinfo, int num_colors, JSAMPARRAY colormap)
220
- /* Output the GIF file header, including color map */
221
- /* If colormap==NULL, synthesize a gray-scale colormap */
222
- {
223
- int BitsPerPixel, ColorMapSize, InitCodeSize, FlagByte;
224
- int cshift = dinfo->cinfo->data_precision - 8;
225
- int i;
226
-
227
- if (num_colors > 256)
228
- ERREXIT1(dinfo->cinfo, JERR_TOO_MANY_COLORS, num_colors);
229
- /* Compute bits/pixel and related values */
230
- BitsPerPixel = 1;
231
- while (num_colors > (1 << BitsPerPixel))
232
- BitsPerPixel++;
233
- ColorMapSize = 1 << BitsPerPixel;
234
- if (BitsPerPixel <= 1)
235
- InitCodeSize = 2;
236
- else
237
- InitCodeSize = BitsPerPixel;
238
- /*
239
- * Write the GIF header.
240
- * Note that we generate a plain GIF87 header for maximum compatibility.
241
- */
242
- putc('G', dinfo->pub.output_file);
243
- putc('I', dinfo->pub.output_file);
244
- putc('F', dinfo->pub.output_file);
245
- putc('8', dinfo->pub.output_file);
246
- putc('7', dinfo->pub.output_file);
247
- putc('a', dinfo->pub.output_file);
248
- /* Write the Logical Screen Descriptor */
249
- put_word(dinfo, (unsigned int) dinfo->cinfo->output_width);
250
- put_word(dinfo, (unsigned int) dinfo->cinfo->output_height);
251
- FlagByte = 0x80; /* Yes, there is a global color table */
252
- FlagByte |= (BitsPerPixel-1) << 4; /* color resolution */
253
- FlagByte |= (BitsPerPixel-1); /* size of global color table */
254
- putc(FlagByte, dinfo->pub.output_file);
255
- putc(0, dinfo->pub.output_file); /* Background color index */
256
- putc(0, dinfo->pub.output_file); /* Reserved (aspect ratio in GIF89) */
257
- /* Write the Global Color Map */
258
- /* If the color map is more than 8 bits precision, */
259
- /* we reduce it to 8 bits by shifting */
260
- for (i=0; i < ColorMapSize; i++) {
261
- if (i < num_colors) {
262
- if (colormap != NULL) {
263
- if (dinfo->cinfo->out_color_space == JCS_RGB) {
264
- /* Normal case: RGB color map */
265
- putc(GETJSAMPLE(colormap[0][i]) >> cshift, dinfo->pub.output_file);
266
- putc(GETJSAMPLE(colormap[1][i]) >> cshift, dinfo->pub.output_file);
267
- putc(GETJSAMPLE(colormap[2][i]) >> cshift, dinfo->pub.output_file);
268
- } else {
269
- /* Grayscale "color map": possible if quantizing grayscale image */
270
- put_3bytes(dinfo, GETJSAMPLE(colormap[0][i]) >> cshift);
271
- }
272
- } else {
273
- /* Create a gray-scale map of num_colors values, range 0..255 */
274
- put_3bytes(dinfo, (i * 255 + (num_colors-1)/2) / (num_colors-1));
275
- }
276
- } else {
277
- /* fill out the map to a power of 2 */
278
- put_3bytes(dinfo, 0);
279
- }
280
- }
281
- /* Write image separator and Image Descriptor */
282
- putc(',', dinfo->pub.output_file); /* separator */
283
- put_word(dinfo, 0); /* left/top offset */
284
- put_word(dinfo, 0);
285
- put_word(dinfo, (unsigned int) dinfo->cinfo->output_width); /* image size */
286
- put_word(dinfo, (unsigned int) dinfo->cinfo->output_height);
287
- /* flag byte: not interlaced, no local color map */
288
- putc(0x00, dinfo->pub.output_file);
289
- /* Write Initial Code Size byte */
290
- putc(InitCodeSize, dinfo->pub.output_file);
291
-
292
- /* Initialize for "compression" of image data */
293
- compress_init(dinfo, InitCodeSize+1);
294
- }
295
-
296
-
297
- /*
298
- * Startup: write the file header.
299
- */
300
-
301
- METHODDEF(void)
302
- start_output_gif (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
303
- {
304
- gif_dest_ptr dest = (gif_dest_ptr) dinfo;
305
-
306
- if (cinfo->quantize_colors)
307
- emit_header(dest, cinfo->actual_number_of_colors, cinfo->colormap);
308
- else
309
- emit_header(dest, 256, (JSAMPARRAY) NULL);
310
- }
311
-
312
-
313
- /*
314
- * Write some pixel data.
315
- * In this module rows_supplied will always be 1.
316
- */
317
-
318
- METHODDEF(void)
319
- put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
320
- JDIMENSION rows_supplied)
321
- {
322
- gif_dest_ptr dest = (gif_dest_ptr) dinfo;
323
- register JSAMPROW ptr;
324
- register JDIMENSION col;
325
-
326
- ptr = dest->pub.buffer[0];
327
- for (col = cinfo->output_width; col > 0; col--) {
328
- compress_pixel(dest, GETJSAMPLE(*ptr++));
329
- }
330
- }
331
-
332
-
333
- /*
334
- * Finish up at the end of the file.
335
- */
336
-
337
- METHODDEF(void)
338
- finish_output_gif (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
339
- {
340
- gif_dest_ptr dest = (gif_dest_ptr) dinfo;
341
-
342
- /* Flush "compression" mechanism */
343
- compress_term(dest);
344
- /* Write a zero-length data block to end the series */
345
- putc(0, dest->pub.output_file);
346
- /* Write the GIF terminator mark */
347
- putc(';', dest->pub.output_file);
348
- /* Make sure we wrote the output file OK */
349
- fflush(dest->pub.output_file);
350
- if (ferror(dest->pub.output_file))
351
- ERREXIT(cinfo, JERR_FILE_WRITE);
352
- }
353
-
354
-
355
- /*
356
- * The module selection routine for GIF format output.
357
- */
358
-
359
- GLOBAL(djpeg_dest_ptr)
360
- jinit_write_gif (j_decompress_ptr cinfo)
361
- {
362
- gif_dest_ptr dest;
363
-
364
- /* Create module interface object, fill in method pointers */
365
- dest = (gif_dest_ptr)
366
- (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
367
- SIZEOF(gif_dest_struct));
368
- dest->cinfo = cinfo; /* make back link for subroutines */
369
- dest->pub.start_output = start_output_gif;
370
- dest->pub.put_pixel_rows = put_pixel_rows;
371
- dest->pub.finish_output = finish_output_gif;
372
-
373
- if (cinfo->out_color_space != JCS_GRAYSCALE &&
374
- cinfo->out_color_space != JCS_RGB)
375
- ERREXIT(cinfo, JERR_GIF_COLORSPACE);
376
-
377
- /* Force quantization if color or if > 8 bits input */
378
- if (cinfo->out_color_space != JCS_GRAYSCALE || cinfo->data_precision > 8) {
379
- /* Force quantization to at most 256 colors */
380
- cinfo->quantize_colors = TRUE;
381
- if (cinfo->desired_number_of_colors > 256)
382
- cinfo->desired_number_of_colors = 256;
383
- }
384
-
385
- /* Calculate output image dimensions so we can allocate space */
386
- jpeg_calc_output_dimensions(cinfo);
387
-
388
- if (cinfo->output_components != 1) /* safety check: just one component? */
389
- ERREXIT(cinfo, JERR_GIF_BUG);
390
-
391
- /* Create decompressor output buffer. */
392
- dest->pub.buffer = (*cinfo->mem->alloc_sarray)
393
- ((j_common_ptr) cinfo, JPOOL_IMAGE, cinfo->output_width, (JDIMENSION) 1);
394
- dest->pub.buffer_height = 1;
395
-
396
- return (djpeg_dest_ptr) dest;
397
- }
398
-
399
- #endif /* GIF_SUPPORTED */
@@ -1,103 +0,0 @@
1
- .TH WRJPGCOM 1 "15 June 1995"
2
- .SH NAME
3
- wrjpgcom \- insert text comments into a JPEG file
4
- .SH SYNOPSIS
5
- .B wrjpgcom
6
- [
7
- .B \-replace
8
- ]
9
- [
10
- .BI \-comment " text"
11
- ]
12
- [
13
- .BI \-cfile " name"
14
- ]
15
- [
16
- .I filename
17
- ]
18
- .LP
19
- .SH DESCRIPTION
20
- .LP
21
- .B wrjpgcom
22
- reads the named JPEG/JFIF file, or the standard input if no file is named,
23
- and generates a new JPEG/JFIF file on standard output. A comment block is
24
- added to the file.
25
- .PP
26
- The JPEG standard allows "comment" (COM) blocks to occur within a JPEG file.
27
- Although the standard doesn't actually define what COM blocks are for, they
28
- are widely used to hold user-supplied text strings. This lets you add
29
- annotations, titles, index terms, etc to your JPEG files, and later retrieve
30
- them as text. COM blocks do not interfere with the image stored in the JPEG
31
- file. The maximum size of a COM block is 64K, but you can have as many of
32
- them as you like in one JPEG file.
33
- .PP
34
- .B wrjpgcom
35
- adds a COM block, containing text you provide, to a JPEG file.
36
- Ordinarily, the COM block is added after any existing COM blocks; but you
37
- can delete the old COM blocks if you wish.
38
- .SH OPTIONS
39
- Switch names may be abbreviated, and are not case sensitive.
40
- .TP
41
- .B \-replace
42
- Delete any existing COM blocks from the file.
43
- .TP
44
- .BI \-comment " text"
45
- Supply text for new COM block on command line.
46
- .TP
47
- .BI \-cfile " name"
48
- Read text for new COM block from named file.
49
- .PP
50
- If you have only one line of comment text to add, you can provide it on the
51
- command line with
52
- .BR \-comment .
53
- The comment text must be surrounded with quotes so that it is treated as a
54
- single argument. Longer comments can be read from a text file.
55
- .PP
56
- If you give neither
57
- .B \-comment
58
- nor
59
- .BR \-cfile ,
60
- then
61
- .B wrjpgcom
62
- will read the comment text from standard input. (In this case an input image
63
- file name MUST be supplied, so that the source JPEG file comes from somewhere
64
- else.) You can enter multiple lines, up to 64KB worth. Type an end-of-file
65
- indicator (usually control-D) to terminate the comment text entry.
66
- .PP
67
- .B wrjpgcom
68
- will not add a COM block if the provided comment string is empty. Therefore
69
- \fB\-replace \-comment ""\fR can be used to delete all COM blocks from a file.
70
- .SH EXAMPLES
71
- .LP
72
- Add a short comment to in.jpg, producing out.jpg:
73
- .IP
74
- .B wrjpgcom \-c
75
- \fI"View of my back yard" in.jpg
76
- .B >
77
- .I out.jpg
78
- .PP
79
- Attach a long comment previously stored in comment.txt:
80
- .IP
81
- .B wrjpgcom
82
- .I in.jpg
83
- .B <
84
- .I comment.txt
85
- .B >
86
- .I out.jpg
87
- .PP
88
- or equivalently
89
- .IP
90
- .B wrjpgcom
91
- .B -cfile
92
- .I comment.txt
93
- .B <
94
- .I in.jpg
95
- .B >
96
- .I out.jpg
97
- .SH SEE ALSO
98
- .BR cjpeg (1),
99
- .BR djpeg (1),
100
- .BR jpegtran (1),
101
- .BR rdjpgcom (1)
102
- .SH AUTHOR
103
- Independent JPEG Group