prawn 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/prawn/document/bounding_box.rb +213 -141
  4. data/lib/prawn/document/column_box.rb +61 -26
  5. data/lib/prawn/document/internals.rb +25 -16
  6. data/lib/prawn/document/span.rb +20 -18
  7. data/lib/prawn/document.rb +257 -171
  8. data/lib/prawn/encoding.rb +2 -5
  9. data/lib/prawn/errors.rb +23 -34
  10. data/lib/prawn/font.rb +248 -135
  11. data/lib/prawn/font_metric_cache.rb +11 -10
  12. data/lib/prawn/fonts/afm.rb +85 -45
  13. data/lib/prawn/fonts/dfont.rb +7 -1
  14. data/lib/prawn/fonts/otf.rb +4 -1
  15. data/lib/prawn/fonts/to_unicode_cmap.rb +151 -0
  16. data/lib/prawn/fonts/ttc.rb +7 -2
  17. data/lib/prawn/fonts/ttf.rb +305 -93
  18. data/lib/prawn/fonts.rb +14 -0
  19. data/lib/prawn/graphics/blend_mode.rb +25 -28
  20. data/lib/prawn/graphics/cap_style.rb +9 -12
  21. data/lib/prawn/graphics/color.rb +57 -34
  22. data/lib/prawn/graphics/dash.rb +45 -42
  23. data/lib/prawn/graphics/join_style.rb +17 -11
  24. data/lib/prawn/graphics/patterns.rb +190 -69
  25. data/lib/prawn/graphics/transformation.rb +48 -41
  26. data/lib/prawn/graphics/transparency.rb +16 -40
  27. data/lib/prawn/graphics.rb +363 -253
  28. data/lib/prawn/grid.rb +184 -57
  29. data/lib/prawn/image_handler.rb +27 -10
  30. data/lib/prawn/images/image.rb +8 -10
  31. data/lib/prawn/images/jpg.rb +42 -19
  32. data/lib/prawn/images/png.rb +92 -41
  33. data/lib/prawn/images.rb +44 -57
  34. data/lib/prawn/measurement_extensions.rb +39 -8
  35. data/lib/prawn/measurements.rb +60 -5
  36. data/lib/prawn/outline.rb +114 -108
  37. data/lib/prawn/repeater.rb +51 -35
  38. data/lib/prawn/security/arcfour.rb +4 -4
  39. data/lib/prawn/security.rb +75 -70
  40. data/lib/prawn/soft_mask.rb +42 -30
  41. data/lib/prawn/stamp.rb +38 -42
  42. data/lib/prawn/text/box.rb +146 -96
  43. data/lib/prawn/text/formatted/arranger.rb +87 -26
  44. data/lib/prawn/text/formatted/box.rb +221 -150
  45. data/lib/prawn/text/formatted/fragment.rb +130 -14
  46. data/lib/prawn/text/formatted/line_wrap.rb +33 -24
  47. data/lib/prawn/text/formatted/parser.rb +112 -72
  48. data/lib/prawn/text/formatted/wrap.rb +12 -17
  49. data/lib/prawn/text/formatted.rb +75 -0
  50. data/lib/prawn/text.rb +441 -196
  51. data/lib/prawn/transformation_stack.rb +29 -10
  52. data/lib/prawn/utilities.rb +13 -13
  53. data/lib/prawn/version.rb +2 -1
  54. data/lib/prawn/view.rb +68 -53
  55. data/lib/prawn.rb +23 -18
  56. data.tar.gz.sig +0 -0
  57. metadata +54 -177
  58. metadata.gz.sig +0 -0
  59. data/.yardopts +0 -10
  60. data/Gemfile +0 -5
  61. data/Rakefile +0 -25
  62. data/manual/absolute_position.pdf +0 -0
  63. data/manual/basic_concepts/adding_pages.rb +0 -26
  64. data/manual/basic_concepts/basic_concepts.rb +0 -43
  65. data/manual/basic_concepts/creation.rb +0 -38
  66. data/manual/basic_concepts/cursor.rb +0 -32
  67. data/manual/basic_concepts/measurement.rb +0 -24
  68. data/manual/basic_concepts/origin.rb +0 -37
  69. data/manual/basic_concepts/other_cursor_helpers.rb +0 -39
  70. data/manual/basic_concepts/view.rb +0 -48
  71. data/manual/bounding_box/bounding_box.rb +0 -41
  72. data/manual/bounding_box/bounds.rb +0 -48
  73. data/manual/bounding_box/canvas.rb +0 -23
  74. data/manual/bounding_box/creation.rb +0 -22
  75. data/manual/bounding_box/indentation.rb +0 -45
  76. data/manual/bounding_box/nesting.rb +0 -52
  77. data/manual/bounding_box/russian_boxes.rb +0 -40
  78. data/manual/bounding_box/stretchy.rb +0 -29
  79. data/manual/contents.rb +0 -35
  80. data/manual/cover.rb +0 -43
  81. data/manual/document_and_page_options/background.rb +0 -29
  82. data/manual/document_and_page_options/document_and_page_options.rb +0 -34
  83. data/manual/document_and_page_options/metadata.rb +0 -25
  84. data/manual/document_and_page_options/page_margins.rb +0 -36
  85. data/manual/document_and_page_options/page_size.rb +0 -34
  86. data/manual/document_and_page_options/print_scaling.rb +0 -23
  87. data/manual/example_helper.rb +0 -8
  88. data/manual/graphics/blend_mode.rb +0 -52
  89. data/manual/graphics/circle_and_ellipse.rb +0 -21
  90. data/manual/graphics/color.rb +0 -22
  91. data/manual/graphics/common_lines.rb +0 -29
  92. data/manual/graphics/fill_and_stroke.rb +0 -41
  93. data/manual/graphics/fill_rules.rb +0 -38
  94. data/manual/graphics/gradients.rb +0 -43
  95. data/manual/graphics/graphics.rb +0 -64
  96. data/manual/graphics/helper.rb +0 -34
  97. data/manual/graphics/line_width.rb +0 -36
  98. data/manual/graphics/lines_and_curves.rb +0 -40
  99. data/manual/graphics/polygon.rb +0 -27
  100. data/manual/graphics/rectangle.rb +0 -20
  101. data/manual/graphics/rotate.rb +0 -25
  102. data/manual/graphics/scale.rb +0 -42
  103. data/manual/graphics/soft_masks.rb +0 -44
  104. data/manual/graphics/stroke_cap.rb +0 -30
  105. data/manual/graphics/stroke_dash.rb +0 -47
  106. data/manual/graphics/stroke_join.rb +0 -29
  107. data/manual/graphics/translate.rb +0 -29
  108. data/manual/graphics/transparency.rb +0 -33
  109. data/manual/how_to_read_this_manual.rb +0 -39
  110. data/manual/images/absolute_position.rb +0 -22
  111. data/manual/images/fit.rb +0 -20
  112. data/manual/images/horizontal.rb +0 -24
  113. data/manual/images/images.rb +0 -41
  114. data/manual/images/plain_image.rb +0 -17
  115. data/manual/images/scale.rb +0 -21
  116. data/manual/images/vertical.rb +0 -30
  117. data/manual/images/width_and_height.rb +0 -24
  118. data/manual/layout/boxes.rb +0 -26
  119. data/manual/layout/content.rb +0 -24
  120. data/manual/layout/layout.rb +0 -27
  121. data/manual/layout/simple_grid.rb +0 -22
  122. data/manual/outline/add_subsection_to.rb +0 -60
  123. data/manual/outline/insert_section_after.rb +0 -46
  124. data/manual/outline/outline.rb +0 -33
  125. data/manual/outline/sections_and_pages.rb +0 -66
  126. data/manual/repeatable_content/alternate_page_numbering.rb +0 -36
  127. data/manual/repeatable_content/page_numbering.rb +0 -55
  128. data/manual/repeatable_content/repeatable_content.rb +0 -35
  129. data/manual/repeatable_content/repeater.rb +0 -54
  130. data/manual/repeatable_content/stamp.rb +0 -40
  131. data/manual/security/encryption.rb +0 -28
  132. data/manual/security/permissions.rb +0 -43
  133. data/manual/security/security.rb +0 -28
  134. data/manual/table.rb +0 -16
  135. data/manual/text/alignment.rb +0 -43
  136. data/manual/text/color.rb +0 -24
  137. data/manual/text/column_box.rb +0 -30
  138. data/manual/text/fallback_fonts.rb +0 -41
  139. data/manual/text/font.rb +0 -40
  140. data/manual/text/font_size.rb +0 -44
  141. data/manual/text/font_style.rb +0 -25
  142. data/manual/text/formatted_callbacks.rb +0 -70
  143. data/manual/text/formatted_text.rb +0 -61
  144. data/manual/text/free_flowing_text.rb +0 -50
  145. data/manual/text/inline.rb +0 -40
  146. data/manual/text/kerning_and_character_spacing.rb +0 -38
  147. data/manual/text/leading.rb +0 -24
  148. data/manual/text/line_wrapping.rb +0 -60
  149. data/manual/text/paragraph_indentation.rb +0 -31
  150. data/manual/text/positioned_text.rb +0 -37
  151. data/manual/text/registering_families.rb +0 -51
  152. data/manual/text/rendering_and_color.rb +0 -36
  153. data/manual/text/right_to_left_text.rb +0 -54
  154. data/manual/text/rotation.rb +0 -52
  155. data/manual/text/single_usage.rb +0 -36
  156. data/manual/text/text.rb +0 -75
  157. data/manual/text/text_box_excess.rb +0 -35
  158. data/manual/text/text_box_extensions.rb +0 -48
  159. data/manual/text/text_box_overflow.rb +0 -51
  160. data/manual/text/utf8.rb +0 -27
  161. data/manual/text/win_ansi_charset.rb +0 -62
  162. data/prawn.gemspec +0 -51
  163. data/spec/data/curves.pdf +0 -66
  164. data/spec/extensions/encoding_helpers.rb +0 -11
  165. data/spec/prawn/document/bounding_box_spec.rb +0 -550
  166. data/spec/prawn/document/column_box_spec.rb +0 -75
  167. data/spec/prawn/document/security_spec.rb +0 -176
  168. data/spec/prawn/document_annotations_spec.rb +0 -76
  169. data/spec/prawn/document_destinations_spec.rb +0 -15
  170. data/spec/prawn/document_grid_spec.rb +0 -99
  171. data/spec/prawn/document_reference_spec.rb +0 -27
  172. data/spec/prawn/document_span_spec.rb +0 -44
  173. data/spec/prawn/document_spec.rb +0 -805
  174. data/spec/prawn/font_metric_cache_spec.rb +0 -54
  175. data/spec/prawn/font_spec.rb +0 -544
  176. data/spec/prawn/graphics/blend_mode_spec.rb +0 -63
  177. data/spec/prawn/graphics/transparency_spec.rb +0 -81
  178. data/spec/prawn/graphics_spec.rb +0 -872
  179. data/spec/prawn/graphics_stroke_styles_spec.rb +0 -229
  180. data/spec/prawn/image_handler_spec.rb +0 -53
  181. data/spec/prawn/images/jpg_spec.rb +0 -20
  182. data/spec/prawn/images/png_spec.rb +0 -283
  183. data/spec/prawn/images_spec.rb +0 -229
  184. data/spec/prawn/measurements_extensions_spec.rb +0 -24
  185. data/spec/prawn/outline_spec.rb +0 -512
  186. data/spec/prawn/repeater_spec.rb +0 -166
  187. data/spec/prawn/soft_mask_spec.rb +0 -74
  188. data/spec/prawn/stamp_spec.rb +0 -173
  189. data/spec/prawn/text/box_spec.rb +0 -1110
  190. data/spec/prawn/text/formatted/arranger_spec.rb +0 -466
  191. data/spec/prawn/text/formatted/box_spec.rb +0 -849
  192. data/spec/prawn/text/formatted/fragment_spec.rb +0 -343
  193. data/spec/prawn/text/formatted/line_wrap_spec.rb +0 -495
  194. data/spec/prawn/text/formatted/parser_spec.rb +0 -697
  195. data/spec/prawn/text_draw_text_spec.rb +0 -150
  196. data/spec/prawn/text_rendering_mode_spec.rb +0 -48
  197. data/spec/prawn/text_spacing_spec.rb +0 -95
  198. data/spec/prawn/text_spec.rb +0 -603
  199. data/spec/prawn/text_with_inline_formatting_spec.rb +0 -35
  200. data/spec/prawn/transformation_stack_spec.rb +0 -66
  201. data/spec/prawn/view_spec.rb +0 -63
  202. data/spec/prawn_manual_spec.rb +0 -35
  203. data/spec/spec_helper.rb +0 -48
@@ -16,12 +16,8 @@ require_relative 'graphics/transformation'
16
16
  require_relative 'graphics/patterns'
17
17
 
18
18
  module Prawn
19
- # Implements the drawing facilities for Prawn::Document.
19
+ # Implements the drawing facilities for {Prawn::Document}.
20
20
  # Use this to draw the most beautiful imaginable things.
21
- #
22
- # This file lifts and modifies several of PDF::Writer's graphics functions
23
- # ruby-pdf.rubyforge.org
24
- #
25
21
  module Graphics
26
22
  include BlendMode
27
23
  include Color
@@ -38,12 +34,20 @@ module Prawn
38
34
  # Low level drawing operations must map the point to absolute coords! #
39
35
  #######################################################################
40
36
 
41
- # Moves the drawing position to a given point. The point can be
42
- # specified as a tuple or a flattened argument list
37
+ # Moves the drawing position to a given point. The point can be specified as
38
+ # a tuple or a flattened argument list.
43
39
  #
44
- # pdf.move_to [100,50]
45
- # pdf.move_to(100,50)
40
+ # @example
41
+ # pdf.move_to [100, 50]
42
+ # pdf.move_to(100, 50)
46
43
  #
44
+ # @overload move_to(point)
45
+ # @param point [Array(Number, Number)]
46
+ # @return [void]
47
+ # @overload move_to(x, y)
48
+ # @param x [Number]
49
+ # @param y [Number]
50
+ # @return [void]
47
51
  def move_to(*point)
48
52
  xy = PDF::Core.real_params(map_to_absolute(point))
49
53
  renderer.add_content("#{xy} m")
@@ -52,9 +56,17 @@ module Prawn
52
56
  # Draws a line from the current drawing position to the specified point.
53
57
  # The destination may be described as a tuple or a flattened list:
54
58
  #
55
- # pdf.line_to [50,50]
56
- # pdf.line_to(50,50)
57
- #
59
+ # @example
60
+ # pdf.line_to [50, 50]
61
+ # pdf.line_to(50, 50)
62
+ #
63
+ # @overload line_to(point)
64
+ # @param point [Array(Number, Number)]
65
+ # @return [void]
66
+ # @overload line_to(x, y)
67
+ # @param x [Number]
68
+ # @param y [Number]
69
+ # @return [void]
58
70
  def line_to(*point)
59
71
  xy = PDF::Core.real_params(map_to_absolute(point))
60
72
  renderer.add_content("#{xy} l")
@@ -63,27 +75,36 @@ module Prawn
63
75
  # Draws a Bezier curve from the current drawing position to the
64
76
  # specified point, bounded by two additional points.
65
77
  #
66
- # pdf.curve_to [100,100], :bounds => [[90,90],[75,75]]
78
+ # @example
79
+ # pdf.curve_to [100, 100], bounds: [[90, 90], [75, 75]]
67
80
  #
81
+ # @param dest [Array(Number, Number)]
82
+ # @param options [Hash]
83
+ # @option options :bounds [Array(Array(Number, Number), Array(Number, Number))]
84
+ # @return [void]
68
85
  def curve_to(dest, options = {})
69
86
  options[:bounds] || raise(
70
87
  Prawn::Errors::InvalidGraphicsPath,
71
- 'Bounding points for bezier curve must be specified ' \
72
- 'as :bounds => [[x1,y1],[x2,y2]]'
88
+ 'Bounding points for bezier curve must be specified as :bounds => [[x1,y1],[x2,y2]]',
73
89
  )
74
90
 
75
91
  curve_points = PDF::Core.real_params(
76
- (options[:bounds] << dest).flat_map { |e| map_to_absolute(e) }
92
+ (options[:bounds] << dest).flat_map { |e| map_to_absolute(e) },
77
93
  )
78
94
 
79
95
  renderer.add_content("#{curve_points} c")
80
96
  end
81
97
 
82
- # Draws a rectangle given <tt>point</tt>, <tt>width</tt> and
83
- # <tt>height</tt>. The rectangle is bounded by its upper-left corner.
98
+ # Draws a rectangle given `point`, `width and `height`. The rectangle is
99
+ # bounded by its upper-left corner.
84
100
  #
85
- # pdf.rectangle [300,300], 100, 200
101
+ # @example
102
+ # pdf.rectangle [300, 300], 100, 200
86
103
  #
104
+ # @param point [Array(Number, Number)]
105
+ # @param width [Number]
106
+ # @param height [Number]
107
+ # @return [void]
87
108
  def rectangle(point, width, height)
88
109
  x, y = map_to_absolute(point)
89
110
  box = PDF::Core.real_params([x, y - height, width, height])
@@ -91,16 +112,21 @@ module Prawn
91
112
  renderer.add_content("#{box} re")
92
113
  end
93
114
 
94
- # Draws a rounded rectangle given <tt>point</tt>, <tt>width</tt> and
95
- # <tt>height</tt> and <tt>radius</tt> for the rounded corner. The rectangle
96
- # is bounded by its upper-left corner.
115
+ # Draws a rounded rectangle given `point`, `width`, `height`, and `radius`
116
+ # for the rounded corner. The rectangle is bounded by its upper-left corner.
97
117
  #
98
- # pdf.rounded_rectangle [300,300], 100, 200, 10
118
+ # @example
119
+ # pdf.rounded_rectangle [300, 300], 100, 200, 10
99
120
  #
121
+ # @param point [Array(Number, Number)]
122
+ # @param width [Number]
123
+ # @param height [Number]
124
+ # @param radius [Number]
125
+ # @return [void]
100
126
  def rounded_rectangle(point, width, height, radius)
101
127
  x, y = point
102
128
  rounded_polygon(
103
- radius, point, [x + width, y], [x + width, y - height], [x, y - height]
129
+ radius, point, [x + width, y], [x + width, y - height], [x, y - height],
104
130
  )
105
131
  end
106
132
 
@@ -108,8 +134,10 @@ module Prawn
108
134
  # Higher level functions: May use relative coords #
109
135
  ###########################################################
110
136
 
111
- # Sets line thickness to the <tt>width</tt> specified.
137
+ # Sets line thickness to the `width` specified.
112
138
  #
139
+ # @param width [Number]
140
+ # @return [void]
113
141
  def line_width=(width)
114
142
  self.current_line_width = width
115
143
  write_line_width
@@ -117,12 +145,18 @@ module Prawn
117
145
 
118
146
  # When called without an argument, returns the current line thickness.
119
147
  # When called with an argument, sets the line thickness to the specified
120
- # value (in PDF points)
148
+ # value (in PDF points).
121
149
  #
150
+ # @example
122
151
  # pdf.line_width #=> 1
123
152
  # pdf.line_width(5)
124
153
  # pdf.line_width #=> 5
125
154
  #
155
+ # @overload line_width()
156
+ # @return [Number]
157
+ # @overload line_width(width)
158
+ # @param width [Number]
159
+ # @return [void]
126
160
  def line_width(width = nil)
127
161
  if width
128
162
  self.line_width = width
@@ -132,41 +166,64 @@ module Prawn
132
166
  end
133
167
 
134
168
  # Draws a line from one point to another. Points may be specified as
135
- # tuples or flattened argument list:
136
- #
137
- # pdf.line [100,100], [200,250]
138
- # pdf.line(100,100,200,250)
169
+ # tuples or flattened argument list.
139
170
  #
171
+ # @example
172
+ # pdf.line [100, 100], [200, 250]
173
+ # pdf.line(100, 100, 200, 250)
174
+ #
175
+ # @overload line(point1, point2)
176
+ # @param point1 [Array(Number, Number)]
177
+ # @param point2 [Array(Number, Number)]
178
+ # @return [void]
179
+ # @overload line(x1, y1, x2, y2)
180
+ # @param x1 [Number]
181
+ # @param y1 [Number]
182
+ # @param x2 [Number]
183
+ # @param y2 [Number]
184
+ # @return [void]
140
185
  def line(*points)
141
186
  x0, y0, x1, y1 = points.flatten
142
187
  move_to(x0, y0)
143
188
  line_to(x1, y1)
144
189
  end
145
190
 
146
- # Draws a horizontal line from <tt>x1</tt> to <tt>x2</tt> at the
147
- # current <tt>y</tt> position, or the position specified by the :at option.
191
+ # Draws a horizontal line from `x1` to `x2` at the current {Document#y}
192
+ # position, or the position specified by the `:at` option.
148
193
  #
149
- # # draw a line from [25, 75] to [100, 75]
150
- # horizontal_line 25, 100, :at => 75
194
+ # @example Draw a line from `[25, 75]` to `[100, 75]`
195
+ # horizontal_line 25, 100, at: 75
151
196
  #
197
+ # @param x1 [Number]
198
+ # @param x2 [Number]
199
+ # @param options [Hash]
200
+ # @option options :at [Number]
201
+ # @return [void]
152
202
  def horizontal_line(x1, x2, options = {})
153
- y1 = options[:at] || y - bounds.absolute_bottom
203
+ y1 = options[:at] || (y - bounds.absolute_bottom)
154
204
 
155
205
  line(x1, y1, x2, y1)
156
206
  end
157
207
 
158
208
  # Draws a horizontal line from the left border to the right border of the
159
- # bounding box at the current <tt>y</tt> position.
209
+ # bounding box at the current {Document#y} position.
160
210
  #
211
+ # @return [void]
161
212
  def horizontal_rule
162
213
  horizontal_line(bounds.left, bounds.right)
163
214
  end
164
215
 
165
- # Draws a vertical line at the x cooordinate given by :at from y1 to y2.
216
+ # Draws a vertical line at the x coordinate given by `:at` from `y1` to
217
+ # `y2`.
166
218
  #
167
- # # draw a line from [25, 100] to [25, 300]
168
- # vertical_line 100, 300, :at => 25
219
+ # @example Draw a line from `[25, 100]` to `[25, 300]`
220
+ # vertical_line 100, 300, at: 25
169
221
  #
222
+ # @param y1 [Number]
223
+ # @param y2 [Number]
224
+ # @param params [Hash]
225
+ # @option params :at [Number]
226
+ # @return [void]
170
227
  def vertical_line(y1, y2, params)
171
228
  line(params[:at], y1, params[:at], y2)
172
229
  end
@@ -174,8 +231,14 @@ module Prawn
174
231
  # Draws a Bezier curve between two points, bounded by two additional
175
232
  # points
176
233
  #
177
- # pdf.curve [50,100], [100,100], :bounds => [[90,90],[75,75]]
234
+ # @example
235
+ # pdf.curve [50, 100], [100, 100], bounds: [[90, 90], [75, 75]]
178
236
  #
237
+ # @param origin [Array(Number, Number)]
238
+ # @param dest [Array(Number, Number)]
239
+ # @param options [Hash]
240
+ # @option options :bounds [Array(Array(Number, Number), Array(Number, Number))]
241
+ # @return [void]
179
242
  def curve(origin, dest, options = {})
180
243
  move_to(*origin)
181
244
  curve_to(dest, options)
@@ -183,27 +246,33 @@ module Prawn
183
246
 
184
247
  # This constant is used to approximate a symmetrical arc using a cubic
185
248
  # Bezier curve.
186
- #
187
249
  KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0)
188
250
 
189
- # Draws a circle of radius <tt>radius</tt> with the centre-point at
190
- # <tt>point</tt> as a complete subpath. The drawing point will be moved to
251
+ # Draws a circle of radius `radius` with the centre-point at
252
+ # `point` as a complete subpath. The drawing point will be moved to
191
253
  # the centre-point upon completion of the drawing the circle.
192
254
  #
193
- # pdf.circle [100,100], 25
255
+ # @example
256
+ # pdf.circle [100, 100], 25
194
257
  #
258
+ # @param center [Array(Number, Number)]
259
+ # @param radius [Number]
260
+ # @return [void]
195
261
  def circle(center, radius)
196
262
  ellipse(center, radius, radius)
197
263
  end
198
264
 
199
- # Draws an ellipse of +x+ radius <tt>radius1</tt> and +y+ radius
200
- # <tt>radius2</tt> with the centre-point at <tt>point</tt> as a complete
201
- # subpath. The drawing point will be moved to the centre-point upon
202
- # completion of the drawing the ellipse.
265
+ # Draws an ellipse of `x` radius `radius1` and `y` radius `radius2` with the
266
+ # centre-point at `point` as a complete subpath. The drawing point will be
267
+ # moved to the centre-point upon completion of the drawing the ellipse.
203
268
  #
204
- # # draws an ellipse with x-radius 25 and y-radius 50
205
- # pdf.ellipse [100,100], 25, 50
269
+ # @example Draws an ellipse with x-radius 25 and y-radius 50
270
+ # pdf.ellipse [100, 100], 25, 50
206
271
  #
272
+ # @param point [Array(Number, Number)]
273
+ # @param radius1 [Number]
274
+ # @param radius2 [Number]
275
+ # @return [void]
207
276
  def ellipse(point, radius1, radius2 = radius1)
208
277
  x, y = point
209
278
  l1 = radius1 * KAPPA
@@ -212,137 +281,153 @@ module Prawn
212
281
  move_to(x + radius1, y)
213
282
 
214
283
  # Upper right hand corner
215
- curve_to [x, y + radius2],
216
- bounds: [[x + radius1, y + l2], [x + l1, y + radius2]]
284
+ curve_to(
285
+ [x, y + radius2],
286
+ bounds: [[x + radius1, y + l2], [x + l1, y + radius2]],
287
+ )
217
288
 
218
289
  # Upper left hand corner
219
- curve_to [x - radius1, y],
220
- bounds: [[x - l1, y + radius2], [x - radius1, y + l2]]
290
+ curve_to(
291
+ [x - radius1, y],
292
+ bounds: [[x - l1, y + radius2], [x - radius1, y + l2]],
293
+ )
221
294
 
222
295
  # Lower left hand corner
223
- curve_to [x, y - radius2],
224
- bounds: [[x - radius1, y - l2], [x - l1, y - radius2]]
296
+ curve_to(
297
+ [x, y - radius2],
298
+ bounds: [[x - radius1, y - l2], [x - l1, y - radius2]],
299
+ )
225
300
 
226
301
  # Lower right hand corner
227
- curve_to [x + radius1, y],
228
- bounds: [[x + l1, y - radius2], [x + radius1, y - l2]]
302
+ curve_to(
303
+ [x + radius1, y],
304
+ bounds: [[x + l1, y - radius2], [x + radius1, y - l2]],
305
+ )
229
306
 
230
307
  move_to(x, y)
231
308
  end
232
309
 
233
310
  # Draws a polygon from the specified points.
234
311
  #
235
- # # draws a snazzy triangle
312
+ # @example Draws a snazzy triangle
236
313
  # pdf.polygon [100,100], [100,200], [200,200]
237
314
  #
315
+ # @param points [Array<Array(Number, Number)>]
316
+ # @return [void]
238
317
  def polygon(*points)
239
- move_to points[0]
240
- (points[1..-1] << points[0]).each do |point|
318
+ move_to(points[0])
319
+ (points[1..] << points[0]).each do |point|
241
320
  line_to(*point)
242
321
  end
243
322
  # close the path
244
- renderer.add_content 'h'
323
+ renderer.add_content('h')
245
324
  end
246
325
 
247
326
  # Draws a rounded polygon from specified points using the radius to define
248
- # bezier curves
327
+ # bezier curves.
249
328
  #
250
- # # draws a rounded filled in polygon
329
+ # @example Draws a rounded filled in polygon
251
330
  # pdf.fill_and_stroke_rounded_polygon(
252
331
  # 10, [100, 250], [200, 300], [300, 250], [300, 150], [200, 100],
253
332
  # [100, 150]
254
333
  # )
334
+ #
335
+ # @param radius [Number]
336
+ # @param points [Array<Array(Number, Number)>]
337
+ # @return [void]
255
338
  def rounded_polygon(radius, *points)
256
- move_to point_on_line(radius, points[1], points[0])
339
+ move_to(point_on_line(radius, points[1], points[0]))
257
340
  sides = points.size
258
341
  points << points[0] << points[1]
259
342
  sides.times do |i|
260
343
  rounded_vertex(radius, points[i], points[i + 1], points[i + 2])
261
344
  end
262
345
  # close the path
263
- renderer.add_content 'h'
346
+ renderer.add_content('h')
264
347
  end
265
348
 
266
349
  # Creates a rounded vertex for a line segment used for building a rounded
267
350
  # polygon requires a radius to define bezier curve and three points. The
268
351
  # first two points define the line segment and the third point helps define
269
352
  # the curve for the vertex.
353
+ #
354
+ # @param radius [Number]
355
+ # @param points [Array(Array(Number, Number), Array(Number, Number), Array(Number, Number))]
356
+ # @return [void]
270
357
  def rounded_vertex(radius, *points)
271
358
  radial_point1 = point_on_line(radius, points[0], points[1])
272
359
  bezier_point1 = point_on_line(
273
- (radius - radius * KAPPA),
360
+ (radius - (radius * KAPPA)),
274
361
  points[0],
275
- points[1]
362
+ points[1],
276
363
  )
277
364
  radial_point2 = point_on_line(radius, points[2], points[1])
278
365
  bezier_point2 = point_on_line(
279
- (radius - radius * KAPPA),
366
+ (radius - (radius * KAPPA)),
280
367
  points[2],
281
- points[1]
368
+ points[1],
282
369
  )
283
370
  line_to(radial_point1)
284
371
  curve_to(radial_point2, bounds: [bezier_point1, bezier_point2])
285
372
  end
286
373
 
287
374
  # Strokes the current path. If a block is provided, yields to the block
288
- # before closing the path. See Graphics::Color for color details.
375
+ # before closing the path. See {Graphics::Color} for color details.
289
376
  #
377
+ # @yield
378
+ # @return [void]
290
379
  def stroke
291
380
  yield if block_given?
292
- renderer.add_content 'S'
381
+ renderer.add_content('S')
293
382
  end
294
383
 
295
- # Closes and strokes the current path. If a block is provided, yields to
296
- # the block before closing the path. See Graphics::Color for color details.
384
+ # Closes and strokes the current path. If a block is provided, yields to the
385
+ # block before closing the path. See {Graphics::Color} for color details.
297
386
  #
387
+ # @yield
388
+ # @return [void]
298
389
  def close_and_stroke
299
390
  yield if block_given?
300
- renderer.add_content 's'
391
+ renderer.add_content('s')
301
392
  end
302
393
 
303
- # Draws and strokes a rectangle represented by the current bounding box
394
+ # Draws and strokes a rectangle represented by the current bounding box.
304
395
  #
396
+ # @return [void]
305
397
  def stroke_bounds
306
- stroke_rectangle bounds.top_left, bounds.width, bounds.height
398
+ stroke_rectangle(bounds.top_left, bounds.width, bounds.height)
307
399
  end
308
400
 
309
401
  # Draws and strokes X and Y axes rulers beginning at the current bounding
310
402
  # box origin (or at a custom location).
311
403
  #
312
- # == Options
313
- #
314
- # +:at+::
315
- # Origin of the X and Y axes (default: [0, 0] = origin of the bounding
316
- # box)
317
- #
318
- # +:width+::
319
- # Length of the X axis (default: width of the bounding box)
320
- #
321
- # +:height+::
322
- # Length of the Y axis (default: height of the bounding box)
323
- #
324
- # +:step_length+::
325
- # Length of the step between markers (default: 100)
326
- #
327
- # +:negative_axes_length+::
328
- # Length of the negative parts of the axes (default: 20)
329
- #
330
- # +:color+:
404
+ # @param options [Hash]
405
+ # @option options :at [Array(Number, Number)] ([0, 0], origin of the bounding box)
406
+ # Origin of the X and Y axes.
407
+ # @option options :width [Number] (width of the bounding box)
408
+ # Length of the X axis.
409
+ # @option options :height [Number] (height of the bounding box)
410
+ # Length of the Y axis.
411
+ # @option options :step_length [Number] (100)
412
+ # Length of the step between markers.
413
+ # @option options :negative_axes_length [Number] (20)
414
+ # Length of the negative parts of the axes.
415
+ # @option options :color [String, Array<Number>]
331
416
  # The color of the axes and the text.
332
- #
417
+ # @return [void]
333
418
  def stroke_axis(options = {})
334
419
  options = {
335
420
  at: [0, 0],
336
- height: bounds.height.to_i - (options[:at] || [0, 0])[1],
337
- width: bounds.width.to_i - (options[:at] || [0, 0])[0],
421
+ height: bounds.height - (options[:at] || [0, 0])[1],
422
+ width: bounds.width - (options[:at] || [0, 0])[0],
338
423
  step_length: 100,
339
424
  negative_axes_length: 20,
340
- color: '000000'
425
+ color: '000000',
341
426
  }.merge(options)
342
427
 
343
428
  Prawn.verify_options(
344
429
  %i[at width height step_length negative_axes_length color],
345
- options
430
+ options,
346
431
  )
347
432
 
348
433
  save_graphics_state do
@@ -353,12 +438,12 @@ module Prawn
353
438
  stroke_horizontal_line(
354
439
  options[:at][0] - options[:negative_axes_length],
355
440
  options[:at][0] + options[:width],
356
- at: options[:at][1]
441
+ at: options[:at][1],
357
442
  )
358
443
  stroke_vertical_line(
359
444
  options[:at][1] - options[:negative_axes_length],
360
445
  options[:at][1] + options[:height],
361
- at: options[:at][0]
446
+ at: options[:at][0],
362
447
  )
363
448
  undash
364
449
 
@@ -370,7 +455,7 @@ module Prawn
370
455
  draw_text(
371
456
  point,
372
457
  at: [options[:at][0] + point - 5, options[:at][1] - 10],
373
- size: 7
458
+ size: 7,
374
459
  )
375
460
  end
376
461
 
@@ -380,33 +465,41 @@ module Prawn
380
465
  draw_text(
381
466
  point,
382
467
  at: [options[:at][0] - 17, options[:at][1] + point - 2],
383
- size: 7
468
+ size: 7,
384
469
  )
385
470
  end
386
471
  end
387
472
  end
388
473
 
389
- # Closes and fills the current path. See Graphics::Color for color details.
474
+ # Closes and fills the current path. See {Graphics::Color} for color details.
390
475
  #
391
- # If the option :fill_rule => :even_odd is specified, Prawn will use the
476
+ # If the option `fill_rule: :even_odd` is specified, Prawn will use the
392
477
  # even-odd rule to fill the path. Otherwise, the nonzero winding number rule
393
478
  # will be used. See the PDF reference, "Graphics -> Path Construction and
394
479
  # Painting -> Clipping Path Operators" for details on the difference.
395
480
  #
481
+ # @param options [Hash]
482
+ # @option options :fill_rule [Symbol]
483
+ # @yield
484
+ # @return [void]
396
485
  def fill(options = {})
397
486
  yield if block_given?
398
487
  renderer.add_content(options[:fill_rule] == :even_odd ? 'f*' : 'f')
399
488
  end
400
489
 
401
490
  # Closes, fills, and strokes the current path. If a block is provided,
402
- # yields to the block before closing the path. See Graphics::Color for
491
+ # yields to the block before closing the path. See {Graphics::Color} for
403
492
  # color details.
404
493
  #
405
- # If the option :fill_rule => :even_odd is specified, Prawn will use the
494
+ # If the option `fill_rule: :even_odd` is specified, Prawn will use the
406
495
  # even-odd rule to fill the path. Otherwise, the nonzero winding number rule
407
496
  # will be used. See the PDF reference, "Graphics -> Path Construction and
408
497
  # Painting -> Clipping Path Operators" for details on the difference.
409
498
  #
499
+ # @param options [Hash]
500
+ # @option options :fill_rule [Symbol]
501
+ # @yield
502
+ # @return [void]
410
503
  def fill_and_stroke(options = {})
411
504
  yield if block_given?
412
505
  renderer.add_content(options[:fill_rule] == :even_odd ? 'b*' : 'b')
@@ -415,214 +508,231 @@ module Prawn
415
508
  # Closes the current path.
416
509
  #
417
510
  def close_path
418
- renderer.add_content 'h'
511
+ renderer.add_content('h')
419
512
  end
420
513
 
421
- ##
422
- # :method: stroke_rectangle
514
+ # @!method fill_rectangle(point, width, height)
515
+ # Draws and fills a rectangle given `point`, `width`, and `height`. The
516
+ # rectangle is bounded by its upper-left corner.
423
517
  #
424
- # Draws and strokes a rectangle given +point+, +width+ and +height+. The
425
- # rectangle is bounded by its upper-left corner.
426
- #
427
- # :call-seq:
428
- # stroke_rectangle(point,width,height)
518
+ # @param point [Array(Number, Number)]
519
+ # @param width [Number]
520
+ # @param height [Number]
521
+ # @return [void]
429
522
 
430
- ##
431
- # :method: fill_rectangle
432
- #
433
- # Draws and fills ills a rectangle given +point+, +width+ and +height+. The
434
- # rectangle is bounded by its upper-left corner.
523
+ # @!method stroke_rectangle(point, width, height)
524
+ # Draws and strokes a rectangle given `point`, `width`, and `height`. The
525
+ # rectangle is bounded by its upper-left corner.
435
526
  #
436
- # :call-seq:
437
- # fill_rectangle(point,width,height)
527
+ # @param point [Array(Number, Number)]
528
+ # @param width [Number]
529
+ # @param height [Number]
530
+ # @return [void]
438
531
 
439
- ##
440
- # :method: fill_and_stroke_rectangle
441
- #
442
- # Draws, fills, and strokes a rectangle given +point+, +width+ and +height+.
443
- # The rectangle is bounded by its upper-left corner.
532
+ # @!method fill_and_stroke_rectangle(point, width, height)
533
+ # Draws, fills, and strokes a rectangle given `point`, `width`, and
534
+ # `height`. The rectangle is bounded by its upper-left corner.
444
535
  #
445
- # :call-seq:
446
- # fill_and_stroke_rectangle(point,width,height)
536
+ # @param point [Array(Number, Number)]
537
+ # @param width [Number]
538
+ # @param height [Number]
539
+ # @return [void]
447
540
 
448
- ##
449
- # :method: stroke_rounded_rectangle
541
+ # @!method fill_rounded_rectangle(point, width, height, radius)
450
542
  #
451
- # Draws and strokes a rounded rectangle given +point+, +width+ and +height+
452
- # and +radius+ for the rounded corner. The rectangle is bounded by its
453
- # upper-left corner.
543
+ # Draws and fills a rounded rectangle given `point`, `width` and `height`,
544
+ # and `radius` for the rounded corner. The rectangle is bounded by its
545
+ # upper-left corner.
454
546
  #
455
- # :call-seq:
456
- # stroke_rounded_rectangle(point,width,height,radius)
547
+ # @param point [Array(Number, Number)]
548
+ # @param width [Number]
549
+ # @param height [Number]
550
+ # @param radius [Number]
551
+ # @return [void]
457
552
 
458
- ##
459
- # :method: fill_rounded_rectangle
553
+ # @!method stroke_rounded_rectangle(point, width, height, radius)
554
+ # Draws and strokes a rounded rectangle given `point`, `width` and
555
+ # `height`, and `radius` for the rounded corner. The rectangle is bounded
556
+ # by its upper-left corner.
460
557
  #
461
- # Draws and fills a rounded rectangle given +point+, +width+ and +height+
462
- # and +radius+ for the rounded corner. The rectangle is bounded by its
463
- # upper-left corner.
464
- #
465
- # :call-seq:
466
- # fill_rounded_rectangle(point,width,height,radius)
558
+ # @param point [Array(Number, Number)]
559
+ # @param width [Number]
560
+ # @param height [Number]
561
+ # @param radius [Number]
562
+ # @return [void]
467
563
 
468
- ##
469
- # :method: stroke_and_fill_rounded_rectangle
564
+ # @!method fill_and_stroke_rounded_rectangle(point, width, height, radius)
470
565
  #
471
- # Draws, fills, and strokes a rounded rectangle given +point+, +width+ and
472
- # +height+ and +radius+ for the rounded corner. The rectangle is bounded by
473
- # its upper-left corner.
566
+ # Draws, fills, and strokes a rounded rectangle given `point`, `width`,
567
+ # and `height` and `radius` for the rounded corner. The rectangle is
568
+ # bounded by its upper-left corner.
474
569
  #
475
- # :call-seq:
476
- # stroke_and_fill_rounded_rectangle(point,width,height,radius)
570
+ # @param point [Array(Number, Number)]
571
+ # @param width [Number]
572
+ # @param height [Number]
573
+ # @param radius [Number]
574
+ # @return [void]
477
575
 
478
- ##
479
- # :method: stroke_line
576
+ # @!method stroke_line(*points)
480
577
  #
481
- # Strokes a line from one point to another. Points may be specified as
482
- # tuples or flattened argument list.
578
+ # Strokes a line from one point to another. Points may be specified as
579
+ # tuples or flattened argument list.
483
580
  #
484
- # :call-seq:
485
- # stroke_line(*points)
581
+ # @overload line(point1, point2)
582
+ # @param point1 [Array(Number, Number)]
583
+ # @param point2 [Array(Number, Number)]
584
+ # @return [void]
585
+ # @overload line(x1, y1, x2, y2)
586
+ # @param x1 [Number]
587
+ # @param y1 [Number]
588
+ # @param x2 [Number]
589
+ # @param y2 [Number]
590
+ # @return [void]
486
591
 
487
- ##
488
- # :method: stroke_horizontal_line
592
+ # @!method stroke_horizontal_line(x1, x2, options = {})
489
593
  #
490
- # Strokes a horizontal line from +x1+ to +x2+ at the current y position, or
491
- # the position specified by the :at option.
594
+ # Strokes a horizontal line from `x1` to `x2` at the current y position,
595
+ # or the position specified by the :at option.
492
596
  #
493
- # :call-seq:
494
- # stroke_horizontal_line(x1,x2,options={})
597
+ # @param x1 [Number]
598
+ # @param x2 [Number]
599
+ # @param options [Hash]
600
+ # @option options :at [Number]
601
+ # @return [void]
495
602
 
496
- ##
497
- # :method: stroke_horizontal_rule
603
+ # @!method stroke_horizontal_rule
498
604
  #
499
- # Strokes a horizontal line from the left border to the right border of the
500
- # bounding box at the current y position.
605
+ # Strokes a horizontal line from the left border to the right border of
606
+ # the bounding box at the current y position.
501
607
  #
502
- # :call-seq:
503
- # stroke_horizontal_rule
608
+ # @return [void]
504
609
 
505
- ##
506
- # :method: stroke_vertical_line
610
+ # @!method stroke_vertical_line(y1, y2, params)
507
611
  #
508
- # Strokes a vertical line at the x coordinate given by :at from y1 to y2.
612
+ # Strokes a vertical line at the x coordinate given by `:at` from `y1` to
613
+ # `y2`.
509
614
  #
510
- # :call-seq:
511
- # stroke_vertical_line(y1,y2,params)
615
+ # @param y1 [Number]
616
+ # @param y2 [Number]
617
+ # @param params [Hash]
618
+ # @option params :at [Number]
619
+ # @return [void]
512
620
 
513
- ##
514
- # :method: stroke_curve
621
+ # @!method stroke_curve(origin, dest, options = {})
515
622
  #
516
- # Strokes a Bezier curve between two points, bounded by two additional
517
- # points.
623
+ # Strokes a Bezier curve between two points, bounded by two additional
624
+ # points.
518
625
  #
519
- # :call-seq:
520
- # stroke_curve(origin,dest,options={})
626
+ # @param origin [Array(Number, Number)]
627
+ # @param dest [Array(Number, Number)]
628
+ # @param options [Hash]
629
+ # @option options :bounds [Array(Array(Number, Number), Array(Number, Number))]
630
+ # @return [void]
521
631
 
522
- ##
523
- # :method: stroke_circle
632
+ # @!method: stroke_circle(center, radius)
524
633
  #
525
- # Draws and strokes a circle of radius +radius+ with the centre-point at
526
- # +point+.
634
+ # Draws and strokes a circle of radius `radius` with the centre-point at
635
+ # `point`.
527
636
  #
528
- # :call-seq:
529
- # stroke_circle(center,radius)
637
+ # @param center [Array(Number, Number)]
638
+ # @param radius [Number]
639
+ # @return [void]
530
640
 
531
- ##
532
- # :method: fill_circle
641
+ # @!method fill_circle(center, radius)
533
642
  #
534
- # Draws and fills a circle of radius +radius+ with the centre-point at
535
- # +point+.
643
+ # Draws and fills a circle of radius `radius` with the centre-point at
644
+ # `point`.
536
645
  #
537
- # :call-seq:
538
- # fill_circle(center,radius)
646
+ # @param center [Array(Number, Number)]
647
+ # @param radius [Number]
648
+ # @return [void]
539
649
 
540
- ##
541
- # :method: fill_and_stroke_circle
650
+ # @!method fill_and_stroke_circle(center, radius)
542
651
  #
543
- # Draws, strokes, and fills a circle of radius +radius+ with the
544
- # centre-point at +point+.
652
+ # Draws, strokes, and fills a circle of radius `radius` with the
653
+ # centre-point at `point`.
545
654
  #
546
- # :call-seq:
547
- # fill_and_stroke_circle(center,radius)
655
+ # @param center [Array(Number, Number)]
656
+ # @param radius [Number]
657
+ # @return [void]
548
658
 
549
- ##
550
- # :method: stroke_ellipse
659
+ # @!method stroke_ellipse(point, radius1, radius2 = radius1)
551
660
  #
552
- # Draws and strokes an ellipse of x radius +r1+ and y radius +r2+ with the
553
- # centre-point at +point+.
661
+ # Draws and strokes an ellipse of x radius `r1` and y radius `r2` with the
662
+ # centre-point at `point`.
554
663
  #
555
- # :call-seq:
556
- # stroke_ellipse(point, r1, r2 = r1)
664
+ # @param point [Array(Number, Number)]
665
+ # @param radius1 [Number]
666
+ # @param radius2 [Number]
667
+ # @return [void]
557
668
 
558
- ##
559
- # :method: fill_ellipse
669
+ # @!method fill_ellipse(point, radius1, radius2 = radius1)
560
670
  #
561
- # Draws and fills an ellipse of x radius +r1+ and y radius +r2+ with the
562
- # centre-point at +point+.
671
+ # Draws and fills an ellipse of x radius `r1` and y radius `r2` with the
672
+ # centre-point at `point`.
563
673
  #
564
- # :call-seq:
565
- # fill_ellipse(point, r1, r2 = r1)
674
+ # @param point [Array(Number, Number)]
675
+ # @param radius1 [Number]
676
+ # @param radius2 [Number]
677
+ # @return [void]
566
678
 
567
- ##
568
- # :method: fill_and_stroke_ellipse
679
+ # @!method fill_and_stroke_ellipse(point, radius1, radius2 = radius1)
569
680
  #
570
- # Draws, strokes, and fills an ellipse of x radius +r1+ and y radius +r2+
571
- # with the centre-point at +point+.
681
+ # Draws, strokes, and fills an ellipse of x radius `r1` and y radius `r2`
682
+ # with the centre-point at `point`.
572
683
  #
573
- # :call-seq:
574
- # fill_and_stroke_ellipse(point, r1, r2 = r1)
684
+ # @param point [Array(Number, Number)]
685
+ # @param radius1 [Number]
686
+ # @param radius2 [Number]
687
+ # @return [void]
575
688
 
576
- ##
577
- # :method: stroke_polygon
689
+ # @!method stroke_polygon(*points)
578
690
  #
579
691
  # Draws and strokes a polygon from the specified points.
580
692
  #
581
- # :call-seq:
582
- # stroke_polygon(*points)
693
+ # @param points [Array<Array(Number, Number)>]
694
+ # @return [void]
583
695
 
584
- ##
585
- # :method: fill_polygon
696
+ # @!method fill_polygon(*points)
586
697
  #
587
- # Draws and fills a polygon from the specified points.
698
+ # Draws and fills a polygon from the specified points.
588
699
  #
589
- # :call-seq:
590
- # fill_polygon(*points)
700
+ # @param points [Array<Array(Number, Number)>]
701
+ # @return [void]
591
702
 
592
- ##
593
- # :method: fill_and_stroke_polygon
703
+ # @!method fill_and_stroke_polygon(*points)
594
704
  #
595
- # Draws, strokes, and fills a polygon from the specified points.
705
+ # Draws, strokes, and fills a polygon from the specified points.
596
706
  #
597
- # :call-seq:
598
- # fill_and_stroke_polygon(*points)
707
+ # @param points [Array<Array(Number, Number)>]
708
+ # @return [void]
599
709
 
600
- ##
601
- # :method: stroke_rounded_polygon
710
+ # @!method stroke_rounded_polygon(radius, *points)
602
711
  #
603
- # Draws and strokes a rounded polygon from specified points, using +radius+
604
- # to define Bezier curves.
712
+ # Draws and strokes a rounded polygon from specified points, using
713
+ # `radius` to define Bezier curves.
605
714
  #
606
- # :call-seq:
607
- # stroke_rounded_polygon(radius, *points)
715
+ # @param radius [Number]
716
+ # @param points [Array<Array(Number, Number)>]
717
+ # @return [void]
608
718
 
609
- ##
610
- # :method: fill_rounded_polygon
719
+ # @!method fill_rounded_polygon(radius, *points)
611
720
  #
612
- # Draws and fills a rounded polygon from specified points, using +radius+ to
613
- # define Bezier curves.
721
+ # Draws and fills a rounded polygon from specified points, using `radius`
722
+ # to define Bezier curves.
614
723
  #
615
- # :call-seq:
616
- # fill_rounded_polygon(radius, *points)
724
+ # @param radius [Number]
725
+ # @param points [Array<Array(Number, Number)>]
726
+ # @return [void]
617
727
 
618
- ##
619
- # :method: fill_and_stroke_rounded_polygon
728
+ # @!method fill_and_stroke_rounded_polygon(radius, *points)
620
729
  #
621
- # Draws, strokes, and fills a rounded polygon from specified points, using
622
- # +radius+ to define Bezier curves.
730
+ # Draws, strokes, and fills a rounded polygon from specified points, using
731
+ # `radius` to define Bezier curves.
623
732
  #
624
- # :call-seq:
625
- # fill_and_stroke_rounded_polygon(radius, *points)
733
+ # @param radius [Number]
734
+ # @param points [Array<Array(Number, Number)>]
735
+ # @return [void]
626
736
 
627
737
  ops = %w[fill stroke fill_and_stroke]
628
738
  shapes = %w[
@@ -671,10 +781,10 @@ module Prawn
671
781
  # away from the second point defining the line segement
672
782
  def point_on_line(distance_from_end, *points)
673
783
  x0, y0, x1, y1 = points.flatten
674
- length = Math.sqrt((x1 - x0)**2 + (y1 - y0)**2)
784
+ length = Math.sqrt(((x1 - x0)**2) + ((y1 - y0)**2))
675
785
  p = (length - distance_from_end) / length
676
- xr = x0 + p * (x1 - x0)
677
- yr = y0 + p * (y1 - y0)
786
+ xr = x0 + (p * (x1 - x0))
787
+ yr = y0 + (p * (y1 - y0))
678
788
  [xr, yr]
679
789
  end
680
790
  end