entangledstate-isbn 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (290) hide show
  1. data/README +1 -1
  2. data/Rakefile +0 -18
  3. data/VERSION +1 -0
  4. data/isbn.gemspec +290 -7
  5. data/lib/isbn.rb +6 -6
  6. data/src/gocr-0.48/.cvsignore +6 -0
  7. data/src/gocr-0.48/AUTHORS +7 -0
  8. data/src/gocr-0.48/BUGS +55 -0
  9. data/src/gocr-0.48/CREDITS +17 -0
  10. data/src/gocr-0.48/HISTORY +243 -0
  11. data/src/gocr-0.48/INSTALL +83 -0
  12. data/src/gocr-0.48/Makefile +193 -0
  13. data/src/gocr-0.48/Makefile.in +193 -0
  14. data/src/gocr-0.48/README +165 -0
  15. data/src/gocr-0.48/READMEde.txt +80 -0
  16. data/src/gocr-0.48/REMARK.txt +18 -0
  17. data/src/gocr-0.48/REVIEW +538 -0
  18. data/src/gocr-0.48/TODO +65 -0
  19. data/src/gocr-0.48/bin/.cvsignore +2 -0
  20. data/src/gocr-0.48/bin/create_db +38 -0
  21. data/src/gocr-0.48/bin/gocr.tcl +527 -0
  22. data/src/gocr-0.48/bin/gocr_chk.sh +44 -0
  23. data/src/gocr-0.48/configure +4689 -0
  24. data/src/gocr-0.48/configure.in +71 -0
  25. data/src/gocr-0.48/doc/.#Makefile.1.6 +39 -0
  26. data/src/gocr-0.48/doc/.cvsignore +2 -0
  27. data/src/gocr-0.48/doc/Makefile +39 -0
  28. data/src/gocr-0.48/doc/Makefile.in +39 -0
  29. data/src/gocr-0.48/doc/example.dtd +53 -0
  30. data/src/gocr-0.48/doc/example.xml +21 -0
  31. data/src/gocr-0.48/doc/examples.txt +67 -0
  32. data/src/gocr-0.48/doc/gocr.html +578 -0
  33. data/src/gocr-0.48/doc/unicode.txt +57 -0
  34. data/src/gocr-0.48/examples/.#Makefile.1.22 +166 -0
  35. data/src/gocr-0.48/examples/4x6.png +0 -0
  36. data/src/gocr-0.48/examples/4x6.txt +2 -0
  37. data/src/gocr-0.48/examples/5x7.png +0 -0
  38. data/src/gocr-0.48/examples/5x7.png.txt +2 -0
  39. data/src/gocr-0.48/examples/5x8.png +0 -0
  40. data/src/gocr-0.48/examples/5x8.png.txt +2 -0
  41. data/src/gocr-0.48/examples/Makefile +166 -0
  42. data/src/gocr-0.48/examples/color.fig +20 -0
  43. data/src/gocr-0.48/examples/ex.fig +16 -0
  44. data/src/gocr-0.48/examples/font.tex +22 -0
  45. data/src/gocr-0.48/examples/font1.tex +46 -0
  46. data/src/gocr-0.48/examples/font2.fig +27 -0
  47. data/src/gocr-0.48/examples/font_nw.tex +24 -0
  48. data/src/gocr-0.48/examples/handwrt1.jpg +0 -0
  49. data/src/gocr-0.48/examples/handwrt1.txt +10 -0
  50. data/src/gocr-0.48/examples/inverse.fig +20 -0
  51. data/src/gocr-0.48/examples/matrix.jpg +0 -0
  52. data/src/gocr-0.48/examples/ocr-a-subset.png +0 -0
  53. data/src/gocr-0.48/examples/ocr-a-subset.png.txt +4 -0
  54. data/src/gocr-0.48/examples/ocr-a.png +0 -0
  55. data/src/gocr-0.48/examples/ocr-a.txt +6 -0
  56. data/src/gocr-0.48/examples/ocr-b.png +0 -0
  57. data/src/gocr-0.48/examples/ocr-b.png.txt +4 -0
  58. data/src/gocr-0.48/examples/polish.tex +28 -0
  59. data/src/gocr-0.48/examples/rotate45.fig +14 -0
  60. data/src/gocr-0.48/examples/score +36 -0
  61. data/src/gocr-0.48/examples/text.tex +28 -0
  62. data/src/gocr-0.48/gocr.spec +143 -0
  63. data/src/gocr-0.48/gpl.html +537 -0
  64. data/src/gocr-0.48/include/.cvsignore +2 -0
  65. data/src/gocr-0.48/include/config.h +36 -0
  66. data/src/gocr-0.48/include/config.h.in +36 -0
  67. data/src/gocr-0.48/include/version.h +2 -0
  68. data/src/gocr-0.48/install-sh +3 -0
  69. data/src/gocr-0.48/make.bat +57 -0
  70. data/src/gocr-0.48/man/.cvsignore +2 -0
  71. data/src/gocr-0.48/man/Makefile +29 -0
  72. data/src/gocr-0.48/man/Makefile.in +29 -0
  73. data/src/gocr-0.48/man/man1/gocr.1 +166 -0
  74. data/src/gocr-0.48/src/.cvsignore +4 -0
  75. data/src/gocr-0.48/src/Makefile +132 -0
  76. data/src/gocr-0.48/src/Makefile.in +132 -0
  77. data/src/gocr-0.48/src/amiga.h +31 -0
  78. data/src/gocr-0.48/src/barcode.c +846 -0
  79. data/src/gocr-0.48/src/barcode.c.orig +593 -0
  80. data/src/gocr-0.48/src/barcode.h +11 -0
  81. data/src/gocr-0.48/src/box.c +372 -0
  82. data/src/gocr-0.48/src/database.c +462 -0
  83. data/src/gocr-0.48/src/detect.c +943 -0
  84. data/src/gocr-0.48/src/gocr.c +373 -0
  85. data/src/gocr-0.48/src/gocr.h +288 -0
  86. data/src/gocr-0.48/src/jconv.c +168 -0
  87. data/src/gocr-0.48/src/job.c +84 -0
  88. data/src/gocr-0.48/src/lines.c +350 -0
  89. data/src/gocr-0.48/src/list.c +334 -0
  90. data/src/gocr-0.48/src/list.h +90 -0
  91. data/src/gocr-0.48/src/ocr0.c +6756 -0
  92. data/src/gocr-0.48/src/ocr0.h +63 -0
  93. data/src/gocr-0.48/src/ocr0n.c +1475 -0
  94. data/src/gocr-0.48/src/ocr1.c +85 -0
  95. data/src/gocr-0.48/src/ocr1.h +3 -0
  96. data/src/gocr-0.48/src/otsu.c +289 -0
  97. data/src/gocr-0.48/src/otsu.h +23 -0
  98. data/src/gocr-0.48/src/output.c +289 -0
  99. data/src/gocr-0.48/src/output.h +37 -0
  100. data/src/gocr-0.48/src/pcx.c +153 -0
  101. data/src/gocr-0.48/src/pcx.h +9 -0
  102. data/src/gocr-0.48/src/pgm2asc.c +2893 -0
  103. data/src/gocr-0.48/src/pgm2asc.h +105 -0
  104. data/src/gocr-0.48/src/pixel.c +537 -0
  105. data/src/gocr-0.48/src/pnm.c +533 -0
  106. data/src/gocr-0.48/src/pnm.h +35 -0
  107. data/src/gocr-0.48/src/progress.c +87 -0
  108. data/src/gocr-0.48/src/progress.h +42 -0
  109. data/src/gocr-0.48/src/remove.c +703 -0
  110. data/src/gocr-0.48/src/tga.c +87 -0
  111. data/src/gocr-0.48/src/tga.h +6 -0
  112. data/src/gocr-0.48/src/unicode.c +1314 -0
  113. data/src/gocr-0.48/src/unicode.h +1257 -0
  114. data/src/jpeg-7/Makefile.am +133 -0
  115. data/src/jpeg-7/Makefile.in +1089 -0
  116. data/src/jpeg-7/README +322 -0
  117. data/src/jpeg-7/aclocal.m4 +8990 -0
  118. data/src/jpeg-7/ansi2knr.1 +36 -0
  119. data/src/jpeg-7/ansi2knr.c +739 -0
  120. data/src/jpeg-7/cderror.h +132 -0
  121. data/src/jpeg-7/cdjpeg.c +181 -0
  122. data/src/jpeg-7/cdjpeg.h +187 -0
  123. data/src/jpeg-7/change.log +270 -0
  124. data/src/jpeg-7/cjpeg.1 +325 -0
  125. data/src/jpeg-7/cjpeg.c +616 -0
  126. data/src/jpeg-7/ckconfig.c +402 -0
  127. data/src/jpeg-7/coderules.txt +118 -0
  128. data/src/jpeg-7/config.guess +1561 -0
  129. data/src/jpeg-7/config.sub +1686 -0
  130. data/src/jpeg-7/configure +17139 -0
  131. data/src/jpeg-7/configure.ac +317 -0
  132. data/src/jpeg-7/depcomp +630 -0
  133. data/src/jpeg-7/djpeg.1 +251 -0
  134. data/src/jpeg-7/djpeg.c +617 -0
  135. data/src/jpeg-7/example.c +433 -0
  136. data/src/jpeg-7/filelist.txt +215 -0
  137. data/src/jpeg-7/install-sh +520 -0
  138. data/src/jpeg-7/install.txt +1097 -0
  139. data/src/jpeg-7/jaricom.c +148 -0
  140. data/src/jpeg-7/jcapimin.c +282 -0
  141. data/src/jpeg-7/jcapistd.c +161 -0
  142. data/src/jpeg-7/jcarith.c +921 -0
  143. data/src/jpeg-7/jccoefct.c +453 -0
  144. data/src/jpeg-7/jccolor.c +459 -0
  145. data/src/jpeg-7/jcdctmgr.c +482 -0
  146. data/src/jpeg-7/jchuff.c +1612 -0
  147. data/src/jpeg-7/jcinit.c +65 -0
  148. data/src/jpeg-7/jcmainct.c +293 -0
  149. data/src/jpeg-7/jcmarker.c +667 -0
  150. data/src/jpeg-7/jcmaster.c +770 -0
  151. data/src/jpeg-7/jcomapi.c +106 -0
  152. data/src/jpeg-7/jconfig.bcc +48 -0
  153. data/src/jpeg-7/jconfig.cfg +45 -0
  154. data/src/jpeg-7/jconfig.dj +38 -0
  155. data/src/jpeg-7/jconfig.mac +43 -0
  156. data/src/jpeg-7/jconfig.manx +43 -0
  157. data/src/jpeg-7/jconfig.mc6 +52 -0
  158. data/src/jpeg-7/jconfig.sas +43 -0
  159. data/src/jpeg-7/jconfig.st +42 -0
  160. data/src/jpeg-7/jconfig.txt +155 -0
  161. data/src/jpeg-7/jconfig.vc +45 -0
  162. data/src/jpeg-7/jconfig.vms +37 -0
  163. data/src/jpeg-7/jconfig.wat +38 -0
  164. data/src/jpeg-7/jcparam.c +632 -0
  165. data/src/jpeg-7/jcprepct.c +358 -0
  166. data/src/jpeg-7/jcsample.c +545 -0
  167. data/src/jpeg-7/jctrans.c +381 -0
  168. data/src/jpeg-7/jdapimin.c +396 -0
  169. data/src/jpeg-7/jdapistd.c +275 -0
  170. data/src/jpeg-7/jdarith.c +762 -0
  171. data/src/jpeg-7/jdatadst.c +151 -0
  172. data/src/jpeg-7/jdatasrc.c +212 -0
  173. data/src/jpeg-7/jdcoefct.c +736 -0
  174. data/src/jpeg-7/jdcolor.c +396 -0
  175. data/src/jpeg-7/jdct.h +393 -0
  176. data/src/jpeg-7/jddctmgr.c +382 -0
  177. data/src/jpeg-7/jdhuff.c +1309 -0
  178. data/src/jpeg-7/jdinput.c +384 -0
  179. data/src/jpeg-7/jdmainct.c +512 -0
  180. data/src/jpeg-7/jdmarker.c +1360 -0
  181. data/src/jpeg-7/jdmaster.c +663 -0
  182. data/src/jpeg-7/jdmerge.c +400 -0
  183. data/src/jpeg-7/jdpostct.c +290 -0
  184. data/src/jpeg-7/jdsample.c +361 -0
  185. data/src/jpeg-7/jdtrans.c +136 -0
  186. data/src/jpeg-7/jerror.c +252 -0
  187. data/src/jpeg-7/jerror.h +304 -0
  188. data/src/jpeg-7/jfdctflt.c +174 -0
  189. data/src/jpeg-7/jfdctfst.c +230 -0
  190. data/src/jpeg-7/jfdctint.c +4348 -0
  191. data/src/jpeg-7/jidctflt.c +242 -0
  192. data/src/jpeg-7/jidctfst.c +368 -0
  193. data/src/jpeg-7/jidctint.c +5137 -0
  194. data/src/jpeg-7/jinclude.h +91 -0
  195. data/src/jpeg-7/jmemansi.c +167 -0
  196. data/src/jpeg-7/jmemdos.c +638 -0
  197. data/src/jpeg-7/jmemdosa.asm +379 -0
  198. data/src/jpeg-7/jmemmac.c +289 -0
  199. data/src/jpeg-7/jmemmgr.c +1118 -0
  200. data/src/jpeg-7/jmemname.c +276 -0
  201. data/src/jpeg-7/jmemnobs.c +109 -0
  202. data/src/jpeg-7/jmemsys.h +198 -0
  203. data/src/jpeg-7/jmorecfg.h +369 -0
  204. data/src/jpeg-7/jpegint.h +395 -0
  205. data/src/jpeg-7/jpeglib.h +1135 -0
  206. data/src/jpeg-7/jpegtran.1 +272 -0
  207. data/src/jpeg-7/jpegtran.c +546 -0
  208. data/src/jpeg-7/jquant1.c +856 -0
  209. data/src/jpeg-7/jquant2.c +1310 -0
  210. data/src/jpeg-7/jutils.c +179 -0
  211. data/src/jpeg-7/jversion.h +14 -0
  212. data/src/jpeg-7/libjpeg.map +4 -0
  213. data/src/jpeg-7/libjpeg.txt +3067 -0
  214. data/src/jpeg-7/ltmain.sh +8406 -0
  215. data/src/jpeg-7/makcjpeg.st +36 -0
  216. data/src/jpeg-7/makdjpeg.st +36 -0
  217. data/src/jpeg-7/makeadsw.vc6 +77 -0
  218. data/src/jpeg-7/makeasln.vc9 +33 -0
  219. data/src/jpeg-7/makecdep.vc6 +82 -0
  220. data/src/jpeg-7/makecdsp.vc6 +130 -0
  221. data/src/jpeg-7/makecmak.vc6 +159 -0
  222. data/src/jpeg-7/makecvcp.vc9 +186 -0
  223. data/src/jpeg-7/makeddep.vc6 +82 -0
  224. data/src/jpeg-7/makeddsp.vc6 +130 -0
  225. data/src/jpeg-7/makedmak.vc6 +159 -0
  226. data/src/jpeg-7/makedvcp.vc9 +186 -0
  227. data/src/jpeg-7/makefile.ansi +220 -0
  228. data/src/jpeg-7/makefile.bcc +291 -0
  229. data/src/jpeg-7/makefile.dj +226 -0
  230. data/src/jpeg-7/makefile.manx +220 -0
  231. data/src/jpeg-7/makefile.mc6 +255 -0
  232. data/src/jpeg-7/makefile.mms +224 -0
  233. data/src/jpeg-7/makefile.sas +258 -0
  234. data/src/jpeg-7/makefile.unix +234 -0
  235. data/src/jpeg-7/makefile.vc +217 -0
  236. data/src/jpeg-7/makefile.vms +142 -0
  237. data/src/jpeg-7/makefile.wat +239 -0
  238. data/src/jpeg-7/makejdep.vc6 +423 -0
  239. data/src/jpeg-7/makejdsp.vc6 +285 -0
  240. data/src/jpeg-7/makejdsw.vc6 +29 -0
  241. data/src/jpeg-7/makejmak.vc6 +425 -0
  242. data/src/jpeg-7/makejsln.vc9 +17 -0
  243. data/src/jpeg-7/makejvcp.vc9 +328 -0
  244. data/src/jpeg-7/makeproj.mac +213 -0
  245. data/src/jpeg-7/makerdep.vc6 +6 -0
  246. data/src/jpeg-7/makerdsp.vc6 +78 -0
  247. data/src/jpeg-7/makermak.vc6 +110 -0
  248. data/src/jpeg-7/makervcp.vc9 +133 -0
  249. data/src/jpeg-7/maketdep.vc6 +43 -0
  250. data/src/jpeg-7/maketdsp.vc6 +122 -0
  251. data/src/jpeg-7/maketmak.vc6 +131 -0
  252. data/src/jpeg-7/maketvcp.vc9 +178 -0
  253. data/src/jpeg-7/makewdep.vc6 +6 -0
  254. data/src/jpeg-7/makewdsp.vc6 +78 -0
  255. data/src/jpeg-7/makewmak.vc6 +110 -0
  256. data/src/jpeg-7/makewvcp.vc9 +133 -0
  257. data/src/jpeg-7/makljpeg.st +68 -0
  258. data/src/jpeg-7/maktjpeg.st +30 -0
  259. data/src/jpeg-7/makvms.opt +4 -0
  260. data/src/jpeg-7/missing +376 -0
  261. data/src/jpeg-7/rdbmp.c +439 -0
  262. data/src/jpeg-7/rdcolmap.c +253 -0
  263. data/src/jpeg-7/rdgif.c +38 -0
  264. data/src/jpeg-7/rdjpgcom.1 +63 -0
  265. data/src/jpeg-7/rdjpgcom.c +515 -0
  266. data/src/jpeg-7/rdppm.c +459 -0
  267. data/src/jpeg-7/rdrle.c +387 -0
  268. data/src/jpeg-7/rdswitch.c +365 -0
  269. data/src/jpeg-7/rdtarga.c +500 -0
  270. data/src/jpeg-7/structure.txt +945 -0
  271. data/src/jpeg-7/testimg.bmp +0 -0
  272. data/src/jpeg-7/testimg.jpg +0 -0
  273. data/src/jpeg-7/testimg.ppm +4 -0
  274. data/src/jpeg-7/testimgp.jpg +0 -0
  275. data/src/jpeg-7/testorig.jpg +0 -0
  276. data/src/jpeg-7/testprog.jpg +0 -0
  277. data/src/jpeg-7/transupp.c +1533 -0
  278. data/src/jpeg-7/transupp.h +205 -0
  279. data/src/jpeg-7/usage.txt +605 -0
  280. data/src/jpeg-7/wizard.txt +211 -0
  281. data/src/jpeg-7/wrbmp.c +442 -0
  282. data/src/jpeg-7/wrgif.c +399 -0
  283. data/src/jpeg-7/wrjpgcom.1 +103 -0
  284. data/src/jpeg-7/wrjpgcom.c +583 -0
  285. data/src/jpeg-7/wrppm.c +269 -0
  286. data/src/jpeg-7/wrrle.c +305 -0
  287. data/src/jpeg-7/wrtarga.c +253 -0
  288. metadata +287 -6
  289. data/LICENSE +0 -20
  290. data/VERSION.yml +0 -4
@@ -0,0 +1,155 @@
1
+ /*
2
+ * jconfig.txt
3
+ *
4
+ * Copyright (C) 1991-1994, 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 documents the configuration options that are required to
9
+ * customize the JPEG software for a particular system.
10
+ *
11
+ * The actual configuration options for a particular installation are stored
12
+ * in jconfig.h. On many machines, jconfig.h can be generated automatically
13
+ * or copied from one of the "canned" jconfig files that we supply. But if
14
+ * you need to generate a jconfig.h file by hand, this file tells you how.
15
+ *
16
+ * DO NOT EDIT THIS FILE --- IT WON'T ACCOMPLISH ANYTHING.
17
+ * EDIT A COPY NAMED JCONFIG.H.
18
+ */
19
+
20
+
21
+ /*
22
+ * These symbols indicate the properties of your machine or compiler.
23
+ * #define the symbol if yes, #undef it if no.
24
+ */
25
+
26
+ /* Does your compiler support function prototypes?
27
+ * (If not, you also need to use ansi2knr, see install.txt)
28
+ */
29
+ #define HAVE_PROTOTYPES
30
+
31
+ /* Does your compiler support the declaration "unsigned char" ?
32
+ * How about "unsigned short" ?
33
+ */
34
+ #define HAVE_UNSIGNED_CHAR
35
+ #define HAVE_UNSIGNED_SHORT
36
+
37
+ /* Define "void" as "char" if your compiler doesn't know about type void.
38
+ * NOTE: be sure to define void such that "void *" represents the most general
39
+ * pointer type, e.g., that returned by malloc().
40
+ */
41
+ /* #define void char */
42
+
43
+ /* Define "const" as empty if your compiler doesn't know the "const" keyword.
44
+ */
45
+ /* #define const */
46
+
47
+ /* Define this if an ordinary "char" type is unsigned.
48
+ * If you're not sure, leaving it undefined will work at some cost in speed.
49
+ * If you defined HAVE_UNSIGNED_CHAR then the speed difference is minimal.
50
+ */
51
+ #undef CHAR_IS_UNSIGNED
52
+
53
+ /* Define this if your system has an ANSI-conforming <stddef.h> file.
54
+ */
55
+ #define HAVE_STDDEF_H
56
+
57
+ /* Define this if your system has an ANSI-conforming <stdlib.h> file.
58
+ */
59
+ #define HAVE_STDLIB_H
60
+
61
+ /* Define this if your system does not have an ANSI/SysV <string.h>,
62
+ * but does have a BSD-style <strings.h>.
63
+ */
64
+ #undef NEED_BSD_STRINGS
65
+
66
+ /* Define this if your system does not provide typedef size_t in any of the
67
+ * ANSI-standard places (stddef.h, stdlib.h, or stdio.h), but places it in
68
+ * <sys/types.h> instead.
69
+ */
70
+ #undef NEED_SYS_TYPES_H
71
+
72
+ /* For 80x86 machines, you need to define NEED_FAR_POINTERS,
73
+ * unless you are using a large-data memory model or 80386 flat-memory mode.
74
+ * On less brain-damaged CPUs this symbol must not be defined.
75
+ * (Defining this symbol causes large data structures to be referenced through
76
+ * "far" pointers and to be allocated with a special version of malloc.)
77
+ */
78
+ #undef NEED_FAR_POINTERS
79
+
80
+ /* Define this if your linker needs global names to be unique in less
81
+ * than the first 15 characters.
82
+ */
83
+ #undef NEED_SHORT_EXTERNAL_NAMES
84
+
85
+ /* Although a real ANSI C compiler can deal perfectly well with pointers to
86
+ * unspecified structures (see "incomplete types" in the spec), a few pre-ANSI
87
+ * and pseudo-ANSI compilers get confused. To keep one of these bozos happy,
88
+ * define INCOMPLETE_TYPES_BROKEN. This is not recommended unless you
89
+ * actually get "missing structure definition" warnings or errors while
90
+ * compiling the JPEG code.
91
+ */
92
+ #undef INCOMPLETE_TYPES_BROKEN
93
+
94
+
95
+ /*
96
+ * The following options affect code selection within the JPEG library,
97
+ * but they don't need to be visible to applications using the library.
98
+ * To minimize application namespace pollution, the symbols won't be
99
+ * defined unless JPEG_INTERNALS has been defined.
100
+ */
101
+
102
+ #ifdef JPEG_INTERNALS
103
+
104
+ /* Define this if your compiler implements ">>" on signed values as a logical
105
+ * (unsigned) shift; leave it undefined if ">>" is a signed (arithmetic) shift,
106
+ * which is the normal and rational definition.
107
+ */
108
+ #undef RIGHT_SHIFT_IS_UNSIGNED
109
+
110
+
111
+ #endif /* JPEG_INTERNALS */
112
+
113
+
114
+ /*
115
+ * The remaining options do not affect the JPEG library proper,
116
+ * but only the sample applications cjpeg/djpeg (see cjpeg.c, djpeg.c).
117
+ * Other applications can ignore these.
118
+ */
119
+
120
+ #ifdef JPEG_CJPEG_DJPEG
121
+
122
+ /* These defines indicate which image (non-JPEG) file formats are allowed. */
123
+
124
+ #define BMP_SUPPORTED /* BMP image file format */
125
+ #define GIF_SUPPORTED /* GIF image file format */
126
+ #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
127
+ #undef RLE_SUPPORTED /* Utah RLE image file format */
128
+ #define TARGA_SUPPORTED /* Targa image file format */
129
+
130
+ /* Define this if you want to name both input and output files on the command
131
+ * line, rather than using stdout and optionally stdin. You MUST do this if
132
+ * your system can't cope with binary I/O to stdin/stdout. See comments at
133
+ * head of cjpeg.c or djpeg.c.
134
+ */
135
+ #undef TWO_FILE_COMMANDLINE
136
+
137
+ /* Define this if your system needs explicit cleanup of temporary files.
138
+ * This is crucial under MS-DOS, where the temporary "files" may be areas
139
+ * of extended memory; on most other systems it's not as important.
140
+ */
141
+ #undef NEED_SIGNAL_CATCHER
142
+
143
+ /* By default, we open image files with fopen(...,"rb") or fopen(...,"wb").
144
+ * This is necessary on systems that distinguish text files from binary files,
145
+ * and is harmless on most systems that don't. If you have one of the rare
146
+ * systems that complains about the "b" spec, define this symbol.
147
+ */
148
+ #undef DONT_USE_B_MODE
149
+
150
+ /* Define this if you want percent-done progress reports from cjpeg/djpeg.
151
+ */
152
+ #undef PROGRESS_REPORT
153
+
154
+
155
+ #endif /* JPEG_CJPEG_DJPEG */
@@ -0,0 +1,45 @@
1
+ /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */
2
+ /* see jconfig.txt for explanations */
3
+
4
+ #define HAVE_PROTOTYPES
5
+ #define HAVE_UNSIGNED_CHAR
6
+ #define HAVE_UNSIGNED_SHORT
7
+ /* #define void char */
8
+ /* #define const */
9
+ #undef CHAR_IS_UNSIGNED
10
+ #define HAVE_STDDEF_H
11
+ #define HAVE_STDLIB_H
12
+ #undef NEED_BSD_STRINGS
13
+ #undef NEED_SYS_TYPES_H
14
+ #undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */
15
+ #undef NEED_SHORT_EXTERNAL_NAMES
16
+ #undef INCOMPLETE_TYPES_BROKEN
17
+
18
+ /* Define "boolean" as unsigned char, not int, per Windows custom */
19
+ #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */
20
+ typedef unsigned char boolean;
21
+ #endif
22
+ #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
23
+
24
+
25
+ #ifdef JPEG_INTERNALS
26
+
27
+ #undef RIGHT_SHIFT_IS_UNSIGNED
28
+
29
+ #endif /* JPEG_INTERNALS */
30
+
31
+ #ifdef JPEG_CJPEG_DJPEG
32
+
33
+ #define BMP_SUPPORTED /* BMP image file format */
34
+ #define GIF_SUPPORTED /* GIF image file format */
35
+ #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
36
+ #undef RLE_SUPPORTED /* Utah RLE image file format */
37
+ #define TARGA_SUPPORTED /* Targa image file format */
38
+
39
+ #define TWO_FILE_COMMANDLINE /* optional */
40
+ #define USE_SETMODE /* Microsoft has setmode() */
41
+ #undef NEED_SIGNAL_CATCHER
42
+ #undef DONT_USE_B_MODE
43
+ #undef PROGRESS_REPORT /* optional */
44
+
45
+ #endif /* JPEG_CJPEG_DJPEG */
@@ -0,0 +1,37 @@
1
+ /* jconfig.vms --- jconfig.h for use on Digital VMS. */
2
+ /* see jconfig.txt for explanations */
3
+
4
+ #define HAVE_PROTOTYPES
5
+ #define HAVE_UNSIGNED_CHAR
6
+ #define HAVE_UNSIGNED_SHORT
7
+ /* #define void char */
8
+ /* #define const */
9
+ #undef CHAR_IS_UNSIGNED
10
+ #define HAVE_STDDEF_H
11
+ #define HAVE_STDLIB_H
12
+ #undef NEED_BSD_STRINGS
13
+ #undef NEED_SYS_TYPES_H
14
+ #undef NEED_FAR_POINTERS
15
+ #undef NEED_SHORT_EXTERNAL_NAMES
16
+ #undef INCOMPLETE_TYPES_BROKEN
17
+
18
+ #ifdef JPEG_INTERNALS
19
+
20
+ #undef RIGHT_SHIFT_IS_UNSIGNED
21
+
22
+ #endif /* JPEG_INTERNALS */
23
+
24
+ #ifdef JPEG_CJPEG_DJPEG
25
+
26
+ #define BMP_SUPPORTED /* BMP image file format */
27
+ #define GIF_SUPPORTED /* GIF image file format */
28
+ #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
29
+ #undef RLE_SUPPORTED /* Utah RLE image file format */
30
+ #define TARGA_SUPPORTED /* Targa image file format */
31
+
32
+ #define TWO_FILE_COMMANDLINE /* Needed on VMS */
33
+ #undef NEED_SIGNAL_CATCHER
34
+ #undef DONT_USE_B_MODE
35
+ #undef PROGRESS_REPORT /* optional */
36
+
37
+ #endif /* JPEG_CJPEG_DJPEG */
@@ -0,0 +1,38 @@
1
+ /* jconfig.wat --- jconfig.h for Watcom C/C++ on MS-DOS or OS/2. */
2
+ /* see jconfig.txt for explanations */
3
+
4
+ #define HAVE_PROTOTYPES
5
+ #define HAVE_UNSIGNED_CHAR
6
+ #define HAVE_UNSIGNED_SHORT
7
+ /* #define void char */
8
+ /* #define const */
9
+ #define CHAR_IS_UNSIGNED
10
+ #define HAVE_STDDEF_H
11
+ #define HAVE_STDLIB_H
12
+ #undef NEED_BSD_STRINGS
13
+ #undef NEED_SYS_TYPES_H
14
+ #undef NEED_FAR_POINTERS /* Watcom uses flat 32-bit addressing */
15
+ #undef NEED_SHORT_EXTERNAL_NAMES
16
+ #undef INCOMPLETE_TYPES_BROKEN
17
+
18
+ #ifdef JPEG_INTERNALS
19
+
20
+ #undef RIGHT_SHIFT_IS_UNSIGNED
21
+
22
+ #endif /* JPEG_INTERNALS */
23
+
24
+ #ifdef JPEG_CJPEG_DJPEG
25
+
26
+ #define BMP_SUPPORTED /* BMP image file format */
27
+ #define GIF_SUPPORTED /* GIF image file format */
28
+ #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
29
+ #undef RLE_SUPPORTED /* Utah RLE image file format */
30
+ #define TARGA_SUPPORTED /* Targa image file format */
31
+
32
+ #undef TWO_FILE_COMMANDLINE /* optional */
33
+ #define USE_SETMODE /* Needed to make one-file style work in Watcom */
34
+ #undef NEED_SIGNAL_CATCHER /* Define this if you use jmemname.c */
35
+ #undef DONT_USE_B_MODE
36
+ #undef PROGRESS_REPORT /* optional */
37
+
38
+ #endif /* JPEG_CJPEG_DJPEG */
@@ -0,0 +1,632 @@
1
+ /*
2
+ * jcparam.c
3
+ *
4
+ * Copyright (C) 1991-1998, Thomas G. Lane.
5
+ * Modified 2003-2008 by 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 optional default-setting code for the JPEG compressor.
10
+ * Applications do not have to use this file, but those that don't use it
11
+ * must know a lot more about the innards of the JPEG code.
12
+ */
13
+
14
+ #define JPEG_INTERNALS
15
+ #include "jinclude.h"
16
+ #include "jpeglib.h"
17
+
18
+
19
+ /*
20
+ * Quantization table setup routines
21
+ */
22
+
23
+ GLOBAL(void)
24
+ jpeg_add_quant_table (j_compress_ptr cinfo, int which_tbl,
25
+ const unsigned int *basic_table,
26
+ int scale_factor, boolean force_baseline)
27
+ /* Define a quantization table equal to the basic_table times
28
+ * a scale factor (given as a percentage).
29
+ * If force_baseline is TRUE, the computed quantization table entries
30
+ * are limited to 1..255 for JPEG baseline compatibility.
31
+ */
32
+ {
33
+ JQUANT_TBL ** qtblptr;
34
+ int i;
35
+ long temp;
36
+
37
+ /* Safety check to ensure start_compress not called yet. */
38
+ if (cinfo->global_state != CSTATE_START)
39
+ ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
40
+
41
+ if (which_tbl < 0 || which_tbl >= NUM_QUANT_TBLS)
42
+ ERREXIT1(cinfo, JERR_DQT_INDEX, which_tbl);
43
+
44
+ qtblptr = & cinfo->quant_tbl_ptrs[which_tbl];
45
+
46
+ if (*qtblptr == NULL)
47
+ *qtblptr = jpeg_alloc_quant_table((j_common_ptr) cinfo);
48
+
49
+ for (i = 0; i < DCTSIZE2; i++) {
50
+ temp = ((long) basic_table[i] * scale_factor + 50L) / 100L;
51
+ /* limit the values to the valid range */
52
+ if (temp <= 0L) temp = 1L;
53
+ if (temp > 32767L) temp = 32767L; /* max quantizer needed for 12 bits */
54
+ if (force_baseline && temp > 255L)
55
+ temp = 255L; /* limit to baseline range if requested */
56
+ (*qtblptr)->quantval[i] = (UINT16) temp;
57
+ }
58
+
59
+ /* Initialize sent_table FALSE so table will be written to JPEG file. */
60
+ (*qtblptr)->sent_table = FALSE;
61
+ }
62
+
63
+
64
+ /* These are the sample quantization tables given in JPEG spec section K.1.
65
+ * The spec says that the values given produce "good" quality, and
66
+ * when divided by 2, "very good" quality.
67
+ */
68
+ static const unsigned int std_luminance_quant_tbl[DCTSIZE2] = {
69
+ 16, 11, 10, 16, 24, 40, 51, 61,
70
+ 12, 12, 14, 19, 26, 58, 60, 55,
71
+ 14, 13, 16, 24, 40, 57, 69, 56,
72
+ 14, 17, 22, 29, 51, 87, 80, 62,
73
+ 18, 22, 37, 56, 68, 109, 103, 77,
74
+ 24, 35, 55, 64, 81, 104, 113, 92,
75
+ 49, 64, 78, 87, 103, 121, 120, 101,
76
+ 72, 92, 95, 98, 112, 100, 103, 99
77
+ };
78
+ static const unsigned int std_chrominance_quant_tbl[DCTSIZE2] = {
79
+ 17, 18, 24, 47, 99, 99, 99, 99,
80
+ 18, 21, 26, 66, 99, 99, 99, 99,
81
+ 24, 26, 56, 99, 99, 99, 99, 99,
82
+ 47, 66, 99, 99, 99, 99, 99, 99,
83
+ 99, 99, 99, 99, 99, 99, 99, 99,
84
+ 99, 99, 99, 99, 99, 99, 99, 99,
85
+ 99, 99, 99, 99, 99, 99, 99, 99,
86
+ 99, 99, 99, 99, 99, 99, 99, 99
87
+ };
88
+
89
+
90
+ GLOBAL(void)
91
+ jpeg_default_qtables (j_compress_ptr cinfo, boolean force_baseline)
92
+ /* Set or change the 'quality' (quantization) setting, using default tables
93
+ * and straight percentage-scaling quality scales.
94
+ * This entry point allows different scalings for luminance and chrominance.
95
+ */
96
+ {
97
+ /* Set up two quantization tables using the specified scaling */
98
+ jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
99
+ cinfo->q_scale_factor[0], force_baseline);
100
+ jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
101
+ cinfo->q_scale_factor[1], force_baseline);
102
+ }
103
+
104
+
105
+ GLOBAL(void)
106
+ jpeg_set_linear_quality (j_compress_ptr cinfo, int scale_factor,
107
+ boolean force_baseline)
108
+ /* Set or change the 'quality' (quantization) setting, using default tables
109
+ * and a straight percentage-scaling quality scale. In most cases it's better
110
+ * to use jpeg_set_quality (below); this entry point is provided for
111
+ * applications that insist on a linear percentage scaling.
112
+ */
113
+ {
114
+ /* Set up two quantization tables using the specified scaling */
115
+ jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
116
+ scale_factor, force_baseline);
117
+ jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
118
+ scale_factor, force_baseline);
119
+ }
120
+
121
+
122
+ GLOBAL(int)
123
+ jpeg_quality_scaling (int quality)
124
+ /* Convert a user-specified quality rating to a percentage scaling factor
125
+ * for an underlying quantization table, using our recommended scaling curve.
126
+ * The input 'quality' factor should be 0 (terrible) to 100 (very good).
127
+ */
128
+ {
129
+ /* Safety limit on quality factor. Convert 0 to 1 to avoid zero divide. */
130
+ if (quality <= 0) quality = 1;
131
+ if (quality > 100) quality = 100;
132
+
133
+ /* The basic table is used as-is (scaling 100) for a quality of 50.
134
+ * Qualities 50..100 are converted to scaling percentage 200 - 2*Q;
135
+ * note that at Q=100 the scaling is 0, which will cause jpeg_add_quant_table
136
+ * to make all the table entries 1 (hence, minimum quantization loss).
137
+ * Qualities 1..50 are converted to scaling percentage 5000/Q.
138
+ */
139
+ if (quality < 50)
140
+ quality = 5000 / quality;
141
+ else
142
+ quality = 200 - quality*2;
143
+
144
+ return quality;
145
+ }
146
+
147
+
148
+ GLOBAL(void)
149
+ jpeg_set_quality (j_compress_ptr cinfo, int quality, boolean force_baseline)
150
+ /* Set or change the 'quality' (quantization) setting, using default tables.
151
+ * This is the standard quality-adjusting entry point for typical user
152
+ * interfaces; only those who want detailed control over quantization tables
153
+ * would use the preceding three routines directly.
154
+ */
155
+ {
156
+ /* Convert user 0-100 rating to percentage scaling */
157
+ quality = jpeg_quality_scaling(quality);
158
+
159
+ /* Set up standard quality tables */
160
+ jpeg_set_linear_quality(cinfo, quality, force_baseline);
161
+ }
162
+
163
+
164
+ /*
165
+ * Huffman table setup routines
166
+ */
167
+
168
+ LOCAL(void)
169
+ add_huff_table (j_compress_ptr cinfo,
170
+ JHUFF_TBL **htblptr, const UINT8 *bits, const UINT8 *val)
171
+ /* Define a Huffman table */
172
+ {
173
+ int nsymbols, len;
174
+
175
+ if (*htblptr == NULL)
176
+ *htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
177
+
178
+ /* Copy the number-of-symbols-of-each-code-length counts */
179
+ MEMCOPY((*htblptr)->bits, bits, SIZEOF((*htblptr)->bits));
180
+
181
+ /* Validate the counts. We do this here mainly so we can copy the right
182
+ * number of symbols from the val[] array, without risking marching off
183
+ * the end of memory. jchuff.c will do a more thorough test later.
184
+ */
185
+ nsymbols = 0;
186
+ for (len = 1; len <= 16; len++)
187
+ nsymbols += bits[len];
188
+ if (nsymbols < 1 || nsymbols > 256)
189
+ ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
190
+
191
+ MEMCOPY((*htblptr)->huffval, val, nsymbols * SIZEOF(UINT8));
192
+
193
+ /* Initialize sent_table FALSE so table will be written to JPEG file. */
194
+ (*htblptr)->sent_table = FALSE;
195
+ }
196
+
197
+
198
+ LOCAL(void)
199
+ std_huff_tables (j_compress_ptr cinfo)
200
+ /* Set up the standard Huffman tables (cf. JPEG standard section K.3) */
201
+ /* IMPORTANT: these are only valid for 8-bit data precision! */
202
+ {
203
+ static const UINT8 bits_dc_luminance[17] =
204
+ { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
205
+ static const UINT8 val_dc_luminance[] =
206
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
207
+
208
+ static const UINT8 bits_dc_chrominance[17] =
209
+ { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
210
+ static const UINT8 val_dc_chrominance[] =
211
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
212
+
213
+ static const UINT8 bits_ac_luminance[17] =
214
+ { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
215
+ static const UINT8 val_ac_luminance[] =
216
+ { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
217
+ 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
218
+ 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
219
+ 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
220
+ 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
221
+ 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
222
+ 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
223
+ 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
224
+ 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
225
+ 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
226
+ 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
227
+ 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
228
+ 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
229
+ 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
230
+ 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
231
+ 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
232
+ 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
233
+ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
234
+ 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
235
+ 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
236
+ 0xf9, 0xfa };
237
+
238
+ static const UINT8 bits_ac_chrominance[17] =
239
+ { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 };
240
+ static const UINT8 val_ac_chrominance[] =
241
+ { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
242
+ 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
243
+ 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
244
+ 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
245
+ 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
246
+ 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
247
+ 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
248
+ 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
249
+ 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
250
+ 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
251
+ 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
252
+ 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
253
+ 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
254
+ 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
255
+ 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
256
+ 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
257
+ 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
258
+ 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
259
+ 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
260
+ 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
261
+ 0xf9, 0xfa };
262
+
263
+ add_huff_table(cinfo, &cinfo->dc_huff_tbl_ptrs[0],
264
+ bits_dc_luminance, val_dc_luminance);
265
+ add_huff_table(cinfo, &cinfo->ac_huff_tbl_ptrs[0],
266
+ bits_ac_luminance, val_ac_luminance);
267
+ add_huff_table(cinfo, &cinfo->dc_huff_tbl_ptrs[1],
268
+ bits_dc_chrominance, val_dc_chrominance);
269
+ add_huff_table(cinfo, &cinfo->ac_huff_tbl_ptrs[1],
270
+ bits_ac_chrominance, val_ac_chrominance);
271
+ }
272
+
273
+
274
+ /*
275
+ * Default parameter setup for compression.
276
+ *
277
+ * Applications that don't choose to use this routine must do their
278
+ * own setup of all these parameters. Alternately, you can call this
279
+ * to establish defaults and then alter parameters selectively. This
280
+ * is the recommended approach since, if we add any new parameters,
281
+ * your code will still work (they'll be set to reasonable defaults).
282
+ */
283
+
284
+ GLOBAL(void)
285
+ jpeg_set_defaults (j_compress_ptr cinfo)
286
+ {
287
+ int i;
288
+
289
+ /* Safety check to ensure start_compress not called yet. */
290
+ if (cinfo->global_state != CSTATE_START)
291
+ ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
292
+
293
+ /* Allocate comp_info array large enough for maximum component count.
294
+ * Array is made permanent in case application wants to compress
295
+ * multiple images at same param settings.
296
+ */
297
+ if (cinfo->comp_info == NULL)
298
+ cinfo->comp_info = (jpeg_component_info *)
299
+ (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
300
+ MAX_COMPONENTS * SIZEOF(jpeg_component_info));
301
+
302
+ /* Initialize everything not dependent on the color space */
303
+
304
+ cinfo->scale_num = 1; /* 1:1 scaling */
305
+ cinfo->scale_denom = 1;
306
+ cinfo->data_precision = BITS_IN_JSAMPLE;
307
+ /* Set up two quantization tables using default quality of 75 */
308
+ jpeg_set_quality(cinfo, 75, TRUE);
309
+ /* Set up two Huffman tables */
310
+ std_huff_tables(cinfo);
311
+
312
+ /* Initialize default arithmetic coding conditioning */
313
+ for (i = 0; i < NUM_ARITH_TBLS; i++) {
314
+ cinfo->arith_dc_L[i] = 0;
315
+ cinfo->arith_dc_U[i] = 1;
316
+ cinfo->arith_ac_K[i] = 5;
317
+ }
318
+
319
+ /* Default is no multiple-scan output */
320
+ cinfo->scan_info = NULL;
321
+ cinfo->num_scans = 0;
322
+
323
+ /* Expect normal source image, not raw downsampled data */
324
+ cinfo->raw_data_in = FALSE;
325
+
326
+ /* Use Huffman coding, not arithmetic coding, by default */
327
+ cinfo->arith_code = FALSE;
328
+
329
+ /* By default, don't do extra passes to optimize entropy coding */
330
+ cinfo->optimize_coding = FALSE;
331
+ /* The standard Huffman tables are only valid for 8-bit data precision.
332
+ * If the precision is higher, force optimization on so that usable
333
+ * tables will be computed. This test can be removed if default tables
334
+ * are supplied that are valid for the desired precision.
335
+ */
336
+ if (cinfo->data_precision > 8)
337
+ cinfo->optimize_coding = TRUE;
338
+
339
+ /* By default, use the simpler non-cosited sampling alignment */
340
+ cinfo->CCIR601_sampling = FALSE;
341
+
342
+ /* By default, apply fancy downsampling */
343
+ cinfo->do_fancy_downsampling = TRUE;
344
+
345
+ /* No input smoothing */
346
+ cinfo->smoothing_factor = 0;
347
+
348
+ /* DCT algorithm preference */
349
+ cinfo->dct_method = JDCT_DEFAULT;
350
+
351
+ /* No restart markers */
352
+ cinfo->restart_interval = 0;
353
+ cinfo->restart_in_rows = 0;
354
+
355
+ /* Fill in default JFIF marker parameters. Note that whether the marker
356
+ * will actually be written is determined by jpeg_set_colorspace.
357
+ *
358
+ * By default, the library emits JFIF version code 1.01.
359
+ * An application that wants to emit JFIF 1.02 extension markers should set
360
+ * JFIF_minor_version to 2. We could probably get away with just defaulting
361
+ * to 1.02, but there may still be some decoders in use that will complain
362
+ * about that; saying 1.01 should minimize compatibility problems.
363
+ */
364
+ cinfo->JFIF_major_version = 1; /* Default JFIF version = 1.01 */
365
+ cinfo->JFIF_minor_version = 1;
366
+ cinfo->density_unit = 0; /* Pixel size is unknown by default */
367
+ cinfo->X_density = 1; /* Pixel aspect ratio is square by default */
368
+ cinfo->Y_density = 1;
369
+
370
+ /* Choose JPEG colorspace based on input space, set defaults accordingly */
371
+
372
+ jpeg_default_colorspace(cinfo);
373
+ }
374
+
375
+
376
+ /*
377
+ * Select an appropriate JPEG colorspace for in_color_space.
378
+ */
379
+
380
+ GLOBAL(void)
381
+ jpeg_default_colorspace (j_compress_ptr cinfo)
382
+ {
383
+ switch (cinfo->in_color_space) {
384
+ case JCS_GRAYSCALE:
385
+ jpeg_set_colorspace(cinfo, JCS_GRAYSCALE);
386
+ break;
387
+ case JCS_RGB:
388
+ jpeg_set_colorspace(cinfo, JCS_YCbCr);
389
+ break;
390
+ case JCS_YCbCr:
391
+ jpeg_set_colorspace(cinfo, JCS_YCbCr);
392
+ break;
393
+ case JCS_CMYK:
394
+ jpeg_set_colorspace(cinfo, JCS_CMYK); /* By default, no translation */
395
+ break;
396
+ case JCS_YCCK:
397
+ jpeg_set_colorspace(cinfo, JCS_YCCK);
398
+ break;
399
+ case JCS_UNKNOWN:
400
+ jpeg_set_colorspace(cinfo, JCS_UNKNOWN);
401
+ break;
402
+ default:
403
+ ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
404
+ }
405
+ }
406
+
407
+
408
+ /*
409
+ * Set the JPEG colorspace, and choose colorspace-dependent default values.
410
+ */
411
+
412
+ GLOBAL(void)
413
+ jpeg_set_colorspace (j_compress_ptr cinfo, J_COLOR_SPACE colorspace)
414
+ {
415
+ jpeg_component_info * compptr;
416
+ int ci;
417
+
418
+ #define SET_COMP(index,id,hsamp,vsamp,quant,dctbl,actbl) \
419
+ (compptr = &cinfo->comp_info[index], \
420
+ compptr->component_id = (id), \
421
+ compptr->h_samp_factor = (hsamp), \
422
+ compptr->v_samp_factor = (vsamp), \
423
+ compptr->quant_tbl_no = (quant), \
424
+ compptr->dc_tbl_no = (dctbl), \
425
+ compptr->ac_tbl_no = (actbl) )
426
+
427
+ /* Safety check to ensure start_compress not called yet. */
428
+ if (cinfo->global_state != CSTATE_START)
429
+ ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
430
+
431
+ /* For all colorspaces, we use Q and Huff tables 0 for luminance components,
432
+ * tables 1 for chrominance components.
433
+ */
434
+
435
+ cinfo->jpeg_color_space = colorspace;
436
+
437
+ cinfo->write_JFIF_header = FALSE; /* No marker for non-JFIF colorspaces */
438
+ cinfo->write_Adobe_marker = FALSE; /* write no Adobe marker by default */
439
+
440
+ switch (colorspace) {
441
+ case JCS_GRAYSCALE:
442
+ cinfo->write_JFIF_header = TRUE; /* Write a JFIF marker */
443
+ cinfo->num_components = 1;
444
+ /* JFIF specifies component ID 1 */
445
+ SET_COMP(0, 1, 1,1, 0, 0,0);
446
+ break;
447
+ case JCS_RGB:
448
+ cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag RGB */
449
+ cinfo->num_components = 3;
450
+ SET_COMP(0, 0x52 /* 'R' */, 1,1, 0, 0,0);
451
+ SET_COMP(1, 0x47 /* 'G' */, 1,1, 0, 0,0);
452
+ SET_COMP(2, 0x42 /* 'B' */, 1,1, 0, 0,0);
453
+ break;
454
+ case JCS_YCbCr:
455
+ cinfo->write_JFIF_header = TRUE; /* Write a JFIF marker */
456
+ cinfo->num_components = 3;
457
+ /* JFIF specifies component IDs 1,2,3 */
458
+ /* We default to 2x2 subsamples of chrominance */
459
+ SET_COMP(0, 1, 2,2, 0, 0,0);
460
+ SET_COMP(1, 2, 1,1, 1, 1,1);
461
+ SET_COMP(2, 3, 1,1, 1, 1,1);
462
+ break;
463
+ case JCS_CMYK:
464
+ cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag CMYK */
465
+ cinfo->num_components = 4;
466
+ SET_COMP(0, 0x43 /* 'C' */, 1,1, 0, 0,0);
467
+ SET_COMP(1, 0x4D /* 'M' */, 1,1, 0, 0,0);
468
+ SET_COMP(2, 0x59 /* 'Y' */, 1,1, 0, 0,0);
469
+ SET_COMP(3, 0x4B /* 'K' */, 1,1, 0, 0,0);
470
+ break;
471
+ case JCS_YCCK:
472
+ cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag YCCK */
473
+ cinfo->num_components = 4;
474
+ SET_COMP(0, 1, 2,2, 0, 0,0);
475
+ SET_COMP(1, 2, 1,1, 1, 1,1);
476
+ SET_COMP(2, 3, 1,1, 1, 1,1);
477
+ SET_COMP(3, 4, 2,2, 0, 0,0);
478
+ break;
479
+ case JCS_UNKNOWN:
480
+ cinfo->num_components = cinfo->input_components;
481
+ if (cinfo->num_components < 1 || cinfo->num_components > MAX_COMPONENTS)
482
+ ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
483
+ MAX_COMPONENTS);
484
+ for (ci = 0; ci < cinfo->num_components; ci++) {
485
+ SET_COMP(ci, ci, 1,1, 0, 0,0);
486
+ }
487
+ break;
488
+ default:
489
+ ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
490
+ }
491
+ }
492
+
493
+
494
+ #ifdef C_PROGRESSIVE_SUPPORTED
495
+
496
+ LOCAL(jpeg_scan_info *)
497
+ fill_a_scan (jpeg_scan_info * scanptr, int ci,
498
+ int Ss, int Se, int Ah, int Al)
499
+ /* Support routine: generate one scan for specified component */
500
+ {
501
+ scanptr->comps_in_scan = 1;
502
+ scanptr->component_index[0] = ci;
503
+ scanptr->Ss = Ss;
504
+ scanptr->Se = Se;
505
+ scanptr->Ah = Ah;
506
+ scanptr->Al = Al;
507
+ scanptr++;
508
+ return scanptr;
509
+ }
510
+
511
+ LOCAL(jpeg_scan_info *)
512
+ fill_scans (jpeg_scan_info * scanptr, int ncomps,
513
+ int Ss, int Se, int Ah, int Al)
514
+ /* Support routine: generate one scan for each component */
515
+ {
516
+ int ci;
517
+
518
+ for (ci = 0; ci < ncomps; ci++) {
519
+ scanptr->comps_in_scan = 1;
520
+ scanptr->component_index[0] = ci;
521
+ scanptr->Ss = Ss;
522
+ scanptr->Se = Se;
523
+ scanptr->Ah = Ah;
524
+ scanptr->Al = Al;
525
+ scanptr++;
526
+ }
527
+ return scanptr;
528
+ }
529
+
530
+ LOCAL(jpeg_scan_info *)
531
+ fill_dc_scans (jpeg_scan_info * scanptr, int ncomps, int Ah, int Al)
532
+ /* Support routine: generate interleaved DC scan if possible, else N scans */
533
+ {
534
+ int ci;
535
+
536
+ if (ncomps <= MAX_COMPS_IN_SCAN) {
537
+ /* Single interleaved DC scan */
538
+ scanptr->comps_in_scan = ncomps;
539
+ for (ci = 0; ci < ncomps; ci++)
540
+ scanptr->component_index[ci] = ci;
541
+ scanptr->Ss = scanptr->Se = 0;
542
+ scanptr->Ah = Ah;
543
+ scanptr->Al = Al;
544
+ scanptr++;
545
+ } else {
546
+ /* Noninterleaved DC scan for each component */
547
+ scanptr = fill_scans(scanptr, ncomps, 0, 0, Ah, Al);
548
+ }
549
+ return scanptr;
550
+ }
551
+
552
+
553
+ /*
554
+ * Create a recommended progressive-JPEG script.
555
+ * cinfo->num_components and cinfo->jpeg_color_space must be correct.
556
+ */
557
+
558
+ GLOBAL(void)
559
+ jpeg_simple_progression (j_compress_ptr cinfo)
560
+ {
561
+ int ncomps = cinfo->num_components;
562
+ int nscans;
563
+ jpeg_scan_info * scanptr;
564
+
565
+ /* Safety check to ensure start_compress not called yet. */
566
+ if (cinfo->global_state != CSTATE_START)
567
+ ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
568
+
569
+ /* Figure space needed for script. Calculation must match code below! */
570
+ if (ncomps == 3 && cinfo->jpeg_color_space == JCS_YCbCr) {
571
+ /* Custom script for YCbCr color images. */
572
+ nscans = 10;
573
+ } else {
574
+ /* All-purpose script for other color spaces. */
575
+ if (ncomps > MAX_COMPS_IN_SCAN)
576
+ nscans = 6 * ncomps; /* 2 DC + 4 AC scans per component */
577
+ else
578
+ nscans = 2 + 4 * ncomps; /* 2 DC scans; 4 AC scans per component */
579
+ }
580
+
581
+ /* Allocate space for script.
582
+ * We need to put it in the permanent pool in case the application performs
583
+ * multiple compressions without changing the settings. To avoid a memory
584
+ * leak if jpeg_simple_progression is called repeatedly for the same JPEG
585
+ * object, we try to re-use previously allocated space, and we allocate
586
+ * enough space to handle YCbCr even if initially asked for grayscale.
587
+ */
588
+ if (cinfo->script_space == NULL || cinfo->script_space_size < nscans) {
589
+ cinfo->script_space_size = MAX(nscans, 10);
590
+ cinfo->script_space = (jpeg_scan_info *)
591
+ (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
592
+ cinfo->script_space_size * SIZEOF(jpeg_scan_info));
593
+ }
594
+ scanptr = cinfo->script_space;
595
+ cinfo->scan_info = scanptr;
596
+ cinfo->num_scans = nscans;
597
+
598
+ if (ncomps == 3 && cinfo->jpeg_color_space == JCS_YCbCr) {
599
+ /* Custom script for YCbCr color images. */
600
+ /* Initial DC scan */
601
+ scanptr = fill_dc_scans(scanptr, ncomps, 0, 1);
602
+ /* Initial AC scan: get some luma data out in a hurry */
603
+ scanptr = fill_a_scan(scanptr, 0, 1, 5, 0, 2);
604
+ /* Chroma data is too small to be worth expending many scans on */
605
+ scanptr = fill_a_scan(scanptr, 2, 1, 63, 0, 1);
606
+ scanptr = fill_a_scan(scanptr, 1, 1, 63, 0, 1);
607
+ /* Complete spectral selection for luma AC */
608
+ scanptr = fill_a_scan(scanptr, 0, 6, 63, 0, 2);
609
+ /* Refine next bit of luma AC */
610
+ scanptr = fill_a_scan(scanptr, 0, 1, 63, 2, 1);
611
+ /* Finish DC successive approximation */
612
+ scanptr = fill_dc_scans(scanptr, ncomps, 1, 0);
613
+ /* Finish AC successive approximation */
614
+ scanptr = fill_a_scan(scanptr, 2, 1, 63, 1, 0);
615
+ scanptr = fill_a_scan(scanptr, 1, 1, 63, 1, 0);
616
+ /* Luma bottom bit comes last since it's usually largest scan */
617
+ scanptr = fill_a_scan(scanptr, 0, 1, 63, 1, 0);
618
+ } else {
619
+ /* All-purpose script for other color spaces. */
620
+ /* Successive approximation first pass */
621
+ scanptr = fill_dc_scans(scanptr, ncomps, 0, 1);
622
+ scanptr = fill_scans(scanptr, ncomps, 1, 5, 0, 2);
623
+ scanptr = fill_scans(scanptr, ncomps, 6, 63, 0, 2);
624
+ /* Successive approximation second pass */
625
+ scanptr = fill_scans(scanptr, ncomps, 1, 63, 2, 1);
626
+ /* Successive approximation final pass */
627
+ scanptr = fill_dc_scans(scanptr, ncomps, 1, 0);
628
+ scanptr = fill_scans(scanptr, ncomps, 1, 63, 1, 0);
629
+ }
630
+ }
631
+
632
+ #endif /* C_PROGRESSIVE_SUPPORTED */