prawn 1.1.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (309) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.yardopts +1 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -9
  6. data/Rakefile +9 -40
  7. data/lib/prawn/document/bounding_box.rb +54 -40
  8. data/lib/prawn/document/column_box.rb +8 -10
  9. data/lib/prawn/document/internals.rb +39 -146
  10. data/lib/prawn/document/span.rb +23 -17
  11. data/lib/prawn/document.rb +217 -182
  12. data/lib/prawn/encoding.rb +69 -101
  13. data/lib/prawn/errors.rb +47 -43
  14. data/lib/prawn/font.rb +124 -104
  15. data/lib/prawn/font_metric_cache.rb +23 -21
  16. data/lib/prawn/fonts/afm.rb +292 -0
  17. data/lib/prawn/{font → fonts}/dfont.rb +5 -12
  18. data/lib/prawn/fonts/otf.rb +11 -0
  19. data/lib/prawn/fonts/ttc.rb +36 -0
  20. data/lib/prawn/{font → fonts}/ttf.rb +140 -88
  21. data/lib/prawn/graphics/blend_mode.rb +65 -0
  22. data/lib/prawn/graphics/cap_style.rb +5 -5
  23. data/lib/prawn/graphics/color.rb +46 -44
  24. data/lib/prawn/graphics/dash.rb +27 -11
  25. data/lib/prawn/graphics/join_style.rb +11 -6
  26. data/lib/prawn/graphics/patterns.rb +220 -78
  27. data/lib/prawn/graphics/transformation.rb +20 -12
  28. data/lib/prawn/graphics/transparency.rb +20 -18
  29. data/lib/prawn/graphics.rb +153 -115
  30. data/lib/prawn/grid.rb +93 -50
  31. data/lib/prawn/image_handler.rb +4 -4
  32. data/lib/prawn/images/image.rb +3 -2
  33. data/lib/prawn/images/jpg.rb +31 -24
  34. data/lib/prawn/images/png.rb +101 -68
  35. data/lib/prawn/images.rb +64 -56
  36. data/lib/prawn/measurement_extensions.rb +10 -9
  37. data/lib/prawn/measurements.rb +20 -23
  38. data/lib/prawn/outline.rb +96 -75
  39. data/lib/prawn/repeater.rb +16 -16
  40. data/lib/prawn/security/arcfour.rb +2 -2
  41. data/lib/prawn/security.rb +100 -85
  42. data/lib/prawn/soft_mask.rb +37 -38
  43. data/lib/prawn/stamp.rb +28 -13
  44. data/lib/prawn/text/box.rb +24 -29
  45. data/lib/prawn/text/formatted/arranger.rb +108 -63
  46. data/lib/prawn/text/formatted/box.rb +187 -124
  47. data/lib/prawn/text/formatted/fragment.rb +24 -20
  48. data/lib/prawn/text/formatted/line_wrap.rb +133 -73
  49. data/lib/prawn/text/formatted/parser.rb +147 -127
  50. data/lib/prawn/text/formatted/wrap.rb +48 -35
  51. data/lib/prawn/text/formatted.rb +5 -5
  52. data/lib/prawn/text.rb +103 -68
  53. data/lib/prawn/transformation_stack.rb +44 -0
  54. data/lib/prawn/utilities.rb +10 -22
  55. data/lib/prawn/version.rb +5 -0
  56. data/lib/prawn/view.rb +101 -0
  57. data/lib/prawn.rb +39 -54
  58. data/manual/basic_concepts/adding_pages.rb +6 -7
  59. data/manual/basic_concepts/basic_concepts.rb +34 -25
  60. data/manual/basic_concepts/creation.rb +10 -11
  61. data/manual/basic_concepts/cursor.rb +4 -5
  62. data/manual/basic_concepts/measurement.rb +8 -9
  63. data/manual/basic_concepts/origin.rb +5 -6
  64. data/manual/basic_concepts/other_cursor_helpers.rb +11 -12
  65. data/manual/basic_concepts/view.rb +48 -0
  66. data/manual/bounding_box/bounding_box.rb +30 -28
  67. data/manual/bounding_box/bounds.rb +12 -13
  68. data/manual/bounding_box/canvas.rb +7 -8
  69. data/manual/bounding_box/creation.rb +6 -7
  70. data/manual/bounding_box/indentation.rb +14 -15
  71. data/manual/bounding_box/nesting.rb +25 -18
  72. data/manual/bounding_box/russian_boxes.rb +18 -18
  73. data/manual/bounding_box/stretchy.rb +12 -14
  74. data/manual/contents.rb +28 -22
  75. data/manual/cover.rb +33 -32
  76. data/manual/document_and_page_options/background.rb +15 -13
  77. data/manual/document_and_page_options/document_and_page_options.rb +24 -22
  78. data/manual/document_and_page_options/metadata.rb +20 -18
  79. data/manual/document_and_page_options/page_margins.rb +18 -20
  80. data/manual/document_and_page_options/page_size.rb +13 -13
  81. data/manual/document_and_page_options/print_scaling.rb +18 -15
  82. data/manual/example_helper.rb +5 -4
  83. data/manual/graphics/blend_mode.rb +52 -0
  84. data/manual/graphics/circle_and_ellipse.rb +4 -5
  85. data/manual/graphics/color.rb +7 -9
  86. data/manual/graphics/common_lines.rb +7 -8
  87. data/manual/graphics/fill_and_stroke.rb +5 -6
  88. data/manual/graphics/fill_rules.rb +12 -11
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +46 -40
  91. data/manual/graphics/helper.rb +19 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +8 -9
  94. data/manual/graphics/polygon.rb +6 -8
  95. data/manual/graphics/rectangle.rb +4 -5
  96. data/manual/graphics/rotate.rb +6 -9
  97. data/manual/graphics/scale.rb +14 -13
  98. data/manual/graphics/soft_masks.rb +4 -6
  99. data/manual/graphics/stroke_cap.rb +7 -8
  100. data/manual/graphics/stroke_dash.rb +15 -16
  101. data/manual/graphics/stroke_join.rb +6 -7
  102. data/manual/graphics/translate.rb +10 -10
  103. data/manual/graphics/transparency.rb +7 -9
  104. data/manual/how_to_read_this_manual.rb +8 -9
  105. data/manual/images/absolute_position.rb +6 -7
  106. data/manual/images/fit.rb +7 -8
  107. data/manual/images/horizontal.rb +10 -11
  108. data/manual/images/images.rb +28 -27
  109. data/manual/images/plain_image.rb +5 -6
  110. data/manual/images/scale.rb +9 -10
  111. data/manual/images/vertical.rb +16 -14
  112. data/manual/images/width_and_height.rb +10 -11
  113. data/manual/layout/boxes.rb +10 -11
  114. data/manual/layout/content.rb +9 -10
  115. data/manual/layout/layout.rb +17 -18
  116. data/manual/layout/simple_grid.rb +6 -7
  117. data/manual/outline/add_subsection_to.rb +20 -21
  118. data/manual/outline/insert_section_after.rb +15 -16
  119. data/manual/outline/outline.rb +22 -21
  120. data/manual/outline/sections_and_pages.rb +17 -18
  121. data/manual/repeatable_content/alternate_page_numbering.rb +36 -0
  122. data/manual/repeatable_content/page_numbering.rb +17 -16
  123. data/manual/repeatable_content/repeatable_content.rb +27 -23
  124. data/manual/repeatable_content/repeater.rb +15 -16
  125. data/manual/repeatable_content/stamp.rb +14 -15
  126. data/manual/security/encryption.rb +8 -11
  127. data/manual/security/permissions.rb +20 -15
  128. data/manual/security/security.rb +18 -18
  129. data/manual/table.rb +16 -0
  130. data/manual/text/alignment.rb +16 -17
  131. data/manual/text/color.rb +12 -12
  132. data/manual/text/column_box.rb +9 -11
  133. data/manual/text/fallback_fonts.rb +25 -21
  134. data/manual/text/font.rb +11 -12
  135. data/manual/text/font_size.rb +13 -14
  136. data/manual/text/font_style.rb +10 -8
  137. data/manual/text/formatted_callbacks.rb +33 -23
  138. data/manual/text/formatted_text.rb +36 -25
  139. data/manual/text/free_flowing_text.rb +22 -23
  140. data/manual/text/inline.rb +18 -19
  141. data/manual/text/kerning_and_character_spacing.rb +14 -15
  142. data/manual/text/leading.rb +7 -8
  143. data/manual/text/line_wrapping.rb +37 -18
  144. data/manual/text/paragraph_indentation.rb +15 -10
  145. data/manual/text/positioned_text.rb +16 -17
  146. data/manual/text/registering_families.rb +27 -24
  147. data/manual/text/rendering_and_color.rb +9 -10
  148. data/manual/text/right_to_left_text.rb +30 -19
  149. data/manual/text/rotation.rb +33 -24
  150. data/manual/text/single_usage.rb +8 -9
  151. data/manual/text/text.rb +56 -54
  152. data/manual/text/text_box_excess.rb +20 -17
  153. data/manual/text/text_box_extensions.rb +18 -15
  154. data/manual/text/text_box_overflow.rb +24 -17
  155. data/manual/text/utf8.rb +12 -13
  156. data/manual/text/win_ansi_charset.rb +28 -25
  157. data/prawn.gemspec +45 -50
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +550 -0
  160. data/spec/prawn/document/column_box_spec.rb +75 -0
  161. data/spec/prawn/document/security_spec.rb +176 -0
  162. data/spec/prawn/document_annotations_spec.rb +76 -0
  163. data/spec/prawn/document_destinations_spec.rb +15 -0
  164. data/spec/prawn/document_grid_spec.rb +99 -0
  165. data/spec/prawn/document_reference_spec.rb +27 -0
  166. data/spec/prawn/document_span_spec.rb +44 -0
  167. data/spec/prawn/document_spec.rb +805 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +544 -0
  170. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  171. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  172. data/spec/prawn/graphics_spec.rb +872 -0
  173. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  174. data/spec/prawn/image_handler_spec.rb +53 -0
  175. data/spec/prawn/images/jpg_spec.rb +20 -0
  176. data/spec/prawn/images/png_spec.rb +283 -0
  177. data/spec/prawn/images_spec.rb +229 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +512 -0
  180. data/spec/prawn/repeater_spec.rb +166 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +173 -0
  183. data/spec/prawn/text/box_spec.rb +1110 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +849 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +495 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +150 -0
  190. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  191. data/spec/prawn/text_spacing_spec.rb +95 -0
  192. data/spec/prawn/text_spec.rb +603 -0
  193. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  194. data/spec/prawn/transformation_stack_spec.rb +66 -0
  195. data/spec/prawn/view_spec.rb +63 -0
  196. data/spec/prawn_manual_spec.rb +35 -0
  197. data/spec/spec_helper.rb +19 -25
  198. data.tar.gz.sig +0 -0
  199. metadata +113 -276
  200. metadata.gz.sig +0 -0
  201. data/data/encodings/win_ansi.txt +0 -29
  202. data/data/images/16bit.alpha +0 -0
  203. data/data/images/16bit.color +0 -0
  204. data/data/images/16bit.png +0 -0
  205. data/data/images/arrow.png +0 -0
  206. data/data/images/arrow2.png +0 -0
  207. data/data/images/dice.alpha +0 -0
  208. data/data/images/dice.color +0 -0
  209. data/data/images/dice.png +0 -0
  210. data/data/images/dice_interlaced.png +0 -0
  211. data/data/images/fractal.jpg +0 -0
  212. data/data/images/indexed_color.dat +0 -0
  213. data/data/images/indexed_color.png +0 -0
  214. data/data/images/letterhead.jpg +0 -0
  215. data/data/images/license.md +0 -8
  216. data/data/images/page_white_text.alpha +0 -0
  217. data/data/images/page_white_text.color +0 -0
  218. data/data/images/page_white_text.png +0 -0
  219. data/data/images/pigs.jpg +0 -0
  220. data/data/images/prawn.png +0 -0
  221. data/data/images/ruport.png +0 -0
  222. data/data/images/ruport_data.dat +0 -0
  223. data/data/images/ruport_transparent.png +0 -0
  224. data/data/images/ruport_type0.png +0 -0
  225. data/data/images/stef.jpg +0 -0
  226. data/data/images/tru256.bmp +0 -0
  227. data/data/images/web-links.dat +0 -1
  228. data/data/images/web-links.png +0 -0
  229. data/data/pdfs/complex_template.pdf +0 -0
  230. data/data/pdfs/contains_ttf_font.pdf +0 -0
  231. data/data/pdfs/encrypted.pdf +0 -0
  232. data/data/pdfs/form.pdf +1 -819
  233. data/data/pdfs/hexagon.pdf +0 -61
  234. data/data/pdfs/indirect_reference.pdf +0 -86
  235. data/data/pdfs/multipage_template.pdf +0 -127
  236. data/data/pdfs/nested_pages.pdf +0 -118
  237. data/data/pdfs/page_without_mediabox.pdf +0 -193
  238. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  239. data/data/pdfs/two_hexagons.pdf +0 -90
  240. data/data/pdfs/version_1_6.pdf +0 -61
  241. data/data/shift_jis_text.txt +0 -1
  242. data/lib/prawn/document/graphics_state.rb +0 -73
  243. data/lib/prawn/font/afm.rb +0 -247
  244. data/lib/prawn/table/cell/image.rb +0 -69
  245. data/lib/prawn/table/cell/in_table.rb +0 -33
  246. data/lib/prawn/table/cell/span_dummy.rb +0 -93
  247. data/lib/prawn/table/cell/subtable.rb +0 -66
  248. data/lib/prawn/table/cell/text.rb +0 -154
  249. data/lib/prawn/table/cell.rb +0 -772
  250. data/lib/prawn/table/cells.rb +0 -255
  251. data/lib/prawn/table/column_width_calculator.rb +0 -182
  252. data/lib/prawn/table.rb +0 -644
  253. data/manual/table/basic_block.rb +0 -53
  254. data/manual/table/before_rendering_page.rb +0 -26
  255. data/manual/table/cell_border_lines.rb +0 -24
  256. data/manual/table/cell_borders_and_bg.rb +0 -31
  257. data/manual/table/cell_dimensions.rb +0 -30
  258. data/manual/table/cell_text.rb +0 -38
  259. data/manual/table/column_widths.rb +0 -30
  260. data/manual/table/content_and_subtables.rb +0 -39
  261. data/manual/table/creation.rb +0 -27
  262. data/manual/table/filtering.rb +0 -36
  263. data/manual/table/flow_and_header.rb +0 -17
  264. data/manual/table/image_cells.rb +0 -33
  265. data/manual/table/position.rb +0 -29
  266. data/manual/table/row_colors.rb +0 -20
  267. data/manual/table/span.rb +0 -30
  268. data/manual/table/style.rb +0 -22
  269. data/manual/table/table.rb +0 -52
  270. data/manual/table/width.rb +0 -27
  271. data/spec/acceptance/png.rb +0 -25
  272. data/spec/annotations_spec.rb +0 -74
  273. data/spec/bounding_box_spec.rb +0 -510
  274. data/spec/cell_spec.rb +0 -629
  275. data/spec/column_box_spec.rb +0 -65
  276. data/spec/destinations_spec.rb +0 -15
  277. data/spec/document_spec.rb +0 -730
  278. data/spec/extensions/mocha.rb +0 -46
  279. data/spec/font_metric_cache_spec.rb +0 -52
  280. data/spec/font_spec.rb +0 -449
  281. data/spec/formatted_text_arranger_spec.rb +0 -421
  282. data/spec/formatted_text_box_spec.rb +0 -639
  283. data/spec/formatted_text_fragment_spec.rb +0 -298
  284. data/spec/graphics_spec.rb +0 -669
  285. data/spec/grid_spec.rb +0 -96
  286. data/spec/image_handler_spec.rb +0 -54
  287. data/spec/images_spec.rb +0 -153
  288. data/spec/inline_formatted_text_parser_spec.rb +0 -564
  289. data/spec/jpg_spec.rb +0 -25
  290. data/spec/line_wrap_spec.rb +0 -344
  291. data/spec/measurement_units_spec.rb +0 -25
  292. data/spec/outline_spec.rb +0 -430
  293. data/spec/png_spec.rb +0 -237
  294. data/spec/reference_spec.rb +0 -25
  295. data/spec/repeater_spec.rb +0 -160
  296. data/spec/security_spec.rb +0 -158
  297. data/spec/soft_mask_spec.rb +0 -79
  298. data/spec/span_spec.rb +0 -44
  299. data/spec/stamp_spec.rb +0 -160
  300. data/spec/stroke_styles_spec.rb +0 -211
  301. data/spec/table/span_dummy_spec.rb +0 -17
  302. data/spec/table_spec.rb +0 -1527
  303. data/spec/text_at_spec.rb +0 -115
  304. data/spec/text_box_spec.rb +0 -1034
  305. data/spec/text_rendering_mode_spec.rb +0 -45
  306. data/spec/text_spacing_spec.rb +0 -93
  307. data/spec/text_spec.rb +0 -437
  308. data/spec/text_with_inline_formatting_spec.rb +0 -35
  309. data/spec/transparency_spec.rb +0 -91
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # This sets the dashed pattern for lines and curves. The (dash) length defines
4
4
  # how long each dash will be.
5
5
  #
@@ -12,37 +12,36 @@
12
12
  # Complex dash patterns can be specified by using an array with alternating
13
13
  # dash/gap lengths for the first parameter (note that the <code>:space</code>
14
14
  # option is ignored in this case).
15
- #
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
15
+
16
+ require_relative '../example_helper'
18
17
 
19
18
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
20
19
  Prawn::ManualBuilder::Example.generate(filename) do
21
20
  stroke_axis
22
21
 
23
- dash([1, 2, 3, 2, 1, 5], :phase => 6)
24
- stroke_horizontal_line 50, 500, :at => 230
22
+ dash([1, 2, 3, 2, 1, 5], phase: 6)
23
+ stroke_horizontal_line 50, 500, at: 230
25
24
  dash([1, 2, 3, 4, 5, 6, 7, 8])
26
- stroke_horizontal_line 50, 500, :at => 220
25
+ stroke_horizontal_line 50, 500, at: 220
27
26
 
28
27
  base_y = 210
29
28
 
30
29
  24.times do |i|
31
30
  length = (i / 4) + 1
32
- space = length # space between dashes same length as dash
33
- phase = 0 # start with dash
31
+ space = length # space between dashes same length as dash
32
+ phase = 0 # start with dash
34
33
 
35
34
  case i % 4
36
35
  when 0 then base_y -= 5
37
- when 1 then phase = length # start with space between dashes
38
- when 2 then space = length * 0.5 # space between dashes half as long as dash
36
+ when 1 then phase = length # start with space between dashes
37
+ when 2 then space = length * 0.5 # space between dashes half as long as dash
39
38
  when 3
40
- space = length * 0.5 # space between dashes half as long as dash
41
- phase = length # start with space between dashes
39
+ space = length * 0.5 # space between dashes half as long as dash
40
+ phase = length # start with space between dashes
42
41
  end
43
42
  base_y -= 5
44
43
 
45
- dash(length, :space => space, :phase => phase)
46
- stroke_horizontal_line 50, 500, :at => base_y - (2 * i)
44
+ dash(length, space: space, phase: phase)
45
+ stroke_horizontal_line 50, 500, at: base_y - (2 * i)
47
46
  end
48
47
  end
@@ -1,14 +1,13 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The join style defines how the intersection between two lines is drawn. There
4
4
  # are three types: <code>:miter</code> (the default), <code>:round</code> and
5
5
  # <code>:bevel</code>
6
6
  #
7
7
  # Just like <code>cap_style</code>, the difference between styles is better
8
8
  # seen with thicker lines.
9
- #
10
- require File.expand_path(File.join(File.dirname(__FILE__),
11
- %w[.. example_helper]))
9
+
10
+ require_relative '../example_helper'
12
11
 
13
12
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
14
13
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -16,10 +15,10 @@ Prawn::ManualBuilder::Example.generate(filename) do
16
15
 
17
16
  self.line_width = 25
18
17
 
19
- [:miter, :round, :bevel].each_with_index do |style, i|
18
+ %i[miter round bevel].each_with_index do |style, i|
20
19
  self.join_style = style
21
20
 
22
- y = 200 - i*100
21
+ y = 200 - i * 100
23
22
  stroke do
24
23
  move_to(100, y)
25
24
  line_to(200, y + 100)
@@ -1,29 +1,29 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # This transformation is used to translate the user space. Just provide the
4
4
  # x and y coordinates for the new origin.
5
- #
6
- require File.expand_path(File.join(File.dirname(__FILE__),
7
- %w[.. example_helper]))
5
+
6
+ require_relative '../example_helper'
8
7
 
9
8
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
10
9
  Prawn::ManualBuilder::Example.generate(filename) do
11
10
  stroke_axis
12
11
 
13
12
  1.upto(3) do |i|
14
-
15
13
  x = i * 50
16
14
  y = i * 100
17
15
  translate(x, y) do
18
-
19
16
  # Draw a point on the new origin
20
17
  fill_circle [0, 0], 2
21
18
  draw_text "New origin after translation to [#{x}, #{y}]",
22
- :at => [5, -2], :size => 8
19
+ at: [5, -2],
20
+ size: 8
23
21
 
24
22
  stroke_rectangle [100, 75], 100, 50
25
- text_box "Top left corner at [100,75]",
26
- :at => [110, 65], :width => 80, :size => 8
23
+ text_box 'Top left corner at [100,75]',
24
+ at: [110, 65],
25
+ width: 80,
26
+ size: 8
27
27
  end
28
28
  end
29
29
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Although the name of the method is <code>transparency</code>, what we are
4
4
  # actually setting is the opacity for fill and stroke. So <code>0</code> means
5
5
  # completely transparent and <code>1.0</code> means completely opaque
@@ -7,24 +7,22 @@
7
7
  # You may call it providing one or two values. The first value sets fill opacity
8
8
  # and the second value sets stroke opacity. If the second value is omitted fill
9
9
  # and stroke will have the same opacity.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
15
  stroke_axis
17
16
 
18
17
  self.line_width = 5
19
- fill_color "ff0000"
18
+ fill_color 'ff0000'
20
19
  fill_rectangle [0, 100], 500, 100
21
20
 
22
- fill_color "000000"
23
- stroke_color "ffffff"
21
+ fill_color '000000'
22
+ stroke_color 'ffffff'
24
23
 
25
24
  base_x = 100
26
25
  [[0.5, 1], 0.5, [1, 0.5]].each do |args|
27
-
28
26
  transparent(*args) do
29
27
  fill_circle [base_x, 100], 50
30
28
  stroke_rectangle [base_x - 20, 100], 40, 80
@@ -1,12 +1,12 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Prawn manual how to read this manual page.
4
4
 
5
- require_relative "example_helper"
5
+ require_relative 'example_helper'
6
6
 
7
7
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
8
8
  Prawn::ManualBuilder::Example.generate(filename) do
9
- header("How to read this manual")
9
+ header('How to read this manual')
10
10
 
11
11
  prose <<-END_TEXT
12
12
  This manual is a collection of examples categorized by theme and organized from the least to the most complex. While it covers most of the common use cases it is not a comprehensive guide.
@@ -21,20 +21,19 @@ Prawn::ManualBuilder::Example.generate(filename) do
21
21
  END_TEXT
22
22
 
23
23
  move_down(Prawn::ManualBuilder::Example::BOX_MARGIN)
24
- header("Reading the examples")
24
+ header('Reading the examples')
25
25
 
26
26
  prose <<-END_TEXT
27
27
  The title of each example is the relative path from the Prawn source manual/ folder.
28
28
 
29
- The first body of text is the introductory text for the example. Generaly it is a short description of the features illustrated by the example.
29
+ The first body of text is the introductory text for the example. Generally it is a short description of the features illustrated by the example.
30
30
 
31
31
  Next comes the example source code block in fixed width font.
32
32
 
33
33
  Most of the example snippets illustrate features that alter the page in place. The effect of these snippets is shown right below a dashed line. If it doesn't make sense to evaluate the snippet inline, a box with the link for the example file is shown instead.
34
34
 
35
- Note that the <code>stroke_axis</code> method, used occasionally in the manual, is not part of standard Prawn and is used for demonstrative purposes. It is defined in this file:
35
+ Note that the <code>stroke_axis</code> method used throughout the manual is part of standard Prawn. It is defined in this file:
36
36
 
37
- https://github.com/prawnpdf/prawn/blob/master/manual/example_helper.rb
37
+ https://github.com/prawnpdf/prawn/blob/master/lib/prawn/graphics.rb
38
38
  END_TEXT
39
-
40
39
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # One of the options that the <code>image</code> method accepts is
4
4
  # <code>:at</code>. If you've read some of the graphics examples you are
5
5
  # probably already familiar with it. Just provide it the upper-left corner where
@@ -8,16 +8,15 @@
8
8
  # While sometimes useful this option won't be practical. Notice that the cursor
9
9
  # won't be moved after the image is rendered and there is nothing forbidding the
10
10
  # text to overlap with the image.
11
- #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
11
+
12
+ require_relative '../example_helper'
14
13
 
15
14
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
15
  Prawn::ManualBuilder::Example.generate(filename) do
17
16
  y_position = cursor
18
17
  text "The image won't go below this line of text."
19
18
 
20
- image "#{Prawn::DATADIR}/images/fractal.jpg", :at => [200, y_position]
19
+ image "#{Prawn::DATADIR}/images/fractal.jpg", at: [200, y_position]
21
20
 
22
- text "And this line of text will go just below the previous one."
21
+ text 'And this line of text will go just below the previous one.'
23
22
  end
data/manual/images/fit.rb CHANGED
@@ -1,21 +1,20 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # <code>:fit</code> option is useful when you want the image to have the
4
4
  # maximum size within a container preserving the aspect ratio without
5
5
  # overlapping.
6
6
  #
7
7
  # Just provide the container width and height pair.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
12
  Prawn::ManualBuilder::Example.generate(filename) do
14
13
  size = 300
15
14
 
16
- text "Using the fit option"
17
- bounding_box([0, cursor], :width => size, :height => size) do
18
- image "#{Prawn::DATADIR}/images/pigs.jpg", :fit => [size, size]
15
+ text 'Using the fit option'
16
+ bounding_box([0, cursor], width: size, height: size) do
17
+ image "#{Prawn::DATADIR}/images/pigs.jpg", fit: [size, size]
19
18
  stroke_bounds
20
19
  end
21
20
  end
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The image may be positioned relatively to the current bounding box. The
4
4
  # horizontal position may be set with the <code>:position</code> option.
5
5
  #
6
6
  # It may be <code>:left</code>, <code>:center</code>, <code>:right</code> or a
7
7
  # number representing an x-offset from the left boundary.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
12
  Prawn::ManualBuilder::Example.generate(filename) do
14
- bounding_box([50, cursor], :width => 400, :height => 450) do
13
+ bounding_box([50, cursor], width: 400, height: 450) do
15
14
  stroke_bounds
16
15
 
17
- [:left, :center, :right].each do |position|
18
- text "Image aligned to the #{position}."
19
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => position
16
+ %i[left center right].each do |position|
17
+ text "Image aligned to the #{position}."
18
+ image "#{Prawn::DATADIR}/images/stef.jpg", position: position
20
19
  end
21
20
 
22
- text "The next image has a 50 point offset from the left boundary"
23
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => 50
21
+ text 'The next image has a 50 point offset from the left boundary'
22
+ image "#{Prawn::DATADIR}/images/stef.jpg", position: 50
24
23
  end
25
24
  end
@@ -1,40 +1,41 @@
1
- # encoding: utf-8
2
- #
3
- # Examples for embedding images.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
1
+ # frozen_string_literal: true
7
2
 
8
- Prawn::ManualBuilder::Example.generate("images.pdf", :page_size => "FOLIO") do
3
+ # Examples for embedding images.
9
4
 
10
- package "images" do |p|
5
+ require_relative '../example_helper'
11
6
 
12
- p.section "Basics" do |s|
13
- s.example "plain_image"
14
- s.example "absolute_position"
7
+ Prawn::ManualBuilder::Example.generate('images.pdf', page_size: 'FOLIO') do
8
+ package 'images' do |p|
9
+ p.section 'Basics' do |s|
10
+ s.example 'plain_image'
11
+ s.example 'absolute_position'
15
12
  end
16
13
 
17
- p.section "Relative Positioning" do |s|
18
- s.example "horizontal"
19
- s.example "vertical"
14
+ p.section 'Relative Positioning' do |s|
15
+ s.example 'horizontal'
16
+ s.example 'vertical'
20
17
  end
21
18
 
22
- p.section "Size" do |s|
23
- s.example "width_and_height"
24
- s.example "scale"
25
- s.example "fit"
19
+ p.section 'Size' do |s|
20
+ s.example 'width_and_height'
21
+ s.example 'scale'
22
+ s.example 'fit'
26
23
  end
27
24
 
28
25
  p.intro do
29
- prose("Embedding images on PDF documents is fairly easy. Prawn supports both JPG and PNG images.
30
-
31
- The examples show:")
32
-
33
- list( "How to add an image to a page",
34
- "How place the image on a specific position",
35
- "How to configure the image dimensions by setting the width and height or by scaling it"
36
- )
26
+ prose <<-TEXT
27
+ Embedding images on PDF documents is fairly easy. Prawn supports both
28
+ JPG and PNG images.
29
+
30
+ The examples show:
31
+ TEXT
32
+
33
+ list(
34
+ 'How to add an image to a page',
35
+ 'How place the image on a specific position',
36
+ 'How to configure the image dimensions by setting the width and '\
37
+ 'height or by scaling it'
38
+ )
37
39
  end
38
-
39
40
  end
40
41
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To embed images onto your PDF file use the <code>image</code> method.
4
4
  # It accepts the file path of the image to be loaded and some optional
5
5
  # arguments.
@@ -7,12 +7,11 @@
7
7
  # If only the image path is provided the image will be rendered starting on
8
8
  # the cursor position. No manipulation is done with the image even if it doesn't
9
9
  # fit entirely on the page like the following snippet.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
- text "The image will go right below this line of text."
15
+ text 'The image will go right below this line of text.'
17
16
  image "#{Prawn::DATADIR}/images/pigs.jpg"
18
17
  end
@@ -1,22 +1,21 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To scale an image use the <code>:scale</code> option.
4
4
  #
5
5
  # It scales the image proportionally given the provided value.
6
- #
7
- require File.expand_path(File.join(File.dirname(__FILE__),
8
- %w[.. example_helper]))
6
+
7
+ require_relative '../example_helper'
9
8
 
10
9
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
11
10
  Prawn::ManualBuilder::Example.generate(filename) do
12
- text "Normal size"
11
+ text 'Normal size'
13
12
  image "#{Prawn::DATADIR}/images/stef.jpg"
14
13
  move_down 20
15
14
 
16
- text "Scaled to 50%"
17
- image "#{Prawn::DATADIR}/images/stef.jpg", :scale => 0.5
15
+ text 'Scaled to 50%'
16
+ image "#{Prawn::DATADIR}/images/stef.jpg", scale: 0.5
18
17
  move_down 20
19
18
 
20
- text "Scaled to 200%"
21
- image "#{Prawn::DATADIR}/images/stef.jpg", :scale => 2
19
+ text 'Scaled to 200%'
20
+ image "#{Prawn::DATADIR}/images/stef.jpg", scale: 2
22
21
  end
@@ -1,28 +1,30 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To set the vertical position of an image use the <code>:vposition</code>
4
4
  # option.
5
5
  #
6
6
  # It may be <code>:top</code>, <code>:center</code>, <code>:bottom</code> or a
7
7
  # number representing the y-offset from the top boundary.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
12
  Prawn::ManualBuilder::Example.generate(filename) do
14
- bounding_box([0, cursor], :width => 500, :height => 450) do
13
+ bounding_box([0, cursor], width: 500, height: 450) do
15
14
  stroke_bounds
16
15
 
17
- [:top, :center, :bottom].each do |vposition|
18
- text "Image vertically aligned to the #{vposition}.", :valign => vposition
19
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => 250,
20
- :vposition => vposition
16
+ %i[top center bottom].each do |vposition|
17
+ text "Image vertically aligned to the #{vposition}.", valign: vposition
18
+ image "#{Prawn::DATADIR}/images/stef.jpg",
19
+ position: 250,
20
+ vposition: vposition
21
21
  end
22
22
 
23
- text_box "The next image has a 100 point offset from the top boundary",
24
- :at => [bounds.width - 110, bounds.top - 10], :width => 100
25
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => :right,
26
- :vposition => 100
23
+ text_box 'The next image has a 100 point offset from the top boundary',
24
+ at: [bounds.width - 110, bounds.top - 10],
25
+ width: 100
26
+ image "#{Prawn::DATADIR}/images/stef.jpg",
27
+ position: :right,
28
+ vposition: 100
27
29
  end
28
30
  end
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The image size can be set with the <code>:width</code> and
4
4
  # <code>:height</code> options.
5
5
  #
6
6
  # If only one of those is provided, the image will be scaled proportionally.
7
7
  # When both are provided, the image will be stretched to fit the dimensions
8
8
  # without maintaining the aspect ratio.
9
- #
10
- require File.expand_path(File.join(File.dirname(__FILE__),
11
- %w[.. example_helper]))
9
+
10
+ require_relative '../example_helper'
12
11
 
13
12
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
14
13
  Prawn::ManualBuilder::Example.generate(filename) do
15
- text "Scale by setting only the width"
16
- image "#{Prawn::DATADIR}/images/pigs.jpg", :width => 150
14
+ text 'Scale by setting only the width'
15
+ image "#{Prawn::DATADIR}/images/pigs.jpg", width: 150
17
16
  move_down 20
18
17
 
19
- text "Scale by setting only the height"
20
- image "#{Prawn::DATADIR}/images/pigs.jpg", :height => 100
18
+ text 'Scale by setting only the height'
19
+ image "#{Prawn::DATADIR}/images/pigs.jpg", height: 100
21
20
  move_down 20
22
21
 
23
- text "Stretch to fit the width and height provided"
24
- image "#{Prawn::DATADIR}/images/pigs.jpg", :width => 500, :height => 100
22
+ text 'Stretch to fit the width and height provided'
23
+ image "#{Prawn::DATADIR}/images/pigs.jpg", width: 500, height: 100
25
24
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # After defined the grid is there but nothing happens. To start taking effect
4
4
  # we need to use the grid boxes.
5
5
  #
@@ -7,21 +7,20 @@
7
7
  # received. With no arguments it will return the grid itself. With integers it
8
8
  # will return the grid box at those indices. With two arrays it will return a
9
9
  # multi-box spanning the region of the two grid boxes at the arrays indices.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
15
  # The grid only need to be defined once, but since all the examples should be
17
16
  # able to run alone we are repeating it on every example
18
- define_grid(:columns => 5, :rows => 8, :gutter => 10)
17
+ define_grid(columns: 5, rows: 8, gutter: 10)
19
18
 
20
- grid(4,0).show
21
- grid(5,1).show
19
+ grid(4, 0).show
20
+ grid(5, 1).show
22
21
 
23
- grid([6,2], [7,3]).show
22
+ grid([6, 2], [7, 3]).show
24
23
 
25
- grid([4,4], [7,4]).show
26
- grid([7,0], [7,1]).show
24
+ grid([4, 4], [7, 4]).show
25
+ grid([7, 0], [7, 1]).show
27
26
  end
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Now that we know how to access the boxes we might as well add some content
4
4
  # to them.
5
5
  #
6
6
  # This can be done by taping into the bounding box for a given grid box or
7
7
  # multi-box with the <code>bounding_box</code> method.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
12
  Prawn::ManualBuilder::Example.generate(filename) do
14
13
  # The grid only need to be defined once, but since all the examples should be
15
14
  # able to run alone we are repeating it on every example
16
- define_grid(:columns => 5, :rows => 8, :gutter => 10)
15
+ define_grid(columns: 5, rows: 8, gutter: 10)
17
16
 
18
- grid([5,0], [7,1]).bounding_box do
19
- text "Adding some content to this multi_box.\n" + " _ " * 200
17
+ grid([5, 0], [7, 1]).bounding_box do
18
+ text "Adding some content to this multi_box.\n#{' _ ' * 200}"
20
19
  end
21
20
 
22
- grid(6,3).bounding_box do
23
- text "Just a little snippet here.\n" + " _ " * 10
21
+ grid(6, 3).bounding_box do
22
+ text "Just a little snippet here.\n#{' _ ' * 10}"
24
23
  end
25
24
  end
@@ -1,28 +1,27 @@
1
- # encoding: utf-8
2
- #
3
- # Examples for using grid layouts.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
1
+ # frozen_string_literal: true
7
2
 
8
- Prawn::ManualBuilder::Example.generate("layout.pdf", :page_size => "FOLIO") do
3
+ # Examples for using grid layouts.
9
4
 
10
- package "layout" do |p|
5
+ require_relative '../example_helper'
11
6
 
12
- p.example "simple_grid"
13
- p.example "boxes"
14
- p.example "content"
7
+ Prawn::ManualBuilder::Example.generate('layout.pdf', page_size: 'FOLIO') do
8
+ package 'layout' do |p|
9
+ p.example 'simple_grid'
10
+ p.example 'boxes'
11
+ p.example 'content'
15
12
 
16
13
  p.intro do
17
- prose("Prawn has support for two-dimensional grid based layouts out of the box.
14
+ prose <<-TEXT
15
+ Prawn has support for two-dimensional grid based layouts out of the box.
18
16
 
19
- The examples show:")
17
+ The examples show:
18
+ TEXT
20
19
 
21
- list( "How to define the document grid",
22
- "How to configure the grid rows and columns gutters",
23
- "How to create boxes according to the grid"
24
- )
20
+ list(
21
+ 'How to define the document grid',
22
+ 'How to configure the grid rows and columns gutters',
23
+ 'How to create boxes according to the grid'
24
+ )
25
25
  end
26
-
27
26
  end
28
27
  end