rmagick 2.13.2 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rmagick might be problematic. Click here for more details.

Files changed (380) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +63 -0
  3. data/.editorconfig +17 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/workflows/ci.yml +107 -0
  6. data/.gitignore +25 -0
  7. data/.rspec +2 -0
  8. data/.rubocop.yml +37 -0
  9. data/.rubocop_todo.yml +449 -0
  10. data/.yardopts +5 -0
  11. data/CHANGELOG.md +1277 -0
  12. data/CODE_OF_CONDUCT.md +128 -0
  13. data/CONTRIBUTING.md +81 -0
  14. data/Gemfile +4 -0
  15. data/LICENSE +20 -0
  16. data/README.md +324 -0
  17. data/Rakefile +190 -0
  18. data/before_install_linux.sh +69 -0
  19. data/before_install_osx.sh +57 -0
  20. data/deprecated/RMagick.rb +6 -0
  21. data/ext/RMagick/extconf.rb +334 -333
  22. data/ext/RMagick/rmagick.c +129 -127
  23. data/ext/RMagick/rmagick.h +221 -320
  24. data/ext/RMagick/rmdraw.c +458 -767
  25. data/ext/RMagick/rmenum.c +305 -752
  26. data/ext/RMagick/rmfill.c +231 -199
  27. data/ext/RMagick/rmilist.c +437 -478
  28. data/ext/RMagick/rmimage.c +6130 -5342
  29. data/ext/RMagick/rminfo.c +695 -833
  30. data/ext/RMagick/rmkinfo.c +198 -0
  31. data/ext/RMagick/rmmain.c +752 -506
  32. data/ext/RMagick/rmmontage.c +94 -152
  33. data/ext/RMagick/rmpixel.c +619 -425
  34. data/ext/RMagick/rmstruct.c +206 -309
  35. data/ext/RMagick/rmutil.c +514 -344
  36. data/lib/rmagick/version.rb +5 -0
  37. data/lib/rmagick.rb +1 -0
  38. data/lib/rmagick_internal.rb +1922 -0
  39. data/lib/rvg/clippath.rb +35 -39
  40. data/lib/rvg/container.rb +123 -124
  41. data/lib/rvg/deep_equal.rb +45 -49
  42. data/lib/rvg/describable.rb +41 -47
  43. data/lib/rvg/embellishable.rb +380 -411
  44. data/lib/rvg/misc.rb +691 -711
  45. data/lib/rvg/paint.rb +43 -47
  46. data/lib/rvg/pathdata.rb +119 -125
  47. data/lib/rvg/rvg.rb +214 -213
  48. data/lib/rvg/stretchable.rb +153 -162
  49. data/lib/rvg/stylable.rb +111 -117
  50. data/lib/rvg/text.rb +169 -180
  51. data/lib/rvg/transformable.rb +121 -127
  52. data/lib/rvg/units.rb +58 -61
  53. data/rmagick.gemspec +36 -16
  54. metadata +188 -365
  55. data/ChangeLog +0 -773
  56. data/Doxyfile +0 -1514
  57. data/README-Mac-OSX.txt +0 -1
  58. data/README.html +0 -10
  59. data/build_tarball.rake +0 -215
  60. data/doc/comtasks.html +0 -287
  61. data/doc/constants.html +0 -1581
  62. data/doc/css/doc.css +0 -299
  63. data/doc/css/popup.css +0 -34
  64. data/doc/css/ref.css +0 -67
  65. data/doc/draw.html +0 -3269
  66. data/doc/ex/InitialCoords.rb +0 -23
  67. data/doc/ex/NewCoordSys.rb +0 -32
  68. data/doc/ex/OrigCoordSys.rb +0 -18
  69. data/doc/ex/PreserveAspectRatio.rb +0 -205
  70. data/doc/ex/RotateScale.rb +0 -37
  71. data/doc/ex/Skew.rb +0 -38
  72. data/doc/ex/Use01.rb +0 -16
  73. data/doc/ex/Use02.rb +0 -21
  74. data/doc/ex/Use03.rb +0 -16
  75. data/doc/ex/ViewBox.rb +0 -33
  76. data/doc/ex/adaptive_threshold.rb +0 -10
  77. data/doc/ex/add_noise.rb +0 -17
  78. data/doc/ex/affine.rb +0 -48
  79. data/doc/ex/affine_transform.rb +0 -20
  80. data/doc/ex/arc.rb +0 -49
  81. data/doc/ex/arcpath.rb +0 -33
  82. data/doc/ex/arcs01.rb +0 -28
  83. data/doc/ex/arcs02.rb +0 -61
  84. data/doc/ex/average.rb +0 -15
  85. data/doc/ex/axes.rb +0 -64
  86. data/doc/ex/baseline_shift01.rb +0 -18
  87. data/doc/ex/bilevel_channel.rb +0 -9
  88. data/doc/ex/blur_image.rb +0 -12
  89. data/doc/ex/border.rb +0 -10
  90. data/doc/ex/bounding_box.rb +0 -44
  91. data/doc/ex/cbezier1.rb +0 -42
  92. data/doc/ex/cbezier2.rb +0 -42
  93. data/doc/ex/cbezier3.rb +0 -42
  94. data/doc/ex/cbezier4.rb +0 -43
  95. data/doc/ex/cbezier5.rb +0 -43
  96. data/doc/ex/cbezier6.rb +0 -53
  97. data/doc/ex/channel.rb +0 -26
  98. data/doc/ex/charcoal.rb +0 -12
  99. data/doc/ex/chop.rb +0 -29
  100. data/doc/ex/circle.rb +0 -33
  101. data/doc/ex/circle01.rb +0 -17
  102. data/doc/ex/clip_path.rb +0 -60
  103. data/doc/ex/coalesce.rb +0 -60
  104. data/doc/ex/color_fill_to_border.rb +0 -29
  105. data/doc/ex/color_floodfill.rb +0 -28
  106. data/doc/ex/color_histogram.rb +0 -48
  107. data/doc/ex/color_reset.rb +0 -11
  108. data/doc/ex/colorize.rb +0 -16
  109. data/doc/ex/colors.rb +0 -64
  110. data/doc/ex/compose_mask.rb +0 -23
  111. data/doc/ex/composite.rb +0 -135
  112. data/doc/ex/composite_layers.rb +0 -53
  113. data/doc/ex/composite_tiled.rb +0 -23
  114. data/doc/ex/contrast.rb +0 -36
  115. data/doc/ex/crop.rb +0 -31
  116. data/doc/ex/crop_with_gravity.rb +0 -46
  117. data/doc/ex/cubic01.rb +0 -45
  118. data/doc/ex/cubic02.rb +0 -94
  119. data/doc/ex/cycle_colormap.rb +0 -21
  120. data/doc/ex/dissolve.rb +0 -13
  121. data/doc/ex/drawcomp.rb +0 -42
  122. data/doc/ex/drop_shadow.rb +0 -60
  123. data/doc/ex/edge.rb +0 -11
  124. data/doc/ex/ellipse.rb +0 -45
  125. data/doc/ex/ellipse01.rb +0 -22
  126. data/doc/ex/emboss.rb +0 -11
  127. data/doc/ex/enhance.rb +0 -28
  128. data/doc/ex/equalize.rb +0 -11
  129. data/doc/ex/evenodd.rb +0 -43
  130. data/doc/ex/fill_pattern.rb +0 -26
  131. data/doc/ex/flatten_images.rb +0 -36
  132. data/doc/ex/flip.rb +0 -11
  133. data/doc/ex/flop.rb +0 -11
  134. data/doc/ex/font_styles.rb +0 -34
  135. data/doc/ex/fonts.rb +0 -20
  136. data/doc/ex/frame.rb +0 -12
  137. data/doc/ex/gaussian_blur.rb +0 -11
  138. data/doc/ex/get_multiline_type_metrics.rb +0 -42
  139. data/doc/ex/get_pixels.rb +0 -48
  140. data/doc/ex/get_type_metrics.rb +0 -146
  141. data/doc/ex/gradientfill.rb +0 -27
  142. data/doc/ex/grav.rb +0 -46
  143. data/doc/ex/gravity.rb +0 -79
  144. data/doc/ex/group.rb +0 -26
  145. data/doc/ex/hatchfill.rb +0 -27
  146. data/doc/ex/image.rb +0 -46
  147. data/doc/ex/images/Apple.miff +0 -0
  148. data/doc/ex/images/Ballerina.jpg +0 -0
  149. data/doc/ex/images/Ballerina3.jpg +0 -0
  150. data/doc/ex/images/Button_0.gif +0 -0
  151. data/doc/ex/images/Button_1.gif +0 -0
  152. data/doc/ex/images/Button_2.gif +0 -0
  153. data/doc/ex/images/Button_3.gif +0 -0
  154. data/doc/ex/images/Button_4.gif +0 -0
  155. data/doc/ex/images/Button_5.gif +0 -0
  156. data/doc/ex/images/Button_6.gif +0 -0
  157. data/doc/ex/images/Button_7.gif +0 -0
  158. data/doc/ex/images/Button_8.gif +0 -0
  159. data/doc/ex/images/Button_9.gif +0 -0
  160. data/doc/ex/images/Button_A.gif +0 -0
  161. data/doc/ex/images/Button_B.gif +0 -0
  162. data/doc/ex/images/Button_C.gif +0 -0
  163. data/doc/ex/images/Button_D.gif +0 -0
  164. data/doc/ex/images/Button_E.gif +0 -0
  165. data/doc/ex/images/Button_F.gif +0 -0
  166. data/doc/ex/images/Button_G.gif +0 -0
  167. data/doc/ex/images/Button_H.gif +0 -0
  168. data/doc/ex/images/Button_I.gif +0 -0
  169. data/doc/ex/images/Button_J.gif +0 -0
  170. data/doc/ex/images/Button_K.gif +0 -0
  171. data/doc/ex/images/Button_L.gif +0 -0
  172. data/doc/ex/images/Button_M.gif +0 -0
  173. data/doc/ex/images/Button_N.gif +0 -0
  174. data/doc/ex/images/Button_O.gif +0 -0
  175. data/doc/ex/images/Button_P.gif +0 -0
  176. data/doc/ex/images/Button_Q.gif +0 -0
  177. data/doc/ex/images/Button_R.gif +0 -0
  178. data/doc/ex/images/Button_S.gif +0 -0
  179. data/doc/ex/images/Button_T.gif +0 -0
  180. data/doc/ex/images/Button_U.gif +0 -0
  181. data/doc/ex/images/Button_V.gif +0 -0
  182. data/doc/ex/images/Button_W.gif +0 -0
  183. data/doc/ex/images/Button_X.gif +0 -0
  184. data/doc/ex/images/Button_Y.gif +0 -0
  185. data/doc/ex/images/Button_Z.gif +0 -0
  186. data/doc/ex/images/Cheetah.jpg +0 -0
  187. data/doc/ex/images/Coffee.wmf +0 -0
  188. data/doc/ex/images/Flower_Hat.jpg +0 -0
  189. data/doc/ex/images/Gold_Statue.jpg +0 -0
  190. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  191. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  192. data/doc/ex/images/Leaf.miff +0 -0
  193. data/doc/ex/images/No.wmf +0 -0
  194. data/doc/ex/images/Polynesia.jpg +0 -0
  195. data/doc/ex/images/Red_Rocks.jpg +0 -0
  196. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  197. data/doc/ex/images/Shorts.jpg +0 -0
  198. data/doc/ex/images/Snake.wmf +0 -0
  199. data/doc/ex/images/Violin.jpg +0 -0
  200. data/doc/ex/images/Yellow_Rose.miff +0 -0
  201. data/doc/ex/images/big-duck.gif +0 -0
  202. data/doc/ex/images/duck.gif +0 -0
  203. data/doc/ex/images/duck0.gif +0 -0
  204. data/doc/ex/images/duck1.gif +0 -0
  205. data/doc/ex/images/duck10.gif +0 -0
  206. data/doc/ex/images/duck11.gif +0 -0
  207. data/doc/ex/images/duck12.gif +0 -0
  208. data/doc/ex/images/duck13.gif +0 -0
  209. data/doc/ex/images/duck14.gif +0 -0
  210. data/doc/ex/images/duck15.gif +0 -0
  211. data/doc/ex/images/duck2.gif +0 -0
  212. data/doc/ex/images/duck3.gif +0 -0
  213. data/doc/ex/images/duck4.gif +0 -0
  214. data/doc/ex/images/duck5.gif +0 -0
  215. data/doc/ex/images/duck6.gif +0 -0
  216. data/doc/ex/images/duck7.gif +0 -0
  217. data/doc/ex/images/duck8.gif +0 -0
  218. data/doc/ex/images/duck9.gif +0 -0
  219. data/doc/ex/images/graydient230x6.gif +0 -0
  220. data/doc/ex/images/logo400x83.gif +0 -0
  221. data/doc/ex/images/model.miff +0 -0
  222. data/doc/ex/images/notimplemented.gif +0 -0
  223. data/doc/ex/images/smile.miff +0 -0
  224. data/doc/ex/images/spin.gif +0 -0
  225. data/doc/ex/implode.rb +0 -34
  226. data/doc/ex/level.rb +0 -11
  227. data/doc/ex/level_colors.rb +0 -11
  228. data/doc/ex/line.rb +0 -42
  229. data/doc/ex/line01.rb +0 -23
  230. data/doc/ex/mask.rb +0 -36
  231. data/doc/ex/matte_fill_to_border.rb +0 -40
  232. data/doc/ex/matte_floodfill.rb +0 -33
  233. data/doc/ex/matte_replace.rb +0 -40
  234. data/doc/ex/median_filter.rb +0 -28
  235. data/doc/ex/modulate.rb +0 -11
  236. data/doc/ex/mono.rb +0 -23
  237. data/doc/ex/morph.rb +0 -26
  238. data/doc/ex/mosaic.rb +0 -35
  239. data/doc/ex/motion_blur.rb +0 -11
  240. data/doc/ex/negate.rb +0 -11
  241. data/doc/ex/negate_channel.rb +0 -9
  242. data/doc/ex/nested_rvg.rb +0 -21
  243. data/doc/ex/nonzero.rb +0 -43
  244. data/doc/ex/normalize.rb +0 -11
  245. data/doc/ex/oil_paint.rb +0 -11
  246. data/doc/ex/opacity.rb +0 -37
  247. data/doc/ex/ordered_dither.rb +0 -11
  248. data/doc/ex/path.rb +0 -64
  249. data/doc/ex/pattern1.rb +0 -25
  250. data/doc/ex/pattern2.rb +0 -26
  251. data/doc/ex/polaroid.rb +0 -28
  252. data/doc/ex/polygon.rb +0 -24
  253. data/doc/ex/polygon01.rb +0 -23
  254. data/doc/ex/polyline.rb +0 -23
  255. data/doc/ex/polyline01.rb +0 -23
  256. data/doc/ex/posterize.rb +0 -8
  257. data/doc/ex/preview.rb +0 -9
  258. data/doc/ex/qbezierpath.rb +0 -52
  259. data/doc/ex/quad01.rb +0 -36
  260. data/doc/ex/quantize-m.rb +0 -25
  261. data/doc/ex/radial_blur.rb +0 -9
  262. data/doc/ex/raise.rb +0 -8
  263. data/doc/ex/random_threshold_channel.rb +0 -13
  264. data/doc/ex/rect01.rb +0 -15
  265. data/doc/ex/rect02.rb +0 -22
  266. data/doc/ex/rectangle.rb +0 -35
  267. data/doc/ex/reduce_noise.rb +0 -28
  268. data/doc/ex/remap.rb +0 -12
  269. data/doc/ex/remap_images.rb +0 -21
  270. data/doc/ex/resize_to_fill.rb +0 -10
  271. data/doc/ex/resize_to_fit.rb +0 -10
  272. data/doc/ex/roll.rb +0 -9
  273. data/doc/ex/rotate.rb +0 -45
  274. data/doc/ex/rotate_f.rb +0 -14
  275. data/doc/ex/roundrect.rb +0 -34
  276. data/doc/ex/rubyname.rb +0 -30
  277. data/doc/ex/rvg_clippath.rb +0 -14
  278. data/doc/ex/rvg_linecap.rb +0 -43
  279. data/doc/ex/rvg_linejoin.rb +0 -41
  280. data/doc/ex/rvg_opacity.rb +0 -19
  281. data/doc/ex/rvg_pattern.rb +0 -26
  282. data/doc/ex/rvg_stroke_dasharray.rb +0 -12
  283. data/doc/ex/segment.rb +0 -11
  284. data/doc/ex/sepiatone.rb +0 -8
  285. data/doc/ex/shade.rb +0 -11
  286. data/doc/ex/shadow.rb +0 -31
  287. data/doc/ex/shave.rb +0 -15
  288. data/doc/ex/shear.rb +0 -10
  289. data/doc/ex/sketch.rb +0 -18
  290. data/doc/ex/skewx.rb +0 -52
  291. data/doc/ex/skewy.rb +0 -47
  292. data/doc/ex/smile.rb +0 -125
  293. data/doc/ex/solarize.rb +0 -11
  294. data/doc/ex/sparse_color.rb +0 -55
  295. data/doc/ex/splice.rb +0 -9
  296. data/doc/ex/spread.rb +0 -11
  297. data/doc/ex/stegano.rb +0 -55
  298. data/doc/ex/stroke_dasharray.rb +0 -43
  299. data/doc/ex/stroke_fill.rb +0 -11
  300. data/doc/ex/stroke_linecap.rb +0 -44
  301. data/doc/ex/stroke_linejoin.rb +0 -48
  302. data/doc/ex/stroke_width.rb +0 -49
  303. data/doc/ex/swirl.rb +0 -17
  304. data/doc/ex/text.rb +0 -37
  305. data/doc/ex/text01.rb +0 -17
  306. data/doc/ex/text_align.rb +0 -36
  307. data/doc/ex/text_antialias.rb +0 -38
  308. data/doc/ex/text_styles.rb +0 -21
  309. data/doc/ex/text_undercolor.rb +0 -28
  310. data/doc/ex/texture_fill_to_border.rb +0 -34
  311. data/doc/ex/texture_floodfill.rb +0 -32
  312. data/doc/ex/texturefill.rb +0 -25
  313. data/doc/ex/threshold.rb +0 -13
  314. data/doc/ex/to_blob.rb +0 -14
  315. data/doc/ex/translate.rb +0 -39
  316. data/doc/ex/transparent.rb +0 -38
  317. data/doc/ex/transpose.rb +0 -9
  318. data/doc/ex/transverse.rb +0 -9
  319. data/doc/ex/tref01.rb +0 -25
  320. data/doc/ex/triangle01.rb +0 -16
  321. data/doc/ex/trim.rb +0 -24
  322. data/doc/ex/tspan01.rb +0 -18
  323. data/doc/ex/tspan02.rb +0 -19
  324. data/doc/ex/tspan03.rb +0 -21
  325. data/doc/ex/unsharp_mask.rb +0 -28
  326. data/doc/ex/viewex.rb +0 -35
  327. data/doc/ex/vignette.rb +0 -12
  328. data/doc/ex/watermark.rb +0 -28
  329. data/doc/ex/wave.rb +0 -9
  330. data/doc/ex/wet_floor.rb +0 -59
  331. data/doc/ex/writing_mode01.rb +0 -27
  332. data/doc/ex/writing_mode02.rb +0 -26
  333. data/doc/ilist.html +0 -2056
  334. data/doc/image1.html +0 -4680
  335. data/doc/image2.html +0 -3665
  336. data/doc/image3.html +0 -4522
  337. data/doc/imageattrs.html +0 -1638
  338. data/doc/imusage.html +0 -514
  339. data/doc/index.html +0 -416
  340. data/doc/info.html +0 -1499
  341. data/doc/magick.html +0 -565
  342. data/doc/optequiv.html +0 -2435
  343. data/doc/rvg.html +0 -975
  344. data/doc/rvgclip.html +0 -248
  345. data/doc/rvggroup.html +0 -305
  346. data/doc/rvgimage.html +0 -289
  347. data/doc/rvgpattern.html +0 -475
  348. data/doc/rvgshape.html +0 -406
  349. data/doc/rvgstyle.html +0 -270
  350. data/doc/rvgtext.html +0 -465
  351. data/doc/rvgtspan.html +0 -238
  352. data/doc/rvgtut.html +0 -530
  353. data/doc/rvguse.html +0 -145
  354. data/doc/rvgxform.html +0 -294
  355. data/doc/scripts/doc.js +0 -22
  356. data/doc/scripts/stripeTables.js +0 -23
  357. data/doc/struct.html +0 -1339
  358. data/doc/usage.html +0 -1621
  359. data/examples/constitute.rb +0 -7
  360. data/examples/crop_with_gravity.rb +0 -46
  361. data/examples/demo.rb +0 -324
  362. data/examples/describe.rb +0 -44
  363. data/examples/find_similar_region.rb +0 -34
  364. data/examples/histogram.rb +0 -325
  365. data/examples/identify.rb +0 -187
  366. data/examples/image_opacity.rb +0 -29
  367. data/examples/import_export.rb +0 -31
  368. data/examples/pattern_fill.rb +0 -38
  369. data/examples/rotating_text.rb +0 -45
  370. data/examples/spinner.rb +0 -50
  371. data/examples/thumbnail.rb +0 -65
  372. data/examples/vignette.rb +0 -79
  373. data/ext/RMagick/MANIFEST +0 -358
  374. data/lib/RMagick.rb +0 -1962
  375. data/metaconfig +0 -7
  376. data/post-clean.rb +0 -12
  377. data/post-install.rb +0 -50
  378. data/post-setup.rb +0 -254
  379. data/setup.rb +0 -1585
  380. data/uninstall.rb +0 -76
data/lib/rvg/paint.rb CHANGED
@@ -4,52 +4,48 @@
4
4
  #++
5
5
  # Defines paint server classes.
6
6
  # Eventually this will include gradients.
7
-
8
7
  module Magick
9
- class RVG
10
-
11
- class Pattern
12
- include StructureConstructors
13
- include UseConstructors
14
- include ShapeConstructors
15
- include TextConstructors
16
- include ImageConstructors
17
- include Stretchable
18
- include Duplicatable
19
- include Stylable
20
-
21
- # Return upper-left corner, width, height of viewport in user coordinates.
22
- # Usually these are the values specified when the Pattern object is
23
- # created, but they can be changed by a call to the viewbox method.
24
- attr_reader :x, :y, :width, :height
25
-
26
- # Create a pattern that can be used with the :fill or :stroke styles.
27
- # The +width+ and +height+ arguments define the viewport.
28
- # The pattern will be repeated at <tt>x+m*width</tt> and <tt>y+n*height</tt>
29
- # offsets.
30
- #
31
- # Define the pattern in the block.
32
- # The pattern can be composed of shapes (rectangle, circles, etc.), text,
33
- # raster images and container objects. You can include graphic objects by
34
- # referring to them with #use.
35
- def initialize(width=0, height=0, x=0, y=0)
36
- super()
37
- @width, @height, @x, @y = Magick::RVG.convert_to_float(width, height, x, y)
38
- @content = Content.new
39
- yield(self) if block_given?
40
- end
41
-
42
- def add_primitives(gc, style) #:nodoc:
43
- name = __id__.to_s
44
- gc.pattern(name, @x, @y, @width, @height) do
45
- add_viewbox_primitives(@width, @height, gc)
46
- @content.each { |element| element.add_primitives(gc) }
47
- end
48
- gc.__send__(style, name)
49
- end
50
-
51
- end # class Pattern
52
-
53
- end # class RVG
8
+ class RVG
9
+ class Pattern
10
+ include StructureConstructors
11
+ include UseConstructors
12
+ include ShapeConstructors
13
+ include TextConstructors
14
+ include ImageConstructors
15
+ include Stretchable
16
+ include Duplicatable
17
+ include Stylable
18
+
19
+ # Return upper-left corner, width, height of viewport in user coordinates.
20
+ # Usually these are the values specified when the Pattern object is
21
+ # created, but they can be changed by a call to the viewbox method.
22
+ attr_reader :x, :y, :width, :height
23
+
24
+ # Create a pattern that can be used with the :fill or :stroke styles.
25
+ # The +width+ and +height+ arguments define the viewport.
26
+ # The pattern will be repeated at <tt>x+m*width</tt> and <tt>y+n*height</tt>
27
+ # offsets.
28
+ #
29
+ # Define the pattern in the block.
30
+ # The pattern can be composed of shapes (rectangle, circles, etc.), text,
31
+ # raster images and container objects. You can include graphic objects by
32
+ # referring to them with #use.
33
+ def initialize(width = 0, height = 0, x = 0, y = 0)
34
+ super()
35
+ @width, @height, @x, @y = Magick::RVG.convert_to_float(width, height, x, y)
36
+ @content = Content.new
37
+ yield(self) if block_given?
38
+ end
39
+
40
+ # @private
41
+ def add_primitives(gc, style)
42
+ name = __id__.to_s
43
+ gc.pattern(name, @x, @y, @width, @height) do
44
+ add_viewbox_primitives(@width, @height, gc)
45
+ @content.each { |element| element.add_primitives(gc) }
46
+ end
47
+ gc.__send__(style, name)
48
+ end
49
+ end # class Pattern
50
+ end # class RVG
54
51
  end # module Magick
55
-
data/lib/rvg/pathdata.rb CHANGED
@@ -2,130 +2,124 @@
2
2
  # $Id: pathdata.rb,v 1.5 2009/02/28 23:52:28 rmagick Exp $
3
3
  # Copyright (C) 2009 Timothy P. Hunter
4
4
  #++
5
-
6
5
  module Magick
7
- class RVG
8
-
9
- # The PathData class provides an object-oriented way to produce an SVG
10
- # path. Each of the methods corresponds to a path command. Construct a
11
- # path by calling one or more methods. The path object can be passed
12
- # as an argument to the RVG::ShapeConstructors#path method.
13
- class PathData
14
-
15
- private
16
- def add_points(req, *coords)
17
- if coords
18
- if coords.length % req != 0
19
- raise ArgumentError, "wrong number of coordinates specified. A multiple of #{req} required, #{req+coords.length} given."
20
- end
21
- coords.each {|c| @path << ("%g" % c)}
22
- end
23
- end
24
-
25
- public
26
-
27
- # Construct an empty path
28
- def initialize
29
- @path = ''
30
- end
31
-
32
- # Convert the path to its string equivalent.
33
- def to_s
34
- @path
35
- end
36
-
37
- def deep_copy(h=nil) #:nodoc:
38
- @path.dup
39
- end
40
-
41
- # Add a <tt>moveto</tt> command. If <tt>abs</tt> is
42
- # <tt>true</tt> the coordinates are absolute, otherwise
43
- # the coordinates are relative.
44
- def moveto(abs, x, y, *coords)
45
- @path << sprintf("%s%g,%g ", (abs ? 'M' : 'm'), x, y)
46
- # "subsequent pairs are treated as implicit lineto commands"
47
- add_points(2, *coords)
48
- end
49
-
50
- # Add a <tt>closepath</tt> command. The <tt>abs</tt> argument
51
- # is ignored.
52
- def closepath(abs=true)
53
- @path << 'Z' # ignore `abs'
54
- end
55
-
56
- # Add a <tt>lineto</tt> command. Any number of x,y coordinate
57
- # pairs may be specified. If <tt>abs</tt> is
58
- # <tt>true</tt> the coordinates are absolute, otherwise
59
- # the coordinates are relative.
60
- def lineto(abs, x, y, *coords)
61
- @path << sprintf("%s%g,%g ", (abs ? 'L' : 'l'), x, y)
62
- # "a number of coordinate pairs may be specified to draw a polyline"
63
- add_points(2, *coords)
64
- end
65
-
66
- # Add a <tt>horizontal lineto</tt> command. If <tt>abs</tt> is
67
- # <tt>true</tt> the coordinates are absolute, otherwise
68
- # the coordinates are relative.
69
- def hlineto(abs, x)
70
- @path << sprintf("%s%g ", (abs ? 'H' : 'h'), x)
71
- end
72
-
73
- # Add a <tt>vertical lineto</tt> command. If <tt>abs</tt> is
74
- # <tt>true</tt> the coordinates are absolute, otherwise
75
- # the coordinates are relative.
76
- def vlineto(abs, y)
77
- @path << sprintf("%s%g ", (abs ? 'V' : 'v'), y)
78
- end
79
-
80
- # Add a <tt>curveto</tt> (<em>cubic Bezier</em>) command.
81
- # If <tt>abs</tt> is
82
- # <tt>true</tt> the coordinates are absolute, otherwise
83
- # the coordinates are relative.
84
- def curveto(abs, x1, y1, x2, y2, x, y, *coords)
85
- @path << sprintf("%s%g,%g %g,%g %g,%g ", (abs ? 'C' : 'c'), x1, y1, x2, y2, x, y)
86
- # "multiple sets of coordinates may be specified to draw a polybezier"
87
- add_points(6, *coords)
88
- end
89
-
90
- # Add a <tt>smooth curveto</tt> (<em>cubic Bezier</em>) command.
91
- # If <tt>abs</tt> is
92
- # <tt>true</tt> the coordinates are absolute, otherwise
93
- # the coordinates are relative.
94
- def smooth_curveto(abs, x2, y2, x, y, *coords)
95
- @path << sprintf("%s%g,%g %g,%g ", (abs ? 'S' : 's'), x2, y2, x, y)
96
- # "multiple sets of coordinates may be specified to draw a polybezier"
97
- add_points(4, *coords)
98
- end
99
-
100
- # Add a <tt>quadratic Bezier curveto</tt> command.
101
- # If <tt>abs</tt> is
102
- # <tt>true</tt> the coordinates are absolute, otherwise
103
- # the coordinates are relative.
104
- def quadratic_curveto(abs, x1, y1, x, y, *coords)
105
- @path << sprintf("%s%g,%g %g,%g ", (abs ? 'Q' : 'q'), x1, y1, x, y)
106
- add_points(4, *coords)
107
- end
108
-
109
- # Add a <tt>smooth quadratic Bezier curveto</tt> command.
110
- # If <tt>abs</tt> is
111
- # <tt>true</tt> the coordinates are absolute, otherwise
112
- # the coordinates are relative.
113
- def smooth_quadratic_curveto(abs, x, y, *coords)
114
- @path << sprintf("%s%g,%g ", (abs ? 'T' : 't'), x, y)
115
- add_points(2, *coords)
116
- end
117
-
118
- # Add an <tt>arc</tt> command.
119
- # If <tt>abs</tt> is
120
- # <tt>true</tt> the coordinates are absolute, otherwise
121
- # the coordinates are relative.
122
-
123
- def arc(abs, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, x, y)
124
- @path << sprintf("%s%g,%g %g %d %d %g,%g ", (abs ? 'A' : 'a'), rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, x, y)
125
- end
126
-
127
- end # class PathData
128
-
129
- end # class RVG
6
+ class RVG
7
+ # The PathData class provides an object-oriented way to produce an SVG
8
+ # path. Each of the methods corresponds to a path command. Construct a
9
+ # path by calling one or more methods. The path object can be passed
10
+ # as an argument to the RVG::ShapeConstructors#path method.
11
+ class PathData
12
+ private
13
+
14
+ def add_points(req, *coords)
15
+ return unless coords
16
+ raise ArgumentError, "wrong number of coordinates specified. A multiple of #{req} required, #{req + coords.length} given." if coords.length % req != 0
17
+
18
+ coords.each { |c| @path << sprintf('%g', c) }
19
+ end
20
+
21
+ public
22
+
23
+ # Construct an empty path
24
+ def initialize
25
+ @path = ''
26
+ end
27
+
28
+ # Convert the path to its string equivalent.
29
+ def to_s
30
+ @path
31
+ end
32
+
33
+ # @private
34
+ def deep_copy(_h = nil)
35
+ @path.dup
36
+ end
37
+
38
+ # Add a <tt>moveto</tt> command. If <tt>abs</tt> is
39
+ # <tt>true</tt> the coordinates are absolute, otherwise
40
+ # the coordinates are relative.
41
+ def moveto(abs, x, y, *coords)
42
+ @path << sprintf('%s%g,%g ', (abs ? 'M' : 'm'), x, y)
43
+ # "subsequent pairs are treated as implicit lineto commands"
44
+ add_points(2, *coords)
45
+ end
46
+
47
+ # Add a <tt>closepath</tt> command. The <tt>abs</tt> argument
48
+ # is ignored.
49
+ def closepath(_abs = true)
50
+ @path << 'Z' # ignore `abs'
51
+ end
52
+
53
+ # Add a <tt>lineto</tt> command. Any number of x,y coordinate
54
+ # pairs may be specified. If <tt>abs</tt> is
55
+ # <tt>true</tt> the coordinates are absolute, otherwise
56
+ # the coordinates are relative.
57
+ def lineto(abs, x, y, *coords)
58
+ @path << sprintf('%s%g,%g ', (abs ? 'L' : 'l'), x, y)
59
+ # "a number of coordinate pairs may be specified to draw a polyline"
60
+ add_points(2, *coords)
61
+ end
62
+
63
+ # Add a <tt>horizontal lineto</tt> command. If <tt>abs</tt> is
64
+ # <tt>true</tt> the coordinates are absolute, otherwise
65
+ # the coordinates are relative.
66
+ def hlineto(abs, x)
67
+ @path << sprintf('%s%g ', (abs ? 'H' : 'h'), x)
68
+ end
69
+
70
+ # Add a <tt>vertical lineto</tt> command. If <tt>abs</tt> is
71
+ # <tt>true</tt> the coordinates are absolute, otherwise
72
+ # the coordinates are relative.
73
+ def vlineto(abs, y)
74
+ @path << sprintf('%s%g ', (abs ? 'V' : 'v'), y)
75
+ end
76
+
77
+ # Add a <tt>curveto</tt> (<em>cubic Bezier</em>) command.
78
+ # If <tt>abs</tt> is
79
+ # <tt>true</tt> the coordinates are absolute, otherwise
80
+ # the coordinates are relative.
81
+ def curveto(abs, x1, y1, x2, y2, x, y, *coords)
82
+ @path << sprintf('%s%g,%g %g,%g %g,%g ', (abs ? 'C' : 'c'), x1, y1, x2, y2, x, y)
83
+ # "multiple sets of coordinates may be specified to draw a polybezier"
84
+ add_points(6, *coords)
85
+ end
86
+
87
+ # Add a <tt>smooth curveto</tt> (<em>cubic Bezier</em>) command.
88
+ # If <tt>abs</tt> is
89
+ # <tt>true</tt> the coordinates are absolute, otherwise
90
+ # the coordinates are relative.
91
+ def smooth_curveto(abs, x2, y2, x, y, *coords)
92
+ @path << sprintf('%s%g,%g %g,%g ', (abs ? 'S' : 's'), x2, y2, x, y)
93
+ # "multiple sets of coordinates may be specified to draw a polybezier"
94
+ add_points(4, *coords)
95
+ end
96
+
97
+ # Add a <tt>quadratic Bezier curveto</tt> command.
98
+ # If <tt>abs</tt> is
99
+ # <tt>true</tt> the coordinates are absolute, otherwise
100
+ # the coordinates are relative.
101
+ def quadratic_curveto(abs, x1, y1, x, y, *coords)
102
+ @path << sprintf('%s%g,%g %g,%g ', (abs ? 'Q' : 'q'), x1, y1, x, y)
103
+ add_points(4, *coords)
104
+ end
105
+
106
+ # Add a <tt>smooth quadratic Bezier curveto</tt> command.
107
+ # If <tt>abs</tt> is
108
+ # <tt>true</tt> the coordinates are absolute, otherwise
109
+ # the coordinates are relative.
110
+ def smooth_quadratic_curveto(abs, x, y, *coords)
111
+ @path << sprintf('%s%g,%g ', (abs ? 'T' : 't'), x, y)
112
+ add_points(2, *coords)
113
+ end
114
+
115
+ # Add an <tt>arc</tt> command.
116
+ # If <tt>abs</tt> is
117
+ # <tt>true</tt> the coordinates are absolute, otherwise
118
+ # the coordinates are relative.
119
+
120
+ def arc(abs, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, x, y)
121
+ @path << sprintf('%s%g,%g %g %d %d %g,%g ', (abs ? 'A' : 'a'), rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, x, y)
122
+ end
123
+ end # class PathData
124
+ end # class RVG
130
125
  end # module Magick
131
-