rmagick 3.1.0 → 3.2.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.

Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.appveyor.yml +4 -4
  3. data/.circleci/config.yml +1 -1
  4. data/.gitignore +1 -0
  5. data/.rubocop_todo.yml +6 -0
  6. data/.travis.yml +26 -8
  7. data/CHANGELOG.md +104 -0
  8. data/before_install_linux.sh +19 -10
  9. data/benchmarks/memory/README.md +50 -0
  10. data/benchmarks/memory/image_new.rb +8 -0
  11. data/benchmarks/memory/rmagick.gnuplot +16 -0
  12. data/doc/ex/coalesce.rb +2 -2
  13. data/doc/ex/drawcomp.rb +3 -3
  14. data/doc/ex/get_pixels.rb +1 -1
  15. data/doc/ex/images/Coffee.png +0 -0
  16. data/doc/ex/images/No.png +0 -0
  17. data/doc/ex/images/Snake.png +0 -0
  18. data/doc/ex/implode.rb +2 -2
  19. data/doc/ex/mask.rb +1 -1
  20. data/doc/ex/matte_fill_to_border.rb +1 -1
  21. data/doc/ex/matte_floodfill.rb +1 -1
  22. data/doc/ex/matte_replace.rb +1 -1
  23. data/doc/ex/stegano.rb +1 -1
  24. data/examples/constitute.rb +1 -1
  25. data/examples/crop_with_gravity.rb +1 -1
  26. data/examples/demo.rb +4 -4
  27. data/examples/find_similar_region.rb +1 -1
  28. data/examples/histogram.rb +3 -3
  29. data/examples/identify.rb +46 -46
  30. data/examples/image_opacity.rb +2 -2
  31. data/examples/vignette.rb +3 -3
  32. data/ext/RMagick/extconf.rb +19 -15
  33. data/ext/RMagick/rmagick.c +1 -2
  34. data/ext/RMagick/rmagick.h +59 -30
  35. data/ext/RMagick/rmdraw.c +62 -274
  36. data/ext/RMagick/rmenum.c +121 -665
  37. data/ext/RMagick/rmfill.c +7 -7
  38. data/ext/RMagick/rmilist.c +91 -7
  39. data/ext/RMagick/rmimage.c +568 -379
  40. data/ext/RMagick/rminfo.c +152 -110
  41. data/ext/RMagick/rmkinfo.c +17 -1
  42. data/ext/RMagick/rmmain.c +75 -74
  43. data/ext/RMagick/rmmontage.c +33 -33
  44. data/ext/RMagick/rmpixel.c +75 -14
  45. data/ext/RMagick/rmstruct.c +5 -5
  46. data/ext/RMagick/rmutil.c +3 -13
  47. data/lib/obsolete.rb +66 -0
  48. data/lib/rmagick/version.rb +1 -1
  49. data/lib/rmagick_internal.rb +54 -41
  50. data/spec/rmagick/image/composite_spec.rb +5 -76
  51. data/spec/rmagick/image/properties_spec.rb +1 -1
  52. data/test/Draw.rb +52 -115
  53. data/test/Enum.rb +153 -1
  54. data/test/Fill.rb +1 -1
  55. data/test/Image1.rb +97 -43
  56. data/test/Image2.rb +140 -36
  57. data/test/Image3.rb +110 -120
  58. data/test/ImageList1.rb +46 -11
  59. data/test/ImageList2.rb +11 -21
  60. data/test/Image_attributes.rb +81 -127
  61. data/test/Import_Export.rb +2 -2
  62. data/test/Info.rb +5 -1
  63. data/test/KernelInfo.rb +67 -0
  64. data/test/Magick.rb +17 -35
  65. data/test/Pixel.rb +193 -24
  66. data/test/PolaroidOptions.rb +1 -1
  67. data/test/Preview.rb +3 -35
  68. data/test/Struct.rb +45 -0
  69. data/test/appearance/Montage.rb +26 -0
  70. data/test/appearance/appearance_assertion.rb +13 -0
  71. data/test/appearance/expected/montage_border_color.jpg +0 -0
  72. data/test/lib/Obsolete.rb +30 -0
  73. data/test/lib/internal/Draw.rb +823 -0
  74. data/test/lib/internal/Geometry.rb +98 -0
  75. data/test/lib/internal/Magick.rb +40 -0
  76. data/test/test_all_basic.rb +16 -17
  77. metadata +27 -5
  78. data/doc/ex/images/Coffee.wmf +0 -0
  79. data/doc/ex/images/No.wmf +0 -0
  80. data/doc/ex/images/Snake.wmf +0 -0
@@ -58,8 +58,10 @@ KernelInfo_initialize(VALUE self, VALUE kernel_string)
58
58
 
59
59
  kernel = AcquireKernelInfo(StringValueCStr(kernel_string));
60
60
 
61
- if (kernel == NULL)
61
+ if (!kernel)
62
+ {
62
63
  rb_raise(rb_eRuntimeError, "failed to parse kernel string");
64
+ }
63
65
 
64
66
  DATA_PTR(self) = kernel;
65
67
 
@@ -75,6 +77,10 @@ KernelInfo_initialize(VALUE self, VALUE kernel_string)
75
77
  * @param self this object
76
78
  * @deprecated This method has been deprecated.
77
79
  */
80
+
81
+ /* ZeroKernelNans() is private function in ImageMagick. */
82
+ MagickExport void ZeroKernelNans(KernelInfo *kernel);
83
+
78
84
  VALUE
79
85
  KernelInfo_zero_nans(VALUE self)
80
86
  {
@@ -92,6 +98,10 @@ KernelInfo_zero_nans(VALUE self)
92
98
  * @param self this object
93
99
  * @param scale scale to add
94
100
  */
101
+
102
+ /* UnityAddKernelInfo() was private function until IM 6.9 */
103
+ MagickExport void UnityAddKernelInfo(KernelInfo *kernel, const double scale);
104
+
95
105
  VALUE
96
106
  KernelInfo_unity_add(VALUE self, VALUE scale)
97
107
  {
@@ -131,6 +141,10 @@ KernelInfo_show(VALUE self)
131
141
  * and/or Magick::PercentValue
132
142
  * @param self this object
133
143
  */
144
+
145
+ /* ScaleKernelInfo() was private function until IM 6.9 */
146
+ MagickExport void ScaleKernelInfo(KernelInfo *kernel, const double scaling_factor,const GeometryFlags normalize_flags);
147
+
134
148
  VALUE
135
149
  KernelInfo_scale(VALUE self, VALUE scale, VALUE flags)
136
150
  {
@@ -246,7 +260,9 @@ KernelInfo_builtin(VALUE self, VALUE what, VALUE geometry)
246
260
  kernel = AcquireKernelBuiltIn(kernel_type, &info);
247
261
 
248
262
  if (!kernel)
263
+ {
249
264
  rb_raise(rb_eRuntimeError, "failed to acquire builtin kernel");
265
+ }
250
266
 
251
267
  return Data_Wrap_Struct(self, NULL, rm_kernel_info_destroy, kernel);
252
268
  }
@@ -62,17 +62,7 @@ static void features_constant(void);
62
62
  */
63
63
  static void *rm_malloc(size_t size)
64
64
  {
65
- void *p;
66
- // int old_state;
67
-
68
- // old_state = rb_gc_disable();
69
- p = xmalloc((long)size);
70
- // if (!RTEST(old_state))
71
- // {
72
- // rb_gc_enable();
73
- // }
74
-
75
- return p;
65
+ return xmalloc((long)size);
76
66
  }
77
67
 
78
68
 
@@ -89,17 +79,7 @@ static void *rm_malloc(size_t size)
89
79
  */
90
80
  static void *rm_realloc(void *ptr, size_t size)
91
81
  {
92
- void *p;
93
- // int old_state;
94
-
95
- // old_state = rb_gc_disable();
96
- p = xrealloc(ptr, (long)size);
97
- // if (!RTEST(old_state))
98
- // {
99
- // rb_gc_enable();
100
- // }
101
-
102
- return p;
82
+ return xrealloc(ptr, (long)size);
103
83
  }
104
84
 
105
85
 
@@ -123,20 +103,37 @@ static void rm_free(void *ptr)
123
103
  *
124
104
  * No Ruby usage (internal function)
125
105
  */
126
- static void set_managed_memory(void)
106
+ static inline void managed_memory_enable(VALUE enable)
127
107
  {
128
- ID enable_mm = rb_intern("RMAGICK_ENABLE_MANAGED_MEMORY");
129
-
130
- if (RTEST(rb_const_defined(rb_cObject, enable_mm)) && RTEST(rb_const_get(rb_cObject, enable_mm)))
108
+ if (enable)
131
109
  {
132
- rb_warning("RMagick: %s", "managed memory enabled. This is an experimental feature.");
133
110
  SetMagickMemoryMethods(rm_malloc, rm_realloc, rm_free);
134
- rb_define_const(Module_Magick, "MANAGED_MEMORY", Qtrue);
135
111
  }
136
- else
112
+ rb_define_const(Module_Magick, "MANAGED_MEMORY", enable);
113
+ }
114
+
115
+ static void set_managed_memory(void)
116
+ {
117
+ char *disable = getenv("RMAGICK_DISABLE_MANAGED_MEMORY");
118
+
119
+ if (disable)
137
120
  {
138
- rb_define_const(Module_Magick, "MANAGED_MEMORY", Qfalse);
121
+ managed_memory_enable(Qfalse);
122
+ return;
139
123
  }
124
+
125
+ #if defined(_WIN32)
126
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_9_0)
127
+ managed_memory_enable(Qtrue);
128
+ #else
129
+ // Disable managed memory feature with ImageMagick 6.8.x or below because causes crash.
130
+ // Refer https://ci.appveyor.com/project/mockdeep/rmagick/builds/24706171
131
+ managed_memory_enable(Qfalse);
132
+ #endif
133
+ #else
134
+ // Not Windows
135
+ managed_memory_enable(Qtrue);
136
+ #endif
140
137
  }
141
138
 
142
139
 
@@ -152,14 +149,14 @@ Init_RMagick2(void)
152
149
  {
153
150
  VALUE observable;
154
151
 
155
- MagickCoreGenesis("RMagick", MagickFalse);
156
-
157
- test_Magick_version();
158
-
159
152
  Module_Magick = rb_define_module("Magick");
160
153
 
161
154
  set_managed_memory();
162
155
 
156
+ MagickCoreGenesis("RMagick", MagickFalse);
157
+
158
+ test_Magick_version();
159
+
163
160
  /*-----------------------------------------------------------------------*/
164
161
  /* Create IDs for frequently used methods, etc. */
165
162
  /*-----------------------------------------------------------------------*/
@@ -419,7 +416,7 @@ Init_RMagick2(void)
419
416
  rb_define_method(Class_Image, "marshal_dump", Image_marshal_dump, 0);
420
417
  rb_define_method(Class_Image, "marshal_load", Image_marshal_load, 1);
421
418
  rb_define_method(Class_Image, "mask", Image_mask, -1);
422
- rb_define_method(Class_Image, "matte_flood_fill", Image_matte_flood_fill, 5);
419
+ rb_define_method(Class_Image, "matte_flood_fill", Image_matte_flood_fill, -1);
423
420
  rb_define_method(Class_Image, "median_filter", Image_median_filter, -1);
424
421
  rb_define_method(Class_Image, "minify", Image_minify, 0);
425
422
  rb_define_method(Class_Image, "minify!", Image_minify_bang, 0);
@@ -527,6 +524,7 @@ Init_RMagick2(void)
527
524
  rb_define_method(Class_ImageList, "append", ImageList_append, 1);
528
525
  rb_define_method(Class_ImageList, "average", ImageList_average, 0);
529
526
  rb_define_method(Class_ImageList, "coalesce", ImageList_coalesce, 0);
527
+ rb_define_method(Class_ImageList, "combine", ImageList_combine, -1);
530
528
  rb_define_method(Class_ImageList, "composite_layers", ImageList_composite_layers, -1);
531
529
  rb_define_method(Class_ImageList, "deconstruct", ImageList_deconstruct, 0);
532
530
  rb_define_method(Class_ImageList, "display", ImageList_display, 0);
@@ -646,6 +644,7 @@ Init_RMagick2(void)
646
644
  DCL_ATTR_ACCESSOR(Pixel, red)
647
645
  DCL_ATTR_ACCESSOR(Pixel, green)
648
646
  DCL_ATTR_ACCESSOR(Pixel, blue)
647
+ DCL_ATTR_ACCESSOR(Pixel, alpha)
649
648
  DCL_ATTR_ACCESSOR(Pixel, opacity)
650
649
 
651
650
  // Define the CMYK attributes
@@ -861,7 +860,9 @@ Init_RMagick2(void)
861
860
  // Miscellaneous fixed-point constants
862
861
  DEF_CONST(QuantumRange);
863
862
  DEF_CONST(MAGICKCORE_QUANTUM_DEPTH);
863
+ DEF_CONSTV(OpaqueAlpha, QuantumRange);
864
864
  DEF_CONST(OpaqueOpacity);
865
+ DEF_CONSTV(TransparentAlpha, 0);
865
866
  DEF_CONST(TransparentOpacity);
866
867
 
867
868
  version_constants();
@@ -892,8 +893,8 @@ Init_RMagick2(void)
892
893
  ENUMERATOR(RightAlign)
893
894
  END_ENUM
894
895
 
895
- // AlphaChannelType constants
896
- DEF_ENUM(AlphaChannelType)
896
+ // AlphaChannelOption constants
897
+ DEF_ENUM(AlphaChannelOption)
897
898
  ENUMERATOR(UndefinedAlphaChannel)
898
899
  ENUMERATOR(ActivateAlphaChannel)
899
900
  ENUMERATOR(DeactivateAlphaChannel)
@@ -1003,7 +1004,6 @@ Init_RMagick2(void)
1003
1004
 
1004
1005
  // CompositeOperator constants
1005
1006
  DEF_ENUM(CompositeOperator)
1006
- ENUMERATOR(AddCompositeOp)
1007
1007
  ENUMERATOR(AtopCompositeOp)
1008
1008
  ENUMERATOR(BlendCompositeOp)
1009
1009
  ENUMERATOR(BlurCompositeOp)
@@ -1019,13 +1019,13 @@ Init_RMagick2(void)
1019
1019
  ENUMERATOR(CopyCyanCompositeOp)
1020
1020
  ENUMERATOR(CopyGreenCompositeOp)
1021
1021
  ENUMERATOR(CopyMagentaCompositeOp)
1022
- ENUMERATOR(CopyOpacityCompositeOp)
1022
+ ENUMERATORV(CopyAlphaCompositeOp, CopyOpacityCompositeOp)
1023
1023
  ENUMERATOR(CopyRedCompositeOp)
1024
1024
  ENUMERATOR(CopyYellowCompositeOp)
1025
1025
  ENUMERATOR(DarkenCompositeOp)
1026
1026
  ENUMERATOR(DarkenIntensityCompositeOp)
1027
1027
  ENUMERATOR(DistortCompositeOp)
1028
- ENUMERATOR(DivideCompositeOp)
1028
+ ENUMERATOR(DivideDstCompositeOp)
1029
1029
  ENUMERATOR(DivideSrcCompositeOp)
1030
1030
  ENUMERATOR(DstAtopCompositeOp)
1031
1031
  ENUMERATOR(DstCompositeOp)
@@ -1049,9 +1049,11 @@ Init_RMagick2(void)
1049
1049
  ENUMERATOR(LinearLightCompositeOp)
1050
1050
  ENUMERATOR(LuminizeCompositeOp)
1051
1051
  ENUMERATOR(MathematicsCompositeOp)
1052
- ENUMERATOR(MinusCompositeOp)
1052
+ ENUMERATOR(MinusDstCompositeOp)
1053
1053
  ENUMERATOR(MinusSrcCompositeOp)
1054
1054
  ENUMERATOR(ModulateCompositeOp)
1055
+ ENUMERATOR(ModulusAddCompositeOp)
1056
+ ENUMERATOR(ModulusSubtractCompositeOp)
1055
1057
  ENUMERATOR(MultiplyCompositeOp)
1056
1058
  ENUMERATOR(NoCompositeOp)
1057
1059
  ENUMERATOR(OutCompositeOp)
@@ -1069,7 +1071,6 @@ Init_RMagick2(void)
1069
1071
  ENUMERATOR(SrcInCompositeOp)
1070
1072
  ENUMERATOR(SrcOutCompositeOp)
1071
1073
  ENUMERATOR(SrcOverCompositeOp)
1072
- ENUMERATOR(SubtractCompositeOp)
1073
1074
  ENUMERATOR(ThresholdCompositeOp)
1074
1075
  ENUMERATOR(UndefinedCompositeOp)
1075
1076
  ENUMERATOR(VividLightCompositeOp)
@@ -1118,8 +1119,8 @@ Init_RMagick2(void)
1118
1119
  ENUMERATOR(PreviousDispose)
1119
1120
  END_ENUM
1120
1121
 
1121
- // DistortImage "method" argument values
1122
- DEF_ENUM(DistortImageMethod)
1122
+ // DistortMethod constants
1123
+ DEF_ENUM(DistortMethod)
1123
1124
  ENUMERATOR(UndefinedDistortion)
1124
1125
  ENUMERATOR(AffineDistortion)
1125
1126
  ENUMERATOR(AffineProjectionDistortion)
@@ -1155,8 +1156,8 @@ Init_RMagick2(void)
1155
1156
  ENUMERATOR(MSBEndian)
1156
1157
  END_ENUM
1157
1158
 
1158
- // FilterTypes constants
1159
- DEF_ENUM(FilterTypes)
1159
+ // FilterType constants
1160
+ DEF_ENUM(FilterType)
1160
1161
  ENUMERATOR(UndefinedFilter)
1161
1162
  ENUMERATOR(PointFilter)
1162
1163
  ENUMERATOR(BoxFilter)
@@ -1214,15 +1215,15 @@ Init_RMagick2(void)
1214
1215
  ENUMERATOR(UndefinedType)
1215
1216
  ENUMERATOR(BilevelType)
1216
1217
  ENUMERATOR(GrayscaleType)
1217
- ENUMERATOR(GrayscaleMatteType)
1218
+ ENUMERATORV(GrayscaleAlphaType, GrayscaleMatteType)
1218
1219
  ENUMERATOR(PaletteType)
1219
- ENUMERATOR(PaletteMatteType)
1220
+ ENUMERATORV(PaletteAlphaType, PaletteMatteType)
1220
1221
  ENUMERATOR(TrueColorType)
1221
- ENUMERATOR(TrueColorMatteType)
1222
+ ENUMERATORV(TrueColorAlphaType, TrueColorMatteType)
1222
1223
  ENUMERATOR(ColorSeparationType)
1223
- ENUMERATOR(ColorSeparationMatteType)
1224
+ ENUMERATORV(ColorSeparationAlphaType, ColorSeparationMatteType)
1224
1225
  ENUMERATOR(OptimizeType)
1225
- ENUMERATOR(PaletteBilevelMatteType)
1226
+ ENUMERATORV(PaletteBilevelAlphaType, PaletteBilevelMatteType)
1226
1227
  END_ENUM
1227
1228
 
1228
1229
  // InterlaceType constants
@@ -1237,23 +1238,6 @@ Init_RMagick2(void)
1237
1238
  ENUMERATOR(PNGInterlace)
1238
1239
  END_ENUM
1239
1240
 
1240
- DEF_ENUM(InterpolatePixelMethod)
1241
- ENUMERATOR(UndefinedInterpolatePixel)
1242
- ENUMERATOR(AverageInterpolatePixel)
1243
- ENUMERATOR(BicubicInterpolatePixel)
1244
- ENUMERATOR(BilinearInterpolatePixel)
1245
- ENUMERATOR(FilterInterpolatePixel)
1246
- ENUMERATOR(IntegerInterpolatePixel)
1247
- ENUMERATOR(MeshInterpolatePixel)
1248
- ENUMERATOR(NearestNeighborInterpolatePixel)
1249
- ENUMERATOR(SplineInterpolatePixel)
1250
- ENUMERATOR(Average9InterpolatePixel)
1251
- ENUMERATOR(Average16InterpolatePixel)
1252
- ENUMERATOR(BlendInterpolatePixel)
1253
- ENUMERATOR(BackgroundInterpolatePixel)
1254
- ENUMERATOR(CatromInterpolatePixel)
1255
- END_ENUM
1256
-
1257
1241
  DEF_ENUM(MagickFunction)
1258
1242
  ENUMERATOR(UndefinedFunction)
1259
1243
  ENUMERATOR(PolynomialFunction)
@@ -1262,7 +1246,7 @@ Init_RMagick2(void)
1262
1246
  ENUMERATOR(ArctanFunction)
1263
1247
  END_ENUM
1264
1248
 
1265
- DEF_ENUM(ImageLayerMethod)
1249
+ DEF_ENUM(LayerMethod)
1266
1250
  ENUMERATOR(UndefinedLayer)
1267
1251
  ENUMERATOR(CompareAnyLayer)
1268
1252
  ENUMERATOR(CompareClearLayer)
@@ -1283,18 +1267,17 @@ Init_RMagick2(void)
1283
1267
  END_ENUM
1284
1268
 
1285
1269
  DEF_ENUM(MetricType)
1286
- ENUMERATOR(UndefinedMetric)
1270
+ ENUMERATORV(UndefinedErrorMetric, UndefinedMetric)
1287
1271
  ENUMERATOR(AbsoluteErrorMetric)
1288
1272
  ENUMERATOR(MeanAbsoluteErrorMetric)
1289
- ENUMERATOR(MeanErrorPerPixelMetric)
1273
+ ENUMERATORV(MeanErrorPerPixelErrorMetric, MeanErrorPerPixelMetric)
1290
1274
  ENUMERATOR(MeanSquaredErrorMetric)
1291
1275
  ENUMERATOR(PeakAbsoluteErrorMetric)
1292
- ENUMERATOR(PeakSignalToNoiseRatioMetric)
1276
+ ENUMERATORV(PeakSignalToNoiseRatioErrorMetric, PeakSignalToNoiseRatioMetric)
1293
1277
  ENUMERATOR(RootMeanSquaredErrorMetric)
1294
1278
  ENUMERATOR(NormalizedCrossCorrelationErrorMetric)
1295
1279
  ENUMERATOR(FuzzErrorMetric)
1296
1280
  #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1297
- ENUMERATOR(UndefinedErrorMetric)
1298
1281
  ENUMERATOR(PerceptualHashErrorMetric)
1299
1282
  #endif
1300
1283
  END_ENUM
@@ -1332,6 +1315,24 @@ Init_RMagick2(void)
1332
1315
  ENUMERATOR(ResetMethod)
1333
1316
  END_ENUM
1334
1317
 
1318
+ // PixelInterpolateMethod constants
1319
+ DEF_ENUM(PixelInterpolateMethod)
1320
+ ENUMERATOR(UndefinedInterpolatePixel)
1321
+ ENUMERATOR(AverageInterpolatePixel)
1322
+ ENUMERATOR(BicubicInterpolatePixel)
1323
+ ENUMERATOR(BilinearInterpolatePixel)
1324
+ ENUMERATOR(FilterInterpolatePixel)
1325
+ ENUMERATOR(IntegerInterpolatePixel)
1326
+ ENUMERATOR(MeshInterpolatePixel)
1327
+ ENUMERATOR(NearestNeighborInterpolatePixel)
1328
+ ENUMERATOR(SplineInterpolatePixel)
1329
+ ENUMERATOR(Average9InterpolatePixel)
1330
+ ENUMERATOR(Average16InterpolatePixel)
1331
+ ENUMERATOR(BlendInterpolatePixel)
1332
+ ENUMERATOR(BackgroundInterpolatePixel)
1333
+ ENUMERATOR(CatromInterpolatePixel)
1334
+ END_ENUM
1335
+
1335
1336
  // PreviewType
1336
1337
  DEF_ENUM(PreviewType)
1337
1338
  ENUMERATOR(UndefinedPreview)
@@ -1690,7 +1691,7 @@ Init_RMagick2(void)
1690
1691
  static void
1691
1692
  test_Magick_version(void)
1692
1693
  {
1693
- unsigned long version_number;
1694
+ size_t version_number;
1694
1695
  const char *version_str;
1695
1696
  int x, n;
1696
1697
  ID bypass = rb_intern("RMAGICK_BYPASS_VERSION_TEST");
@@ -99,7 +99,7 @@ Montage_alloc(VALUE class)
99
99
  *
100
100
  * @param self this object
101
101
  * @param color the color name
102
- * @return self
102
+ * @return color
103
103
  */
104
104
  VALUE
105
105
  Montage_background_color_eq(VALUE self, VALUE color)
@@ -108,7 +108,7 @@ Montage_background_color_eq(VALUE self, VALUE color)
108
108
 
109
109
  Data_Get_Struct(self, Montage, montage);
110
110
  Color_to_PixelColor(&montage->info->background_color, color);
111
- return self;
111
+ return color;
112
112
  }
113
113
 
114
114
 
@@ -120,7 +120,7 @@ Montage_background_color_eq(VALUE self, VALUE color)
120
120
  *
121
121
  * @param self this object
122
122
  * @param color the color name
123
- * @return self
123
+ * @return color
124
124
  */
125
125
  VALUE
126
126
  Montage_border_color_eq(VALUE self, VALUE color)
@@ -129,7 +129,7 @@ Montage_border_color_eq(VALUE self, VALUE color)
129
129
 
130
130
  Data_Get_Struct(self, Montage, montage);
131
131
  Color_to_PixelColor(&montage->info->border_color, color);
132
- return self;
132
+ return color;
133
133
  }
134
134
 
135
135
 
@@ -141,7 +141,7 @@ Montage_border_color_eq(VALUE self, VALUE color)
141
141
  *
142
142
  * @param self this object
143
143
  * @param width the width
144
- * @return self
144
+ * @return width
145
145
  */
146
146
  VALUE
147
147
  Montage_border_width_eq(VALUE self, VALUE width)
@@ -150,7 +150,7 @@ Montage_border_width_eq(VALUE self, VALUE width)
150
150
 
151
151
  Data_Get_Struct(self, Montage, montage);
152
152
  montage->info->border_width = NUM2ULONG(width);
153
- return self;
153
+ return width;
154
154
  }
155
155
 
156
156
 
@@ -162,7 +162,7 @@ Montage_border_width_eq(VALUE self, VALUE width)
162
162
  *
163
163
  * @param self this object
164
164
  * @param compose the composition operator
165
- * @return self
165
+ * @return compose
166
166
  */
167
167
  VALUE
168
168
  Montage_compose_eq(VALUE self, VALUE compose)
@@ -171,7 +171,7 @@ Montage_compose_eq(VALUE self, VALUE compose)
171
171
 
172
172
  Data_Get_Struct(self, Montage, montage);
173
173
  VALUE_TO_ENUM(compose, montage->compose, CompositeOperator);
174
- return self;
174
+ return compose;
175
175
  }
176
176
 
177
177
 
@@ -183,7 +183,7 @@ Montage_compose_eq(VALUE self, VALUE compose)
183
183
  *
184
184
  * @param self this object
185
185
  * @param filename the filename
186
- * @return self
186
+ * @return filename
187
187
  */
188
188
  VALUE
189
189
  Montage_filename_eq(VALUE self, VALUE filename)
@@ -192,7 +192,7 @@ Montage_filename_eq(VALUE self, VALUE filename)
192
192
 
193
193
  Data_Get_Struct(self, Montage, montage);
194
194
  strncpy(montage->info->filename, StringValuePtr(filename), MaxTextExtent-1);
195
- return self;
195
+ return filename;
196
196
  }
197
197
 
198
198
 
@@ -204,7 +204,7 @@ Montage_filename_eq(VALUE self, VALUE filename)
204
204
  *
205
205
  * @param self this object
206
206
  * @param color the color name
207
- * @return self
207
+ * @return color
208
208
  */
209
209
  VALUE
210
210
  Montage_fill_eq(VALUE self, VALUE color)
@@ -213,7 +213,7 @@ Montage_fill_eq(VALUE self, VALUE color)
213
213
 
214
214
  Data_Get_Struct(self, Montage, montage);
215
215
  Color_to_PixelColor(&montage->info->fill, color);
216
- return self;
216
+ return color;
217
217
  }
218
218
 
219
219
 
@@ -225,7 +225,7 @@ Montage_fill_eq(VALUE self, VALUE color)
225
225
  *
226
226
  * @param self this object
227
227
  * @param font the font name
228
- * @return self
228
+ * @return font
229
229
  */
230
230
  VALUE
231
231
  Montage_font_eq(VALUE self, VALUE font)
@@ -235,7 +235,7 @@ Montage_font_eq(VALUE self, VALUE font)
235
235
  Data_Get_Struct(self, Montage, montage);
236
236
  magick_clone_string(&montage->info->font, StringValuePtr(font));
237
237
 
238
- return self;
238
+ return font;
239
239
  }
240
240
 
241
241
 
@@ -252,7 +252,7 @@ Montage_font_eq(VALUE self, VALUE font)
252
252
  *
253
253
  * @param self this object
254
254
  * @param frame_arg the frame geometry
255
- * @return self
255
+ * @return frame_arg
256
256
  */
257
257
  VALUE
258
258
  Montage_frame_eq(VALUE self, VALUE frame_arg)
@@ -266,7 +266,7 @@ Montage_frame_eq(VALUE self, VALUE frame_arg)
266
266
 
267
267
  RB_GC_GUARD(frame);
268
268
 
269
- return self;
269
+ return frame_arg;
270
270
  }
271
271
 
272
272
 
@@ -278,7 +278,7 @@ Montage_frame_eq(VALUE self, VALUE frame_arg)
278
278
  *
279
279
  * @param self this object
280
280
  * @param geometry_arg the geometry
281
- * @return self
281
+ * @return geometry_arg
282
282
  */
283
283
  VALUE
284
284
  Montage_geometry_eq(VALUE self, VALUE geometry_arg)
@@ -292,7 +292,7 @@ Montage_geometry_eq(VALUE self, VALUE geometry_arg)
292
292
 
293
293
  RB_GC_GUARD(geometry);
294
294
 
295
- return self;
295
+ return geometry_arg;
296
296
  }
297
297
 
298
298
 
@@ -304,7 +304,7 @@ Montage_geometry_eq(VALUE self, VALUE geometry_arg)
304
304
  *
305
305
  * @param self this object
306
306
  * @param gravity the gravity type
307
- * @return self
307
+ * @return gravity
308
308
  */
309
309
  VALUE
310
310
  Montage_gravity_eq(VALUE self, VALUE gravity)
@@ -313,7 +313,7 @@ Montage_gravity_eq(VALUE self, VALUE gravity)
313
313
 
314
314
  Data_Get_Struct(self, Montage, montage);
315
315
  VALUE_TO_ENUM(gravity, montage->info->gravity, GravityType);
316
- return self;
316
+ return gravity;
317
317
  }
318
318
 
319
319
 
@@ -342,7 +342,7 @@ Montage_initialize(VALUE self)
342
342
  *
343
343
  * @param self this object
344
344
  * @param color the color name
345
- * @return self
345
+ * @return color
346
346
  */
347
347
  VALUE
348
348
  Montage_matte_color_eq(VALUE self, VALUE color)
@@ -351,7 +351,7 @@ Montage_matte_color_eq(VALUE self, VALUE color)
351
351
 
352
352
  Data_Get_Struct(self, Montage, montage);
353
353
  Color_to_PixelColor(&montage->info->matte_color, color);
354
- return self;
354
+ return color;
355
355
  }
356
356
 
357
357
 
@@ -363,7 +363,7 @@ Montage_matte_color_eq(VALUE self, VALUE color)
363
363
  *
364
364
  * @param self this object
365
365
  * @param size the point size
366
- * @return self
366
+ * @return size
367
367
  */
368
368
  VALUE
369
369
  Montage_pointsize_eq(VALUE self, VALUE size)
@@ -372,7 +372,7 @@ Montage_pointsize_eq(VALUE self, VALUE size)
372
372
 
373
373
  Data_Get_Struct(self, Montage, montage);
374
374
  montage->info->pointsize = NUM2DBL(size);
375
- return self;
375
+ return size;
376
376
  }
377
377
 
378
378
 
@@ -384,7 +384,7 @@ Montage_pointsize_eq(VALUE self, VALUE size)
384
384
  *
385
385
  * @param self this object
386
386
  * @param shadow the shadow
387
- * @return self
387
+ * @return shadow
388
388
  */
389
389
  VALUE
390
390
  Montage_shadow_eq(VALUE self, VALUE shadow)
@@ -393,7 +393,7 @@ Montage_shadow_eq(VALUE self, VALUE shadow)
393
393
 
394
394
  Data_Get_Struct(self, Montage, montage);
395
395
  montage->info->shadow = (MagickBooleanType) RTEST(shadow);
396
- return self;
396
+ return shadow;
397
397
  }
398
398
 
399
399
 
@@ -414,7 +414,7 @@ Montage_stroke_eq(VALUE self, VALUE color)
414
414
 
415
415
  Data_Get_Struct(self, Montage, montage);
416
416
  Color_to_PixelColor(&montage->info->stroke, color);
417
- return self;
417
+ return color;
418
418
  }
419
419
 
420
420
 
@@ -426,7 +426,7 @@ Montage_stroke_eq(VALUE self, VALUE color)
426
426
  *
427
427
  * @param self this object
428
428
  * @param texture the texture image
429
- * @return self
429
+ * @return texture
430
430
  */
431
431
  VALUE
432
432
  Montage_texture_eq(VALUE self, VALUE texture)
@@ -453,7 +453,7 @@ Montage_texture_eq(VALUE self, VALUE texture)
453
453
  rm_write_temp_image(texture_image, temp_name);
454
454
  magick_clone_string(&montage->info->texture, temp_name);
455
455
 
456
- return self;
456
+ return texture;
457
457
  }
458
458
 
459
459
 
@@ -465,7 +465,7 @@ Montage_texture_eq(VALUE self, VALUE texture)
465
465
  *
466
466
  * @param self this object
467
467
  * @param tile_arg the tile
468
- * @return self
468
+ * @return tile_arg
469
469
  */
470
470
  VALUE
471
471
  Montage_tile_eq(VALUE self, VALUE tile_arg)
@@ -479,7 +479,7 @@ Montage_tile_eq(VALUE self, VALUE tile_arg)
479
479
 
480
480
  RB_GC_GUARD(tile);
481
481
 
482
- return self;
482
+ return tile_arg;
483
483
  }
484
484
 
485
485
 
@@ -491,7 +491,7 @@ Montage_tile_eq(VALUE self, VALUE tile_arg)
491
491
  *
492
492
  * @param self this object
493
493
  * @param title the title
494
- * @return self
494
+ * @return title
495
495
  */
496
496
  VALUE
497
497
  Montage_title_eq(VALUE self, VALUE title)
@@ -500,7 +500,7 @@ Montage_title_eq(VALUE self, VALUE title)
500
500
 
501
501
  Data_Get_Struct(self, Montage, montage);
502
502
  magick_clone_string(&montage->info->title, StringValuePtr(title));
503
- return self;
503
+ return title;
504
504
  }
505
505
 
506
506