prawn 2.1.0 → 2.3.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 (280) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -9
  6. data/Rakefile +20 -23
  7. data/lib/prawn.rb +36 -49
  8. data/lib/prawn/document.rb +180 -133
  9. data/lib/prawn/document/bounding_box.rb +41 -29
  10. data/lib/prawn/document/column_box.rb +7 -7
  11. data/lib/prawn/document/internals.rb +8 -6
  12. data/lib/prawn/document/span.rb +21 -16
  13. data/lib/prawn/encoding.rb +69 -68
  14. data/lib/prawn/errors.rb +12 -7
  15. data/lib/prawn/font.rb +102 -69
  16. data/lib/prawn/font_metric_cache.rb +14 -8
  17. data/lib/prawn/{font → fonts}/afm.rb +102 -68
  18. data/lib/prawn/{font → fonts}/dfont.rb +5 -11
  19. data/lib/prawn/fonts/otf.rb +11 -0
  20. data/lib/prawn/fonts/ttc.rb +36 -0
  21. data/lib/prawn/{font → fonts}/ttf.rb +87 -68
  22. data/lib/prawn/graphics.rb +119 -81
  23. data/lib/prawn/graphics/blend_mode.rb +9 -8
  24. data/lib/prawn/graphics/cap_style.rb +3 -3
  25. data/lib/prawn/graphics/color.rb +27 -25
  26. data/lib/prawn/graphics/dash.rb +23 -11
  27. data/lib/prawn/graphics/join_style.rb +9 -3
  28. data/lib/prawn/graphics/patterns.rb +190 -96
  29. data/lib/prawn/graphics/transformation.rb +15 -9
  30. data/lib/prawn/graphics/transparency.rb +17 -13
  31. data/lib/prawn/grid.rb +48 -47
  32. data/lib/prawn/image_handler.rb +5 -5
  33. data/lib/prawn/images.rb +39 -30
  34. data/lib/prawn/images/image.rb +2 -1
  35. data/lib/prawn/images/jpg.rb +28 -22
  36. data/lib/prawn/images/png.rb +65 -62
  37. data/lib/prawn/measurement_extensions.rb +10 -9
  38. data/lib/prawn/measurements.rb +19 -15
  39. data/lib/prawn/outline.rb +97 -77
  40. data/lib/prawn/repeater.rb +14 -10
  41. data/lib/prawn/security.rb +81 -61
  42. data/lib/prawn/security/arcfour.rb +2 -2
  43. data/lib/prawn/soft_mask.rb +26 -26
  44. data/lib/prawn/stamp.rb +20 -13
  45. data/lib/prawn/text.rb +68 -52
  46. data/lib/prawn/text/box.rb +11 -8
  47. data/lib/prawn/text/formatted.rb +5 -5
  48. data/lib/prawn/text/formatted/arranger.rb +53 -32
  49. data/lib/prawn/text/formatted/box.rb +134 -100
  50. data/lib/prawn/text/formatted/fragment.rb +11 -14
  51. data/lib/prawn/text/formatted/line_wrap.rb +122 -63
  52. data/lib/prawn/text/formatted/parser.rb +139 -117
  53. data/lib/prawn/text/formatted/wrap.rb +43 -31
  54. data/lib/prawn/transformation_stack.rb +7 -5
  55. data/lib/prawn/utilities.rb +7 -22
  56. data/lib/prawn/version.rb +2 -2
  57. data/lib/prawn/view.rb +17 -7
  58. data/manual/basic_concepts/adding_pages.rb +6 -7
  59. data/manual/basic_concepts/basic_concepts.rb +31 -22
  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 +6 -7
  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 +22 -16
  66. data/manual/bounding_box/bounding_box.rb +29 -24
  67. data/manual/bounding_box/bounds.rb +11 -12
  68. data/manual/bounding_box/canvas.rb +4 -5
  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 +24 -17
  72. data/manual/bounding_box/russian_boxes.rb +14 -13
  73. data/manual/bounding_box/stretchy.rb +12 -13
  74. data/manual/contents.rb +28 -22
  75. data/manual/cover.rb +33 -28
  76. data/manual/document_and_page_options/background.rb +11 -13
  77. data/manual/document_and_page_options/document_and_page_options.rb +25 -20
  78. data/manual/document_and_page_options/metadata.rb +18 -16
  79. data/manual/document_and_page_options/page_margins.rb +18 -20
  80. data/manual/document_and_page_options/page_size.rb +13 -12
  81. data/manual/document_and_page_options/print_scaling.rb +17 -15
  82. data/manual/example_helper.rb +5 -4
  83. data/manual/graphics/blend_mode.rb +12 -9
  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 +4 -5
  88. data/manual/graphics/fill_rules.rb +9 -10
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +48 -40
  91. data/manual/graphics/helper.rb +12 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +7 -8
  94. data/manual/graphics/polygon.rb +6 -8
  95. data/manual/graphics/rectangle.rb +4 -5
  96. data/manual/graphics/rotate.rb +6 -7
  97. data/manual/graphics/scale.rb +14 -15
  98. data/manual/graphics/soft_masks.rb +3 -4
  99. data/manual/graphics/stroke_cap.rb +6 -7
  100. data/manual/graphics/stroke_dash.rb +11 -12
  101. data/manual/graphics/stroke_join.rb +5 -6
  102. data/manual/graphics/translate.rb +9 -10
  103. data/manual/graphics/transparency.rb +7 -8
  104. data/manual/how_to_read_this_manual.rb +6 -6
  105. data/manual/images/absolute_position.rb +6 -7
  106. data/manual/images/fit.rb +7 -8
  107. data/manual/images/horizontal.rb +9 -10
  108. data/manual/images/images.rb +28 -24
  109. data/manual/images/plain_image.rb +5 -6
  110. data/manual/images/scale.rb +9 -10
  111. data/manual/images/vertical.rb +13 -14
  112. data/manual/images/width_and_height.rb +10 -11
  113. data/manual/layout/boxes.rb +5 -6
  114. data/manual/layout/content.rb +7 -8
  115. data/manual/layout/layout.rb +18 -16
  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 +21 -17
  120. data/manual/outline/sections_and_pages.rb +17 -18
  121. data/manual/repeatable_content/alternate_page_numbering.rb +21 -17
  122. data/manual/repeatable_content/page_numbering.rb +17 -16
  123. data/manual/repeatable_content/repeatable_content.rb +25 -19
  124. data/manual/repeatable_content/repeater.rb +14 -15
  125. data/manual/repeatable_content/stamp.rb +14 -15
  126. data/manual/security/encryption.rb +9 -10
  127. data/manual/security/permissions.rb +19 -14
  128. data/manual/security/security.rb +19 -16
  129. data/manual/table.rb +3 -3
  130. data/manual/text/alignment.rb +16 -17
  131. data/manual/text/color.rb +12 -11
  132. data/manual/text/column_box.rb +9 -10
  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 +7 -8
  137. data/manual/text/formatted_callbacks.rb +25 -21
  138. data/manual/text/formatted_text.rb +33 -25
  139. data/manual/text/free_flowing_text.rb +20 -21
  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 +13 -14
  145. data/manual/text/positioned_text.rb +15 -16
  146. data/manual/text/registering_families.rb +20 -21
  147. data/manual/text/rendering_and_color.rb +9 -10
  148. data/manual/text/right_to_left_text.rb +26 -19
  149. data/manual/text/rotation.rb +28 -23
  150. data/manual/text/single_usage.rb +8 -9
  151. data/manual/text/text.rb +57 -52
  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 +18 -19
  155. data/manual/text/utf8.rb +11 -12
  156. data/manual/text/win_ansi_charset.rb +21 -19
  157. data/prawn.gemspec +44 -31
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +546 -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 +36 -0
  167. data/spec/prawn/document_spec.rb +802 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +542 -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 +837 -0
  173. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  174. data/spec/{image_handler_spec.rb → prawn/image_handler_spec.rb} +14 -14
  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 +224 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +412 -0
  180. data/spec/prawn/repeater_spec.rb +165 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +172 -0
  183. data/spec/prawn/text/box_spec.rb +1112 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +846 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +494 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +149 -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/{transformation_stack_spec.rb → prawn/transformation_stack_spec.rb} +22 -19
  195. data/spec/prawn/view_spec.rb +63 -0
  196. data/spec/prawn_manual_spec.rb +35 -0
  197. data/spec/spec_helper.rb +18 -19
  198. metadata +144 -180
  199. metadata.gz.sig +4 -0
  200. data/data/images/16bit.alpha +0 -0
  201. data/data/images/16bit.color +0 -0
  202. data/data/images/16bit.png +0 -0
  203. data/data/images/arrow.png +0 -0
  204. data/data/images/arrow2.png +0 -0
  205. data/data/images/blend_modes_bottom_layer.jpg +0 -0
  206. data/data/images/blend_modes_top_layer.jpg +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/indexed_transparency.png +0 -0
  215. data/data/images/indexed_transparency_alpha.dat +0 -0
  216. data/data/images/indexed_transparency_color.dat +0 -0
  217. data/data/images/letterhead.jpg +0 -0
  218. data/data/images/license.md +0 -8
  219. data/data/images/page_white_text.alpha +0 -0
  220. data/data/images/page_white_text.color +0 -0
  221. data/data/images/page_white_text.png +0 -0
  222. data/data/images/pigs.jpg +0 -0
  223. data/data/images/prawn.png +0 -0
  224. data/data/images/ruport.png +0 -0
  225. data/data/images/ruport_data.dat +0 -0
  226. data/data/images/ruport_transparent.png +0 -0
  227. data/data/images/ruport_type0.png +0 -0
  228. data/data/images/stef.jpg +0 -0
  229. data/data/images/tru256.bmp +0 -0
  230. data/data/images/web-links.dat +0 -1
  231. data/data/images/web-links.png +0 -0
  232. data/data/pdfs/complex_template.pdf +0 -0
  233. data/data/pdfs/contains_ttf_font.pdf +0 -0
  234. data/data/pdfs/encrypted.pdf +0 -0
  235. data/data/pdfs/form.pdf +1 -819
  236. data/data/pdfs/hexagon.pdf +0 -61
  237. data/data/pdfs/indirect_reference.pdf +0 -86
  238. data/data/pdfs/multipage_template.pdf +0 -127
  239. data/data/pdfs/nested_pages.pdf +0 -118
  240. data/data/pdfs/page_without_mediabox.pdf +0 -193
  241. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  242. data/data/pdfs/two_hexagons.pdf +0 -90
  243. data/data/pdfs/version_1_6.pdf +0 -61
  244. data/data/shift_jis_text.txt +0 -1
  245. data/spec/acceptance/png_spec.rb +0 -35
  246. data/spec/annotations_spec.rb +0 -67
  247. data/spec/blend_mode_spec.rb +0 -71
  248. data/spec/bounding_box_spec.rb +0 -501
  249. data/spec/column_box_spec.rb +0 -59
  250. data/spec/destinations_spec.rb +0 -13
  251. data/spec/document_spec.rb +0 -738
  252. data/spec/font_metric_cache_spec.rb +0 -52
  253. data/spec/font_spec.rb +0 -475
  254. data/spec/formatted_text_arranger_spec.rb +0 -452
  255. data/spec/formatted_text_box_spec.rb +0 -716
  256. data/spec/formatted_text_fragment_spec.rb +0 -299
  257. data/spec/graphics_spec.rb +0 -705
  258. data/spec/grid_spec.rb +0 -95
  259. data/spec/images_spec.rb +0 -167
  260. data/spec/inline_formatted_text_parser_spec.rb +0 -568
  261. data/spec/jpg_spec.rb +0 -23
  262. data/spec/line_wrap_spec.rb +0 -366
  263. data/spec/measurement_units_spec.rb +0 -22
  264. data/spec/outline_spec.rb +0 -409
  265. data/spec/png_spec.rb +0 -257
  266. data/spec/reference_spec.rb +0 -25
  267. data/spec/repeater_spec.rb +0 -154
  268. data/spec/security_spec.rb +0 -151
  269. data/spec/soft_mask_spec.rb +0 -78
  270. data/spec/span_spec.rb +0 -43
  271. data/spec/stamp_spec.rb +0 -179
  272. data/spec/stroke_styles_spec.rb +0 -208
  273. data/spec/text_at_spec.rb +0 -142
  274. data/spec/text_box_spec.rb +0 -1042
  275. data/spec/text_rendering_mode_spec.rb +0 -45
  276. data/spec/text_spacing_spec.rb +0 -93
  277. data/spec/text_spec.rb +0 -543
  278. data/spec/text_with_inline_formatting_spec.rb +0 -35
  279. data/spec/transparency_spec.rb +0 -91
  280. data/spec/view_spec.rb +0 -42
@@ -1,7 +1,8 @@
1
- # encoding: UTF-8
1
+ # frozen_string_literal: true
2
2
 
3
- require_relative "../lib/prawn"
4
- require "prawn/manual_builder"
3
+ $LOAD_PATH.unshift File.join(__dir__, '../lib')
4
+ require 'prawn'
5
+ require 'prawn/manual_builder'
5
6
 
6
7
  Prawn::ManualBuilder.manual_dir = File.dirname(__FILE__)
7
- Prawn::Font::AFM.hide_m17n_warning = true
8
+ Prawn::Fonts::AFM.hide_m17n_warning = true
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Blend modes can be used to change the way two layers (images, graphics,
4
4
  # text, etc.) are blended together. The <code>blend_mode</code> method
5
5
  # accepts a single blend mode or an array of blend modes. PDF viewers should
@@ -8,9 +8,8 @@
8
8
  # Valid blend modes in v1.4 of the PDF spec include :Normal, :Multiply, :Screen,
9
9
  # :Overlay, :Darken, :Lighten, :ColorDodge, :ColorBurn, :HardLight, :SoftLight,
10
10
  # :Difference, :Exclusion, :Hue, :Saturation, :Color, and :Luminosity.
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
@@ -22,14 +21,18 @@ Prawn::ManualBuilder::Example.generate(filename) do
22
21
  # https://commons.wikimedia.org/wiki/File:Blend_modes_1.-top-layer.jpg#/media/File:Blend_modes_1.-top-layer.jpg
23
22
  top_layer = "#{Prawn::DATADIR}/images/blend_modes_top_layer.jpg"
24
23
 
25
- blend_modes = [:Normal, :Multiply, :Screen, :Overlay, :Darken, :Lighten, :ColorDodge, :ColorBurn, :HardLight, :SoftLight, :Difference, :Exclusion, :Hue, :Saturation, :Color, :Luminosity]
24
+ blend_modes = %i[
25
+ Normal Multiply Screen Overlay Darken Lighten ColorDodge
26
+ ColorBurn HardLight SoftLight Difference Exclusion Hue
27
+ Saturation Color Luminosity
28
+ ]
26
29
  blend_modes.each_with_index do |blend_mode, index|
27
30
  x = index % 4 * 135
28
31
  y = cursor - (index / 4 * 200)
29
32
 
30
- image bottom_layer, :at => [x, y], :fit => [125, 125]
33
+ image bottom_layer, at: [x, y], fit: [125, 125]
31
34
  blend_mode(blend_mode) do
32
- image top_layer, :at => [x, y], :fit => [125, 125]
35
+ image top_layer, at: [x, y], fit: [125, 125]
33
36
  end
34
37
 
35
38
  y -= 130
@@ -44,6 +47,6 @@ Prawn::ManualBuilder::Example.generate(filename) do
44
47
  y -= 30
45
48
 
46
49
  fill_color '000000'
47
- text_box blend_mode.to_s, :at => [x, y]
50
+ text_box blend_mode.to_s, at: [x, y]
48
51
  end
49
52
  end
@@ -1,14 +1,13 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To define a <code>circle</code> all you need is the center point and the
4
4
  # radius.
5
5
  #
6
6
  # To define an <code>ellipse</code> you provide the center point and two radii
7
7
  # (or axes) values. If the second radius value is ommitted, both radii will be
8
8
  # equal and you will end up drawing a circle.
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
@@ -1,19 +1,17 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # We can change the stroke and fill colors providing an HTML rgb 6 digit color
4
4
  # code string ("AB1234") or 4 values for CMYK.
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
- # Fill with Yellow using RGB
14
- fill_color "FFFFCC"
15
- fill_polygon [50, 150], [150, 200], [250, 150],
16
- [250, 50], [150, 0], [50, 50]
12
+ # Fill with Yellow using RGB (Unlike css, there is no leading #)
13
+ fill_color 'FFFFCC'
14
+ fill_polygon [50, 150], [150, 200], [250, 150], [250, 50], [150, 0], [50, 50]
17
15
 
18
16
  # Stroke with Purple using CMYK
19
17
  stroke_color 50, 100, 0, 0
@@ -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
@@ -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,13 +25,13 @@ 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],
30
- :width => 170,
31
- :align => :center
28
+ text_box 'Nonzero Winding Number', at: [50, 215],
29
+ width: 170,
30
+ align: :center
32
31
  polygon(*pentagram.map { |x, y| [x + 50, y] })
33
32
  fill_and_stroke
34
33
 
35
- text_box "Even-Odd", :at => [330, 215], :width => 170, :align => :center
34
+ text_box 'Even-Odd', at: [330, 215], width: 170, align: :center
36
35
  polygon(*pentagram.map { |x, y| [x + 330, y] })
37
- fill_and_stroke(:fill_rule => :even_odd)
36
+ fill_and_stroke(fill_rule: :even_odd)
38
37
  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,56 +1,64 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for the Graphics package.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
-
8
- Prawn::ManualBuilder::Example.generate("graphics.pdf", :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"
4
+
5
+ require_relative '../example_helper'
6
+
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'
13
13
  end
14
14
 
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"
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'
21
21
  end
22
22
 
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"
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'
34
34
  end
35
35
 
36
- p.section "Transformations" do |s|
37
- s.example "rotate"
38
- s.example "translate"
39
- s.example "scale"
36
+ p.section 'Transformations' do |s|
37
+ s.example 'rotate'
38
+ s.example 'translate'
39
+ s.example 'scale'
40
40
  end
41
41
 
42
42
  p.intro do
43
- 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.
44
46
 
45
- 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.
46
51
 
47
- The examples show:")
52
+ The examples show:
53
+ TEXT
48
54
 
49
- list( "All the possible ways that you can fill or stroke shapes on a page",
50
- "How to draw all the shapes that Prawn has to offer from a measly line to a mighty polygon or ellipse",
51
- "The configuration options for stroking lines and filling shapes",
52
- "How to apply transformations to your drawing space"
53
- )
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
+ )
54
62
  end
55
63
  end
56
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,18 @@
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], height: 200, step_length: 50,
21
+ negative_axes_length: 5, color: '0000FF'
22
+ )
23
+ stroke_axis(
24
+ at: [140, 140], width: 200, height: cursor.to_i - 140,
25
+ step_length: 20, negative_axes_length: 40, color: 'FF0000'
26
+ )
24
27
  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