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/clippath.rb CHANGED
@@ -3,46 +3,42 @@
3
3
  # Copyright (C) 2009 Timothy P. Hunter
4
4
  #++
5
5
  module Magick
6
- class RVG
6
+ class RVG
7
+ class ClipPath
8
+ include ShapeConstructors
9
+ include UseConstructors
10
+ include TextConstructors
11
+ include Describable
12
+ include Stylable
13
+ include Duplicatable
7
14
 
8
- class ClipPath
9
- include ShapeConstructors
10
- include UseConstructors
11
- include TextConstructors
12
- include Describable
13
- include Stylable
14
- include Duplicatable
15
+ # Create a clipping path. Within the block create an outline
16
+ # from one or more paths, basic shapes, text objects, or +use+.
17
+ # Everything drawn within the outline will be displayed.
18
+ # Anything drawn outside the outline will not.
19
+ #
20
+ # If the clipping path contains a +use+, it
21
+ # must directly reference path, basic shape, or text objects.
22
+ #
23
+ # Attach the clipping path to an object with the :clip_path style.
24
+ def initialize(clip_path_units = 'userSpaceOnUse')
25
+ super()
26
+ raise ArgumentError, "undefined value for clip path units: #{clip_path_units}" unless %w[userSpaceOnUse objectBoundingBox].include?(clip_path_units)
15
27
 
16
- # Create a clipping path. Within the block create an outline
17
- # from one or more paths, basic shapes, text objects, or +use+.
18
- # Everything drawn within the outline will be displayed.
19
- # Anything drawn outside the outline will not.
20
- #
21
- # If the clipping path contains a +use+, it
22
- # must directly reference path, basic shape, or text objects.
23
- #
24
- # Attach the clipping path to an object with the :clip_path style.
25
- def initialize(clip_path_units='userSpaceOnUse')
26
- super()
27
- if ! ['userSpaceOnUse', 'objectBoundingBox'].include?(clip_path_units)
28
- raise ArgumentError, "undefined value for clip path units: #{clip_path_units}"
29
- end
30
- @clip_path_units = clip_path_units
31
- @content = Content.new
32
- yield(self) if block_given?
33
- end
28
+ @clip_path_units = clip_path_units
29
+ @content = Content.new
30
+ yield(self) if block_given?
31
+ end
34
32
 
35
- def add_primitives(gc, style) #:nodoc:
36
- name = __id__.to_s
37
- gc.define_clip_path(name) do
38
- gc.clip_units(@clip_path_units)
39
- @content.each { |element| element.add_primitives(gc) }
40
- end
41
- gc.clip_path(name)
42
- end
43
-
44
- end # class ClipPath
45
-
46
- end # class RVG
33
+ # @private
34
+ def add_primitives(gc, _style)
35
+ name = __id__.to_s
36
+ gc.define_clip_path(name) do
37
+ gc.clip_units(@clip_path_units)
38
+ @content.each { |element| element.add_primitives(gc) }
39
+ end
40
+ gc.clip_path(name)
41
+ end
42
+ end # class ClipPath
43
+ end # class RVG
47
44
  end # module Magick
48
-
data/lib/rvg/container.rb CHANGED
@@ -2,130 +2,129 @@
2
2
  # $Id: container.rb,v 1.5 2009/02/28 23:52:13 rmagick Exp $
3
3
  # Copyright (C) 2009 Timothy P. Hunter
4
4
  #++
5
-
6
5
  module Magick
7
- class RVG
8
-
9
- # Content is simply an Array with a deep_copy method.
10
- # When unit-testing, it also has a deep_equal method.
11
- class Content < Array #:nodoc:
12
-
13
- def deep_copy(h = {})
14
- me = self.__id__
15
- copy = h[me]
16
- unless copy
17
- copy = self.class.new
18
- each do |c|
19
- copy << case
20
- when c.nil?
21
- nil
22
- when c.respond_to?(:deep_copy)
23
- c.deep_copy(h)
24
- when c.respond_to?(:dup)
25
- c.dup rescue c
26
- else
27
- c
28
- end
6
+ class RVG
7
+ # Content is simply an Array with a deep_copy method.
8
+ # When unit-testing, it also has a deep_equal method.
9
+ # @private
10
+ class Content < Array
11
+ def deep_copy(h = {})
12
+ me = __id__
13
+ copy = h[me]
14
+ unless copy
15
+ copy = self.class.new
16
+ each do |c|
17
+ copy << if c.nil?
18
+ nil
19
+ elsif c.respond_to?(:deep_copy)
20
+ c.deep_copy(h)
21
+ elsif c.respond_to?(:dup)
22
+ begin
23
+ c.dup
24
+ rescue StandardError
25
+ c
26
+ end
27
+ else
28
+ c
29
29
  end
30
- copy.freeze if frozen?
31
- h[me] = copy
32
- end
33
- return copy
34
- end
35
-
36
- end # class Content
37
-
38
- # Define a collection of shapes, text, etc. that can be reused.
39
- # Group objects are _containers_. That is, styles and transforms defined
40
- # on the group are used by contained objects such as shapes, text, and
41
- # nested groups unless overridden by a nested container or the object itself.
42
- # Groups can be reused with the RVG::UseConstructors#use method.
43
- # Create groups within
44
- # containers with the RVG::StructureConstructors#g method.
45
- #
46
- # Example:
47
- # # All elements in the group will be translated by 50 in the
48
- # # x-direction and 10 in the y-direction.
49
- # rvg.g.translate(50, 10).styles(:stroke=>'red',:fill=>'none') do |grp|
50
- # # The line will be red.
51
- # grp.line(10,10, 20,20)
52
- # # The circle will be blue.
53
- # grp.circle(10, 20, 20).styles(:stroke=>'blue')
54
- # end
55
- class Group
56
- include Stylable
57
- include Transformable
58
- include Embellishable
59
- include Describable
60
- include Duplicatable
61
-
62
- def initialize
63
- super
64
- @content = Content.new
65
- yield(self) if block_given?
66
- end
67
-
68
- def add_primitives(gc) #:nodoc:
69
- gc.push
70
- add_transform_primitives(gc)
71
- add_style_primitives(gc)
72
- @content.each { |element| element.add_primitives(gc) }
73
- gc.pop
74
- end
75
-
76
- # Translate container according to #use arguments
77
- def ref(x, y, width, height) #:nodoc:
78
- translate(x, y) if (x != 0 || y != 0)
79
- end
80
-
81
- # Append an arbitrary object to the group's content. Called
82
- # by #use to insert a non-container object into a group.
83
- def <<(obj) #:nodoc:
84
- @content << obj
85
- end
86
-
87
- end # class Group
88
-
89
-
90
- # A Use object allows the re-use of RVG and RVG::Group
91
- # objects within a container. Create a Use object with the
92
- # RVG::UseConstructors#use method.
93
- class Use
94
- include Stylable
95
- include Transformable
96
- include Duplicatable
97
-
98
- # In a container, Use objects are created indirectly via the
99
- # RVG::UseConstructors#use method.
100
- # The +x+ and +y+ arguments
101
- # can be used to specify an additional translation for
102
- # the group. The +width+ and +height+ arguments specify
103
- # a width and height for referenced RVG objects.
104
- def initialize(element, x=0, y=0, width=nil, height=nil)
105
- super()
106
-
107
- # If the element is not a group, defs, symbol, or rvg,
108
- # wrap a group around it so it can get a transform and
109
- # possibly a new viewport.
110
- if ! element.respond_to?(:ref)
111
- @element = Group.new
112
- @element << element.deep_copy
113
- else
114
- @element = element.deep_copy
115
- end
116
- @element.ref(x, y, width, height)
117
- end
118
-
119
- def add_primitives(gc) #:nodoc:
120
- gc.push
121
- add_transform_primitives(gc)
122
- add_style_primitives(gc)
123
- @element.add_primitives(gc)
124
- gc.pop
125
- end
126
-
127
- end # class Use
128
-
129
- end # class RVG
30
+ end
31
+ copy.freeze if frozen?
32
+ h[me] = copy
33
+ end
34
+ copy
35
+ end
36
+ end # class Content
37
+
38
+ # Define a collection of shapes, text, etc. that can be reused.
39
+ # Group objects are _containers_. That is, styles and transforms defined
40
+ # on the group are used by contained objects such as shapes, text, and
41
+ # nested groups unless overridden by a nested container or the object itself.
42
+ # Groups can be reused with the RVG::UseConstructors#use method.
43
+ # Create groups within
44
+ # containers with the RVG::StructureConstructors#g method.
45
+ #
46
+ # Example:
47
+ # # All elements in the group will be translated by 50 in the
48
+ # # x-direction and 10 in the y-direction.
49
+ # rvg.g.translate(50, 10).styles(:stroke=>'red',:fill=>'none') do |grp|
50
+ # # The line will be red.
51
+ # grp.line(10,10, 20,20)
52
+ # # The circle will be blue.
53
+ # grp.circle(10, 20, 20).styles(:stroke=>'blue')
54
+ # end
55
+ class Group
56
+ include Stylable
57
+ include Transformable
58
+ include Embellishable
59
+ include Describable
60
+ include Duplicatable
61
+
62
+ def initialize
63
+ super
64
+ @content = Content.new
65
+ yield(self) if block_given?
66
+ end
67
+
68
+ # @private
69
+ def add_primitives(gc)
70
+ gc.push
71
+ add_transform_primitives(gc)
72
+ add_style_primitives(gc)
73
+ @content.each { |element| element.add_primitives(gc) }
74
+ gc.pop
75
+ end
76
+
77
+ # Translate container according to #use arguments
78
+ # @private
79
+ def ref(x, y, _width, _height)
80
+ translate(x, y) if x != 0 || y != 0
81
+ end
82
+
83
+ # Append an arbitrary object to the group's content. Called
84
+ # by #use to insert a non-container object into a group.
85
+ # @private
86
+ def <<(obj)
87
+ @content << obj
88
+ end
89
+ end # class Group
90
+
91
+ # A Use object allows the re-use of RVG and RVG::Group
92
+ # objects within a container. Create a Use object with the
93
+ # RVG::UseConstructors#use method.
94
+ class Use
95
+ include Stylable
96
+ include Transformable
97
+ include Duplicatable
98
+
99
+ # In a container, Use objects are created indirectly via the
100
+ # RVG::UseConstructors#use method.
101
+ # The +x+ and +y+ arguments
102
+ # can be used to specify an additional translation for
103
+ # the group. The +width+ and +height+ arguments specify
104
+ # a width and height for referenced RVG objects.
105
+ def initialize(element, x = 0, y = 0, width = nil, height = nil)
106
+ super()
107
+
108
+ # If the element is not a group, defs, symbol, or rvg,
109
+ # wrap a group around it so it can get a transform and
110
+ # possibly a new viewport.
111
+ if !element.respond_to?(:ref)
112
+ @element = Group.new
113
+ @element << element.deep_copy
114
+ else
115
+ @element = element.deep_copy
116
+ end
117
+ @element.ref(x, y, width, height)
118
+ end
119
+
120
+ # @private
121
+ def add_primitives(gc)
122
+ gc.push
123
+ add_transform_primitives(gc)
124
+ add_style_primitives(gc)
125
+ @element.add_primitives(gc)
126
+ gc.pop
127
+ end
128
+ end # class Use
129
+ end # class RVG
130
130
  end # module Magick
131
-
@@ -1,56 +1,52 @@
1
1
  module Magick
2
- class RVG
3
-
4
- [PathData, Styles, Transforms].each do |c|
5
- c.class_eval do
6
- def deep_equal(other)
7
- if self != other
8
- puts "#{c.inspect} not equal.\nself:#{self} != other:#{other}"
9
- return false
10
- end
11
- return true
12
- end
13
- end
2
+ class RVG
3
+ [PathData, Styles, Transforms].each do |c|
4
+ c.class_eval do
5
+ def deep_equal(other)
6
+ if self != other
7
+ puts "#{c.inspect} not equal.\nself:#{self} != other:#{other}"
8
+ return false
9
+ end
10
+ true
14
11
  end
12
+ end
13
+ end
15
14
 
16
- [Shape, TextBase, Image, Group, Content, Use, ClipPath, Pattern, self].each do |c|
17
- c.class_eval do
18
- def deep_equal(other)
19
- ivs = self.instance_variables
20
-
21
- ivs.each do |iv|
22
- itv = self.instance_variable_get(iv)
23
- otv = other.instance_variable_get(iv)
24
- if itv.respond_to?(:deep_equal)
25
- if itv.equal?(otv)
26
- puts "#{iv} has deep_equal but self.#{iv} and other.#{iv} are the same object."
27
- return false
28
- end
29
- if !itv.deep_equal(otv)
30
- puts "Not equal.\nself.#{iv}=#{itv.inspect}\nother.#{iv}=#{otv.inspect}"
31
- return false
32
- end
33
- else
34
- case itv
35
- when Float, Symbol, TrueClass, FalseClass, Fixnum, NilClass
36
- return false if itv != otv
37
- else
38
- if itv.equal?(otv)
39
- puts "#{iv} is dup-able but self.#{iv} and other.#{iv} are the same object."
40
- return false
41
- end
42
- if itv != otv
43
- puts "Not equal.\nself.#{iv}=#{itv.inspect}\nother.#{iv}=#{otv.inspect}"
44
- return false
45
- end
46
- end
47
- end
48
- end
49
-
50
- return true
15
+ [Shape, TextBase, Image, Group, Content, Use, ClipPath, Pattern, self].each do |c|
16
+ c.class_eval do
17
+ def deep_equal(other)
18
+ ivs = instance_variables
19
+ ivs.each do |iv|
20
+ itv = instance_variable_get(iv)
21
+ otv = other.instance_variable_get(iv)
22
+ if itv.respond_to?(:deep_equal)
23
+ if itv.equal?(otv)
24
+ puts "#{iv} has deep_equal but self.#{iv} and other.#{iv} are the same object."
25
+ return false
26
+ end
27
+ unless itv.deep_equal(otv)
28
+ puts "Not equal.\nself.#{iv}=#{itv.inspect}\nother.#{iv}=#{otv.inspect}"
29
+ return false
30
+ end
31
+ else
32
+ case itv
33
+ when Float, Symbol, TrueClass, FalseClass, Integer, NilClass
34
+ return false if itv != otv
35
+ else
36
+ if itv.equal?(otv)
37
+ puts "#{iv} is dup-able but self.#{iv} and other.#{iv} are the same object."
38
+ return false
39
+ end
40
+ if itv != otv
41
+ puts "Not equal.\nself.#{iv}=#{itv.inspect}\nother.#{iv}=#{otv.inspect}"
42
+ return false
51
43
  end
44
+ end
52
45
  end
46
+ end
47
+ true
53
48
  end
54
-
55
- end # class RVG
49
+ end
50
+ end
51
+ end # class RVG
56
52
  end # module Magick
@@ -2,52 +2,46 @@
2
2
  # $Id: describable.rb,v 1.5 2009/02/28 23:52:13 rmagick Exp $
3
3
  # Copyright (C) 2009 Timothy P. Hunter
4
4
  #++
5
-
6
5
  module Magick
7
- class RVG
8
-
9
- #--
10
- # Corresponds to SVG's Description.class
11
- #++
12
- # This module defines a number of metadata attributes.
13
- module Describable
14
-
15
- private
16
-
17
- def initialize(*args, &block) #:nodoc:
18
- super
19
- @title, @desc, @metadata = nil
20
- end
21
-
22
- public
23
-
24
- # Sets the object description
25
- attr_writer :desc
26
- # Sets the object title
27
- attr_writer :title
28
- # Sets the object metadata
29
- attr_writer :metadata
30
-
31
- # Returns the title of this object. The RVG object title is stored as
32
- # the 'title' property on the image
33
- def title
34
- @title.to_s
35
- end
36
-
37
- # Returns the description of this object. The RVG object description is
38
- # stored as the 'desc' property on the image
39
- def desc
40
- @desc.to_s
41
- end
42
-
43
- # Returns additional metadata of this object. The RVG object metadata
44
- # are stored as the 'metadata' property on the image
45
- def metadata
46
- @metadata.to_s
47
- end
48
-
49
- end # module Describable
50
-
51
- end # class RVG
6
+ class RVG
7
+ #--
8
+ # Corresponds to SVG's Description.class
9
+ #++
10
+ # This module defines a number of metadata attributes.
11
+ module Describable
12
+ private
13
+
14
+ def initialize(*args, &block)
15
+ super
16
+ @title, @desc, @metadata = nil
17
+ end
18
+
19
+ public
20
+
21
+ # Sets the object description
22
+ attr_writer :desc
23
+ # Sets the object title
24
+ attr_writer :title
25
+ # Sets the object metadata
26
+ attr_writer :metadata
27
+
28
+ # Returns the title of this object. The RVG object title is stored as
29
+ # the 'title' property on the image
30
+ def title
31
+ @title.to_s
32
+ end
33
+
34
+ # Returns the description of this object. The RVG object description is
35
+ # stored as the 'desc' property on the image
36
+ def desc
37
+ @desc.to_s
38
+ end
39
+
40
+ # Returns additional metadata of this object. The RVG object metadata
41
+ # are stored as the 'metadata' property on the image
42
+ def metadata
43
+ @metadata.to_s
44
+ end
45
+ end # module Describable
46
+ end # class RVG
52
47
  end # module Magick
53
-