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.
- checksums.yaml +7 -0
- data/.codeclimate.yml +63 -0
- data/.editorconfig +17 -0
- data/.github/ISSUE_TEMPLATE.md +17 -0
- data/.github/workflows/ci.yml +107 -0
- data/.gitignore +25 -0
- data/.rspec +2 -0
- data/.rubocop.yml +37 -0
- data/.rubocop_todo.yml +449 -0
- data/.yardopts +5 -0
- data/CHANGELOG.md +1277 -0
- data/CODE_OF_CONDUCT.md +128 -0
- data/CONTRIBUTING.md +81 -0
- data/Gemfile +4 -0
- data/LICENSE +20 -0
- data/README.md +324 -0
- data/Rakefile +190 -0
- data/before_install_linux.sh +69 -0
- data/before_install_osx.sh +57 -0
- data/deprecated/RMagick.rb +6 -0
- data/ext/RMagick/extconf.rb +334 -333
- data/ext/RMagick/rmagick.c +129 -127
- data/ext/RMagick/rmagick.h +221 -320
- data/ext/RMagick/rmdraw.c +458 -767
- data/ext/RMagick/rmenum.c +305 -752
- data/ext/RMagick/rmfill.c +231 -199
- data/ext/RMagick/rmilist.c +437 -478
- data/ext/RMagick/rmimage.c +6130 -5342
- data/ext/RMagick/rminfo.c +695 -833
- data/ext/RMagick/rmkinfo.c +198 -0
- data/ext/RMagick/rmmain.c +752 -506
- data/ext/RMagick/rmmontage.c +94 -152
- data/ext/RMagick/rmpixel.c +619 -425
- data/ext/RMagick/rmstruct.c +206 -309
- data/ext/RMagick/rmutil.c +514 -344
- data/lib/rmagick/version.rb +5 -0
- data/lib/rmagick.rb +1 -0
- data/lib/rmagick_internal.rb +1922 -0
- data/lib/rvg/clippath.rb +35 -39
- data/lib/rvg/container.rb +123 -124
- data/lib/rvg/deep_equal.rb +45 -49
- data/lib/rvg/describable.rb +41 -47
- data/lib/rvg/embellishable.rb +380 -411
- data/lib/rvg/misc.rb +691 -711
- data/lib/rvg/paint.rb +43 -47
- data/lib/rvg/pathdata.rb +119 -125
- data/lib/rvg/rvg.rb +214 -213
- data/lib/rvg/stretchable.rb +153 -162
- data/lib/rvg/stylable.rb +111 -117
- data/lib/rvg/text.rb +169 -180
- data/lib/rvg/transformable.rb +121 -127
- data/lib/rvg/units.rb +58 -61
- data/rmagick.gemspec +36 -16
- metadata +188 -365
- data/ChangeLog +0 -773
- data/Doxyfile +0 -1514
- data/README-Mac-OSX.txt +0 -1
- data/README.html +0 -10
- data/build_tarball.rake +0 -215
- data/doc/comtasks.html +0 -287
- data/doc/constants.html +0 -1581
- data/doc/css/doc.css +0 -299
- data/doc/css/popup.css +0 -34
- data/doc/css/ref.css +0 -67
- data/doc/draw.html +0 -3269
- data/doc/ex/InitialCoords.rb +0 -23
- data/doc/ex/NewCoordSys.rb +0 -32
- data/doc/ex/OrigCoordSys.rb +0 -18
- data/doc/ex/PreserveAspectRatio.rb +0 -205
- data/doc/ex/RotateScale.rb +0 -37
- data/doc/ex/Skew.rb +0 -38
- data/doc/ex/Use01.rb +0 -16
- data/doc/ex/Use02.rb +0 -21
- data/doc/ex/Use03.rb +0 -16
- data/doc/ex/ViewBox.rb +0 -33
- data/doc/ex/adaptive_threshold.rb +0 -10
- data/doc/ex/add_noise.rb +0 -17
- data/doc/ex/affine.rb +0 -48
- data/doc/ex/affine_transform.rb +0 -20
- data/doc/ex/arc.rb +0 -49
- data/doc/ex/arcpath.rb +0 -33
- data/doc/ex/arcs01.rb +0 -28
- data/doc/ex/arcs02.rb +0 -61
- data/doc/ex/average.rb +0 -15
- data/doc/ex/axes.rb +0 -64
- data/doc/ex/baseline_shift01.rb +0 -18
- data/doc/ex/bilevel_channel.rb +0 -9
- data/doc/ex/blur_image.rb +0 -12
- data/doc/ex/border.rb +0 -10
- data/doc/ex/bounding_box.rb +0 -44
- data/doc/ex/cbezier1.rb +0 -42
- data/doc/ex/cbezier2.rb +0 -42
- data/doc/ex/cbezier3.rb +0 -42
- data/doc/ex/cbezier4.rb +0 -43
- data/doc/ex/cbezier5.rb +0 -43
- data/doc/ex/cbezier6.rb +0 -53
- data/doc/ex/channel.rb +0 -26
- data/doc/ex/charcoal.rb +0 -12
- data/doc/ex/chop.rb +0 -29
- data/doc/ex/circle.rb +0 -33
- data/doc/ex/circle01.rb +0 -17
- data/doc/ex/clip_path.rb +0 -60
- data/doc/ex/coalesce.rb +0 -60
- data/doc/ex/color_fill_to_border.rb +0 -29
- data/doc/ex/color_floodfill.rb +0 -28
- data/doc/ex/color_histogram.rb +0 -48
- data/doc/ex/color_reset.rb +0 -11
- data/doc/ex/colorize.rb +0 -16
- data/doc/ex/colors.rb +0 -64
- data/doc/ex/compose_mask.rb +0 -23
- data/doc/ex/composite.rb +0 -135
- data/doc/ex/composite_layers.rb +0 -53
- data/doc/ex/composite_tiled.rb +0 -23
- data/doc/ex/contrast.rb +0 -36
- data/doc/ex/crop.rb +0 -31
- data/doc/ex/crop_with_gravity.rb +0 -46
- data/doc/ex/cubic01.rb +0 -45
- data/doc/ex/cubic02.rb +0 -94
- data/doc/ex/cycle_colormap.rb +0 -21
- data/doc/ex/dissolve.rb +0 -13
- data/doc/ex/drawcomp.rb +0 -42
- data/doc/ex/drop_shadow.rb +0 -60
- data/doc/ex/edge.rb +0 -11
- data/doc/ex/ellipse.rb +0 -45
- data/doc/ex/ellipse01.rb +0 -22
- data/doc/ex/emboss.rb +0 -11
- data/doc/ex/enhance.rb +0 -28
- data/doc/ex/equalize.rb +0 -11
- data/doc/ex/evenodd.rb +0 -43
- data/doc/ex/fill_pattern.rb +0 -26
- data/doc/ex/flatten_images.rb +0 -36
- data/doc/ex/flip.rb +0 -11
- data/doc/ex/flop.rb +0 -11
- data/doc/ex/font_styles.rb +0 -34
- data/doc/ex/fonts.rb +0 -20
- data/doc/ex/frame.rb +0 -12
- data/doc/ex/gaussian_blur.rb +0 -11
- data/doc/ex/get_multiline_type_metrics.rb +0 -42
- data/doc/ex/get_pixels.rb +0 -48
- data/doc/ex/get_type_metrics.rb +0 -146
- data/doc/ex/gradientfill.rb +0 -27
- data/doc/ex/grav.rb +0 -46
- data/doc/ex/gravity.rb +0 -79
- data/doc/ex/group.rb +0 -26
- data/doc/ex/hatchfill.rb +0 -27
- data/doc/ex/image.rb +0 -46
- data/doc/ex/images/Apple.miff +0 -0
- data/doc/ex/images/Ballerina.jpg +0 -0
- data/doc/ex/images/Ballerina3.jpg +0 -0
- data/doc/ex/images/Button_0.gif +0 -0
- data/doc/ex/images/Button_1.gif +0 -0
- data/doc/ex/images/Button_2.gif +0 -0
- data/doc/ex/images/Button_3.gif +0 -0
- data/doc/ex/images/Button_4.gif +0 -0
- data/doc/ex/images/Button_5.gif +0 -0
- data/doc/ex/images/Button_6.gif +0 -0
- data/doc/ex/images/Button_7.gif +0 -0
- data/doc/ex/images/Button_8.gif +0 -0
- data/doc/ex/images/Button_9.gif +0 -0
- data/doc/ex/images/Button_A.gif +0 -0
- data/doc/ex/images/Button_B.gif +0 -0
- data/doc/ex/images/Button_C.gif +0 -0
- data/doc/ex/images/Button_D.gif +0 -0
- data/doc/ex/images/Button_E.gif +0 -0
- data/doc/ex/images/Button_F.gif +0 -0
- data/doc/ex/images/Button_G.gif +0 -0
- data/doc/ex/images/Button_H.gif +0 -0
- data/doc/ex/images/Button_I.gif +0 -0
- data/doc/ex/images/Button_J.gif +0 -0
- data/doc/ex/images/Button_K.gif +0 -0
- data/doc/ex/images/Button_L.gif +0 -0
- data/doc/ex/images/Button_M.gif +0 -0
- data/doc/ex/images/Button_N.gif +0 -0
- data/doc/ex/images/Button_O.gif +0 -0
- data/doc/ex/images/Button_P.gif +0 -0
- data/doc/ex/images/Button_Q.gif +0 -0
- data/doc/ex/images/Button_R.gif +0 -0
- data/doc/ex/images/Button_S.gif +0 -0
- data/doc/ex/images/Button_T.gif +0 -0
- data/doc/ex/images/Button_U.gif +0 -0
- data/doc/ex/images/Button_V.gif +0 -0
- data/doc/ex/images/Button_W.gif +0 -0
- data/doc/ex/images/Button_X.gif +0 -0
- data/doc/ex/images/Button_Y.gif +0 -0
- data/doc/ex/images/Button_Z.gif +0 -0
- data/doc/ex/images/Cheetah.jpg +0 -0
- data/doc/ex/images/Coffee.wmf +0 -0
- data/doc/ex/images/Flower_Hat.jpg +0 -0
- data/doc/ex/images/Gold_Statue.jpg +0 -0
- data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
- data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
- data/doc/ex/images/Leaf.miff +0 -0
- data/doc/ex/images/No.wmf +0 -0
- data/doc/ex/images/Polynesia.jpg +0 -0
- data/doc/ex/images/Red_Rocks.jpg +0 -0
- data/doc/ex/images/Rocks_On_Beach.miff +0 -0
- data/doc/ex/images/Shorts.jpg +0 -0
- data/doc/ex/images/Snake.wmf +0 -0
- data/doc/ex/images/Violin.jpg +0 -0
- data/doc/ex/images/Yellow_Rose.miff +0 -0
- data/doc/ex/images/big-duck.gif +0 -0
- data/doc/ex/images/duck.gif +0 -0
- data/doc/ex/images/duck0.gif +0 -0
- data/doc/ex/images/duck1.gif +0 -0
- data/doc/ex/images/duck10.gif +0 -0
- data/doc/ex/images/duck11.gif +0 -0
- data/doc/ex/images/duck12.gif +0 -0
- data/doc/ex/images/duck13.gif +0 -0
- data/doc/ex/images/duck14.gif +0 -0
- data/doc/ex/images/duck15.gif +0 -0
- data/doc/ex/images/duck2.gif +0 -0
- data/doc/ex/images/duck3.gif +0 -0
- data/doc/ex/images/duck4.gif +0 -0
- data/doc/ex/images/duck5.gif +0 -0
- data/doc/ex/images/duck6.gif +0 -0
- data/doc/ex/images/duck7.gif +0 -0
- data/doc/ex/images/duck8.gif +0 -0
- data/doc/ex/images/duck9.gif +0 -0
- data/doc/ex/images/graydient230x6.gif +0 -0
- data/doc/ex/images/logo400x83.gif +0 -0
- data/doc/ex/images/model.miff +0 -0
- data/doc/ex/images/notimplemented.gif +0 -0
- data/doc/ex/images/smile.miff +0 -0
- data/doc/ex/images/spin.gif +0 -0
- data/doc/ex/implode.rb +0 -34
- data/doc/ex/level.rb +0 -11
- data/doc/ex/level_colors.rb +0 -11
- data/doc/ex/line.rb +0 -42
- data/doc/ex/line01.rb +0 -23
- data/doc/ex/mask.rb +0 -36
- data/doc/ex/matte_fill_to_border.rb +0 -40
- data/doc/ex/matte_floodfill.rb +0 -33
- data/doc/ex/matte_replace.rb +0 -40
- data/doc/ex/median_filter.rb +0 -28
- data/doc/ex/modulate.rb +0 -11
- data/doc/ex/mono.rb +0 -23
- data/doc/ex/morph.rb +0 -26
- data/doc/ex/mosaic.rb +0 -35
- data/doc/ex/motion_blur.rb +0 -11
- data/doc/ex/negate.rb +0 -11
- data/doc/ex/negate_channel.rb +0 -9
- data/doc/ex/nested_rvg.rb +0 -21
- data/doc/ex/nonzero.rb +0 -43
- data/doc/ex/normalize.rb +0 -11
- data/doc/ex/oil_paint.rb +0 -11
- data/doc/ex/opacity.rb +0 -37
- data/doc/ex/ordered_dither.rb +0 -11
- data/doc/ex/path.rb +0 -64
- data/doc/ex/pattern1.rb +0 -25
- data/doc/ex/pattern2.rb +0 -26
- data/doc/ex/polaroid.rb +0 -28
- data/doc/ex/polygon.rb +0 -24
- data/doc/ex/polygon01.rb +0 -23
- data/doc/ex/polyline.rb +0 -23
- data/doc/ex/polyline01.rb +0 -23
- data/doc/ex/posterize.rb +0 -8
- data/doc/ex/preview.rb +0 -9
- data/doc/ex/qbezierpath.rb +0 -52
- data/doc/ex/quad01.rb +0 -36
- data/doc/ex/quantize-m.rb +0 -25
- data/doc/ex/radial_blur.rb +0 -9
- data/doc/ex/raise.rb +0 -8
- data/doc/ex/random_threshold_channel.rb +0 -13
- data/doc/ex/rect01.rb +0 -15
- data/doc/ex/rect02.rb +0 -22
- data/doc/ex/rectangle.rb +0 -35
- data/doc/ex/reduce_noise.rb +0 -28
- data/doc/ex/remap.rb +0 -12
- data/doc/ex/remap_images.rb +0 -21
- data/doc/ex/resize_to_fill.rb +0 -10
- data/doc/ex/resize_to_fit.rb +0 -10
- data/doc/ex/roll.rb +0 -9
- data/doc/ex/rotate.rb +0 -45
- data/doc/ex/rotate_f.rb +0 -14
- data/doc/ex/roundrect.rb +0 -34
- data/doc/ex/rubyname.rb +0 -30
- data/doc/ex/rvg_clippath.rb +0 -14
- data/doc/ex/rvg_linecap.rb +0 -43
- data/doc/ex/rvg_linejoin.rb +0 -41
- data/doc/ex/rvg_opacity.rb +0 -19
- data/doc/ex/rvg_pattern.rb +0 -26
- data/doc/ex/rvg_stroke_dasharray.rb +0 -12
- data/doc/ex/segment.rb +0 -11
- data/doc/ex/sepiatone.rb +0 -8
- data/doc/ex/shade.rb +0 -11
- data/doc/ex/shadow.rb +0 -31
- data/doc/ex/shave.rb +0 -15
- data/doc/ex/shear.rb +0 -10
- data/doc/ex/sketch.rb +0 -18
- data/doc/ex/skewx.rb +0 -52
- data/doc/ex/skewy.rb +0 -47
- data/doc/ex/smile.rb +0 -125
- data/doc/ex/solarize.rb +0 -11
- data/doc/ex/sparse_color.rb +0 -55
- data/doc/ex/splice.rb +0 -9
- data/doc/ex/spread.rb +0 -11
- data/doc/ex/stegano.rb +0 -55
- data/doc/ex/stroke_dasharray.rb +0 -43
- data/doc/ex/stroke_fill.rb +0 -11
- data/doc/ex/stroke_linecap.rb +0 -44
- data/doc/ex/stroke_linejoin.rb +0 -48
- data/doc/ex/stroke_width.rb +0 -49
- data/doc/ex/swirl.rb +0 -17
- data/doc/ex/text.rb +0 -37
- data/doc/ex/text01.rb +0 -17
- data/doc/ex/text_align.rb +0 -36
- data/doc/ex/text_antialias.rb +0 -38
- data/doc/ex/text_styles.rb +0 -21
- data/doc/ex/text_undercolor.rb +0 -28
- data/doc/ex/texture_fill_to_border.rb +0 -34
- data/doc/ex/texture_floodfill.rb +0 -32
- data/doc/ex/texturefill.rb +0 -25
- data/doc/ex/threshold.rb +0 -13
- data/doc/ex/to_blob.rb +0 -14
- data/doc/ex/translate.rb +0 -39
- data/doc/ex/transparent.rb +0 -38
- data/doc/ex/transpose.rb +0 -9
- data/doc/ex/transverse.rb +0 -9
- data/doc/ex/tref01.rb +0 -25
- data/doc/ex/triangle01.rb +0 -16
- data/doc/ex/trim.rb +0 -24
- data/doc/ex/tspan01.rb +0 -18
- data/doc/ex/tspan02.rb +0 -19
- data/doc/ex/tspan03.rb +0 -21
- data/doc/ex/unsharp_mask.rb +0 -28
- data/doc/ex/viewex.rb +0 -35
- data/doc/ex/vignette.rb +0 -12
- data/doc/ex/watermark.rb +0 -28
- data/doc/ex/wave.rb +0 -9
- data/doc/ex/wet_floor.rb +0 -59
- data/doc/ex/writing_mode01.rb +0 -27
- data/doc/ex/writing_mode02.rb +0 -26
- data/doc/ilist.html +0 -2056
- data/doc/image1.html +0 -4680
- data/doc/image2.html +0 -3665
- data/doc/image3.html +0 -4522
- data/doc/imageattrs.html +0 -1638
- data/doc/imusage.html +0 -514
- data/doc/index.html +0 -416
- data/doc/info.html +0 -1499
- data/doc/magick.html +0 -565
- data/doc/optequiv.html +0 -2435
- data/doc/rvg.html +0 -975
- data/doc/rvgclip.html +0 -248
- data/doc/rvggroup.html +0 -305
- data/doc/rvgimage.html +0 -289
- data/doc/rvgpattern.html +0 -475
- data/doc/rvgshape.html +0 -406
- data/doc/rvgstyle.html +0 -270
- data/doc/rvgtext.html +0 -465
- data/doc/rvgtspan.html +0 -238
- data/doc/rvgtut.html +0 -530
- data/doc/rvguse.html +0 -145
- data/doc/rvgxform.html +0 -294
- data/doc/scripts/doc.js +0 -22
- data/doc/scripts/stripeTables.js +0 -23
- data/doc/struct.html +0 -1339
- data/doc/usage.html +0 -1621
- data/examples/constitute.rb +0 -7
- data/examples/crop_with_gravity.rb +0 -46
- data/examples/demo.rb +0 -324
- data/examples/describe.rb +0 -44
- data/examples/find_similar_region.rb +0 -34
- data/examples/histogram.rb +0 -325
- data/examples/identify.rb +0 -187
- data/examples/image_opacity.rb +0 -29
- data/examples/import_export.rb +0 -31
- data/examples/pattern_fill.rb +0 -38
- data/examples/rotating_text.rb +0 -45
- data/examples/spinner.rb +0 -50
- data/examples/thumbnail.rb +0 -65
- data/examples/vignette.rb +0 -79
- data/ext/RMagick/MANIFEST +0 -358
- data/lib/RMagick.rb +0 -1962
- data/metaconfig +0 -7
- data/post-clean.rb +0 -12
- data/post-install.rb +0 -50
- data/post-setup.rb +0 -254
- data/setup.rb +0 -1585
- data/uninstall.rb +0 -76
data/examples/spinner.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
# Make a 32x32 animated GIF that resembles the OS X animation.
|
2
|
-
# This produces a very small (~2.6Kb) GIF file.
|
3
|
-
|
4
|
-
require 'RMagick'
|
5
|
-
|
6
|
-
puts <<END_INFO
|
7
|
-
This example creates an animated GIF that resembles the OS X "waiting" icon.
|
8
|
-
You can view the GIF with the command
|
9
|
-
|
10
|
-
animate spinner.gif
|
11
|
-
END_INFO
|
12
|
-
|
13
|
-
|
14
|
-
NFRAMES = 12 # number of frames in the animation
|
15
|
-
DIM = 32 # width & height of image in pixels
|
16
|
-
DELAY = 100.0 / (NFRAMES/2) # 2 rotations per second
|
17
|
-
|
18
|
-
# 'frame' is a single frame in the animation.
|
19
|
-
frame = Magick::Image.new(DIM, DIM) {self.background_color = 'transparent'}
|
20
|
-
|
21
|
-
# 'spinner' will contain the frames that make up the animated GIF
|
22
|
-
spinner = Magick::ImageList.new
|
23
|
-
|
24
|
-
# 'level' is the change from darkest gray to white
|
25
|
-
level = Magick::QuantumRange / 2 / NFRAMES
|
26
|
-
|
27
|
-
NFRAMES.times do |x|
|
28
|
-
gc = Magick::Draw.new
|
29
|
-
gc.translate(DIM/2, DIM/2)
|
30
|
-
gc.stroke('none')
|
31
|
-
intensity = 0.58 * Magick::QuantumRange
|
32
|
-
fill_color = Magick::Pixel.new(intensity, intensity, intensity).to_color
|
33
|
-
gc.fill(fill_color)
|
34
|
-
angle = x * (360/NFRAMES)
|
35
|
-
NFRAMES.times do
|
36
|
-
gc.rotate(angle)
|
37
|
-
intensity = [intensity, Magick::QuantumRange].min
|
38
|
-
fill_color = Magick::Pixel.new(intensity, intensity, intensity).to_color
|
39
|
-
gc.fill(fill_color)
|
40
|
-
gc.roundrectangle(7, -1, 15, 0, 1, 1)
|
41
|
-
angle = -(360/NFRAMES)
|
42
|
-
intensity += level
|
43
|
-
end
|
44
|
-
spinner << frame.copy
|
45
|
-
gc.draw(spinner)
|
46
|
-
end
|
47
|
-
|
48
|
-
spinner.delay = DELAY
|
49
|
-
spinner.compression = Magick::LZWCompression
|
50
|
-
spinner.write('spinner.gif')
|
data/examples/thumbnail.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'RMagick'
|
2
|
-
include Magick
|
3
|
-
|
4
|
-
puts <<END_INFO
|
5
|
-
|
6
|
-
This example demonstrates how to make a thumbnail of an image.
|
7
|
-
An image is resized to the target size (retaining its original
|
8
|
-
aspect ratio, of course) and then "mounted" on a square background
|
9
|
-
with raised edges.
|
10
|
-
|
11
|
-
Usage:
|
12
|
-
|
13
|
-
ruby thumbnail.rb <filename <size>>
|
14
|
-
|
15
|
-
where `filename' is the name of an image file and `size' is the
|
16
|
-
size of the thumbnail in pixels. The default size is 120 pixels.
|
17
|
-
If you don't specify any arguments this script uses a default
|
18
|
-
image.
|
19
|
-
|
20
|
-
END_INFO
|
21
|
-
|
22
|
-
DEFAULT_SIZE = 120
|
23
|
-
|
24
|
-
case ARGV.length
|
25
|
-
when 2
|
26
|
-
size = ARGV[1].to_i
|
27
|
-
image = ARGV[0]
|
28
|
-
when 1
|
29
|
-
image = ARGV[0]
|
30
|
-
size = DEFAULT_SIZE
|
31
|
-
else
|
32
|
-
size = DEFAULT_SIZE
|
33
|
-
image = "../doc/ex/images/Flower_Hat.jpg"
|
34
|
-
end
|
35
|
-
|
36
|
-
geom = "#{size}x#{size}"
|
37
|
-
|
38
|
-
# Read the image and resize it. The `change_geometry' method
|
39
|
-
# computes the new image geometry and yields to a block. The
|
40
|
-
# return value of the block is the return value of the method.
|
41
|
-
|
42
|
-
img = Image.read(image)[0]
|
43
|
-
img.change_geometry!(geom) { |cols, rows| img.thumbnail! cols, rows }
|
44
|
-
|
45
|
-
# We need a background to display the thumbnail.
|
46
|
-
# Create a square, neutral gray background with raised edges.
|
47
|
-
# Make this background slightly larger than the image to allow
|
48
|
-
# for the raised border. A 3-pixel raised edge means that the
|
49
|
-
# background needs to be 6 pixels larger in each dimension.
|
50
|
-
|
51
|
-
bg = Image.new(size+6, size+6) { self.background_color = "gray75" }
|
52
|
-
bg = bg.raise(3,3)
|
53
|
-
|
54
|
-
# Just for the purposes of this example, display the thumbnail background on
|
55
|
-
# a larger white background.
|
56
|
-
|
57
|
-
white_bg = Image.new(size+50, size+50) {self.background_color = "white"}
|
58
|
-
white_bg = white_bg.composite(bg, CenterGravity, OverCompositeOp)
|
59
|
-
|
60
|
-
# Finally, center the thumbnail on the gray background.
|
61
|
-
thumbnail = white_bg.composite(img, CenterGravity, OverCompositeOp)
|
62
|
-
|
63
|
-
thumbnail.write("thumbnail.gif")
|
64
|
-
exit
|
65
|
-
|
data/examples/vignette.rb
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
require 'RMagick'
|
2
|
-
include Magick
|
3
|
-
|
4
|
-
puts <<END_INFO
|
5
|
-
|
6
|
-
vi-gnette (n.) vin-'yet
|
7
|
-
A picture that shades off gradually into the surrounding paper.
|
8
|
-
Merriam-Webster Dictionary
|
9
|
-
|
10
|
-
Vignettes are frequently used in formal portraiture and advertising
|
11
|
-
images. This example creates a vignette from a picture of a ballerina.
|
12
|
-
It takes a few seconds to run. Be patient.
|
13
|
-
|
14
|
-
END_INFO
|
15
|
-
|
16
|
-
ballerina = Image.read("../doc/ex/images/Ballerina3.jpg")[0]
|
17
|
-
|
18
|
-
# Note: this technique won't work with every image. To make a pretty
|
19
|
-
# vignette you need an image with a uniform, fairly dark background.
|
20
|
-
|
21
|
-
# Start by drawing a white oval on a black background. (Although you don't
|
22
|
-
# have to use an oval at all! Any shape will work. Try a rounded rectangle.)
|
23
|
-
# The black pixels correspond to pixels in the image that will become
|
24
|
-
# transparent. The white pixels correspond to pixels in the image that will
|
25
|
-
# remain unchanged. Gray pixels, introduced by the blurring below, will
|
26
|
-
# become more or less transparent depending on how dark or light the pixel is.
|
27
|
-
|
28
|
-
# The size of the oval is arbitrary - in this case it's 90% of the
|
29
|
-
# size of the image.
|
30
|
-
|
31
|
-
oval = Image.new(ballerina.columns, ballerina.rows) {self.background_color = 'black'}
|
32
|
-
gc = Draw.new
|
33
|
-
gc.stroke('white')
|
34
|
-
gc.fill('white')
|
35
|
-
gc.ellipse(ballerina.columns/2, ballerina.rows/2,
|
36
|
-
ballerina.columns/2-(ballerina.columns*0.10),
|
37
|
-
ballerina.rows/2-(ballerina.rows*0.10), 0, 360)
|
38
|
-
gc.draw(oval)
|
39
|
-
|
40
|
-
# Add a lot of blurring to the oval. I use blur_image because it's much faster
|
41
|
-
# than the gaussian_blur method and produces no observable difference. The
|
42
|
-
# exact amount of blurring is a judgment call. The higher the 2nd argument, the
|
43
|
-
# more blurring, although increasing the value above 20 doesn't seem to add any
|
44
|
-
# additional blurriness.
|
45
|
-
|
46
|
-
oval = oval.blur_image(0, 20)
|
47
|
-
|
48
|
-
# The CopyOpacityCompositeOp transforms the opacity level of each image pixel
|
49
|
-
# according to the intensity of the composite image pixels. In this case, the
|
50
|
-
# black pixels outside the oval become transparent and the white pixels inside
|
51
|
-
# the oval remain opaque. Each gray pixel around the border of the oval has a
|
52
|
-
# varying level of transparency depending on how dark or light it is.
|
53
|
-
|
54
|
-
ballerina.matte = true # Ensure the ballerina image's opacity channel is enabled.
|
55
|
-
oval.matte = false # Force the CopyOpacityCompositeOp to use pixel intensity
|
56
|
-
# to determine how much transparency to add to the ballerina
|
57
|
-
# pixels.
|
58
|
-
|
59
|
-
ballerina = ballerina.composite(oval, CenterGravity, CopyOpacityCompositeOp)
|
60
|
-
|
61
|
-
# Since the vignette has multiple levels of transparency, we can't
|
62
|
-
# save it as a GIF or a JPEG. The PNG format can handle it, though.
|
63
|
-
|
64
|
-
begin
|
65
|
-
ballerina.write("vignette.png")
|
66
|
-
rescue ImageMagickError
|
67
|
-
puts "Write failed. No PNG support?"
|
68
|
-
# In case PNG support isn't installed, just ignore the exception.
|
69
|
-
end
|
70
|
-
|
71
|
-
# At this point the vignette is complete. However, the `display' method only
|
72
|
-
# supports 1`level of transparency. Therefore, composite the vignette over a
|
73
|
-
# standard "checkerboard" background. The resulting image will be 100% opaque.
|
74
|
-
|
75
|
-
checkerboard = Image.read("pattern:checkerboard") {self.size = "#{ballerina.columns}x#{ballerina.rows}"}
|
76
|
-
vignette = checkerboard[0].composite(ballerina, CenterGravity, OverCompositeOp)
|
77
|
-
vignette.display
|
78
|
-
exit
|
79
|
-
|
data/ext/RMagick/MANIFEST
DELETED
@@ -1,358 +0,0 @@
|
|
1
|
-
MANIFEST for RMagick-2.13.2 - 16:03:50 02/02/13
|
2
|
-
|
3
|
-
ChangeLog
|
4
|
-
Doxyfile
|
5
|
-
README-Mac-OSX.txt
|
6
|
-
README.html
|
7
|
-
build_tarball.rake
|
8
|
-
doc/.cvsignore
|
9
|
-
doc/comtasks.html
|
10
|
-
doc/constants.html
|
11
|
-
doc/css/doc.css
|
12
|
-
doc/css/popup.css
|
13
|
-
doc/css/ref.css
|
14
|
-
doc/draw.html
|
15
|
-
doc/ex/InitialCoords.rb
|
16
|
-
doc/ex/NewCoordSys.rb
|
17
|
-
doc/ex/OrigCoordSys.rb
|
18
|
-
doc/ex/PreserveAspectRatio.rb
|
19
|
-
doc/ex/RotateScale.rb
|
20
|
-
doc/ex/Skew.rb
|
21
|
-
doc/ex/Use01.rb
|
22
|
-
doc/ex/Use02.rb
|
23
|
-
doc/ex/Use03.rb
|
24
|
-
doc/ex/ViewBox.rb
|
25
|
-
doc/ex/adaptive_threshold.rb
|
26
|
-
doc/ex/add_noise.rb
|
27
|
-
doc/ex/affine.rb
|
28
|
-
doc/ex/affine_transform.rb
|
29
|
-
doc/ex/arc.rb
|
30
|
-
doc/ex/arcpath.rb
|
31
|
-
doc/ex/arcs01.rb
|
32
|
-
doc/ex/arcs02.rb
|
33
|
-
doc/ex/average.rb
|
34
|
-
doc/ex/axes.rb
|
35
|
-
doc/ex/baseline_shift01.rb
|
36
|
-
doc/ex/bilevel_channel.rb
|
37
|
-
doc/ex/blur_image.rb
|
38
|
-
doc/ex/border.rb
|
39
|
-
doc/ex/bounding_box.rb
|
40
|
-
doc/ex/cbezier1.rb
|
41
|
-
doc/ex/cbezier2.rb
|
42
|
-
doc/ex/cbezier3.rb
|
43
|
-
doc/ex/cbezier4.rb
|
44
|
-
doc/ex/cbezier5.rb
|
45
|
-
doc/ex/cbezier6.rb
|
46
|
-
doc/ex/channel.rb
|
47
|
-
doc/ex/charcoal.rb
|
48
|
-
doc/ex/chop.rb
|
49
|
-
doc/ex/circle.rb
|
50
|
-
doc/ex/circle01.rb
|
51
|
-
doc/ex/clip_path.rb
|
52
|
-
doc/ex/coalesce.rb
|
53
|
-
doc/ex/color_fill_to_border.rb
|
54
|
-
doc/ex/color_floodfill.rb
|
55
|
-
doc/ex/color_histogram.rb
|
56
|
-
doc/ex/color_reset.rb
|
57
|
-
doc/ex/colorize.rb
|
58
|
-
doc/ex/colors.rb
|
59
|
-
doc/ex/compose_mask.rb
|
60
|
-
doc/ex/composite.rb
|
61
|
-
doc/ex/composite_layers.rb
|
62
|
-
doc/ex/composite_tiled.rb
|
63
|
-
doc/ex/contrast.rb
|
64
|
-
doc/ex/crop.rb
|
65
|
-
doc/ex/crop_with_gravity.rb
|
66
|
-
doc/ex/cubic01.rb
|
67
|
-
doc/ex/cubic02.rb
|
68
|
-
doc/ex/cycle_colormap.rb
|
69
|
-
doc/ex/dissolve.rb
|
70
|
-
doc/ex/drawcomp.rb
|
71
|
-
doc/ex/drop_shadow.rb
|
72
|
-
doc/ex/edge.rb
|
73
|
-
doc/ex/ellipse.rb
|
74
|
-
doc/ex/ellipse01.rb
|
75
|
-
doc/ex/emboss.rb
|
76
|
-
doc/ex/enhance.rb
|
77
|
-
doc/ex/equalize.rb
|
78
|
-
doc/ex/evenodd.rb
|
79
|
-
doc/ex/fill_pattern.rb
|
80
|
-
doc/ex/flatten_images.rb
|
81
|
-
doc/ex/flip.rb
|
82
|
-
doc/ex/flop.rb
|
83
|
-
doc/ex/font_styles.rb
|
84
|
-
doc/ex/fonts.rb
|
85
|
-
doc/ex/frame.rb
|
86
|
-
doc/ex/gaussian_blur.rb
|
87
|
-
doc/ex/get_multiline_type_metrics.rb
|
88
|
-
doc/ex/get_pixels.rb
|
89
|
-
doc/ex/get_type_metrics.rb
|
90
|
-
doc/ex/gradientfill.rb
|
91
|
-
doc/ex/grav.rb
|
92
|
-
doc/ex/gravity.rb
|
93
|
-
doc/ex/group.rb
|
94
|
-
doc/ex/hatchfill.rb
|
95
|
-
doc/ex/image.rb
|
96
|
-
doc/ex/images/Apple.miff
|
97
|
-
doc/ex/images/Ballerina.jpg
|
98
|
-
doc/ex/images/Ballerina3.jpg
|
99
|
-
doc/ex/images/Button_0.gif
|
100
|
-
doc/ex/images/Button_1.gif
|
101
|
-
doc/ex/images/Button_2.gif
|
102
|
-
doc/ex/images/Button_3.gif
|
103
|
-
doc/ex/images/Button_4.gif
|
104
|
-
doc/ex/images/Button_5.gif
|
105
|
-
doc/ex/images/Button_6.gif
|
106
|
-
doc/ex/images/Button_7.gif
|
107
|
-
doc/ex/images/Button_8.gif
|
108
|
-
doc/ex/images/Button_9.gif
|
109
|
-
doc/ex/images/Button_A.gif
|
110
|
-
doc/ex/images/Button_B.gif
|
111
|
-
doc/ex/images/Button_C.gif
|
112
|
-
doc/ex/images/Button_D.gif
|
113
|
-
doc/ex/images/Button_E.gif
|
114
|
-
doc/ex/images/Button_F.gif
|
115
|
-
doc/ex/images/Button_G.gif
|
116
|
-
doc/ex/images/Button_H.gif
|
117
|
-
doc/ex/images/Button_I.gif
|
118
|
-
doc/ex/images/Button_J.gif
|
119
|
-
doc/ex/images/Button_K.gif
|
120
|
-
doc/ex/images/Button_L.gif
|
121
|
-
doc/ex/images/Button_M.gif
|
122
|
-
doc/ex/images/Button_N.gif
|
123
|
-
doc/ex/images/Button_O.gif
|
124
|
-
doc/ex/images/Button_P.gif
|
125
|
-
doc/ex/images/Button_Q.gif
|
126
|
-
doc/ex/images/Button_R.gif
|
127
|
-
doc/ex/images/Button_S.gif
|
128
|
-
doc/ex/images/Button_T.gif
|
129
|
-
doc/ex/images/Button_U.gif
|
130
|
-
doc/ex/images/Button_V.gif
|
131
|
-
doc/ex/images/Button_W.gif
|
132
|
-
doc/ex/images/Button_X.gif
|
133
|
-
doc/ex/images/Button_Y.gif
|
134
|
-
doc/ex/images/Button_Z.gif
|
135
|
-
doc/ex/images/Cheetah.jpg
|
136
|
-
doc/ex/images/Coffee.wmf
|
137
|
-
doc/ex/images/Flower_Hat.jpg
|
138
|
-
doc/ex/images/Gold_Statue.jpg
|
139
|
-
doc/ex/images/Hot_Air_Balloons.jpg
|
140
|
-
doc/ex/images/Hot_Air_Balloons_H.jpg
|
141
|
-
doc/ex/images/Leaf.miff
|
142
|
-
doc/ex/images/No.wmf
|
143
|
-
doc/ex/images/Polynesia.jpg
|
144
|
-
doc/ex/images/Red_Rocks.jpg
|
145
|
-
doc/ex/images/Rocks_On_Beach.miff
|
146
|
-
doc/ex/images/Shorts.jpg
|
147
|
-
doc/ex/images/Snake.wmf
|
148
|
-
doc/ex/images/Violin.jpg
|
149
|
-
doc/ex/images/Yellow_Rose.miff
|
150
|
-
doc/ex/images/big-duck.gif
|
151
|
-
doc/ex/images/duck.gif
|
152
|
-
doc/ex/images/duck0.gif
|
153
|
-
doc/ex/images/duck1.gif
|
154
|
-
doc/ex/images/duck10.gif
|
155
|
-
doc/ex/images/duck11.gif
|
156
|
-
doc/ex/images/duck12.gif
|
157
|
-
doc/ex/images/duck13.gif
|
158
|
-
doc/ex/images/duck14.gif
|
159
|
-
doc/ex/images/duck15.gif
|
160
|
-
doc/ex/images/duck2.gif
|
161
|
-
doc/ex/images/duck3.gif
|
162
|
-
doc/ex/images/duck4.gif
|
163
|
-
doc/ex/images/duck5.gif
|
164
|
-
doc/ex/images/duck6.gif
|
165
|
-
doc/ex/images/duck7.gif
|
166
|
-
doc/ex/images/duck8.gif
|
167
|
-
doc/ex/images/duck9.gif
|
168
|
-
doc/ex/images/graydient230x6.gif
|
169
|
-
doc/ex/images/logo400x83.gif
|
170
|
-
doc/ex/images/model.miff
|
171
|
-
doc/ex/images/notimplemented.gif
|
172
|
-
doc/ex/images/smile.miff
|
173
|
-
doc/ex/images/spin.gif
|
174
|
-
doc/ex/implode.rb
|
175
|
-
doc/ex/level.rb
|
176
|
-
doc/ex/level_colors.rb
|
177
|
-
doc/ex/line.rb
|
178
|
-
doc/ex/line01.rb
|
179
|
-
doc/ex/mask.rb
|
180
|
-
doc/ex/matte_fill_to_border.rb
|
181
|
-
doc/ex/matte_floodfill.rb
|
182
|
-
doc/ex/matte_replace.rb
|
183
|
-
doc/ex/median_filter.rb
|
184
|
-
doc/ex/modulate.rb
|
185
|
-
doc/ex/mono.rb
|
186
|
-
doc/ex/morph.rb
|
187
|
-
doc/ex/mosaic.rb
|
188
|
-
doc/ex/motion_blur.rb
|
189
|
-
doc/ex/negate.rb
|
190
|
-
doc/ex/negate_channel.rb
|
191
|
-
doc/ex/nested_rvg.rb
|
192
|
-
doc/ex/nonzero.rb
|
193
|
-
doc/ex/normalize.rb
|
194
|
-
doc/ex/oil_paint.rb
|
195
|
-
doc/ex/opacity.rb
|
196
|
-
doc/ex/ordered_dither.rb
|
197
|
-
doc/ex/path.rb
|
198
|
-
doc/ex/pattern1.rb
|
199
|
-
doc/ex/pattern2.rb
|
200
|
-
doc/ex/polaroid.rb
|
201
|
-
doc/ex/polygon.rb
|
202
|
-
doc/ex/polygon01.rb
|
203
|
-
doc/ex/polyline.rb
|
204
|
-
doc/ex/polyline01.rb
|
205
|
-
doc/ex/posterize.rb
|
206
|
-
doc/ex/preview.rb
|
207
|
-
doc/ex/qbezierpath.rb
|
208
|
-
doc/ex/quad01.rb
|
209
|
-
doc/ex/quantize-m.rb
|
210
|
-
doc/ex/radial_blur.rb
|
211
|
-
doc/ex/raise.rb
|
212
|
-
doc/ex/random_threshold_channel.rb
|
213
|
-
doc/ex/rect01.rb
|
214
|
-
doc/ex/rect02.rb
|
215
|
-
doc/ex/rectangle.rb
|
216
|
-
doc/ex/reduce_noise.rb
|
217
|
-
doc/ex/remap.rb
|
218
|
-
doc/ex/remap_images.rb
|
219
|
-
doc/ex/resize_to_fill.rb
|
220
|
-
doc/ex/resize_to_fit.rb
|
221
|
-
doc/ex/roll.rb
|
222
|
-
doc/ex/rotate.rb
|
223
|
-
doc/ex/rotate_f.rb
|
224
|
-
doc/ex/roundrect.rb
|
225
|
-
doc/ex/rubyname.rb
|
226
|
-
doc/ex/rvg_clippath.rb
|
227
|
-
doc/ex/rvg_linecap.rb
|
228
|
-
doc/ex/rvg_linejoin.rb
|
229
|
-
doc/ex/rvg_opacity.rb
|
230
|
-
doc/ex/rvg_pattern.rb
|
231
|
-
doc/ex/rvg_stroke_dasharray.rb
|
232
|
-
doc/ex/segment.rb
|
233
|
-
doc/ex/sepiatone.rb
|
234
|
-
doc/ex/shade.rb
|
235
|
-
doc/ex/shadow.rb
|
236
|
-
doc/ex/shave.rb
|
237
|
-
doc/ex/shear.rb
|
238
|
-
doc/ex/sketch.rb
|
239
|
-
doc/ex/skewx.rb
|
240
|
-
doc/ex/skewy.rb
|
241
|
-
doc/ex/smile.rb
|
242
|
-
doc/ex/solarize.rb
|
243
|
-
doc/ex/sparse_color.rb
|
244
|
-
doc/ex/splice.rb
|
245
|
-
doc/ex/spread.rb
|
246
|
-
doc/ex/stegano.rb
|
247
|
-
doc/ex/stroke_dasharray.rb
|
248
|
-
doc/ex/stroke_fill.rb
|
249
|
-
doc/ex/stroke_linecap.rb
|
250
|
-
doc/ex/stroke_linejoin.rb
|
251
|
-
doc/ex/stroke_width.rb
|
252
|
-
doc/ex/swirl.rb
|
253
|
-
doc/ex/text.rb
|
254
|
-
doc/ex/text01.rb
|
255
|
-
doc/ex/text_align.rb
|
256
|
-
doc/ex/text_antialias.rb
|
257
|
-
doc/ex/text_styles.rb
|
258
|
-
doc/ex/text_undercolor.rb
|
259
|
-
doc/ex/texture_fill_to_border.rb
|
260
|
-
doc/ex/texture_floodfill.rb
|
261
|
-
doc/ex/texturefill.rb
|
262
|
-
doc/ex/threshold.rb
|
263
|
-
doc/ex/to_blob.rb
|
264
|
-
doc/ex/translate.rb
|
265
|
-
doc/ex/transparent.rb
|
266
|
-
doc/ex/transpose.rb
|
267
|
-
doc/ex/transverse.rb
|
268
|
-
doc/ex/tref01.rb
|
269
|
-
doc/ex/triangle01.rb
|
270
|
-
doc/ex/trim.rb
|
271
|
-
doc/ex/tspan01.rb
|
272
|
-
doc/ex/tspan02.rb
|
273
|
-
doc/ex/tspan03.rb
|
274
|
-
doc/ex/unsharp_mask.rb
|
275
|
-
doc/ex/viewex.rb
|
276
|
-
doc/ex/vignette.rb
|
277
|
-
doc/ex/watermark.rb
|
278
|
-
doc/ex/wave.rb
|
279
|
-
doc/ex/wet_floor.rb
|
280
|
-
doc/ex/writing_mode01.rb
|
281
|
-
doc/ex/writing_mode02.rb
|
282
|
-
doc/ilist.html
|
283
|
-
doc/image1.html
|
284
|
-
doc/image2.html
|
285
|
-
doc/image3.html
|
286
|
-
doc/imageattrs.html
|
287
|
-
doc/imusage.html
|
288
|
-
doc/index.html
|
289
|
-
doc/info.html
|
290
|
-
doc/magick.html
|
291
|
-
doc/optequiv.html
|
292
|
-
doc/rvg.html
|
293
|
-
doc/rvgclip.html
|
294
|
-
doc/rvggroup.html
|
295
|
-
doc/rvgimage.html
|
296
|
-
doc/rvgpattern.html
|
297
|
-
doc/rvgshape.html
|
298
|
-
doc/rvgstyle.html
|
299
|
-
doc/rvgtext.html
|
300
|
-
doc/rvgtspan.html
|
301
|
-
doc/rvgtut.html
|
302
|
-
doc/rvguse.html
|
303
|
-
doc/rvgxform.html
|
304
|
-
doc/scripts/doc.js
|
305
|
-
doc/scripts/stripeTables.js
|
306
|
-
doc/struct.html
|
307
|
-
doc/usage.html
|
308
|
-
examples/constitute.rb
|
309
|
-
examples/crop_with_gravity.rb
|
310
|
-
examples/demo.rb
|
311
|
-
examples/describe.rb
|
312
|
-
examples/find_similar_region.rb
|
313
|
-
examples/histogram.rb
|
314
|
-
examples/identify.rb
|
315
|
-
examples/image_opacity.rb
|
316
|
-
examples/import_export.rb
|
317
|
-
examples/pattern_fill.rb
|
318
|
-
examples/rotating_text.rb
|
319
|
-
examples/spinner.rb
|
320
|
-
examples/thumbnail.rb
|
321
|
-
examples/vignette.rb
|
322
|
-
ext/RMagick/MANIFEST
|
323
|
-
ext/RMagick/extconf.rb
|
324
|
-
ext/RMagick/rmagick.c
|
325
|
-
ext/RMagick/rmagick.h
|
326
|
-
ext/RMagick/rmdraw.c
|
327
|
-
ext/RMagick/rmenum.c
|
328
|
-
ext/RMagick/rmfill.c
|
329
|
-
ext/RMagick/rmilist.c
|
330
|
-
ext/RMagick/rmimage.c
|
331
|
-
ext/RMagick/rminfo.c
|
332
|
-
ext/RMagick/rmmain.c
|
333
|
-
ext/RMagick/rmmontage.c
|
334
|
-
ext/RMagick/rmpixel.c
|
335
|
-
ext/RMagick/rmstruct.c
|
336
|
-
ext/RMagick/rmutil.c
|
337
|
-
lib/RMagick.rb
|
338
|
-
lib/rvg/clippath.rb
|
339
|
-
lib/rvg/container.rb
|
340
|
-
lib/rvg/deep_equal.rb
|
341
|
-
lib/rvg/describable.rb
|
342
|
-
lib/rvg/embellishable.rb
|
343
|
-
lib/rvg/misc.rb
|
344
|
-
lib/rvg/paint.rb
|
345
|
-
lib/rvg/pathdata.rb
|
346
|
-
lib/rvg/rvg.rb
|
347
|
-
lib/rvg/stretchable.rb
|
348
|
-
lib/rvg/stylable.rb
|
349
|
-
lib/rvg/text.rb
|
350
|
-
lib/rvg/transformable.rb
|
351
|
-
lib/rvg/units.rb
|
352
|
-
metaconfig
|
353
|
-
post-clean.rb
|
354
|
-
post-install.rb
|
355
|
-
post-setup.rb
|
356
|
-
rmagick.gemspec
|
357
|
-
setup.rb
|
358
|
-
uninstall.rb
|