poppler 2.2.4-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. checksums.yaml +7 -0
  2. data/README +35 -0
  3. data/Rakefile +75 -0
  4. data/ext/poppler/depend +6 -0
  5. data/ext/poppler/extconf.rb +70 -0
  6. data/ext/poppler/poppler.def +2 -0
  7. data/ext/poppler/rbpoppler-action.c +372 -0
  8. data/ext/poppler/rbpoppler-annotation-callout-line.c +127 -0
  9. data/ext/poppler/rbpoppler-annotation-free-text.c +46 -0
  10. data/ext/poppler/rbpoppler-annotation-mapping.c +72 -0
  11. data/ext/poppler/rbpoppler-annotation-markup.c +98 -0
  12. data/ext/poppler/rbpoppler-annotation-text.c +53 -0
  13. data/ext/poppler/rbpoppler-annotation.c +74 -0
  14. data/ext/poppler/rbpoppler-attachment.c +124 -0
  15. data/ext/poppler/rbpoppler-button-field.c +56 -0
  16. data/ext/poppler/rbpoppler-choice-field.c +131 -0
  17. data/ext/poppler/rbpoppler-color.c +107 -0
  18. data/ext/poppler/rbpoppler-document.c +224 -0
  19. data/ext/poppler/rbpoppler-font-info.c +59 -0
  20. data/ext/poppler/rbpoppler-fonts-iter.c +127 -0
  21. data/ext/poppler/rbpoppler-form-field-mapping.c +44 -0
  22. data/ext/poppler/rbpoppler-form-field.c +98 -0
  23. data/ext/poppler/rbpoppler-image-mapping.c +48 -0
  24. data/ext/poppler/rbpoppler-index-iter.c +128 -0
  25. data/ext/poppler/rbpoppler-link-mapping.c +47 -0
  26. data/ext/poppler/rbpoppler-page-transition.c +59 -0
  27. data/ext/poppler/rbpoppler-page.c +322 -0
  28. data/ext/poppler/rbpoppler-private.h +77 -0
  29. data/ext/poppler/rbpoppler-ps-file.c +66 -0
  30. data/ext/poppler/rbpoppler-rectangle.c +92 -0
  31. data/ext/poppler/rbpoppler-text-field.c +91 -0
  32. data/ext/poppler/rbpoppler.c +111 -0
  33. data/ext/poppler/rbpoppler.h +61 -0
  34. data/ext/poppler/rbpopplerconversions.h +105 -0
  35. data/extconf.rb +49 -0
  36. data/lib/2.0/poppler.so +0 -0
  37. data/lib/2.1/poppler.so +0 -0
  38. data/lib/2.2/poppler.so +0 -0
  39. data/lib/poppler.rb +105 -0
  40. data/sample/number-pdf.rb +32 -0
  41. data/sample/pdf2.rb +132 -0
  42. data/sample/pdf2svg.rb +26 -0
  43. data/sample/pdf2text.rb +16 -0
  44. data/sample/pdfcrop.rb +32 -0
  45. data/sample/pdfdiv.rb +36 -0
  46. data/test/fixtures/image.pdf +0 -0
  47. data/test/fixtures/image.png +0 -0
  48. data/test/poppler-test-utils.rb +58 -0
  49. data/test/run-test.rb +32 -0
  50. data/test/test_annotation.rb +86 -0
  51. data/test/test_color.rb +26 -0
  52. data/test/test_constants.rb +30 -0
  53. data/test/test_document.rb +41 -0
  54. data/test/test_page.rb +42 -0
  55. data/vendor/local/bin/cjpeg.exe +0 -0
  56. data/vendor/local/bin/djpeg.exe +0 -0
  57. data/vendor/local/bin/jpegtran.exe +0 -0
  58. data/vendor/local/bin/libjpeg-9.dll +0 -0
  59. data/vendor/local/bin/libpoppler-48.dll +0 -0
  60. data/vendor/local/bin/libpoppler-cpp-0.dll +0 -0
  61. data/vendor/local/bin/libpoppler-glib-8.dll +0 -0
  62. data/vendor/local/bin/libsqlite3-0.dll +0 -0
  63. data/vendor/local/bin/pdfdetach.exe +0 -0
  64. data/vendor/local/bin/pdffonts.exe +0 -0
  65. data/vendor/local/bin/pdfimages.exe +0 -0
  66. data/vendor/local/bin/pdfinfo.exe +0 -0
  67. data/vendor/local/bin/pdfseparate.exe +0 -0
  68. data/vendor/local/bin/pdftocairo.exe +0 -0
  69. data/vendor/local/bin/pdftohtml.exe +0 -0
  70. data/vendor/local/bin/pdftoppm.exe +0 -0
  71. data/vendor/local/bin/pdftops.exe +0 -0
  72. data/vendor/local/bin/pdftotext.exe +0 -0
  73. data/vendor/local/bin/pdfunite.exe +0 -0
  74. data/vendor/local/bin/rdjpgcom.exe +0 -0
  75. data/vendor/local/bin/sqlite3.exe +0 -0
  76. data/vendor/local/bin/wrjpgcom.exe +0 -0
  77. data/vendor/local/include/jconfig.h +60 -0
  78. data/vendor/local/include/jerror.h +304 -0
  79. data/vendor/local/include/jmorecfg.h +446 -0
  80. data/vendor/local/include/jpeglib.h +1180 -0
  81. data/vendor/local/include/poppler/cpp/poppler-document.h +104 -0
  82. data/vendor/local/include/poppler/cpp/poppler-embedded-file.h +55 -0
  83. data/vendor/local/include/poppler/cpp/poppler-font.h +91 -0
  84. data/vendor/local/include/poppler/cpp/poppler-global.h +111 -0
  85. data/vendor/local/include/poppler/cpp/poppler-image.h +71 -0
  86. data/vendor/local/include/poppler/cpp/poppler-page-renderer.h +66 -0
  87. data/vendor/local/include/poppler/cpp/poppler-page-transition.h +82 -0
  88. data/vendor/local/include/poppler/cpp/poppler-page.h +76 -0
  89. data/vendor/local/include/poppler/cpp/poppler-rectangle.h +84 -0
  90. data/vendor/local/include/poppler/cpp/poppler-toc.h +74 -0
  91. data/vendor/local/include/poppler/cpp/poppler-version.h +39 -0
  92. data/vendor/local/include/poppler/glib/poppler-action.h +316 -0
  93. data/vendor/local/include/poppler/glib/poppler-annot.h +296 -0
  94. data/vendor/local/include/poppler/glib/poppler-attachment.h +87 -0
  95. data/vendor/local/include/poppler/glib/poppler-date.h +30 -0
  96. data/vendor/local/include/poppler/glib/poppler-document.h +299 -0
  97. data/vendor/local/include/poppler/glib/poppler-enums.h +116 -0
  98. data/vendor/local/include/poppler/glib/poppler-features.h +88 -0
  99. data/vendor/local/include/poppler/glib/poppler-form-field.h +111 -0
  100. data/vendor/local/include/poppler/glib/poppler-layer.h +43 -0
  101. data/vendor/local/include/poppler/glib/poppler-media.h +73 -0
  102. data/vendor/local/include/poppler/glib/poppler-movie.h +42 -0
  103. data/vendor/local/include/poppler/glib/poppler-page.h +377 -0
  104. data/vendor/local/include/poppler/glib/poppler-structure-element.h +357 -0
  105. data/vendor/local/include/poppler/glib/poppler.h +250 -0
  106. data/vendor/local/include/sqlite3.h +7494 -0
  107. data/vendor/local/include/sqlite3ext.h +487 -0
  108. data/vendor/local/lib/girepository-1.0/Poppler-0.18.typelib +0 -0
  109. data/vendor/local/lib/libjpeg.a +0 -0
  110. data/vendor/local/lib/libjpeg.dll.a +0 -0
  111. data/vendor/local/lib/libjpeg.la +41 -0
  112. data/vendor/local/lib/libpoppler-cpp.a +0 -0
  113. data/vendor/local/lib/libpoppler-cpp.dll.a +0 -0
  114. data/vendor/local/lib/libpoppler-cpp.la +41 -0
  115. data/vendor/local/lib/libpoppler-glib.a +0 -0
  116. data/vendor/local/lib/libpoppler-glib.dll.a +0 -0
  117. data/vendor/local/lib/libpoppler-glib.la +41 -0
  118. data/vendor/local/lib/libpoppler.a +0 -0
  119. data/vendor/local/lib/libpoppler.dll.a +0 -0
  120. data/vendor/local/lib/libpoppler.la +41 -0
  121. data/vendor/local/lib/libsqlite3.a +0 -0
  122. data/vendor/local/lib/libsqlite3.dll.a +0 -0
  123. data/vendor/local/lib/libsqlite3.la +41 -0
  124. data/vendor/local/lib/pkgconfig/poppler-cairo.pc +9 -0
  125. data/vendor/local/lib/pkgconfig/poppler-cpp.pc +13 -0
  126. data/vendor/local/lib/pkgconfig/poppler-glib.pc +13 -0
  127. data/vendor/local/lib/pkgconfig/poppler-splash.pc +9 -0
  128. data/vendor/local/lib/pkgconfig/poppler.pc +11 -0
  129. data/vendor/local/lib/pkgconfig/sqlite3.pc +13 -0
  130. data/vendor/local/share/gir-1.0/Poppler-0.18.gir +8281 -0
  131. data/vendor/local/share/gtk-doc/html/poppler/PopplerAnnot.html +3221 -0
  132. data/vendor/local/share/gtk-doc/html/poppler/PopplerAttachment.html +267 -0
  133. data/vendor/local/share/gtk-doc/html/poppler/PopplerDocument.html +3328 -0
  134. data/vendor/local/share/gtk-doc/html/poppler/PopplerFormField.html +1403 -0
  135. data/vendor/local/share/gtk-doc/html/poppler/PopplerLayer.html +307 -0
  136. data/vendor/local/share/gtk-doc/html/poppler/PopplerMedia.html +381 -0
  137. data/vendor/local/share/gtk-doc/html/poppler/PopplerMovie.html +197 -0
  138. data/vendor/local/share/gtk-doc/html/poppler/PopplerPage.html +3002 -0
  139. data/vendor/local/share/gtk-doc/html/poppler/PopplerStructureElement.html +3781 -0
  140. data/vendor/local/share/gtk-doc/html/poppler/annotation-glossary.html +63 -0
  141. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-12.html +123 -0
  142. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-14.html +102 -0
  143. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-16.html +180 -0
  144. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-18.html +72 -0
  145. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-20.html +39 -0
  146. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-22.html +64 -0
  147. data/vendor/local/share/gtk-doc/html/poppler/api-index-deprecated.html +39 -0
  148. data/vendor/local/share/gtk-doc/html/poppler/api-index-full.html +1830 -0
  149. data/vendor/local/share/gtk-doc/html/poppler/ch01.html +74 -0
  150. data/vendor/local/share/gtk-doc/html/poppler/home.png +0 -0
  151. data/vendor/local/share/gtk-doc/html/poppler/index.html +85 -0
  152. data/vendor/local/share/gtk-doc/html/poppler/index.sgml +557 -0
  153. data/vendor/local/share/gtk-doc/html/poppler/left-insensitive.png +0 -0
  154. data/vendor/local/share/gtk-doc/html/poppler/left.png +0 -0
  155. data/vendor/local/share/gtk-doc/html/poppler/poppler-PDF-Utility-functions.html +107 -0
  156. data/vendor/local/share/gtk-doc/html/poppler/poppler-PopplerAction.html +796 -0
  157. data/vendor/local/share/gtk-doc/html/poppler/poppler-PopplerColor.html +201 -0
  158. data/vendor/local/share/gtk-doc/html/poppler/poppler-Version-and-Features-Information.html +254 -0
  159. data/vendor/local/share/gtk-doc/html/poppler/poppler-poppler.html +169 -0
  160. data/vendor/local/share/gtk-doc/html/poppler/poppler.devhelp2 +470 -0
  161. data/vendor/local/share/gtk-doc/html/poppler/right-insensitive.png +0 -0
  162. data/vendor/local/share/gtk-doc/html/poppler/right.png +0 -0
  163. data/vendor/local/share/gtk-doc/html/poppler/style.css +476 -0
  164. data/vendor/local/share/gtk-doc/html/poppler/up-insensitive.png +0 -0
  165. data/vendor/local/share/gtk-doc/html/poppler/up.png +0 -0
  166. data/vendor/local/share/license/poppler/AUTHORS +5 -0
  167. data/vendor/local/share/license/poppler/COPYING +339 -0
  168. data/vendor/local/share/man/man1/cjpeg.1 +387 -0
  169. data/vendor/local/share/man/man1/djpeg.1 +252 -0
  170. data/vendor/local/share/man/man1/jpegtran.1 +293 -0
  171. data/vendor/local/share/man/man1/pdfdetach.1 +86 -0
  172. data/vendor/local/share/man/man1/pdffonts.1 +119 -0
  173. data/vendor/local/share/man/man1/pdfimages.1 +260 -0
  174. data/vendor/local/share/man/man1/pdfinfo.1 +152 -0
  175. data/vendor/local/share/man/man1/pdfseparate.1 +49 -0
  176. data/vendor/local/share/man/man1/pdftocairo.1 +295 -0
  177. data/vendor/local/share/man/man1/pdftohtml.1 +107 -0
  178. data/vendor/local/share/man/man1/pdftoppm.1 +170 -0
  179. data/vendor/local/share/man/man1/pdftops.1 +217 -0
  180. data/vendor/local/share/man/man1/pdftotext.1 +137 -0
  181. data/vendor/local/share/man/man1/pdfunite.1 +33 -0
  182. data/vendor/local/share/man/man1/rdjpgcom.1 +63 -0
  183. data/vendor/local/share/man/man1/sqlite3.1 +279 -0
  184. data/vendor/local/share/man/man1/wrjpgcom.1 +103 -0
  185. metadata +254 -0
@@ -0,0 +1,58 @@
1
+ require 'open-uri'
2
+ require 'fileutils'
3
+
4
+ module PopplerTestUtils
5
+ def ensure_dir(dir)
6
+ FileUtils.mkdir_p(dir)
7
+ dir
8
+ end
9
+
10
+ def test_dir
11
+ File.expand_path(File.dirname(__FILE__))
12
+ end
13
+
14
+ def fixtures_dir
15
+ ensure_dir(File.join(test_dir, "fixtures"))
16
+ end
17
+
18
+ def tmp_dir
19
+ ensure_dir(File.join(test_dir, "tmp"))
20
+ end
21
+
22
+ def form_pdf
23
+ file = File.join(fixtures_dir, "form.pdf")
24
+ return file if File.exist?(file)
25
+ pdf = open("http://www.irs.gov/pub/irs-pdf/fw9.pdf").read
26
+ File.open(file, "wb") do |output|
27
+ output.print(pdf)
28
+ end
29
+ file
30
+ end
31
+
32
+ def image_pdf
33
+ File.join(fixtures_dir, "image.pdf")
34
+ end
35
+
36
+ def image_png
37
+ File.join(fixtures_dir, "image.png")
38
+ end
39
+
40
+ def later_version?(major, minor, micro=nil)
41
+ micro ||= 0
42
+ (Poppler::BUILD_VERSION <=> [major, minor, micro]) >= 0
43
+ end
44
+
45
+ def only_poppler_version(major, minor, micro=nil)
46
+ micro ||= 0
47
+ unless later_version?(major, minor, micro)
48
+ omit("Require Poppler >= #{major}.#{minor}.#{micro}")
49
+ end
50
+ end
51
+
52
+ def only_old_poppler_version(major, minor, micro=nil)
53
+ micro ||= 0
54
+ if later_version?(major, minor, micro)
55
+ omit("Require Poppler < #{major}.#{minor}.#{micro}")
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
4
+
5
+ have_make = system("which make > /dev/null")
6
+
7
+ glib_dir = File.expand_path(File.join(base_dir, "..", "glib2"))
8
+ gdk_pixbuf_dir = File.expand_path(File.join(base_dir, "..", "gdk_pixbuf2"))
9
+ pango_dir = File.join(File.join(base_dir, ".." , "pango"))
10
+
11
+ $LOAD_PATH.unshift(File.join(glib_dir, "test"))
12
+ require 'glib-test-init'
13
+
14
+ [[gdk_pixbuf_dir, "gdk_pixbuf2"],
15
+ [pango_dir, "pango"],
16
+ [glib_dir, "glib2"],
17
+ [base_dir, "poppler"]].each do |dir, module_name|
18
+ if have_make
19
+ system("cd #{dir.dump} && make > /dev/null") or exit(false)
20
+ end
21
+ $LOAD_PATH.unshift(File.join(dir, "ext", module_name))
22
+ $LOAD_PATH.unshift(File.join(dir, "lib"))
23
+ end
24
+ require "poppler"
25
+
26
+ $LOAD_PATH.unshift(File.join(base_dir, "test"))
27
+ require 'poppler-test-utils'
28
+ class Test::Unit::TestCase
29
+ include PopplerTestUtils
30
+ end
31
+
32
+ exit Test::Unit::AutoRunner.run(true)
@@ -0,0 +1,86 @@
1
+ class TestAnnotation < Test::Unit::TestCase
2
+ def test_type
3
+ only_poppler_version(0, 7, 2)
4
+ assert_kind_of(Poppler::AnnotationType, annotation.type)
5
+ end
6
+
7
+ def test_contents
8
+ only_poppler_version(0, 7, 2)
9
+ assert_nil(annotation.contents)
10
+ end
11
+
12
+ def test_name
13
+ only_poppler_version(0, 7, 2)
14
+ assert_nil(annotation.name)
15
+ end
16
+
17
+ def test_modified
18
+ only_poppler_version(0, 7, 2)
19
+ assert_nil(annotation.modified)
20
+ end
21
+
22
+ def test_flags
23
+ only_poppler_version(0, 7, 2)
24
+ assert_kind_of(Poppler::AnnotationFlag, annotation.flags)
25
+ end
26
+
27
+ def test_color
28
+ only_poppler_version(0, 7, 2)
29
+ assert_nil(annotation.color)
30
+ end
31
+
32
+ def test_markup
33
+ only_poppler_version(0, 7, 2)
34
+ # We don't have a PDF that has annotation markup...
35
+ assert_method_defined(Poppler::AnnotationMarkup, :label)
36
+ assert_method_defined(Poppler::AnnotationMarkup, :popup_is_open?)
37
+ assert_method_defined(Poppler::AnnotationMarkup, :opacity)
38
+ assert_method_defined(Poppler::AnnotationMarkup, :date)
39
+ assert_method_defined(Poppler::AnnotationMarkup, :subject)
40
+ assert_method_defined(Poppler::AnnotationMarkup, :reply_to)
41
+ assert_method_defined(Poppler::AnnotationMarkup, :external_data)
42
+ end
43
+
44
+ def test_text
45
+ only_poppler_version(0, 7, 2)
46
+ # We don't have a PDF that has annotation text...
47
+ assert_method_defined(Poppler::AnnotationText, :open?)
48
+ assert_method_defined(Poppler::AnnotationText, :icon)
49
+ assert_method_defined(Poppler::AnnotationText, :state)
50
+ end
51
+
52
+ def test_free_text
53
+ only_poppler_version(0, 7, 2)
54
+ # We don't have a PDF that has annotation free text...
55
+ assert_method_defined(Poppler::AnnotationFreeText, :quadding)
56
+ assert_method_defined(Poppler::AnnotationFreeText, :callout_line)
57
+ end
58
+
59
+ def test_callout_line
60
+ only_poppler_version(0, 7, 2)
61
+ callout_line = Poppler::AnnotationCalloutLine.new(true,
62
+ 1.1, 2.2, 3.3,
63
+ 4.4, 5.5, 6.6)
64
+ assert(callout_line.multiline?)
65
+ assert_equal(1.1, callout_line.x1)
66
+ assert_equal(2.2, callout_line.y1)
67
+ assert_equal(3.3, callout_line.x2)
68
+ assert_equal(4.4, callout_line.y2)
69
+ assert_equal(5.5, callout_line.x3)
70
+ assert_equal(6.6, callout_line.y3)
71
+ assert_equal([true, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6], callout_line.to_a)
72
+ end
73
+
74
+ private
75
+ def annotation
76
+ document = Poppler::Document.new(form_pdf)
77
+ page = document[0]
78
+ page.annotation_mapping[0].annotation
79
+ end
80
+
81
+ def assert_method_defined(object, method)
82
+ assert do
83
+ object.method_defined?(method)
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,26 @@
1
+ class TestColor < Test::Unit::TestCase
2
+ def test_initialize
3
+ only_poppler_version(0, 7, 2)
4
+ rose = Poppler::Color.new(65535, 0, 32639)
5
+ assert_equal([65535, 0, 32639], [rose.red, rose.green, rose.blue])
6
+ assert_equal([65535, 0, 32639], rose.to_a)
7
+ end
8
+
9
+ def test_accessor
10
+ only_poppler_version(0, 7, 2)
11
+ white = Poppler::Color.new(65535, 65535, 65535)
12
+ red = white.dup
13
+ red.green = 0
14
+ red.blue = 0
15
+ assert_equal([65535, 65535, 65535], [white.red, white.green, white.blue])
16
+ assert_equal([65535, 0, 0], [red.red, red.green, red.blue])
17
+ end
18
+
19
+ def test_inspect
20
+ only_poppler_version(0, 7, 2)
21
+ color = Poppler::Color.new(0, 32767, 65535)
22
+ rgb = '[0, 32767, 65535]'
23
+ assert_match(/\A#<Poppler::Color:.*: #{Regexp.escape(rgb)}>\z/,
24
+ color.inspect)
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ class TestConstants < Test::Unit::TestCase
2
+ def test_annotation
3
+ if later_version?(0, 7, 2)
4
+ assertion = :assert_const_defined
5
+ else
6
+ assertion = :assert_not_const_defined
7
+ end
8
+ send(assertion, Poppler, :AnnotationType)
9
+ if assertion == :assert_const_defined
10
+ assert_equal("3d", Poppler::AnnotationType::TYPE_3D.nick)
11
+ end
12
+ send(assertion, Poppler, :AnnotationFlag)
13
+ send(assertion, Poppler, :AnnotationMarkupReplyType)
14
+ send(assertion, Poppler, :AnnotationExternalDataType)
15
+ if assertion == :assert_const_defined
16
+ assert_equal("3d", Poppler::AnnotationExternalDataType::TYPE_3D.nick)
17
+ end
18
+ if later_version?(0, 9, 0)
19
+ assert_not_const_defined(Poppler, :AnnotationTextIcon)
20
+ else
21
+ send(assertion, Poppler, :AnnotationTextIcon)
22
+ end
23
+ send(assertion, Poppler, :AnnotationTextState)
24
+ send(assertion, Poppler, :AnnotationFreeTextQuadding)
25
+ end
26
+
27
+ def test_permissions
28
+ assert_const_defined(Poppler, :Permissions)
29
+ end
30
+ end
@@ -0,0 +1,41 @@
1
+ class TestDocument < Test::Unit::TestCase
2
+ def test_save
3
+ saved_pdf = File.join(tmp_dir, "saved.pdf")
4
+ FileUtils.rm_f(saved_pdf)
5
+
6
+ document = Poppler::Document.new(form_pdf)
7
+ find_first_text_field(document).text = "XXX"
8
+ assert(document.save(saved_pdf))
9
+ assert(File.exist?(saved_pdf))
10
+
11
+ only_poppler_version(0, 8, 2)
12
+ reread_document = Poppler::Document.new(saved_pdf)
13
+ assert_equal("XXX", find_first_text_field(reread_document).text)
14
+ end
15
+
16
+ def test_save_a_copy
17
+ only_poppler_version(0, 7, 2)
18
+ copied_pdf = File.join(tmp_dir, "copied.pdf")
19
+ FileUtils.rm_f(copied_pdf)
20
+
21
+ document = Poppler::Document.new(form_pdf)
22
+ first_text_field = find_first_text_field(document)
23
+ default_text = first_text_field.text
24
+ first_text_field.text = "XXX"
25
+ assert(document.save_a_copy(copied_pdf))
26
+ assert(File.exist?(copied_pdf))
27
+
28
+ reread_document = Poppler::Document.new(copied_pdf)
29
+ assert_equal(default_text, find_first_text_field(reread_document).text)
30
+ end
31
+
32
+ private
33
+ def find_first_text_field(document)
34
+ document.each do |page|
35
+ page.form_field_mapping.each do |mapping|
36
+ field = mapping.field
37
+ return field if field.is_a?(Poppler::TextField)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,42 @@
1
+ class TestPage < Test::Unit::TestCase
2
+ def test_get_image
3
+ omit("We don't have PDF that has image...")
4
+ document = Poppler::Document.new(image_pdf)
5
+ page, mapping = find_first_image_mapping(document)
6
+ assert_kind_of(Cairo::ImageSurface, page.get_image(mapping.image_id))
7
+ assert_kind_of(Cairo::ImageSurface, mapping.image)
8
+ end
9
+
10
+ def test_selection_region
11
+ document = Poppler::Document.new(form_pdf)
12
+ page = document[0]
13
+ rectangle = Poppler::Rectangle.new(0, 0, *page.size)
14
+ region = page.get_selection_region(0.5, :word, rectangle)
15
+ if later_version?(0, 7, 2)
16
+ assert_kind_of(Poppler::Rectangle, region[0])
17
+ else
18
+ assert_kind_of(Gdk::Region, region)
19
+ end
20
+ end
21
+
22
+ def test_annotation_mapping
23
+ only_poppler_version(0, 7, 2)
24
+ document = Poppler::Document.new(form_pdf)
25
+ page = document[0]
26
+ assert_equal([Poppler::AnnotationMapping],
27
+ page.annotation_mapping.collect {|mapping| mapping.class}.uniq)
28
+ mapping = page.annotation_mapping[0]
29
+ assert_kind_of(Poppler::Rectangle, mapping.area)
30
+ assert_kind_of(Poppler::Annotation, mapping.annotation)
31
+ end
32
+
33
+ private
34
+ def find_first_image_mapping(document)
35
+ document.each do |page|
36
+ page.image_mapping.each do |mapping|
37
+ return [page, mapping]
38
+ end
39
+ end
40
+ nil
41
+ end
42
+ end
@@ -0,0 +1,60 @@
1
+ /* jconfig.h. Generated from jconfig.cfg by configure. */
2
+ /* jconfig.cfg --- source file edited by configure script */
3
+ /* see jconfig.txt for explanations */
4
+
5
+ #define HAVE_PROTOTYPES 1
6
+ #define HAVE_UNSIGNED_CHAR 1
7
+ #define HAVE_UNSIGNED_SHORT 1
8
+ /* #undef void */
9
+ /* #undef const */
10
+ /* #undef CHAR_IS_UNSIGNED */
11
+ #define HAVE_STDDEF_H 1
12
+ #define HAVE_STDLIB_H 1
13
+ #define HAVE_LOCALE_H 1
14
+ /* #undef NEED_BSD_STRINGS */
15
+ /* #undef NEED_SYS_TYPES_H */
16
+ /* #undef NEED_FAR_POINTERS */
17
+ /* #undef NEED_SHORT_EXTERNAL_NAMES */
18
+ /* Define this if you get warnings about undefined structures. */
19
+ /* #undef INCOMPLETE_TYPES_BROKEN */
20
+
21
+ /* Define "boolean" as unsigned char, not enum, on Windows systems. */
22
+ #ifdef _WIN32
23
+ #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */
24
+ typedef unsigned char boolean;
25
+ #endif
26
+ #ifndef FALSE /* in case these macros already exist */
27
+ #define FALSE 0 /* values of boolean */
28
+ #endif
29
+ #ifndef TRUE
30
+ #define TRUE 1
31
+ #endif
32
+ #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
33
+ #endif
34
+
35
+ #ifdef JPEG_INTERNALS
36
+
37
+ /* #undef RIGHT_SHIFT_IS_UNSIGNED */
38
+ #define INLINE __inline__
39
+ /* These are for configuring the JPEG memory manager. */
40
+ /* #undef DEFAULT_MAX_MEM */
41
+ /* #undef NO_MKTEMP */
42
+
43
+ #endif /* JPEG_INTERNALS */
44
+
45
+ #ifdef JPEG_CJPEG_DJPEG
46
+
47
+ #define BMP_SUPPORTED /* BMP image file format */
48
+ #define GIF_SUPPORTED /* GIF image file format */
49
+ #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
50
+ /* #undef RLE_SUPPORTED */
51
+ #define TARGA_SUPPORTED /* Targa image file format */
52
+
53
+ /* #undef TWO_FILE_COMMANDLINE */
54
+ /* #undef NEED_SIGNAL_CATCHER */
55
+ /* #undef DONT_USE_B_MODE */
56
+
57
+ /* Define this if you want percent-done progress reports from cjpeg/djpeg. */
58
+ /* #undef PROGRESS_REPORT */
59
+
60
+ #endif /* JPEG_CJPEG_DJPEG */
@@ -0,0 +1,304 @@
1
+ /*
2
+ * jerror.h
3
+ *
4
+ * Copyright (C) 1994-1997, Thomas G. Lane.
5
+ * Modified 1997-2012 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 defines the error and message codes for the JPEG library.
10
+ * Edit this file to add new codes, or to translate the message strings to
11
+ * some other language.
12
+ * A set of error-reporting macros are defined too. Some applications using
13
+ * the JPEG library may wish to include this file to get the error codes
14
+ * and/or the macros.
15
+ */
16
+
17
+ /*
18
+ * To define the enum list of message codes, include this file without
19
+ * defining macro JMESSAGE. To create a message string table, include it
20
+ * again with a suitable JMESSAGE definition (see jerror.c for an example).
21
+ */
22
+ #ifndef JMESSAGE
23
+ #ifndef JERROR_H
24
+ /* First time through, define the enum list */
25
+ #define JMAKE_ENUM_LIST
26
+ #else
27
+ /* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
28
+ #define JMESSAGE(code,string)
29
+ #endif /* JERROR_H */
30
+ #endif /* JMESSAGE */
31
+
32
+ #ifdef JMAKE_ENUM_LIST
33
+
34
+ typedef enum {
35
+
36
+ #define JMESSAGE(code,string) code ,
37
+
38
+ #endif /* JMAKE_ENUM_LIST */
39
+
40
+ JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
41
+
42
+ /* For maintenance convenience, list is alphabetical by message code name */
43
+ JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
44
+ JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
45
+ JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
46
+ JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
47
+ JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request")
48
+ JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range")
49
+ JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported")
50
+ JMESSAGE(JERR_BAD_DROP_SAMPLING,
51
+ "Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c")
52
+ JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition")
53
+ JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
54
+ JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
55
+ JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
56
+ JMESSAGE(JERR_BAD_LIB_VERSION,
57
+ "Wrong JPEG library version: library is %d, caller expects %d")
58
+ JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
59
+ JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
60
+ JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
61
+ JMESSAGE(JERR_BAD_PROGRESSION,
62
+ "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d")
63
+ JMESSAGE(JERR_BAD_PROG_SCRIPT,
64
+ "Invalid progressive parameters at scan script entry %d")
65
+ JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
66
+ JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d")
67
+ JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
68
+ JMESSAGE(JERR_BAD_STRUCT_SIZE,
69
+ "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u")
70
+ JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
71
+ JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
72
+ JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
73
+ JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
74
+ JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
75
+ JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
76
+ JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
77
+ JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
78
+ JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
79
+ JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
80
+ JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
81
+ JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
82
+ JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
83
+ JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
84
+ JMESSAGE(JERR_FILE_READ, "Input file read error")
85
+ JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
86
+ JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
87
+ JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
88
+ JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
89
+ JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
90
+ JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
91
+ JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
92
+ JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
93
+ "Cannot transcode due to multiple use of quantization table %d")
94
+ JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
95
+ JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
96
+ JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
97
+ JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
98
+ JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined")
99
+ JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
100
+ JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
101
+ JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
102
+ JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
103
+ JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
104
+ JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
105
+ JMESSAGE(JERR_QUANT_COMPONENTS,
106
+ "Cannot quantize more than %d color components")
107
+ JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
108
+ JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
109
+ JMESSAGE(JERR_SOF_BEFORE, "Invalid JPEG file structure: %s before SOF")
110
+ JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
111
+ JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
112
+ JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
113
+ JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
114
+ JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
115
+ JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
116
+ JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
117
+ JMESSAGE(JERR_TFILE_WRITE,
118
+ "Write failed on temporary file --- out of disk space?")
119
+ JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
120
+ JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
121
+ JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
122
+ JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
123
+ JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
124
+ JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
125
+ JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
126
+ JMESSAGE(JMSG_VERSION, JVERSION)
127
+ JMESSAGE(JTRC_16BIT_TABLES,
128
+ "Caution: quantization tables are too coarse for baseline JPEG")
129
+ JMESSAGE(JTRC_ADOBE,
130
+ "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
131
+ JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
132
+ JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
133
+ JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
134
+ JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
135
+ JMESSAGE(JTRC_DQT, "Define Quantization Table %d precision %d")
136
+ JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
137
+ JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
138
+ JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
139
+ JMESSAGE(JTRC_EOI, "End Of Image")
140
+ JMESSAGE(JTRC_HUFFBITS, " %3d %3d %3d %3d %3d %3d %3d %3d")
141
+ JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d %d")
142
+ JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
143
+ "Warning: thumbnail image size does not match data length %u")
144
+ JMESSAGE(JTRC_JFIF_EXTENSION,
145
+ "JFIF extension marker: type 0x%02x, length %u")
146
+ JMESSAGE(JTRC_JFIF_THUMBNAIL, " with %d x %d thumbnail image")
147
+ JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u")
148
+ JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
149
+ JMESSAGE(JTRC_QUANTVALS, " %4u %4u %4u %4u %4u %4u %4u %4u")
150
+ JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
151
+ JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
152
+ JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
153
+ JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
154
+ JMESSAGE(JTRC_RST, "RST%d")
155
+ JMESSAGE(JTRC_SMOOTH_NOTIMPL,
156
+ "Smoothing not supported with nonstandard sampling ratios")
157
+ JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
158
+ JMESSAGE(JTRC_SOF_COMPONENT, " Component %d: %dhx%dv q=%d")
159
+ JMESSAGE(JTRC_SOI, "Start of Image")
160
+ JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
161
+ JMESSAGE(JTRC_SOS_COMPONENT, " Component %d: dc=%d ac=%d")
162
+ JMESSAGE(JTRC_SOS_PARAMS, " Ss=%d, Se=%d, Ah=%d, Al=%d")
163
+ JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
164
+ JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
165
+ JMESSAGE(JTRC_THUMB_JPEG,
166
+ "JFIF extension marker: JPEG-compressed thumbnail image, length %u")
167
+ JMESSAGE(JTRC_THUMB_PALETTE,
168
+ "JFIF extension marker: palette thumbnail image, length %u")
169
+ JMESSAGE(JTRC_THUMB_RGB,
170
+ "JFIF extension marker: RGB thumbnail image, length %u")
171
+ JMESSAGE(JTRC_UNKNOWN_IDS,
172
+ "Unrecognized component IDs %d %d %d, assuming YCbCr")
173
+ JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
174
+ JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
175
+ JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
176
+ JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code")
177
+ JMESSAGE(JWRN_BOGUS_PROGRESSION,
178
+ "Inconsistent progression sequence for component %d coefficient %d")
179
+ JMESSAGE(JWRN_EXTRANEOUS_DATA,
180
+ "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
181
+ JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
182
+ JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
183
+ JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d")
184
+ JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
185
+ JMESSAGE(JWRN_MUST_RESYNC,
186
+ "Corrupt JPEG data: found marker 0x%02x instead of RST%d")
187
+ JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
188
+ JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
189
+
190
+ #ifdef JMAKE_ENUM_LIST
191
+
192
+ JMSG_LASTMSGCODE
193
+ } J_MESSAGE_CODE;
194
+
195
+ #undef JMAKE_ENUM_LIST
196
+ #endif /* JMAKE_ENUM_LIST */
197
+
198
+ /* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
199
+ #undef JMESSAGE
200
+
201
+
202
+ #ifndef JERROR_H
203
+ #define JERROR_H
204
+
205
+ /* Macros to simplify using the error and trace message stuff */
206
+ /* The first parameter is either type of cinfo pointer */
207
+
208
+ /* Fatal errors (print message and exit) */
209
+ #define ERREXIT(cinfo,code) \
210
+ ((cinfo)->err->msg_code = (code), \
211
+ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
212
+ #define ERREXIT1(cinfo,code,p1) \
213
+ ((cinfo)->err->msg_code = (code), \
214
+ (cinfo)->err->msg_parm.i[0] = (p1), \
215
+ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
216
+ #define ERREXIT2(cinfo,code,p1,p2) \
217
+ ((cinfo)->err->msg_code = (code), \
218
+ (cinfo)->err->msg_parm.i[0] = (p1), \
219
+ (cinfo)->err->msg_parm.i[1] = (p2), \
220
+ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
221
+ #define ERREXIT3(cinfo,code,p1,p2,p3) \
222
+ ((cinfo)->err->msg_code = (code), \
223
+ (cinfo)->err->msg_parm.i[0] = (p1), \
224
+ (cinfo)->err->msg_parm.i[1] = (p2), \
225
+ (cinfo)->err->msg_parm.i[2] = (p3), \
226
+ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
227
+ #define ERREXIT4(cinfo,code,p1,p2,p3,p4) \
228
+ ((cinfo)->err->msg_code = (code), \
229
+ (cinfo)->err->msg_parm.i[0] = (p1), \
230
+ (cinfo)->err->msg_parm.i[1] = (p2), \
231
+ (cinfo)->err->msg_parm.i[2] = (p3), \
232
+ (cinfo)->err->msg_parm.i[3] = (p4), \
233
+ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
234
+ #define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6) \
235
+ ((cinfo)->err->msg_code = (code), \
236
+ (cinfo)->err->msg_parm.i[0] = (p1), \
237
+ (cinfo)->err->msg_parm.i[1] = (p2), \
238
+ (cinfo)->err->msg_parm.i[2] = (p3), \
239
+ (cinfo)->err->msg_parm.i[3] = (p4), \
240
+ (cinfo)->err->msg_parm.i[4] = (p5), \
241
+ (cinfo)->err->msg_parm.i[5] = (p6), \
242
+ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
243
+ #define ERREXITS(cinfo,code,str) \
244
+ ((cinfo)->err->msg_code = (code), \
245
+ strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
246
+ (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
247
+
248
+ #define MAKESTMT(stuff) do { stuff } while (0)
249
+
250
+ /* Nonfatal errors (we can keep going, but the data is probably corrupt) */
251
+ #define WARNMS(cinfo,code) \
252
+ ((cinfo)->err->msg_code = (code), \
253
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
254
+ #define WARNMS1(cinfo,code,p1) \
255
+ ((cinfo)->err->msg_code = (code), \
256
+ (cinfo)->err->msg_parm.i[0] = (p1), \
257
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
258
+ #define WARNMS2(cinfo,code,p1,p2) \
259
+ ((cinfo)->err->msg_code = (code), \
260
+ (cinfo)->err->msg_parm.i[0] = (p1), \
261
+ (cinfo)->err->msg_parm.i[1] = (p2), \
262
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
263
+
264
+ /* Informational/debugging messages */
265
+ #define TRACEMS(cinfo,lvl,code) \
266
+ ((cinfo)->err->msg_code = (code), \
267
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
268
+ #define TRACEMS1(cinfo,lvl,code,p1) \
269
+ ((cinfo)->err->msg_code = (code), \
270
+ (cinfo)->err->msg_parm.i[0] = (p1), \
271
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
272
+ #define TRACEMS2(cinfo,lvl,code,p1,p2) \
273
+ ((cinfo)->err->msg_code = (code), \
274
+ (cinfo)->err->msg_parm.i[0] = (p1), \
275
+ (cinfo)->err->msg_parm.i[1] = (p2), \
276
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
277
+ #define TRACEMS3(cinfo,lvl,code,p1,p2,p3) \
278
+ MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
279
+ _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
280
+ (cinfo)->err->msg_code = (code); \
281
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
282
+ #define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4) \
283
+ MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
284
+ _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
285
+ (cinfo)->err->msg_code = (code); \
286
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
287
+ #define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5) \
288
+ MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
289
+ _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
290
+ _mp[4] = (p5); \
291
+ (cinfo)->err->msg_code = (code); \
292
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
293
+ #define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8) \
294
+ MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
295
+ _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
296
+ _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
297
+ (cinfo)->err->msg_code = (code); \
298
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
299
+ #define TRACEMSS(cinfo,lvl,code,str) \
300
+ ((cinfo)->err->msg_code = (code), \
301
+ strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
302
+ (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
303
+
304
+ #endif /* JERROR_H */