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/ext/RMagick/rmagick.c
CHANGED
@@ -14,41 +14,53 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
+
static VALUE rm_yield_handle_exception(VALUE, VALUE) ATTRIBUTE_NORETURN;
|
18
|
+
|
19
|
+
static VALUE
|
20
|
+
rm_yield_body(VALUE object)
|
21
|
+
{
|
22
|
+
return rb_yield(object);
|
23
|
+
}
|
24
|
+
|
25
|
+
static VALUE
|
26
|
+
rm_yield_handle_exception(VALUE allocated_area, VALUE exc)
|
27
|
+
{
|
28
|
+
magick_free((void *)allocated_area);
|
29
|
+
rb_exc_raise(exc);
|
30
|
+
}
|
17
31
|
|
18
32
|
/**
|
19
33
|
* If called with the optional block, iterates over the colors, otherwise
|
20
|
-
* returns an array of Magick::Color objects.
|
34
|
+
* returns an array of {Magick::Color} objects.
|
21
35
|
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
* - @verbatim Magick::colors { |colorinfo| } @endverbatim
|
36
|
+
* @overload colors
|
37
|
+
* @return [Array<Magick::Color>] the array of {Magick::Color}
|
25
38
|
*
|
26
|
-
*
|
27
|
-
*
|
39
|
+
* @overload colors
|
40
|
+
* @yield [colorinfo]
|
41
|
+
* @yieldparam colorinfo [Magick::Color] the color
|
28
42
|
*
|
29
|
-
* @param class the class on which the method is run.
|
30
|
-
* @return either the input class (if a block was given) or the array of colors.
|
31
43
|
*/
|
32
44
|
VALUE
|
33
45
|
Magick_colors(VALUE class)
|
34
46
|
{
|
35
47
|
const ColorInfo **color_info_list;
|
36
|
-
|
37
|
-
|
38
|
-
ExceptionInfo exception;
|
48
|
+
size_t number_colors, x;
|
49
|
+
VALUE ary;
|
50
|
+
ExceptionInfo *exception;
|
39
51
|
|
40
|
-
|
52
|
+
exception = AcquireExceptionInfo();
|
41
53
|
|
42
|
-
color_info_list = GetColorInfoList("*", &number_colors,
|
43
|
-
CHECK_EXCEPTION()
|
44
|
-
|
54
|
+
color_info_list = GetColorInfoList("*", &number_colors, exception);
|
55
|
+
CHECK_EXCEPTION();
|
56
|
+
DestroyExceptionInfo(exception);
|
45
57
|
|
46
58
|
|
47
59
|
if (rb_block_given_p())
|
48
60
|
{
|
49
61
|
for (x = 0; x < number_colors; x++)
|
50
62
|
{
|
51
|
-
(
|
63
|
+
rb_rescue(rm_yield_body, Import_ColorInfo(color_info_list[x]), rm_yield_handle_exception, (VALUE)color_info_list);
|
52
64
|
}
|
53
65
|
magick_free((void *)color_info_list);
|
54
66
|
return class;
|
@@ -58,10 +70,11 @@ Magick_colors(VALUE class)
|
|
58
70
|
ary = rb_ary_new2((long) number_colors);
|
59
71
|
for (x = 0; x < number_colors; x++)
|
60
72
|
{
|
61
|
-
|
73
|
+
rb_ary_push(ary, Import_ColorInfo(color_info_list[x]));
|
62
74
|
}
|
63
75
|
|
64
76
|
magick_free((void *)color_info_list);
|
77
|
+
RB_GC_GUARD(ary);
|
65
78
|
return ary;
|
66
79
|
}
|
67
80
|
}
|
@@ -69,33 +82,34 @@ Magick_colors(VALUE class)
|
|
69
82
|
|
70
83
|
/**
|
71
84
|
* If called with the optional block, iterates over the fonts, otherwise returns
|
72
|
-
* an array of Magick::Font objects.
|
85
|
+
* an array of {Magick::Font} objects.
|
73
86
|
*
|
74
|
-
*
|
75
|
-
*
|
76
|
-
*
|
87
|
+
* @overload fonts
|
88
|
+
* @return [Array<Magick::Font>] the array of {Magick::Font}
|
89
|
+
*
|
90
|
+
* @overload fonts
|
91
|
+
* @yield [fontinfo]
|
92
|
+
* @yieldparam fontinfo [Magick::Font] the font
|
77
93
|
*
|
78
|
-
* @param class the class on which the method is run.
|
79
|
-
* @return either the input class (if a block was given) or the array of fonts.
|
80
94
|
*/
|
81
95
|
VALUE
|
82
96
|
Magick_fonts(VALUE class)
|
83
97
|
{
|
84
98
|
const TypeInfo **type_info;
|
85
|
-
|
86
|
-
|
87
|
-
ExceptionInfo exception;
|
99
|
+
size_t number_types, x;
|
100
|
+
VALUE ary;
|
101
|
+
ExceptionInfo *exception;
|
88
102
|
|
89
|
-
|
90
|
-
type_info = GetTypeInfoList("*", &number_types,
|
91
|
-
CHECK_EXCEPTION()
|
92
|
-
|
103
|
+
exception = AcquireExceptionInfo();
|
104
|
+
type_info = GetTypeInfoList("*", &number_types, exception);
|
105
|
+
CHECK_EXCEPTION();
|
106
|
+
DestroyExceptionInfo(exception);
|
93
107
|
|
94
108
|
if (rb_block_given_p())
|
95
109
|
{
|
96
110
|
for (x = 0; x < number_types; x++)
|
97
111
|
{
|
98
|
-
(
|
112
|
+
rb_rescue(rm_yield_body, Import_TypeInfo((const TypeInfo *)type_info[x]), rm_yield_handle_exception, (VALUE)type_info);
|
99
113
|
}
|
100
114
|
magick_free((void *)type_info);
|
101
115
|
return class;
|
@@ -105,9 +119,10 @@ Magick_fonts(VALUE class)
|
|
105
119
|
ary = rb_ary_new2((long)number_types);
|
106
120
|
for (x = 0; x < number_types; x++)
|
107
121
|
{
|
108
|
-
|
122
|
+
rb_ary_push(ary, Import_TypeInfo((const TypeInfo *)type_info[x]));
|
109
123
|
}
|
110
124
|
magick_free((void *)type_info);
|
125
|
+
RB_GC_GUARD(ary);
|
111
126
|
return ary;
|
112
127
|
}
|
113
128
|
|
@@ -122,7 +137,7 @@ Magick_fonts(VALUE class)
|
|
122
137
|
* - "R" is "r" if ImageMagick can read that format, or "-" otherwise.
|
123
138
|
* - "W" is "w" if ImageMagick can write that format, or "-" otherwise.
|
124
139
|
* - "A" is "+" if the format supports multi-image files, or "-" otherwise.
|
125
|
-
*
|
140
|
+
*
|
126
141
|
* No Ruby usage (internal function)
|
127
142
|
*
|
128
143
|
* @param magick_info a MagickInfo object.
|
@@ -133,10 +148,10 @@ MagickInfo_to_format(const MagickInfo *magick_info)
|
|
133
148
|
{
|
134
149
|
char mode[4];
|
135
150
|
|
136
|
-
mode[0] = magick_info
|
137
|
-
mode[1] = magick_info
|
138
|
-
mode[2] = magick_info
|
139
|
-
mode[3] = magick_info
|
151
|
+
mode[0] = GetMagickBlobSupport(magick_info) ? '*': ' ';
|
152
|
+
mode[1] = GetImageDecoder(magick_info) ? 'r' : '-';
|
153
|
+
mode[2] = GetImageEncoder(magick_info) ? 'w' : '-';
|
154
|
+
mode[3] = GetMagickAdjoin(magick_info) ? '+' : '-';
|
140
155
|
|
141
156
|
return rb_str_new(mode, sizeof(mode));
|
142
157
|
}
|
@@ -146,46 +161,39 @@ MagickInfo_to_format(const MagickInfo *magick_info)
|
|
146
161
|
* Build the @@formats hash. The hash keys are image formats. The hash values
|
147
162
|
* specify the format "mode string", i.e. a description of what ImageMagick can
|
148
163
|
* do with that format. The mode string is in the form "BRWA", where
|
149
|
-
* - "B" is "*" if the format has native blob support, or " " otherwise.
|
150
|
-
* - "R" is "r" if ImageMagick can read that format, or "-" otherwise.
|
151
|
-
* - "W" is "w" if ImageMagick can write that format, or "-" otherwise.
|
152
|
-
* - "A" is "+" if the format supports multi-image files, or "-" otherwise.
|
153
|
-
*
|
154
|
-
* Ruby usage:
|
155
|
-
* - @verbatim Magick.init_formats @endverbatim
|
156
164
|
*
|
157
|
-
*
|
158
|
-
*
|
159
|
-
*
|
165
|
+
* - "B" is "*" if the format has native blob support, or " " otherwise.
|
166
|
+
* - "R" is "r" if ImageMagick can read that format, or "-" otherwise.
|
167
|
+
* - "W" is "w" if ImageMagick can write that format, or "-" otherwise.
|
168
|
+
* - "A" is "+" if the format supports multi-image files, or "-" otherwise.
|
160
169
|
*
|
161
|
-
* @
|
162
|
-
* @return the formats hash.
|
163
|
-
* @see MagickInfo_to_format
|
170
|
+
* @return [Hash] the formats hash.
|
164
171
|
*/
|
165
172
|
VALUE
|
166
|
-
Magick_init_formats(VALUE class)
|
173
|
+
Magick_init_formats(VALUE class ATTRIBUTE_UNUSED)
|
167
174
|
{
|
168
175
|
const MagickInfo **magick_info;
|
169
|
-
|
170
|
-
|
171
|
-
ExceptionInfo exception;
|
176
|
+
size_t number_formats, x;
|
177
|
+
VALUE formats;
|
178
|
+
ExceptionInfo *exception;
|
172
179
|
|
173
|
-
class = class; // defeat "never referenced" message from icc
|
174
180
|
formats = rb_hash_new();
|
175
181
|
|
176
182
|
// IM 6.1.3 added an exception argument to GetMagickInfoList
|
177
|
-
|
178
|
-
magick_info = GetMagickInfoList("*", &number_formats,
|
179
|
-
CHECK_EXCEPTION()
|
180
|
-
|
183
|
+
exception = AcquireExceptionInfo();
|
184
|
+
magick_info = GetMagickInfoList("*", &number_formats, exception);
|
185
|
+
CHECK_EXCEPTION();
|
186
|
+
DestroyExceptionInfo(exception);
|
181
187
|
|
182
188
|
|
183
189
|
for (x = 0; x < number_formats; x++)
|
184
190
|
{
|
185
|
-
|
186
|
-
|
187
|
-
|
191
|
+
rb_hash_aset(formats,
|
192
|
+
rb_str_new2(magick_info[x]->name),
|
193
|
+
MagickInfo_to_format((const MagickInfo *)magick_info[x]));
|
188
194
|
}
|
195
|
+
magick_free((void *)magick_info);
|
196
|
+
RB_GC_GUARD(formats);
|
189
197
|
return formats;
|
190
198
|
}
|
191
199
|
|
@@ -194,19 +202,21 @@ Magick_init_formats(VALUE class)
|
|
194
202
|
* Get/set resource limits. If a limit is specified the old limit is set to the
|
195
203
|
* new value. Either way the current/old limit is returned.
|
196
204
|
*
|
197
|
-
*
|
198
|
-
*
|
199
|
-
*
|
205
|
+
* @overload limit_resource(resource)
|
206
|
+
* Get resource limits.
|
207
|
+
* @param resource [String, Symbol] the type of resource
|
200
208
|
*
|
201
|
-
* @
|
202
|
-
*
|
203
|
-
*
|
204
|
-
*
|
209
|
+
* @overload limit_resource(resource, limit)
|
210
|
+
* Set resource limits.
|
211
|
+
* @param resource [String, Symbol] the type of resource
|
212
|
+
* @param limit [Numeric] the new limit number
|
213
|
+
*
|
214
|
+
* @return [Numeric] the old limit.
|
205
215
|
*/
|
206
216
|
VALUE
|
207
217
|
Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
208
218
|
{
|
209
|
-
|
219
|
+
VALUE resource, limit;
|
210
220
|
ResourceType res = UndefinedResource;
|
211
221
|
char *str;
|
212
222
|
ID id;
|
@@ -241,6 +251,10 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
241
251
|
{
|
242
252
|
res = FileResource;
|
243
253
|
}
|
254
|
+
else if (id == rb_intern("time"))
|
255
|
+
{
|
256
|
+
res = TimeResource;
|
257
|
+
}
|
244
258
|
else
|
245
259
|
{
|
246
260
|
rb_raise(rb_eArgError, "unknown resource: `:%s'", rb_id2name(id));
|
@@ -248,7 +262,7 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
248
262
|
break;
|
249
263
|
|
250
264
|
default:
|
251
|
-
str =
|
265
|
+
str = StringValueCStr(resource);
|
252
266
|
if (*str == '\0')
|
253
267
|
{
|
254
268
|
return class;
|
@@ -273,6 +287,10 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
273
287
|
{
|
274
288
|
res = FileResource;
|
275
289
|
}
|
290
|
+
else if (rm_strcasecmp("time", str) == 0)
|
291
|
+
{
|
292
|
+
res = TimeResource;
|
293
|
+
}
|
276
294
|
else
|
277
295
|
{
|
278
296
|
rb_raise(rb_eArgError, "unknown resource: `%s'", str);
|
@@ -280,13 +298,17 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
280
298
|
break;
|
281
299
|
}
|
282
300
|
|
301
|
+
RB_GC_GUARD(resource);
|
302
|
+
|
283
303
|
cur_limit = GetMagickResourceLimit(res);
|
284
304
|
|
285
305
|
if (argc > 1)
|
286
306
|
{
|
287
|
-
|
307
|
+
SetMagickResourceLimit(res, (MagickSizeType)NUM2ULONG(limit));
|
288
308
|
}
|
289
309
|
|
310
|
+
RB_GC_GUARD(limit);
|
311
|
+
|
290
312
|
return ULONG2NUM(cur_limit);
|
291
313
|
}
|
292
314
|
|
@@ -296,22 +318,14 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
296
318
|
* threshold is exceeded, all subsequent pixels cache operations are to/from
|
297
319
|
* disk.
|
298
320
|
*
|
299
|
-
*
|
300
|
-
* - @verbatim Magick.set_cache_threshold(megabytes) @endverbatim
|
301
|
-
*
|
302
|
-
* Notes:
|
303
|
-
* - singleton method
|
304
|
-
*
|
305
|
-
* @param class the class on which the method is run.
|
306
|
-
* @param threshold the number of megabytes to set.
|
307
|
-
* @return the class.
|
321
|
+
* @param threshold [Numeric] the number of megabytes to set.
|
308
322
|
*/
|
309
323
|
VALUE
|
310
324
|
Magick_set_cache_threshold(VALUE class, VALUE threshold)
|
311
325
|
{
|
312
326
|
unsigned long thrshld = NUM2ULONG(threshold);
|
313
|
-
|
314
|
-
|
327
|
+
SetMagickResourceLimit(MemoryResource, (MagickSizeType)thrshld);
|
328
|
+
SetMagickResourceLimit(MapResource, (MagickSizeType)(2*thrshld));
|
315
329
|
return class;
|
316
330
|
}
|
317
331
|
|
@@ -319,32 +333,25 @@ Magick_set_cache_threshold(VALUE class, VALUE threshold)
|
|
319
333
|
/**
|
320
334
|
* Set the log event mask.
|
321
335
|
*
|
322
|
-
*
|
323
|
-
* - @verbatim Magick.set_log_event_mask(event) @endverbatim
|
324
|
-
* - @verbatim Magick.set_log_event_mask(event,...) @endverbatim
|
336
|
+
* The arguments are one of:
|
325
337
|
*
|
326
|
-
*
|
327
|
-
*
|
328
|
-
*
|
329
|
-
*
|
330
|
-
*
|
331
|
-
*
|
332
|
-
*
|
333
|
-
*
|
334
|
-
*
|
335
|
-
*
|
336
|
-
*
|
337
|
-
*
|
338
|
-
*
|
339
|
-
* - "user"
|
340
|
-
* - "x11"
|
341
|
-
* - Multiple events can be specified.
|
342
|
-
* - Event names may be capitalized.
|
338
|
+
* - "all"
|
339
|
+
* - "annotate"
|
340
|
+
* - "blob"
|
341
|
+
* - "cache"
|
342
|
+
* - "coder"
|
343
|
+
* - "configure"
|
344
|
+
* - "deprecate"
|
345
|
+
* - "locale"
|
346
|
+
* - "none"
|
347
|
+
* - "render"
|
348
|
+
* - "transform"
|
349
|
+
* - "user"
|
350
|
+
* - "x11"
|
343
351
|
*
|
344
|
-
*
|
345
|
-
*
|
346
|
-
* @param
|
347
|
-
* @return the class.
|
352
|
+
* Multiple events can be specified as the aruments. Event names may be capitalized.
|
353
|
+
*
|
354
|
+
* @param args [String] the mask of log event.
|
348
355
|
*/
|
349
356
|
VALUE
|
350
357
|
Magick_set_log_event_mask(int argc, VALUE *argv, VALUE class)
|
@@ -357,38 +364,33 @@ Magick_set_log_event_mask(int argc, VALUE *argv, VALUE class)
|
|
357
364
|
}
|
358
365
|
for (x = 0; x < argc; x++)
|
359
366
|
{
|
360
|
-
|
367
|
+
SetLogEventMask(StringValueCStr(argv[x]));
|
361
368
|
}
|
362
369
|
return class;
|
363
370
|
}
|
364
371
|
|
365
372
|
/**
|
366
373
|
* Set the format for log messages.
|
367
|
-
*
|
368
|
-
* Ruby usage:
|
369
|
-
* - @verbatim Magick.set_log_format(format) @endverbatim
|
370
374
|
*
|
371
|
-
*
|
372
|
-
*
|
373
|
-
*
|
374
|
-
*
|
375
|
-
*
|
376
|
-
*
|
377
|
-
*
|
378
|
-
*
|
379
|
-
*
|
380
|
-
*
|
381
|
-
*
|
382
|
-
*
|
375
|
+
* Format is a string containing one or more of:
|
376
|
+
*
|
377
|
+
* - %t - current time
|
378
|
+
* - %r - elapsed time
|
379
|
+
* - %u - user time
|
380
|
+
* - %p - pid
|
381
|
+
* - %m - module (source file name)
|
382
|
+
* - %f - function name
|
383
|
+
* - %l - line number
|
384
|
+
* - %d - event domain (one of the events listed above)
|
385
|
+
* - %e - event name
|
386
|
+
* - Plus other characters, including \\n, etc.
|
383
387
|
*
|
384
|
-
* @param
|
385
|
-
* @param format the format to set.
|
386
|
-
* @return the class.
|
388
|
+
* @param format [String] the format to set.
|
387
389
|
*/
|
388
390
|
VALUE
|
389
391
|
Magick_set_log_format(VALUE class, VALUE format)
|
390
392
|
{
|
391
|
-
SetLogFormat(
|
393
|
+
SetLogFormat(StringValueCStr(format));
|
392
394
|
return class;
|
393
395
|
}
|
394
396
|
|