rmagick 4.1.0.rc2 → 4.1.0
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 +4 -4
- data/.codeclimate.yml +63 -0
- data/.editorconfig +3 -0
- data/.github/workflows/ci.yml +148 -0
- data/.gitignore +3 -1
- data/.rspec +1 -0
- data/.rubocop.yml +24 -0
- data/.rubocop_todo.yml +80 -270
- data/.yardopts +5 -0
- data/CHANGELOG.md +63 -0
- data/CONTRIBUTING.md +14 -10
- data/README.md +292 -0
- data/Rakefile +16 -22
- data/before_install_linux.sh +22 -32
- data/before_install_osx.sh +56 -2
- data/ext/RMagick/extconf.rb +100 -94
- data/ext/RMagick/rmagick.c +77 -104
- data/ext/RMagick/rmagick.h +74 -70
- data/ext/RMagick/rmdraw.c +261 -444
- data/ext/RMagick/rmenum.c +96 -113
- data/ext/RMagick/rmfill.c +46 -77
- data/ext/RMagick/rmilist.c +136 -244
- data/ext/RMagick/rmimage.c +3395 -4166
- data/ext/RMagick/rminfo.c +531 -737
- data/ext/RMagick/rmkinfo.c +21 -87
- data/ext/RMagick/rmmain.c +405 -245
- data/ext/RMagick/rmmontage.c +60 -126
- data/ext/RMagick/rmpixel.c +401 -345
- data/ext/RMagick/rmstruct.c +62 -88
- data/ext/RMagick/rmutil.c +112 -218
- data/lib/rmagick/version.rb +1 -1
- data/lib/rmagick_internal.rb +128 -77
- data/lib/rvg/clippath.rb +2 -1
- data/lib/rvg/container.rb +10 -5
- data/lib/rvg/describable.rb +1 -1
- data/lib/rvg/embellishable.rb +5 -4
- data/lib/rvg/misc.rb +15 -12
- data/lib/rvg/paint.rb +2 -1
- data/lib/rvg/pathdata.rb +12 -11
- data/lib/rvg/rvg.rb +8 -4
- data/lib/rvg/stylable.rb +9 -7
- data/lib/rvg/text.rb +11 -6
- data/lib/rvg/transformable.rb +3 -2
- data/lib/rvg/units.rb +1 -1
- data/rmagick.gemspec +7 -6
- metadata +31 -421
- data/.appveyor.yml +0 -57
- data/.circleci/config.yml +0 -56
- data/.ruby-version +0 -1
- data/.simplecov +0 -27
- data/.travis.yml +0 -64
- data/Doxyfile +0 -1514
- data/README.textile +0 -259
- data/benchmarks/memory/README.md +0 -50
- data/benchmarks/memory/image_new.rb +0 -8
- data/benchmarks/memory/rmagick.gnuplot +0 -16
- data/doc/.cvsignore +0 -1
- 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 -3272
- data/doc/ex/InitialCoords.rb +0 -22
- data/doc/ex/NewCoordSys.rb +0 -30
- data/doc/ex/OrigCoordSys.rb +0 -16
- data/doc/ex/PreserveAspectRatio.rb +0 -204
- data/doc/ex/RotateScale.rb +0 -36
- data/doc/ex/Skew.rb +0 -38
- data/doc/ex/Use01.rb +0 -15
- data/doc/ex/Use02.rb +0 -20
- data/doc/ex/Use03.rb +0 -16
- data/doc/ex/ViewBox.rb +0 -31
- data/doc/ex/adaptive_threshold.rb +0 -9
- data/doc/ex/add_noise.rb +0 -16
- 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 -32
- data/doc/ex/arcs01.rb +0 -28
- data/doc/ex/arcs02.rb +0 -59
- data/doc/ex/average.rb +0 -15
- data/doc/ex/axes.rb +0 -64
- data/doc/ex/baseline_shift01.rb +0 -17
- data/doc/ex/bilevel_channel.rb +0 -8
- data/doc/ex/blur_image.rb +0 -12
- data/doc/ex/border.rb +0 -10
- data/doc/ex/bounding_box.rb +0 -42
- data/doc/ex/cbezier1.rb +0 -41
- data/doc/ex/cbezier2.rb +0 -41
- data/doc/ex/cbezier3.rb +0 -41
- data/doc/ex/cbezier4.rb +0 -42
- data/doc/ex/cbezier5.rb +0 -42
- data/doc/ex/cbezier6.rb +0 -53
- data/doc/ex/channel.rb +0 -25
- 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 -16
- data/doc/ex/clip_path.rb +0 -60
- data/doc/ex/coalesce.rb +0 -57
- 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 -47
- 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 -22
- data/doc/ex/composite.rb +0 -133
- data/doc/ex/composite_layers.rb +0 -52
- data/doc/ex/composite_tiled.rb +0 -21
- data/doc/ex/contrast.rb +0 -36
- data/doc/ex/crop.rb +0 -31
- data/doc/ex/crop_with_gravity.rb +0 -42
- data/doc/ex/cubic01.rb +0 -43
- data/doc/ex/cubic02.rb +0 -91
- data/doc/ex/cycle_colormap.rb +0 -21
- data/doc/ex/dissolve.rb +0 -12
- data/doc/ex/drawcomp.rb +0 -41
- 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 -21
- 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 -42
- data/doc/ex/fill_pattern.rb +0 -23
- 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 -32
- data/doc/ex/fonts.rb +0 -16
- data/doc/ex/frame.rb +0 -12
- data/doc/ex/gaussian_blur.rb +0 -11
- data/doc/ex/get_multiline_type_metrics.rb +0 -41
- data/doc/ex/get_pixels.rb +0 -45
- data/doc/ex/get_type_metrics.rb +0 -142
- data/doc/ex/gradientfill.rb +0 -27
- data/doc/ex/grav.rb +0 -45
- data/doc/ex/gravity.rb +0 -78
- data/doc/ex/group.rb +0 -26
- data/doc/ex/hatchfill.rb +0 -27
- data/doc/ex/image.rb +0 -44
- 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.png +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.png +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.png +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/image_with_profile.jpg +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 -41
- data/doc/ex/line01.rb +0 -21
- data/doc/ex/mask.rb +0 -35
- data/doc/ex/matte_fill_to_border.rb +0 -39
- data/doc/ex/matte_floodfill.rb +0 -32
- data/doc/ex/matte_replace.rb +0 -39
- 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 -25
- data/doc/ex/mosaic.rb +0 -37
- 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 -42
- 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 -63
- data/doc/ex/pattern1.rb +0 -25
- data/doc/ex/pattern2.rb +0 -26
- data/doc/ex/polaroid.rb +0 -26
- data/doc/ex/polygon.rb +0 -23
- data/doc/ex/polygon01.rb +0 -21
- data/doc/ex/polyline.rb +0 -22
- data/doc/ex/polyline01.rb +0 -21
- data/doc/ex/posterize.rb +0 -8
- data/doc/ex/preview.rb +0 -8
- data/doc/ex/qbezierpath.rb +0 -52
- data/doc/ex/quad01.rb +0 -34
- 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 -14
- data/doc/ex/rect02.rb +0 -20
- data/doc/ex/rectangle.rb +0 -34
- data/doc/ex/reduce_noise.rb +0 -28
- data/doc/ex/remap.rb +0 -11
- data/doc/ex/remap_images.rb +0 -19
- data/doc/ex/resize_to_fill.rb +0 -8
- data/doc/ex/resize_to_fit.rb +0 -8
- data/doc/ex/roll.rb +0 -9
- data/doc/ex/rotate.rb +0 -44
- data/doc/ex/rotate_f.rb +0 -14
- data/doc/ex/roundrect.rb +0 -33
- data/doc/ex/rubyname.rb +0 -30
- data/doc/ex/rvg_clippath.rb +0 -12
- data/doc/ex/rvg_linecap.rb +0 -42
- data/doc/ex/rvg_linejoin.rb +0 -40
- data/doc/ex/rvg_opacity.rb +0 -18
- data/doc/ex/rvg_pattern.rb +0 -26
- data/doc/ex/rvg_stroke_dasharray.rb +0 -11
- data/doc/ex/segment.rb +0 -11
- data/doc/ex/sepiatone.rb +0 -7
- data/doc/ex/shade.rb +0 -11
- data/doc/ex/shadow.rb +0 -30
- data/doc/ex/shave.rb +0 -15
- data/doc/ex/shear.rb +0 -10
- data/doc/ex/sketch.rb +0 -17
- data/doc/ex/skewx.rb +0 -51
- data/doc/ex/skewy.rb +0 -47
- data/doc/ex/smile.rb +0 -126
- data/doc/ex/solarize.rb +0 -11
- data/doc/ex/sparse_color.rb +0 -55
- data/doc/ex/splice.rb +0 -8
- data/doc/ex/spread.rb +0 -11
- data/doc/ex/stegano.rb +0 -54
- data/doc/ex/stroke_dasharray.rb +0 -42
- data/doc/ex/stroke_fill.rb +0 -10
- 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 -16
- data/doc/ex/text_align.rb +0 -36
- data/doc/ex/text_antialias.rb +0 -37
- data/doc/ex/text_styles.rb +0 -19
- 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 -24
- data/doc/ex/threshold.rb +0 -13
- data/doc/ex/to_blob.rb +0 -13
- 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 -24
- data/doc/ex/triangle01.rb +0 -15
- data/doc/ex/trim.rb +0 -23
- data/doc/ex/tspan01.rb +0 -17
- data/doc/ex/tspan02.rb +0 -17
- data/doc/ex/tspan03.rb +0 -19
- data/doc/ex/unsharp_mask.rb +0 -28
- data/doc/ex/viewex.rb +0 -33
- data/doc/ex/vignette.rb +0 -12
- data/doc/ex/watermark.rb +0 -27
- data/doc/ex/wave.rb +0 -9
- data/doc/ex/wet_floor.rb +0 -58
- data/doc/ex/writing_mode01.rb +0 -26
- 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 -570
- 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 -43
- data/examples/demo.rb +0 -323
- data/examples/describe.rb +0 -41
- data/examples/find_similar_region.rb +0 -34
- data/examples/histogram.rb +0 -312
- data/examples/identify.rb +0 -174
- data/examples/image_opacity.rb +0 -28
- data/examples/import_export.rb +0 -31
- data/examples/pattern_fill.rb +0 -37
- data/examples/rotating_text.rb +0 -45
- data/examples/spinner.rb +0 -49
- data/examples/thumbnail.rb +0 -64
- data/examples/vignette.rb +0 -78
- data/spec/rmagick/ImageList1_spec.rb +0 -24
- data/spec/rmagick/draw_spec.rb +0 -155
- data/spec/rmagick/image/blue_shift_spec.rb +0 -14
- data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
- data/spec/rmagick/image/composite_spec.rb +0 -72
- data/spec/rmagick/image/constitute_spec.rb +0 -13
- data/spec/rmagick/image/dispatch_spec.rb +0 -16
- data/spec/rmagick/image/dissolve_spec.rb +0 -54
- data/spec/rmagick/image/from_blob_spec.rb +0 -12
- data/spec/rmagick/image/ping_spec.rb +0 -12
- data/spec/rmagick/image/properties_spec.rb +0 -27
- data/spec/rmagick/image/read_spec.rb +0 -28
- data/spec/spec_helper.rb +0 -9
- data/spec/support/issue_200/app.rb +0 -8
- data/test/Draw.rb +0 -351
- data/test/Enum.rb +0 -228
- data/test/Fill.rb +0 -93
- data/test/Image1.rb +0 -606
- data/test/Image2.rb +0 -1408
- data/test/Image3.rb +0 -1086
- data/test/ImageList1.rb +0 -858
- data/test/ImageList2.rb +0 -375
- data/test/Image_attributes.rb +0 -635
- data/test/Import_Export.rb +0 -111
- data/test/Info.rb +0 -436
- data/test/KernelInfo.rb +0 -59
- data/test/Magick.rb +0 -311
- data/test/Pixel.rb +0 -259
- data/test/PolaroidOptions.rb +0 -23
- data/test/Preview.rb +0 -26
- data/test/Struct.rb +0 -45
- data/test/appearance/Montage.rb +0 -26
- data/test/appearance/appearance_assertion.rb +0 -13
- data/test/appearance/expected/montage_border_color.jpg +0 -0
- data/test/cmyk.icm +0 -0
- data/test/lib/internal/Draw.rb +0 -811
- data/test/lib/internal/Geometry.rb +0 -98
- data/test/lib/internal/Magick.rb +0 -40
- data/test/srgb.icm +0 -0
- data/test/test_all_basic.rb +0 -49
- data/test/tmpnam_test.rb +0 -50
data/ext/RMagick/rmagick.c
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
+
static VALUE rm_yield_handle_exception(VALUE, VALUE) ATTRIBUTE_NORETURN;
|
17
18
|
|
18
19
|
static VALUE
|
19
20
|
rm_yield_body(VALUE object)
|
@@ -26,22 +27,19 @@ rm_yield_handle_exception(VALUE allocated_area, VALUE exc)
|
|
26
27
|
{
|
27
28
|
magick_free((void *)allocated_area);
|
28
29
|
rb_exc_raise(exc);
|
29
|
-
return Qnil; /* not reachable */
|
30
30
|
}
|
31
31
|
|
32
32
|
/**
|
33
33
|
* If called with the optional block, iterates over the colors, otherwise
|
34
|
-
* returns an array of Magick::Color objects.
|
34
|
+
* returns an array of {Magick::Color} objects.
|
35
35
|
*
|
36
|
-
*
|
37
|
-
*
|
38
|
-
* - @verbatim Magick::colors { |colorinfo| } @endverbatim
|
36
|
+
* @overload colors
|
37
|
+
* @return [Array<Magick::Color>] the array of {Magick::Color}
|
39
38
|
*
|
40
|
-
*
|
41
|
-
*
|
39
|
+
* @overload colors
|
40
|
+
* @yield [colorinfo]
|
41
|
+
* @yieldparam colorinfo [Magick::Color] the color
|
42
42
|
*
|
43
|
-
* @param class the class on which the method is run.
|
44
|
-
* @return either the input class (if a block was given) or the array of colors.
|
45
43
|
*/
|
46
44
|
VALUE
|
47
45
|
Magick_colors(VALUE class)
|
@@ -54,8 +52,8 @@ Magick_colors(VALUE class)
|
|
54
52
|
exception = AcquireExceptionInfo();
|
55
53
|
|
56
54
|
color_info_list = GetColorInfoList("*", &number_colors, exception);
|
57
|
-
CHECK_EXCEPTION()
|
58
|
-
|
55
|
+
CHECK_EXCEPTION();
|
56
|
+
DestroyExceptionInfo(exception);
|
59
57
|
|
60
58
|
|
61
59
|
if (rb_block_given_p())
|
@@ -72,7 +70,7 @@ Magick_colors(VALUE class)
|
|
72
70
|
ary = rb_ary_new2((long) number_colors);
|
73
71
|
for (x = 0; x < number_colors; x++)
|
74
72
|
{
|
75
|
-
|
73
|
+
rb_ary_push(ary, Import_ColorInfo(color_info_list[x]));
|
76
74
|
}
|
77
75
|
|
78
76
|
magick_free((void *)color_info_list);
|
@@ -84,14 +82,15 @@ Magick_colors(VALUE class)
|
|
84
82
|
|
85
83
|
/**
|
86
84
|
* If called with the optional block, iterates over the fonts, otherwise returns
|
87
|
-
* an array of Magick::Font objects.
|
85
|
+
* an array of {Magick::Font} objects.
|
88
86
|
*
|
89
|
-
*
|
90
|
-
*
|
91
|
-
*
|
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
|
92
93
|
*
|
93
|
-
* @param class the class on which the method is run.
|
94
|
-
* @return either the input class (if a block was given) or the array of fonts.
|
95
94
|
*/
|
96
95
|
VALUE
|
97
96
|
Magick_fonts(VALUE class)
|
@@ -103,8 +102,8 @@ Magick_fonts(VALUE class)
|
|
103
102
|
|
104
103
|
exception = AcquireExceptionInfo();
|
105
104
|
type_info = GetTypeInfoList("*", &number_types, exception);
|
106
|
-
CHECK_EXCEPTION()
|
107
|
-
|
105
|
+
CHECK_EXCEPTION();
|
106
|
+
DestroyExceptionInfo(exception);
|
108
107
|
|
109
108
|
if (rb_block_given_p())
|
110
109
|
{
|
@@ -120,7 +119,7 @@ Magick_fonts(VALUE class)
|
|
120
119
|
ary = rb_ary_new2((long)number_types);
|
121
120
|
for (x = 0; x < number_types; x++)
|
122
121
|
{
|
123
|
-
|
122
|
+
rb_ary_push(ary, Import_TypeInfo((const TypeInfo *)type_info[x]));
|
124
123
|
}
|
125
124
|
magick_free((void *)type_info);
|
126
125
|
RB_GC_GUARD(ary);
|
@@ -138,7 +137,7 @@ Magick_fonts(VALUE class)
|
|
138
137
|
* - "R" is "r" if ImageMagick can read that format, or "-" otherwise.
|
139
138
|
* - "W" is "w" if ImageMagick can write that format, or "-" otherwise.
|
140
139
|
* - "A" is "+" if the format supports multi-image files, or "-" otherwise.
|
141
|
-
*
|
140
|
+
*
|
142
141
|
* No Ruby usage (internal function)
|
143
142
|
*
|
144
143
|
* @param magick_info a MagickInfo object.
|
@@ -162,21 +161,13 @@ MagickInfo_to_format(const MagickInfo *magick_info)
|
|
162
161
|
* Build the @@formats hash. The hash keys are image formats. The hash values
|
163
162
|
* specify the format "mode string", i.e. a description of what ImageMagick can
|
164
163
|
* do with that format. The mode string is in the form "BRWA", where
|
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.
|
169
|
-
*
|
170
|
-
* Ruby usage:
|
171
|
-
* - @verbatim Magick.init_formats @endverbatim
|
172
164
|
*
|
173
|
-
*
|
174
|
-
*
|
175
|
-
*
|
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.
|
176
169
|
*
|
177
|
-
* @
|
178
|
-
* @return the formats hash.
|
179
|
-
* @see MagickInfo_to_format
|
170
|
+
* @return [Hash] the formats hash.
|
180
171
|
*/
|
181
172
|
VALUE
|
182
173
|
Magick_init_formats(VALUE class ATTRIBUTE_UNUSED)
|
@@ -191,15 +182,15 @@ Magick_init_formats(VALUE class ATTRIBUTE_UNUSED)
|
|
191
182
|
// IM 6.1.3 added an exception argument to GetMagickInfoList
|
192
183
|
exception = AcquireExceptionInfo();
|
193
184
|
magick_info = GetMagickInfoList("*", &number_formats, exception);
|
194
|
-
CHECK_EXCEPTION()
|
195
|
-
|
185
|
+
CHECK_EXCEPTION();
|
186
|
+
DestroyExceptionInfo(exception);
|
196
187
|
|
197
188
|
|
198
189
|
for (x = 0; x < number_formats; x++)
|
199
190
|
{
|
200
|
-
|
201
|
-
|
202
|
-
|
191
|
+
rb_hash_aset(formats,
|
192
|
+
rb_str_new2(magick_info[x]->name),
|
193
|
+
MagickInfo_to_format((const MagickInfo *)magick_info[x]));
|
203
194
|
}
|
204
195
|
magick_free((void *)magick_info);
|
205
196
|
RB_GC_GUARD(formats);
|
@@ -211,14 +202,16 @@ Magick_init_formats(VALUE class ATTRIBUTE_UNUSED)
|
|
211
202
|
* Get/set resource limits. If a limit is specified the old limit is set to the
|
212
203
|
* new value. Either way the current/old limit is returned.
|
213
204
|
*
|
214
|
-
*
|
215
|
-
*
|
216
|
-
*
|
205
|
+
* @overload limit_resource(resource)
|
206
|
+
* Get resource limits.
|
207
|
+
* @param resource [String, Symbol] the type of resource
|
217
208
|
*
|
218
|
-
* @
|
219
|
-
*
|
220
|
-
*
|
221
|
-
*
|
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.
|
222
215
|
*/
|
223
216
|
VALUE
|
224
217
|
Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
@@ -269,7 +262,7 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
269
262
|
break;
|
270
263
|
|
271
264
|
default:
|
272
|
-
str =
|
265
|
+
str = StringValueCStr(resource);
|
273
266
|
if (*str == '\0')
|
274
267
|
{
|
275
268
|
return class;
|
@@ -311,7 +304,7 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
311
304
|
|
312
305
|
if (argc > 1)
|
313
306
|
{
|
314
|
-
|
307
|
+
SetMagickResourceLimit(res, (MagickSizeType)NUM2ULONG(limit));
|
315
308
|
}
|
316
309
|
|
317
310
|
RB_GC_GUARD(limit);
|
@@ -325,22 +318,14 @@ Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
|
325
318
|
* threshold is exceeded, all subsequent pixels cache operations are to/from
|
326
319
|
* disk.
|
327
320
|
*
|
328
|
-
*
|
329
|
-
* - @verbatim Magick.set_cache_threshold(megabytes) @endverbatim
|
330
|
-
*
|
331
|
-
* Notes:
|
332
|
-
* - singleton method
|
333
|
-
*
|
334
|
-
* @param class the class on which the method is run.
|
335
|
-
* @param threshold the number of megabytes to set.
|
336
|
-
* @return the class.
|
321
|
+
* @param threshold [Numeric] the number of megabytes to set.
|
337
322
|
*/
|
338
323
|
VALUE
|
339
324
|
Magick_set_cache_threshold(VALUE class, VALUE threshold)
|
340
325
|
{
|
341
326
|
unsigned long thrshld = NUM2ULONG(threshold);
|
342
|
-
|
343
|
-
|
327
|
+
SetMagickResourceLimit(MemoryResource, (MagickSizeType)thrshld);
|
328
|
+
SetMagickResourceLimit(MapResource, (MagickSizeType)(2*thrshld));
|
344
329
|
return class;
|
345
330
|
}
|
346
331
|
|
@@ -348,32 +333,25 @@ Magick_set_cache_threshold(VALUE class, VALUE threshold)
|
|
348
333
|
/**
|
349
334
|
* Set the log event mask.
|
350
335
|
*
|
351
|
-
*
|
352
|
-
* - @verbatim Magick.set_log_event_mask(event) @endverbatim
|
353
|
-
* - @verbatim Magick.set_log_event_mask(event,...) @endverbatim
|
336
|
+
* The arguments are one of:
|
354
337
|
*
|
355
|
-
*
|
356
|
-
*
|
357
|
-
*
|
358
|
-
*
|
359
|
-
*
|
360
|
-
*
|
361
|
-
*
|
362
|
-
*
|
363
|
-
*
|
364
|
-
*
|
365
|
-
*
|
366
|
-
*
|
367
|
-
*
|
368
|
-
* - "user"
|
369
|
-
* - "x11"
|
370
|
-
* - Multiple events can be specified.
|
371
|
-
* - 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"
|
372
351
|
*
|
373
|
-
*
|
374
|
-
*
|
375
|
-
* @param
|
376
|
-
* @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.
|
377
355
|
*/
|
378
356
|
VALUE
|
379
357
|
Magick_set_log_event_mask(int argc, VALUE *argv, VALUE class)
|
@@ -386,38 +364,33 @@ Magick_set_log_event_mask(int argc, VALUE *argv, VALUE class)
|
|
386
364
|
}
|
387
365
|
for (x = 0; x < argc; x++)
|
388
366
|
{
|
389
|
-
|
367
|
+
SetLogEventMask(StringValueCStr(argv[x]));
|
390
368
|
}
|
391
369
|
return class;
|
392
370
|
}
|
393
371
|
|
394
372
|
/**
|
395
373
|
* Set the format for log messages.
|
396
|
-
*
|
397
|
-
* Ruby usage:
|
398
|
-
* - @verbatim Magick.set_log_format(format) @endverbatim
|
399
374
|
*
|
400
|
-
*
|
401
|
-
*
|
402
|
-
*
|
403
|
-
*
|
404
|
-
*
|
405
|
-
*
|
406
|
-
*
|
407
|
-
*
|
408
|
-
*
|
409
|
-
*
|
410
|
-
*
|
411
|
-
*
|
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.
|
412
387
|
*
|
413
|
-
* @param
|
414
|
-
* @param format the format to set.
|
415
|
-
* @return the class.
|
388
|
+
* @param format [String] the format to set.
|
416
389
|
*/
|
417
390
|
VALUE
|
418
391
|
Magick_set_log_format(VALUE class, VALUE format)
|
419
392
|
{
|
420
|
-
SetLogFormat(
|
393
|
+
SetLogFormat(StringValueCStr(format));
|
421
394
|
return class;
|
422
395
|
}
|
423
396
|
|
data/ext/RMagick/rmagick.h
CHANGED
@@ -25,6 +25,33 @@
|
|
25
25
|
#include "ruby.h"
|
26
26
|
#include "ruby/io.h"
|
27
27
|
|
28
|
+
#if defined(__MINGW32__)
|
29
|
+
// Ruby defines wrong format specifiers for MinGW. So this defines original macro in here.
|
30
|
+
#if SIZEOF_SIZE_T == SIZEOF_LONG
|
31
|
+
#define RMIuSIZE "lu"
|
32
|
+
#define RMIdSIZE "ld"
|
33
|
+
#define RMIsVALUE "li\v"
|
34
|
+
#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG
|
35
|
+
#define RMIuSIZE "I64u"
|
36
|
+
#define RMIdSIZE "I64d"
|
37
|
+
#define RMIsVALUE "I64i\v"
|
38
|
+
#endif
|
39
|
+
#else
|
40
|
+
// Use constants defined in Ruby
|
41
|
+
#define RMIuSIZE PRIuSIZE
|
42
|
+
#define RMIdSIZE PRIdSIZE
|
43
|
+
#define RMIsVALUE PRIsVALUE
|
44
|
+
#endif
|
45
|
+
|
46
|
+
#if defined(__GNUC__)
|
47
|
+
#pragma GCC diagnostic push
|
48
|
+
#pragma GCC diagnostic ignored "-Wdeclaration-after-statement"
|
49
|
+
#pragma GCC diagnostic ignored "-Wunknown-pragmas"
|
50
|
+
|
51
|
+
#if __GNUC__ > 6
|
52
|
+
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
|
53
|
+
#endif
|
54
|
+
#endif
|
28
55
|
|
29
56
|
// Undef Ruby's versions of these symbols
|
30
57
|
#undef PACKAGE_VERSION
|
@@ -54,9 +81,11 @@
|
|
54
81
|
#define Q(q) Q2(q)
|
55
82
|
|
56
83
|
#ifdef __GNUC__
|
57
|
-
#define ATTRIBUTE_UNUSED
|
84
|
+
#define ATTRIBUTE_UNUSED __attribute__((unused))
|
85
|
+
#define ATTRIBUTE_NORETURN __attribute__((__noreturn__))
|
58
86
|
#else
|
59
87
|
#define ATTRIBUTE_UNUSED
|
88
|
+
#define ATTRIBUTE_NORETURN
|
60
89
|
#endif
|
61
90
|
|
62
91
|
//! Trace new image creation in bang methods
|
@@ -90,11 +119,11 @@
|
|
90
119
|
#define PIXEL_INTENSITY(q) ((Quantum)(0.299*(q)->red + 0.587*(q)->green + 0.114*(q)->blue + 0.5))
|
91
120
|
|
92
121
|
//! find maximum of longs
|
93
|
-
#define LMAX(a,b) ((((long)(a))>((long)(b)))?((long)(a)):((long)(b)))
|
122
|
+
#define LMAX(a, b) ((((long)(a))>((long)(b)))?((long)(a)):((long)(b)))
|
94
123
|
//! find maximum of floats
|
95
|
-
#define FMAX(a,b) ((((double)(a))>((double)(b)))?((double)(a)):((double)(b)))
|
124
|
+
#define FMAX(a, b) ((((double)(a))>((double)(b)))?((double)(a)):((double)(b)))
|
96
125
|
//! find minimum of floats
|
97
|
-
#define FMIN(a,b) ((((double)(a))<=((double)(b)))?((double)(a)):((double)(b)))
|
126
|
+
#define FMIN(a, b) ((((double)(a))<=((double)(b)))?((double)(a)):((double)(b)))
|
98
127
|
|
99
128
|
#define RMAGICK_PI 3.14159265358979 /**< pi */
|
100
129
|
|
@@ -111,7 +140,10 @@
|
|
111
140
|
*/
|
112
141
|
#define OBJ_TO_MAGICK_STRING(f, obj) \
|
113
142
|
if ((obj) != Qnil)\
|
114
|
-
|
143
|
+
{\
|
144
|
+
VALUE str = rb_String(obj);\
|
145
|
+
magick_clone_string(&f, StringValueCStr(str));\
|
146
|
+
}\
|
115
147
|
else\
|
116
148
|
f = NULL;
|
117
149
|
|
@@ -134,7 +166,16 @@ typedef ImageInfo Info; /**< Make type name match class name */
|
|
134
166
|
typedef PixelInfo MagickPixel;
|
135
167
|
typedef PixelInfo PixelColor;
|
136
168
|
#else
|
137
|
-
typedef
|
169
|
+
typedef struct _RMagickPixelPacket
|
170
|
+
{
|
171
|
+
Quantum
|
172
|
+
red,
|
173
|
+
green,
|
174
|
+
blue,
|
175
|
+
opacity,
|
176
|
+
black;
|
177
|
+
} RMagickPixelPacket;
|
178
|
+
typedef RMagickPixelPacket Pixel;
|
138
179
|
typedef MagickPixelPacket MagickPixel;
|
139
180
|
typedef PixelPacket PixelColor;
|
140
181
|
typedef AlphaChannelType AlphaChannelOption;
|
@@ -361,61 +402,34 @@ EXTERN ID rm_ID_changed; /**< "changed" */
|
|
361
402
|
EXTERN ID rm_ID_cur_image; /**< "cur_image" */
|
362
403
|
EXTERN ID rm_ID_dup; /**< "dup" */
|
363
404
|
EXTERN ID rm_ID_fill; /**< "fill" */
|
364
|
-
EXTERN ID rm_ID_flag; /**< "flag" */
|
365
|
-
EXTERN ID rm_ID_from_s; /**< "from_s" */
|
366
405
|
EXTERN ID rm_ID_Geometry; /**< "Geometry" */
|
367
|
-
EXTERN ID rm_ID_GeometryValue; /**< "GeometryValue" */
|
368
|
-
EXTERN ID rm_ID_has_key_q; /**< "has_key?" */
|
369
406
|
EXTERN ID rm_ID_height; /**< "height" */
|
370
407
|
EXTERN ID rm_ID_initialize_copy; /**< "initialize_copy" */
|
371
|
-
EXTERN ID rm_ID_length; /**< "length" */
|
372
408
|
EXTERN ID rm_ID_notify_observers; /**< "notify_observers" */
|
373
409
|
EXTERN ID rm_ID_new; /**< "new" */
|
374
410
|
EXTERN ID rm_ID_push; /**< "push" */
|
375
|
-
EXTERN ID rm_ID_spaceship; /**< "<=>" */
|
376
|
-
EXTERN ID rm_ID_to_i; /**< "to_i" */
|
377
|
-
EXTERN ID rm_ID_to_s; /**< "to_s" */
|
378
411
|
EXTERN ID rm_ID_values; /**< "values" */
|
379
412
|
EXTERN ID rm_ID_width; /**< "width" */
|
380
|
-
EXTERN ID rm_ID_x; /**< "x" */
|
381
|
-
EXTERN ID rm_ID_y; /**< "y" */
|
382
413
|
|
383
414
|
#if !defined(min)
|
384
|
-
#define min(a,b) ((a)<(b)?(a):(b)) /**< min of two values */
|
415
|
+
#define min(a, b) ((a)<(b)?(a):(b)) /**< min of two values */
|
385
416
|
#endif
|
386
417
|
#if !defined(max)
|
387
|
-
#define max(a,b) ((a)>(b)?(a):(b)) /**< max of two values */
|
418
|
+
#define max(a, b) ((a)>(b)?(a):(b)) /**< max of two values */
|
388
419
|
#endif
|
389
420
|
|
390
421
|
/**
|
391
422
|
Handle warnings & errors
|
392
423
|
*/
|
393
424
|
//! Handle warnings & errors
|
394
|
-
#define CHECK_EXCEPTION() rm_check_exception(exception, NULL, RetainOnError)
|
425
|
+
#define CHECK_EXCEPTION() rm_check_exception(exception, NULL, RetainOnError)
|
395
426
|
|
396
427
|
|
397
|
-
/*
|
398
|
-
Call rb_define_method for an attribute accessor method
|
399
|
-
*/
|
400
|
-
//! attribute reader
|
401
|
-
#define DCL_ATTR_READER(class, attr) \
|
402
|
-
rb_define_method(Class_##class, #attr, class##_##attr, 0);
|
403
|
-
//! attribute writer
|
404
|
-
#define DCL_ATTR_WRITER(class, attr) \
|
405
|
-
rb_define_method(Class_##class, #attr "=", class##_##attr##_eq, 1);
|
406
|
-
//! attribute accessor
|
407
|
-
#define DCL_ATTR_ACCESSOR(class, attr) \
|
408
|
-
DCL_ATTR_READER(class, attr) \
|
409
|
-
DCL_ATTR_WRITER(class, attr)
|
410
|
-
//! Borrow another class' attribute writer definition
|
411
|
-
#define SHARE_ATTR_WRITER(to, from, attr) \
|
412
|
-
rb_define_method(Class_##to, #attr "=", from##_##attr##_eq, 1);
|
413
|
-
|
414
428
|
/*
|
415
429
|
Define simple attribute accessor methods (boolean, int, string, and double types)
|
416
430
|
*/
|
417
|
-
#define
|
418
|
-
#define
|
431
|
+
#define C_boolean_to_R_boolean(attr) (attr) ? Qtrue : Qfalse /**< C boolean -> Ruby boolean */
|
432
|
+
#define R_boolean_to_C_boolean(attr) RTEST(attr) /**< C boolean <- Ruby boolean */
|
419
433
|
#define C_int_to_R_int(attr) INT2FIX(attr) /**< C int -> Ruby int */
|
420
434
|
#define R_int_to_C_int(attr) NUM2INT(attr) /**< C int <- Ruby int */
|
421
435
|
#define C_long_to_R_long(attr) INT2NUM(attr) /**< C long -> Ruby long */
|
@@ -427,34 +441,31 @@ EXTERN ID rm_ID_y; /**< "y" */
|
|
427
441
|
#define R_dbl_to_C_dbl(attr) NUM2DBL(attr) /**< C double <- Ruby double */
|
428
442
|
|
429
443
|
//! define attribute reader
|
430
|
-
#define
|
431
|
-
VALUE class##_##attr(VALUE self)\
|
444
|
+
#define IMPLEMENT_ATTR_READER(class, attr, type) \
|
432
445
|
{\
|
433
446
|
class *ptr;\
|
434
447
|
if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
|
435
|
-
|
448
|
+
rm_check_destroyed(self); \
|
436
449
|
}\
|
437
450
|
Data_Get_Struct(self, class, ptr);\
|
438
451
|
return C_##type##_to_R_##type(ptr->attr);\
|
439
452
|
}
|
440
453
|
|
441
454
|
//! define attribute reader when attribute name is different from the field name
|
442
|
-
#define
|
443
|
-
VALUE class##_##attr(VALUE self)\
|
455
|
+
#define IMPLEMENT_ATTR_READERF(class, attr, field, type) \
|
444
456
|
{\
|
445
457
|
class *ptr;\
|
446
|
-
|
458
|
+
rm_check_destroyed(self); \
|
447
459
|
Data_Get_Struct(self, class, ptr);\
|
448
460
|
return C_##type##_to_R_##type(ptr->field);\
|
449
461
|
}
|
450
462
|
|
451
463
|
//! define attribute writer
|
452
|
-
#define
|
453
|
-
VALUE class##_##attr##_eq(VALUE self, VALUE val)\
|
464
|
+
#define IMPLEMENT_ATTR_WRITER(class, attr, type) \
|
454
465
|
{\
|
455
466
|
class *ptr;\
|
456
467
|
if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
|
457
|
-
|
468
|
+
rm_check_destroyed(self); \
|
458
469
|
}\
|
459
470
|
rb_check_frozen(self);\
|
460
471
|
Data_Get_Struct(self, class, ptr);\
|
@@ -463,12 +474,11 @@ EXTERN ID rm_ID_y; /**< "y" */
|
|
463
474
|
}
|
464
475
|
|
465
476
|
//! define attribute writer when attribute name is different from the field name
|
466
|
-
#define
|
467
|
-
VALUE class##_##attr##_eq(VALUE self, VALUE val)\
|
477
|
+
#define IMPLEMENT_ATTR_WRITERF(class, attr, field, type) \
|
468
478
|
{\
|
469
479
|
class *ptr;\
|
470
480
|
if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
|
471
|
-
|
481
|
+
rm_check_destroyed(self); \
|
472
482
|
}\
|
473
483
|
rb_check_frozen(self);\
|
474
484
|
Data_Get_Struct(self, class, ptr);\
|
@@ -476,15 +486,6 @@ EXTERN ID rm_ID_y; /**< "y" */
|
|
476
486
|
return self;\
|
477
487
|
}
|
478
488
|
|
479
|
-
//! define attribute accessor
|
480
|
-
#define DEF_ATTR_ACCESSOR(class, attr, type)\
|
481
|
-
DEF_ATTR_READER(class, attr, type)\
|
482
|
-
DEF_ATTR_WRITER(class, attr, type)
|
483
|
-
|
484
|
-
//! define attribute accessor when attribute name is different from the field name
|
485
|
-
#define DEF_ATTR_ACCESSORF(class, attr, field, type)\
|
486
|
-
DEF_ATTR_READERF(class, attr, field, type)\
|
487
|
-
DEF_ATTR_WRITERF(class, attr, field, type)
|
488
489
|
|
489
490
|
/*
|
490
491
|
* Declare attribute accessors
|
@@ -516,8 +517,8 @@ EXTERN ID rm_ID_y; /**< "y" */
|
|
516
517
|
do {\
|
517
518
|
MagickEnum *magick_enum;\
|
518
519
|
if (CLASS_OF(value) != Class_##type)\
|
519
|
-
rb_raise(rb_eTypeError, "wrong enumeration type - expected %s, got %s"\
|
520
|
-
|
520
|
+
rb_raise(rb_eTypeError, "wrong enumeration type - expected %s, got %s", \
|
521
|
+
rb_class2name(Class_##type), rb_class2name(CLASS_OF(value)));\
|
521
522
|
Data_Get_Struct(value, MagickEnum, magick_enum);\
|
522
523
|
e = (type)(magick_enum->val);\
|
523
524
|
} while(0)
|
@@ -779,7 +780,7 @@ ATTR_ACCESSOR(Image, x_resolution)
|
|
779
780
|
ATTR_ACCESSOR(Image, y_resolution)
|
780
781
|
|
781
782
|
extern ChannelType extract_channels(int *, VALUE *);
|
782
|
-
extern void raise_ChannelType_error(VALUE);
|
783
|
+
extern void raise_ChannelType_error(VALUE) ATTRIBUTE_NORETURN;
|
783
784
|
extern void add_format_prefix(Info *, VALUE);
|
784
785
|
|
785
786
|
extern VALUE Image_alloc(VALUE);
|
@@ -821,7 +822,11 @@ extern VALUE Image_compare_channel(int, VALUE *, VALUE);
|
|
821
822
|
extern VALUE Image_channel_depth(int, VALUE *, VALUE);
|
822
823
|
extern VALUE Image_channel_extrema(int, VALUE *, VALUE);
|
823
824
|
extern VALUE Image_channel_mean(int, VALUE *, VALUE);
|
825
|
+
#if defined(HAVE_GETIMAGECHANNELENTROPY) || defined(IMAGEMAGICK_7)
|
824
826
|
extern VALUE Image_channel_entropy(int, VALUE *, VALUE);
|
827
|
+
#else
|
828
|
+
extern VALUE Image_channel_entropy(int, VALUE *, VALUE) ATTRIBUTE_NORETURN;
|
829
|
+
#endif
|
825
830
|
extern VALUE Image_charcoal(int, VALUE *, VALUE);
|
826
831
|
extern VALUE Image_chop(VALUE, VALUE, VALUE, VALUE, VALUE);
|
827
832
|
extern VALUE Image_clone(VALUE);
|
@@ -1098,6 +1103,7 @@ extern VALUE ChromaticityInfo_to_s(VALUE);
|
|
1098
1103
|
extern VALUE ChromaticityInfo_new(ChromaticityInfo *);
|
1099
1104
|
extern void Color_to_PixelColor(PixelColor *, VALUE);
|
1100
1105
|
extern void Color_to_MagickPixel(Image *, MagickPixel *, VALUE);
|
1106
|
+
extern void Color_to_Pixel(Pixel *, VALUE);
|
1101
1107
|
extern VALUE Color_to_s(VALUE);
|
1102
1108
|
extern VALUE Import_ColorInfo(const ColorInfo *);
|
1103
1109
|
extern VALUE Font_to_s(VALUE);
|
@@ -1132,7 +1138,6 @@ extern VALUE ImageMagickError_initialize(int, VALUE *, VALUE);
|
|
1132
1138
|
extern void *magick_malloc(const size_t);
|
1133
1139
|
extern void *magick_safe_malloc(const size_t, const size_t);
|
1134
1140
|
extern void magick_free(void *);
|
1135
|
-
extern void *magick_realloc(void *, const size_t);
|
1136
1141
|
extern void *magick_safe_realloc(void *, const size_t, const size_t);
|
1137
1142
|
extern void magick_clone_string(char **, const char *);
|
1138
1143
|
extern Image *rm_acquire_image(ImageInfo *);
|
@@ -1141,26 +1146,25 @@ extern VALUE rm_pixelcolor_to_color_name(Image *, PixelColor *);
|
|
1141
1146
|
extern VALUE rm_pixelcolor_to_color_name_info(Info *, PixelColor *);
|
1142
1147
|
extern void rm_init_magickpixel(const Image *, MagickPixel *);
|
1143
1148
|
extern void rm_set_magickpixel(MagickPixel *, const char *);
|
1144
|
-
extern VALUE rm_no_freeze(VALUE);
|
1149
|
+
extern VALUE rm_no_freeze(VALUE) ATTRIBUTE_NORETURN;
|
1145
1150
|
extern int rm_strcasecmp(const char *, const char *);
|
1146
1151
|
extern int rm_strncasecmp(const char *, const char *, size_t);
|
1152
|
+
extern size_t rm_strnlen_s(const char *, size_t);
|
1147
1153
|
extern void rm_check_ary_len(VALUE, long);
|
1148
1154
|
extern VALUE rm_check_ary_type(VALUE ary);
|
1149
1155
|
extern Image *rm_check_destroyed(VALUE);
|
1150
1156
|
extern Image *rm_check_frozen(VALUE);
|
1151
|
-
extern VALUE rm_to_s(VALUE);
|
1152
1157
|
extern char *rm_str2cstr(VALUE, long *);
|
1153
1158
|
extern int rm_check_num2dbl(VALUE);
|
1154
1159
|
extern double rm_fuzz_to_dbl(VALUE);
|
1155
1160
|
extern Quantum rm_app2quantum(VALUE);
|
1156
|
-
extern double rm_percentage(VALUE,double);
|
1161
|
+
extern double rm_percentage(VALUE, double);
|
1157
1162
|
extern double rm_str_to_pct(VALUE);
|
1158
1163
|
extern VALUE rm_define_enum_type(const char *);
|
1159
|
-
extern void rm_write_temp_image(Image *, char
|
1164
|
+
extern void rm_write_temp_image(Image *, char *, size_t);
|
1160
1165
|
extern void rm_delete_temp_image(char *);
|
1161
|
-
extern void rm_not_implemented(void);
|
1166
|
+
extern void rm_not_implemented(void) ATTRIBUTE_NORETURN;
|
1162
1167
|
extern void rm_attr_write(VALUE, VALUE);
|
1163
|
-
extern void rm_get_geometry(VALUE, long *, long *, unsigned long *, unsigned long *, int *);
|
1164
1168
|
extern const char *rm_get_property(const Image *, const char *);
|
1165
1169
|
extern MagickBooleanType rm_set_property(Image *, const char *, const char *);
|
1166
1170
|
extern void rm_set_user_artifact(Image *, Info *);
|
@@ -1188,7 +1192,7 @@ extern MagickBooleanType rm_progress_monitor(const char *, const MagickOffsetTyp
|
|
1188
1192
|
extern VALUE rm_exif_by_entry(Image *);
|
1189
1193
|
extern VALUE rm_exif_by_number(Image *);
|
1190
1194
|
extern void rm_get_optional_arguments(VALUE);
|
1191
|
-
extern void rm_fatal_error_handler(const ExceptionType, const char *, const char *);
|
1195
|
+
extern void rm_fatal_error_handler(const ExceptionType, const char *, const char *) ATTRIBUTE_NORETURN;
|
1192
1196
|
extern void rm_error_handler(const ExceptionType, const char *, const char *);
|
1193
1197
|
extern void rm_warning_handler(const ExceptionType, const char *, const char *);
|
1194
1198
|
extern MagickBooleanType rm_should_raise_exception(ExceptionInfo *, const ExceptionRetention);
|