prawn 1.1.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
  # Prawn provides helpers for drawing some commonly used lines:
4
4
  #
5
5
  # <code>vertical_line</code> and <code>horizontal_line</code> do just what their
@@ -8,23 +8,22 @@
8
8
  #
9
9
  # <code>horizontal_rule</code> draws a horizontal line on the current bounding
10
10
  # box from border to border, using the current y position.
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
  stroke_axis
18
17
 
19
- stroke_color "ff0000"
18
+ stroke_color 'ff0000'
20
19
 
21
20
  stroke do
22
21
  # just lower the current y position
23
22
  move_down 50
24
23
  horizontal_rule
25
24
 
26
- vertical_line 100, 300, :at => 50
25
+ vertical_line 100, 300, at: 50
27
26
 
28
- horizontal_line 200, 500, :at => 150
27
+ horizontal_line 200, 500, at: 150
29
28
  end
30
29
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # There are two drawing primitives in Prawn: <code>fill</code> and
4
4
  # <code>stroke</code>.
5
5
  #
@@ -17,9 +17,8 @@
17
17
  # Most of the methods which define drawing paths have methods of the same name
18
18
  # starting with stroke_ and fill_ which create the drawing path and then stroke
19
19
  # or fill it.
20
- #
21
- require File.expand_path(File.join(File.dirname(__FILE__),
22
- %w[.. example_helper]))
20
+
21
+ require_relative '../example_helper'
23
22
 
24
23
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
25
24
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -34,7 +33,7 @@ Prawn::ManualBuilder::Example.generate(filename) do
34
33
 
35
34
  # With block
36
35
  stroke { line [200, 200], [300, 150] }
37
- fill { rectangle [200, 100], 100, 100 }
36
+ fill { rectangle [200, 100], 100, 100 }
38
37
 
39
38
  # Method hook
40
39
  stroke_line [400, 200], [500, 150]
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Prawn's fill operators (<code>fill</code> and <code>fill_and_stroke</code>
4
4
  # both accept a <code>:fill_rule</code> option. These rules determine which
5
5
  # parts of the page are counted as "inside" vs. "outside" the path. There are
@@ -15,9 +15,8 @@
15
15
  #
16
16
  # The differences between the fill rules only come into play with complex
17
17
  # paths; they are identical for simple shapes.
18
- #
19
- require File.expand_path(File.join(File.dirname(__FILE__),
20
- %w[.. example_helper]))
18
+
19
+ require_relative '../example_helper'
21
20
 
22
21
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
23
22
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -26,12 +25,14 @@ Prawn::ManualBuilder::Example.generate(filename) do
26
25
  stroke_color 'ff0000'
27
26
  line_width 2
28
27
 
29
- text_box "Nonzero Winding Number", :at => [50, 215], :width => 170,
30
- :align => :center
31
- polygon(*pentagram.map { |x, y| [x+50, y] })
28
+ text_box 'Nonzero Winding Number',
29
+ at: [50, 215],
30
+ width: 170,
31
+ align: :center
32
+ polygon(*pentagram.map { |x, y| [x + 50, y] })
32
33
  fill_and_stroke
33
34
 
34
- text_box "Even-Odd", :at => [330, 215], :width => 170, :align => :center
35
- polygon(*pentagram.map { |x, y| [x+330, y] })
36
- fill_and_stroke(:fill_rule => :even_odd)
35
+ text_box 'Even-Odd', at: [330, 215], width: 170, align: :center
36
+ polygon(*pentagram.map { |x, y| [x + 330, y] })
37
+ fill_and_stroke(fill_rule: :even_odd)
37
38
  end
@@ -1,37 +1,43 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Note that because of the way PDF renders radial gradients in order to get
4
4
  # solid fill your start circle must be fully inside your end circle.
5
5
  # Otherwise you will get triangle fill like illustrated in the example below.
6
6
 
7
- require File.expand_path(File.join(File.dirname(__FILE__),
8
- %w[.. example_helper]))
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
- stroke_axis
13
11
  self.line_width = 10
14
12
 
15
- fill_gradient [50, 300], [150, 200], 'ff0000', '0000ff'
16
- fill_rectangle [50, 300], 100, 100
13
+ # Linear Gradients
14
+ fill_gradient [0, 250], [100, 150], 'ff0000', '0000ff'
15
+ fill_rectangle [0, 250], 100, 100
16
+
17
+ stroke_gradient [150, 150], [250, 250], '00ffff', 'ffff00'
18
+ stroke_rectangle [150, 250], 100, 100
17
19
 
18
- stroke_gradient [200, 200], [300, 300], '00ffff', 'ffff00'
19
- stroke_rectangle [200, 300], 100, 100
20
+ fill_gradient [300, 250], [400, 150], 'ff0000', '0000ff'
21
+ stroke_gradient [300, 150], [400, 250], '00ffff', 'ffff00'
22
+ fill_and_stroke_rectangle [300, 250], 100, 100
20
23
 
21
- fill_gradient [350, 300], [450, 200], 'ff0000', '0000ff'
22
- stroke_gradient [350, 200], [450, 300], '00ffff', 'ffff00'
23
- fill_and_stroke_rectangle [350, 300], 100, 100
24
+ rotate 45, origin: [500, 200] do
25
+ stops = { 0 => 'ff0000', 0.6 => '999900', 0.8 => '00cc00', 1 => '4444ff' }
26
+ fill_gradient from: [460, 240], to: [540, 160], stops: stops
27
+ fill_rectangle [460, 240], 80, 80
28
+ end
24
29
 
25
- fill_gradient [100, 100], 0, [100, 100], 70.71, 'ff0000', '0000ff'
26
- fill_rectangle [50, 150], 100, 100
30
+ # Radial gradients
31
+ fill_gradient [50, 50], 0, [50, 50], 70.71, 'ff0000', '0000ff'
32
+ fill_rectangle [0, 100], 100, 100
27
33
 
28
- stroke_gradient [250, 100], 45, [250, 100], 70.71, '00ffff', 'ffff00'
29
- stroke_rectangle [200, 150], 100, 100
34
+ stroke_gradient [200, 50], 45, [200, 50], 70.71, '00ffff', 'ffff00'
35
+ stroke_rectangle [150, 100], 100, 100
30
36
 
31
- stroke_gradient [400, 100], 45, [400, 100], 70.71, '00ffff', 'ffff00'
32
- fill_gradient [400, 100], 0, [400, 100], 70.71, 'ff0000', '0000ff'
33
- fill_and_stroke_rectangle [350, 150], 100, 100
37
+ stroke_gradient [350, 50], 45, [350, 50], 70.71, '00ffff', 'ffff00'
38
+ fill_gradient [350, 50], 0, [350, 50], 70.71, 'ff0000', '0000ff'
39
+ fill_and_stroke_rectangle [300, 100], 100, 100
34
40
 
35
- fill_gradient [500, 300], 15, [500, 50], 0, 'ff0000', '0000ff'
36
- fill_rectangle [485, 300], 30, 250
41
+ fill_gradient [500, 100], 50, [500, 0], 0, 'ff0000', '0000ff'
42
+ fill_rectangle [450, 100], 100, 100
37
43
  end
@@ -1,58 +1,64 @@
1
- # encoding: utf-8
2
- #
3
- # Examples for the Graphics package.
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("graphics.pdf", :page_size => "FOLIO") do
3
+ # Examples for the Graphics package.
9
4
 
10
- package "graphics" do |p|
5
+ require_relative '../example_helper'
11
6
 
12
- p.section "Basics" do |s|
13
- s.example "helper"
14
- s.example "fill_and_stroke"
7
+ filename = File.basename(__FILE__).gsub('.rb', '.pdf')
8
+ Prawn::ManualBuilder::Example.generate(filename, page_size: 'FOLIO') do
9
+ package 'graphics' do |p|
10
+ p.section 'Basics' do |s|
11
+ s.example 'helper'
12
+ s.example 'fill_and_stroke'
15
13
  end
16
14
 
17
- p.section "Shapes" do |s|
18
- s.example "lines_and_curves"
19
- s.example "common_lines"
20
- s.example "rectangle"
21
- s.example "polygon"
22
- s.example "circle_and_ellipse"
15
+ p.section 'Shapes' do |s|
16
+ s.example 'lines_and_curves'
17
+ s.example 'common_lines'
18
+ s.example 'rectangle'
19
+ s.example 'polygon'
20
+ s.example 'circle_and_ellipse'
23
21
  end
24
22
 
25
- p.section "Fill and Stroke settings" do |s|
26
- s.example "line_width"
27
- s.example "stroke_cap"
28
- s.example "stroke_join"
29
- s.example "stroke_dash"
30
- s.example "color"
31
- s.example "gradients"
32
- s.example "transparency"
33
- s.example "soft_masks"
34
- s.example "fill_rules"
23
+ p.section 'Fill and Stroke settings' do |s|
24
+ s.example 'line_width'
25
+ s.example 'stroke_cap'
26
+ s.example 'stroke_join'
27
+ s.example 'stroke_dash'
28
+ s.example 'color'
29
+ s.example 'gradients'
30
+ s.example 'transparency'
31
+ s.example 'soft_masks'
32
+ s.example 'blend_mode'
33
+ s.example 'fill_rules'
35
34
  end
36
35
 
37
- p.section "Transformations" do |s|
38
- s.example "rotate"
39
- s.example "translate"
40
- s.example "scale"
36
+ p.section 'Transformations' do |s|
37
+ s.example 'rotate'
38
+ s.example 'translate'
39
+ s.example 'scale'
41
40
  end
42
41
 
43
42
  p.intro do
44
- prose("Here we show all the drawing methods provided by Prawn. Use them to draw the most beautiful imaginable things.
43
+ prose <<-TEXT
44
+ Here we show all the drawing methods provided by Prawn. Use them to draw
45
+ the most beautiful imaginable things.
45
46
 
46
- Most of the content that you'll add to your pdf document will use the graphics package. Even text is rendered on a page just like a rectangle so even if you never use any of the shapes described here you should at least read the basic examples.
47
+ Most of the content that you'll add to your pdf document will use the
48
+ graphics package. Even text is rendered on a page just like a rectangle
49
+ so even if you never use any of the shapes described here you should at
50
+ least read the basic examples.
47
51
 
48
- The examples show:")
52
+ The examples show:
53
+ TEXT
49
54
 
50
- list( "All the possible ways that you can fill or stroke shapes on a page",
51
- "How to draw all the shapes that Prawn has to offer from a measly line to a mighty polygon or ellipse",
52
- "The configuration options for stroking lines and filling shapes",
53
- "How to apply transformations to your drawing space"
54
- )
55
+ list(
56
+ 'All the possible ways that you can fill or stroke shapes on a page',
57
+ 'How to draw all the shapes that Prawn has to offer from a measly '\
58
+ 'line to a mighty polygon or ellipse',
59
+ 'The configuration options for stroking lines and filling shapes',
60
+ 'How to apply transformations to your drawing space'
61
+ )
55
62
  end
56
-
57
63
  end
58
64
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To produce this manual we use the <code>stroke_axis</code> helper method
4
4
  # within the examples.
5
5
  #
@@ -10,15 +10,25 @@
10
10
  # Note that the examples define a custom <code>:height</code> option so that
11
11
  # only the example canvas is used (as seen with the output of the first line of
12
12
  # the example code).
13
- #
14
- require File.expand_path(File.join(File.dirname(__FILE__),
15
- %w[.. example_helper]))
13
+
14
+ require_relative '../example_helper'
16
15
 
17
16
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
18
17
  Prawn::ManualBuilder::Example.generate(filename) do
19
18
  stroke_axis
20
- stroke_axis(:at => [70, 70], :height => 200, :step_length => 50,
21
- :negative_axes_length => 5, :color => '0000FF')
22
- stroke_axis(:at => [140, 140], :width => 200, :height => cursor.to_i - 140,
23
- :step_length => 20, :negative_axes_length => 40, :color => 'FF00')
19
+ stroke_axis(
20
+ at: [70, 70],
21
+ height: 200,
22
+ step_length: 50,
23
+ negative_axes_length: 5,
24
+ color: '0000FF'
25
+ )
26
+ stroke_axis(
27
+ at: [140, 140],
28
+ width: 200,
29
+ height: cursor.to_i - 140,
30
+ step_length: 20,
31
+ negative_axes_length: 40,
32
+ color: 'FF0000'
33
+ )
24
34
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>line_width=</code> method sets the stroke width for subsequent
4
4
  # stroke calls.
5
5
  #
@@ -7,9 +7,9 @@
7
7
  # assignment is a local temporary, rather than a setter method, if you are using
8
8
  # the block call to <code>Prawn::Document.generate</code> without passing params
9
9
  # you will need to call <code>line_width</code> on self.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ # rubocop: disable Lint/UselessAssignment
12
+ require_relative '../example_helper'
13
13
 
14
14
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
15
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -19,13 +19,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
19
19
 
20
20
  3.times do |i|
21
21
  case i
22
- when 0 then line_width = 10 # This call will have no effect
22
+ when 0 then line_width = 10 # This call will have no effect
23
23
  when 1 then self.line_width = 10
24
24
  when 2 then self.line_width = 25
25
25
  end
26
26
 
27
27
  stroke do
28
- horizontal_line 50, 150, :at => y
28
+ horizontal_line 50, 150, at: y
29
29
  rectangle [275, y + 25], 50, 50
30
30
  circle [500, y], 25
31
31
  end
@@ -33,3 +33,4 @@ Prawn::ManualBuilder::Example.generate(filename) do
33
33
  y -= 100
34
34
  end
35
35
  end
36
+ # rubocop: enable Lint/UselessAssignment
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Prawn supports drawing both lines and curves starting either at the current
4
4
  # position, or from a specified starting position.
5
5
  #
@@ -14,9 +14,8 @@
14
14
  #
15
15
  # Both curve methods define a Bezier curve bounded by two aditional points
16
16
  # provided as the <code>:bounds</code> param.
17
- #
18
- require File.expand_path(File.join(File.dirname(__FILE__),
19
- %w[.. example_helper]))
17
+
18
+ require_relative '../example_helper'
20
19
 
21
20
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
22
21
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -29,13 +28,13 @@ Prawn::ManualBuilder::Example.generate(filename) do
29
28
  line_to 100, 100
30
29
  line_to 0, 100
31
30
 
32
- curve_to [150, 250], :bounds => [[20, 200], [120, 200]]
33
- curve_to [200, 0], :bounds => [[150, 200], [450, 10]]
31
+ curve_to [150, 250], bounds: [[20, 200], [120, 200]]
32
+ curve_to [200, 0], bounds: [[150, 200], [450, 10]]
34
33
  end
35
34
 
36
35
  # line and curve
37
36
  stroke do
38
- line [300,200], [400,50]
39
- curve [500, 0], [400, 200], :bounds => [[600, 300], [300, 390]]
37
+ line [300, 200], [400, 50]
38
+ curve [500, 0], [400, 200], bounds: [[600, 300], [300, 390]]
40
39
  end
41
40
  end
@@ -1,14 +1,13 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Drawing polygons in Prawn is easy, just pass a sequence of points to one of
4
4
  # the polygon family of methods.
5
5
  #
6
6
  # Just like <code>rounded_rectangle</code> we also have
7
7
  # <code>rounded_polygon</code>. The only difference is the radius param comes
8
8
  # before the polygon points.
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
@@ -18,12 +17,11 @@ Prawn::ManualBuilder::Example.generate(filename) do
18
17
  stroke_polygon [50, 200], [50, 300], [150, 300]
19
18
 
20
19
  # Hexagon
21
- fill_polygon [50, 150], [150, 200], [250, 150],
22
- [250, 50], [150, 0], [50, 50]
20
+ fill_polygon [50, 150], [150, 200], [250, 150], [250, 50], [150, 0], [50, 50]
23
21
 
24
22
  # Pentagram
25
23
  pentagon_points = [500, 100], [430, 5], [319, 41], [319, 159], [430, 195]
26
- pentagram_points = [0, 2, 4, 1, 3].map{ |i| pentagon_points[i] }
24
+ pentagram_points = [0, 2, 4, 1, 3].map { |i| pentagon_points[i] }
27
25
 
28
26
  stroke_rounded_polygon(20, *pentagram_points)
29
27
  end
@@ -1,13 +1,12 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To draw a rectangle, just provide the upper-left corner, width and height to
4
4
  # the <code>rectangle</code> method.
5
5
  #
6
6
  # There's also <code>rounded_rectangle</code>. Just provide an additional radius
7
7
  # value for the rounded corners.
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
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # This transformation is used to rotate the user space. Give it an angle
4
4
  # and an <code>:origin</code> point about which to rotate and a block.
5
5
  # Everything inside the block will be drawn with the rotated coordinates.
@@ -7,9 +7,8 @@
7
7
  # The angle is in degrees.
8
8
  #
9
9
  # If you omit the <code>:origin</code> option the page origin will be used.
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
@@ -18,11 +17,9 @@ Prawn::ManualBuilder::Example.generate(filename) do
18
17
  fill_circle [250, 200], 2
19
18
 
20
19
  12.times do |i|
21
-
22
- rotate(i * 30, :origin => [250, 200]) do
23
-
20
+ rotate(i * 30, origin: [250, 200]) do
24
21
  stroke_rectangle [350, 225], 100, 50
25
- draw_text "Rotated #{i * 30}°", :size => 10, :at => [360, 205]
22
+ draw_text "Rotated #{i * 30}°", size: 10, at: [360, 205]
26
23
  end
27
24
  end
28
25
  end
@@ -1,13 +1,12 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # This transformation is used to scale the user space. Give it an scale factor
4
4
  # and an <code>:origin</code> point and everything inside the block will be
5
5
  # scaled using the origin point as reference.
6
6
  #
7
7
  # If you omit the <code>:origin</code> option the page origin will be used.
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
@@ -20,22 +19,24 @@ Prawn::ManualBuilder::Example.generate(filename) do
20
19
  y = 200
21
20
 
22
21
  stroke_rectangle [x, y], width, height
23
- text_box "reference rectangle", :at => [x + 10, y - 10], :width => width - 20
22
+ text_box 'reference rectangle', at: [x + 10, y - 10], width: width - 20
24
23
 
25
- scale(2, :origin => [x, y]) do
24
+ scale(2, origin: [x, y]) do
26
25
  stroke_rectangle [x, y], width, height
27
- text_box "rectangle scaled from upper-left corner",
28
- :at => [x, y - height - 5], :width => width
26
+ text_box 'rectangle scaled from upper-left corner',
27
+ at: [x, y - height - 5],
28
+ width: width
29
29
  end
30
30
 
31
31
  x = 350
32
32
 
33
33
  stroke_rectangle [x, y], width, height
34
- text_box "reference rectangle", :at => [x + 10, y - 10], :width => width - 20
34
+ text_box 'reference rectangle', at: [x + 10, y - 10], width: width - 20
35
35
 
36
- scale(2, :origin => [x + width / 2, y - height / 2]) do
36
+ scale(2, origin: [x + width / 2, y - height / 2]) do
37
37
  stroke_rectangle [x, y], width, height
38
- text_box "rectangle scaled from center",
39
- :at => [x, y - height - 5], :width => width
38
+ text_box 'rectangle scaled from center',
39
+ at: [x, y - height - 5],
40
+ width: width
40
41
  end
41
42
  end
@@ -1,6 +1,6 @@
1
- # encoding: utf-8
2
- #
3
- # Soft masks are user for more complex alpha channel manipulations. You can use
1
+ # frozen_string_literal: true
2
+
3
+ # Soft masks are used for more complex alpha channel manipulations. You can use
4
4
  # arbitrary drawing functions for creation of soft masks. The resulting alpha
5
5
  # channel is made of greyscale version of the drawing (luminosity channel to be
6
6
  # precise). So while you can use any combination of colors for soft masks it's
@@ -11,8 +11,7 @@
11
11
  # only to a part of page you need to enclose drawing instructions in
12
12
  # <code>save_graphics_state</code> block.
13
13
 
14
- require File.expand_path(File.join(File.dirname(__FILE__),
15
- %w[.. example_helper]))
14
+ require_relative '../example_helper'
16
15
 
17
16
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
18
17
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -42,5 +41,4 @@ Prawn::ManualBuilder::Example.generate(filename) do
42
41
  fill_color '61bb46'
43
42
  fill_rectangle [0, 160], 600, 20
44
43
  end
45
-
46
44
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The cap style defines how the edge of a line or curve will be drawn. There are
4
4
  # three types: <code>:butt</code> (the default), <code>:round</code> and
5
5
  # <code>:projecting_square</code>
@@ -11,9 +11,8 @@
11
11
  #
12
12
  # Just like <code>line_width=</code> the <code>cap_style=</code> method needs an
13
13
  # explicit receiver to work.
14
- #
15
- require File.expand_path(File.join(File.dirname(__FILE__),
16
- %w[.. example_helper]))
14
+
15
+ require_relative '../example_helper'
17
16
 
18
17
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
19
18
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -21,11 +20,11 @@ Prawn::ManualBuilder::Example.generate(filename) do
21
20
 
22
21
  self.line_width = 25
23
22
 
24
- [:butt, :round, :projecting_square].each_with_index do |cap, i|
23
+ %i[butt round projecting_square].each_with_index do |cap, i|
25
24
  self.cap_style = cap
26
25
 
27
- y = 250 - i*100
28
- stroke_horizontal_line 100, 300, :at => y
26
+ y = 250 - i * 100
27
+ stroke_horizontal_line 100, 300, at: y
29
28
  stroke_circle [400, y], 15
30
29
  end
31
30
  end