rmagick 3.2.0 → 4.3.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/.devcontainer/Dockerfile +14 -0
- data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
- data/.devcontainer/devcontainer.json +11 -0
- data/.devcontainer/setup-repo.sh +10 -0
- data/.devcontainer/setup-user.sh +45 -0
- data/.editorconfig +3 -0
- data/.github/ISSUE_TEMPLATE.md +17 -0
- data/.github/workflows/ci.yml +79 -0
- data/.gitignore +3 -1
- data/.rspec +1 -0
- data/.rubocop.yml +24 -0
- data/.rubocop_todo.yml +151 -297
- data/.yardopts +5 -0
- data/CHANGELOG.md +233 -0
- data/CODE_OF_CONDUCT.md +122 -7
- data/CONTRIBUTING.md +14 -10
- data/README.md +326 -0
- data/Rakefile +16 -22
- data/before_install_linux.sh +22 -28
- data/before_install_osx.sh +57 -2
- data/ext/RMagick/extconf.rb +149 -105
- data/ext/RMagick/rmagick.c +77 -104
- data/ext/RMagick/rmagick.h +121 -103
- data/ext/RMagick/rmdraw.c +364 -436
- data/ext/RMagick/rmenum.c +106 -114
- data/ext/RMagick/rmfill.c +149 -70
- data/ext/RMagick/rmilist.c +225 -367
- data/ext/RMagick/rmimage.c +4751 -4405
- data/ext/RMagick/rminfo.c +574 -787
- data/ext/RMagick/rmkinfo.c +51 -121
- data/ext/RMagick/rmmain.c +454 -286
- data/ext/RMagick/rmmontage.c +64 -130
- data/ext/RMagick/rmpixel.c +488 -437
- data/ext/RMagick/rmstruct.c +83 -96
- data/ext/RMagick/rmutil.c +302 -214
- data/lib/rmagick/version.rb +1 -1
- data/lib/rmagick_internal.rb +138 -93
- 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 +12 -8
- 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 +10 -11
- metadata +52 -423
- data/.appveyor.yml +0 -45
- data/.circleci/config.yml +0 -56
- data/.ruby-version +0 -1
- data/.simplecov +0 -27
- data/.travis.yml +0 -62
- 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 -42
- 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/lib/obsolete.rb +0 -66
- 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/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 -10
- 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 -627
- data/test/Image2.rb +0 -1426
- data/test/Image3.rb +0 -1091
- data/test/ImageList1.rb +0 -858
- data/test/ImageList2.rb +0 -406
- data/test/Image_attributes.rb +0 -666
- data/test/Import_Export.rb +0 -115
- data/test/Info.rb +0 -444
- data/test/KernelInfo.rb +0 -67
- data/test/Magick.rb +0 -311
- data/test/Pixel.rb +0 -285
- 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/Obsolete.rb +0 -30
- data/test/lib/internal/Draw.rb +0 -823
- 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/rmenum.c
CHANGED
@@ -76,55 +76,54 @@ rm_enum_new(VALUE class, VALUE sym, VALUE val)
|
|
76
76
|
static const char *
|
77
77
|
rm_enum_to_cstr(VALUE enum_type)
|
78
78
|
{
|
79
|
-
|
79
|
+
MagickEnum *magick_enum;
|
80
80
|
|
81
|
-
|
82
|
-
|
81
|
+
Data_Get_Struct(enum_type, MagickEnum, magick_enum);
|
82
|
+
return rb_id2name(magick_enum->id);
|
83
83
|
}
|
84
84
|
|
85
85
|
/**
|
86
|
-
* Enum
|
86
|
+
* Free Enum or Enum subclass object
|
87
87
|
*
|
88
88
|
* No Ruby usage (internal function)
|
89
89
|
*
|
90
|
-
* @param
|
91
|
-
|
90
|
+
* @param magick_enum the enum
|
91
|
+
*/
|
92
|
+
static void rm_enum_free(void *magick_enum)
|
93
|
+
{
|
94
|
+
xfree(magick_enum);
|
95
|
+
}
|
96
|
+
/**
|
97
|
+
* Enum class alloc function.
|
98
|
+
*
|
99
|
+
* @return [Magick::Enum] a new enumerator
|
92
100
|
*/
|
93
101
|
VALUE
|
94
102
|
Enum_alloc(VALUE class)
|
95
103
|
{
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
enumr = Data_Make_Struct(class, MagickEnum, NULL, NULL, magick_enum);
|
100
|
-
rb_obj_freeze(enumr);
|
104
|
+
MagickEnum *magick_enum;
|
105
|
+
VALUE enumr;
|
101
106
|
|
102
|
-
|
107
|
+
enumr = Data_Make_Struct(class, MagickEnum, NULL, rm_enum_free, magick_enum);
|
108
|
+
rb_obj_freeze(enumr);
|
103
109
|
|
104
|
-
|
110
|
+
return enumr;
|
105
111
|
}
|
106
112
|
|
107
113
|
|
108
114
|
/**
|
109
115
|
* "Case equal" operator for Enum.
|
110
116
|
*
|
111
|
-
*
|
112
|
-
*
|
113
|
-
*
|
114
|
-
* Notes:
|
115
|
-
* - Yes, I know "case equal" is a misnomer.
|
116
|
-
*
|
117
|
-
* @param self this object
|
118
|
-
* @param other the other object
|
119
|
-
* @return true or false
|
117
|
+
* @param other [Object] the other object
|
118
|
+
* @return [Boolean] true or false
|
120
119
|
*/
|
121
120
|
VALUE
|
122
121
|
Enum_case_eq(VALUE self, VALUE other)
|
123
122
|
{
|
124
|
-
MagickEnum *this, *that;
|
125
|
-
|
126
123
|
if (CLASS_OF(self) == CLASS_OF(other))
|
127
124
|
{
|
125
|
+
MagickEnum *this, *that;
|
126
|
+
|
128
127
|
Data_Get_Struct(self, MagickEnum, this);
|
129
128
|
Data_Get_Struct(other, MagickEnum, that);
|
130
129
|
return this->val == that->val ? Qtrue : Qfalse;
|
@@ -137,58 +136,43 @@ Enum_case_eq(VALUE self, VALUE other)
|
|
137
136
|
/**
|
138
137
|
* Initialize a new Enum instance.
|
139
138
|
*
|
140
|
-
*
|
141
|
-
*
|
142
|
-
*
|
143
|
-
* @param self this object
|
144
|
-
* @param sym the symbol
|
145
|
-
* @param val the value for the symbol
|
146
|
-
* @return self
|
139
|
+
* @param sym [Symbol] the symbol as enum name
|
140
|
+
* @param val [Numeric] the value for enum
|
141
|
+
* @return [Magick::Enum] self
|
147
142
|
*/
|
148
143
|
VALUE
|
149
144
|
Enum_initialize(VALUE self, VALUE sym, VALUE val)
|
150
145
|
{
|
151
|
-
|
146
|
+
MagickEnum *magick_enum;
|
152
147
|
|
153
|
-
|
154
|
-
|
155
|
-
|
148
|
+
Data_Get_Struct(self, MagickEnum, magick_enum);
|
149
|
+
magick_enum->id = rb_to_id(sym); /* convert symbol to ID */
|
150
|
+
magick_enum->val = NUM2INT(val);
|
156
151
|
|
157
|
-
|
152
|
+
return self;
|
158
153
|
}
|
159
154
|
|
160
155
|
|
161
156
|
/**
|
162
157
|
* Return the value of an enum.
|
163
158
|
*
|
164
|
-
*
|
165
|
-
* - @verbatim Enum#to_i @endverbatim
|
166
|
-
*
|
167
|
-
* @param self this object
|
168
|
-
* @return this object's value
|
159
|
+
* @return [Numeric] this object's value
|
169
160
|
*/
|
170
161
|
VALUE
|
171
162
|
Enum_to_i(VALUE self)
|
172
163
|
{
|
173
|
-
|
164
|
+
MagickEnum *magick_enum;
|
174
165
|
|
175
|
-
|
176
|
-
|
166
|
+
Data_Get_Struct(self, MagickEnum, magick_enum);
|
167
|
+
return INT2NUM(magick_enum->val);
|
177
168
|
}
|
178
169
|
|
179
170
|
|
180
171
|
/**
|
181
172
|
* Support Comparable module in Enum.
|
182
173
|
*
|
183
|
-
*
|
184
|
-
*
|
185
|
-
*
|
186
|
-
* Notes:
|
187
|
-
* - Enums must be instances of the same class to be equal.
|
188
|
-
*
|
189
|
-
* @param self this object
|
190
|
-
* @param other the other object
|
191
|
-
* @return -1, 0, 1, or nil
|
174
|
+
* @param other [Object] the other object
|
175
|
+
* @return [-1, 0, 1, nil] the result of compare
|
192
176
|
*/
|
193
177
|
VALUE
|
194
178
|
Enum_spaceship(VALUE self, VALUE other)
|
@@ -216,67 +200,52 @@ Enum_spaceship(VALUE self, VALUE other)
|
|
216
200
|
|
217
201
|
/**
|
218
202
|
* Bitwise OR for enums
|
219
|
-
*
|
220
|
-
* Ruby usage:
|
221
|
-
* - @verbatim Enum1 | Enum2 @endverbatim
|
222
|
-
*
|
223
|
-
* Notes:
|
224
|
-
* - Enums must be instances of the same class.
|
225
203
|
*
|
226
|
-
* @param
|
227
|
-
* @
|
228
|
-
* @return new Enum instance
|
204
|
+
* @param another [Magick::Enum] the another enum
|
205
|
+
* @return [Magick::Enum] new Enum instance
|
229
206
|
*/
|
230
207
|
VALUE
|
231
208
|
Enum_bitwise_or(VALUE self, VALUE another)
|
232
209
|
{
|
233
|
-
|
234
|
-
|
210
|
+
VALUE new_enum, cls;
|
211
|
+
MagickEnum *this, *that, *new_enum_data;
|
235
212
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
213
|
+
cls = CLASS_OF(self);
|
214
|
+
if (CLASS_OF(another) != cls)
|
215
|
+
{
|
216
|
+
rb_raise(rb_eArgError, "Expected class %s but got %s", rb_class2name(cls), rb_class2name(CLASS_OF(another)));
|
217
|
+
}
|
241
218
|
|
242
|
-
|
219
|
+
new_enum = Enum_alloc(cls);
|
243
220
|
|
244
|
-
|
245
|
-
|
246
|
-
|
221
|
+
Data_Get_Struct(self, MagickEnum, this);
|
222
|
+
Data_Get_Struct(another, MagickEnum, that);
|
223
|
+
Data_Get_Struct(new_enum, MagickEnum, new_enum_data);
|
247
224
|
|
248
|
-
|
249
|
-
|
225
|
+
new_enum_data->id = rb_to_id(rb_sprintf("%s|%s", rb_id2name(this->id), rb_id2name(that->id)));
|
226
|
+
new_enum_data->val = this->val | that->val;
|
250
227
|
|
251
|
-
|
228
|
+
return new_enum;
|
252
229
|
}
|
253
230
|
|
254
231
|
/**
|
255
232
|
* Return the name of an enum.
|
256
233
|
*
|
257
|
-
*
|
258
|
-
* - @verbatim Enum#to_s @endverbatim
|
259
|
-
*
|
260
|
-
* @param self this object
|
261
|
-
* @return the name
|
234
|
+
* @return [String] the name of an enum
|
262
235
|
*/
|
263
236
|
VALUE
|
264
237
|
Enum_to_s(VALUE self)
|
265
238
|
{
|
266
|
-
|
239
|
+
return rb_str_new2(rm_enum_to_cstr(self));
|
267
240
|
}
|
268
241
|
|
269
242
|
|
270
243
|
/**
|
271
244
|
* Initialize method for all Enum subclasses.
|
272
245
|
*
|
273
|
-
*
|
274
|
-
*
|
275
|
-
*
|
276
|
-
* @param self this object
|
277
|
-
* @param sym the symbol
|
278
|
-
* @param val the value of the symbol
|
279
|
-
* @return self
|
246
|
+
* @param sym [Symbol] the symbol as enum name
|
247
|
+
* @param val [Numeric] the value for enum
|
248
|
+
* @return [Magick::Enum] self
|
280
249
|
*/
|
281
250
|
VALUE
|
282
251
|
Enum_type_initialize(VALUE self, VALUE sym, VALUE val)
|
@@ -286,7 +255,7 @@ Enum_type_initialize(VALUE self, VALUE sym, VALUE val)
|
|
286
255
|
|
287
256
|
super_argv[0] = sym;
|
288
257
|
super_argv[1] = val;
|
289
|
-
|
258
|
+
rb_call_super(2, (const VALUE *)super_argv);
|
290
259
|
|
291
260
|
if (rb_cvar_defined(CLASS_OF(self), rb_intern(ENUMERATORS_CLASS_VAR)) != Qtrue)
|
292
261
|
{
|
@@ -294,7 +263,7 @@ Enum_type_initialize(VALUE self, VALUE sym, VALUE val)
|
|
294
263
|
}
|
295
264
|
|
296
265
|
enumerators = rb_cv_get(CLASS_OF(self), ENUMERATORS_CLASS_VAR);
|
297
|
-
|
266
|
+
rb_ary_push(enumerators, self);
|
298
267
|
|
299
268
|
RB_GC_GUARD(enumerators);
|
300
269
|
|
@@ -305,11 +274,7 @@ Enum_type_initialize(VALUE self, VALUE sym, VALUE val)
|
|
305
274
|
/**
|
306
275
|
* Enum subclass #inspect.
|
307
276
|
*
|
308
|
-
*
|
309
|
-
* - @verbatim xxx#inspect @endverbatim
|
310
|
-
*
|
311
|
-
* @param self this object
|
312
|
-
* @return string representation of self
|
277
|
+
* @return [String] representation of self
|
313
278
|
*/
|
314
279
|
static VALUE
|
315
280
|
Enum_type_inspect(VALUE self)
|
@@ -318,7 +283,7 @@ Enum_type_inspect(VALUE self)
|
|
318
283
|
MagickEnum *magick_enum;
|
319
284
|
|
320
285
|
Data_Get_Struct(self, MagickEnum, magick_enum);
|
321
|
-
|
286
|
+
snprintf(str, sizeof(str), "%.48s=%d", rb_id2name(magick_enum->id), magick_enum->val);
|
322
287
|
|
323
288
|
return rb_str_new2(str);
|
324
289
|
}
|
@@ -327,15 +292,14 @@ Enum_type_inspect(VALUE self)
|
|
327
292
|
/**
|
328
293
|
* Behaves like #each if a block is present, otherwise like #to_a.
|
329
294
|
*
|
330
|
-
*
|
331
|
-
*
|
332
|
-
* - @verbatim xxx.values {|v| } @endverbatim
|
333
|
-
*
|
334
|
-
* Notes:
|
335
|
-
* - Defined for each Enum subclass
|
295
|
+
* @overload values
|
296
|
+
* @return [Array<Magick::Enum>] the enum values
|
336
297
|
*
|
337
|
-
* @
|
338
|
-
*
|
298
|
+
* @overload values
|
299
|
+
* iterator over values if given block
|
300
|
+
* @yield [val]
|
301
|
+
* @yieldparam val [Magick::Enum] an enum
|
302
|
+
* @return [Magick::Enum] self
|
339
303
|
*/
|
340
304
|
static VALUE
|
341
305
|
Enum_type_values(VALUE class)
|
@@ -350,7 +314,7 @@ Enum_type_values(VALUE class)
|
|
350
314
|
{
|
351
315
|
for (x = 0; x < RARRAY_LEN(enumerators); x++)
|
352
316
|
{
|
353
|
-
|
317
|
+
rb_yield(rb_ary_entry(enumerators, x));
|
354
318
|
}
|
355
319
|
rv = class;
|
356
320
|
}
|
@@ -359,7 +323,7 @@ Enum_type_values(VALUE class)
|
|
359
323
|
copy = rb_ary_new2(RARRAY_LEN(enumerators));
|
360
324
|
for (x = 0; x < RARRAY_LEN(enumerators); x++)
|
361
325
|
{
|
362
|
-
|
326
|
+
rb_ary_push(copy, rb_ary_entry(enumerators, x));
|
363
327
|
}
|
364
328
|
rb_obj_freeze(copy);
|
365
329
|
rv = copy;
|
@@ -394,12 +358,12 @@ Enum_find(VALUE class, int val)
|
|
394
358
|
|
395
359
|
for (x = 0; x < RARRAY_LEN(enumerators); x++)
|
396
360
|
{
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
361
|
+
VALUE enumerator = rb_ary_entry(enumerators, x);
|
362
|
+
Data_Get_Struct(enumerator, MagickEnum, magick_enum);
|
363
|
+
if (magick_enum->val == val)
|
364
|
+
{
|
365
|
+
return enumerator;
|
366
|
+
}
|
403
367
|
}
|
404
368
|
|
405
369
|
return Qnil;
|
@@ -496,7 +460,35 @@ ComplianceType_name(ComplianceType *c)
|
|
496
460
|
VALUE
|
497
461
|
ComplianceType_find(ComplianceType compliance)
|
498
462
|
{
|
499
|
-
|
463
|
+
ComplianceType c;
|
464
|
+
|
465
|
+
// Turn off undefined bits
|
466
|
+
if ((compliance & (SVGCompliance|X11Compliance|XPMCompliance))
|
467
|
+
== (SVGCompliance|X11Compliance|XPMCompliance))
|
468
|
+
{
|
469
|
+
c = SVGCompliance|X11Compliance|XPMCompliance;
|
470
|
+
}
|
471
|
+
else if (compliance & SVGCompliance)
|
472
|
+
{
|
473
|
+
c = SVGCompliance;
|
474
|
+
}
|
475
|
+
else if (compliance & X11Compliance)
|
476
|
+
{
|
477
|
+
c = X11Compliance;
|
478
|
+
}
|
479
|
+
else if (compliance & XPMCompliance)
|
480
|
+
{
|
481
|
+
c = XPMCompliance;
|
482
|
+
}
|
483
|
+
else if (compliance == NoCompliance)
|
484
|
+
{
|
485
|
+
c = NoCompliance;
|
486
|
+
}
|
487
|
+
else
|
488
|
+
{
|
489
|
+
c = UndefinedCompliance;
|
490
|
+
}
|
491
|
+
return Enum_find(Class_ComplianceType, c);
|
500
492
|
}
|
501
493
|
|
502
494
|
|