ext/RMagick/rmmain.c in rmagick-1.14.1 vs ext/RMagick/rmmain.c in rmagick-1.15.0
- old
+ new
@@ -1,8 +1,8 @@
-/* $Id: rmmain.c,v 1.147 2006/10/21 13:43:23 rmagick Exp $ */
+/* $Id: rmmain.c,v 1.159 2007/01/20 15:45:29 rmagick Exp $ */
/*============================================================================\
-| Copyright (C) 2006 by Timothy P. Hunter
+| Copyright (C) 2007 by Timothy P. Hunter
| Name: rmmain.c
| Author: Tim Hunter
| Purpose: Contains all module, class, method declarations.
| Defines all constants
| Contains Magick module methods.
@@ -42,11 +42,11 @@
GetExceptionInfo(&exception);
color_ary = GetColorInfoArray(&exception);
CHECK_EXCEPTION()
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
if (rb_block_given_p())
{
x = 0;
@@ -87,30 +87,30 @@
GetExceptionInfo(&exception);
color_info_list = GetColorInfoList("*", &number_colors, &exception);
CHECK_EXCEPTION()
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
#endif
if (rb_block_given_p())
{
for(x = 0; x < number_colors; x++)
{
- rb_yield(Color_from_ColorInfo(color_info_list[x]));
+ (void) rb_yield(Color_from_ColorInfo(color_info_list[x]));
}
magick_free(color_info_list);
return class;
}
else
{
ary = rb_ary_new2((long) number_colors);
for(x = 0; x < number_colors; x++)
{
- rb_ary_push(ary, Color_from_ColorInfo(color_info_list[x]));
+ (void) rb_ary_push(ary, Color_from_ColorInfo(color_info_list[x]));
}
magick_free(color_info_list);
return ary;
}
@@ -123,11 +123,11 @@
volatile VALUE ary, el;
GetExceptionInfo(&exception);
color_list = GetColorInfo("*", &exception);
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
// The order of the colors list can change in mid-iteration,
// so the only way we can guarantee a single pass thru the list
// is to copy the elements into an array without returning to
// IM. So, we always create a Ruby array and either return it
@@ -177,29 +177,29 @@
ExceptionInfo exception;
GetExceptionInfo(&exception);
type_info = GetTypeInfoList("*", &number_types, &exception);
CHECK_EXCEPTION()
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
#endif
if (rb_block_given_p())
{
for(x = 0; x < number_types; x++)
{
- rb_yield(Font_from_TypeInfo((TypeInfo *)type_info[x]));
+ (void) rb_yield(Font_from_TypeInfo((TypeInfo *)type_info[x]));
}
magick_free(type_info);
return class;
}
else
{
- ary = rb_ary_new2(number_types);
+ ary = rb_ary_new2((long)number_types);
for(x = 0; x < number_types; x++)
{
- rb_ary_push(ary, Font_from_TypeInfo((TypeInfo *)type_info[x]));
+ (void) rb_ary_push(ary, Font_from_TypeInfo((TypeInfo *)type_info[x]));
}
magick_free(type_info);
return ary;
}
@@ -212,11 +212,11 @@
GetExceptionInfo(&exception);
type_list = GetTypeInfo("*", &exception);
CHECK_EXCEPTION()
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
// If block, iterate over fonts
if (rb_block_given_p())
{
for (type = (TypeInfo *)type_list; type; type = next)
@@ -286,11 +286,11 @@
formats = rb_hash_new();
GetExceptionInfo(&exception);
magick_info = (MagickInfo *)GetMagickInfoArray(&exception);
CHECK_EXCEPTION()
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
for(m = magick_info; m != NULL; m = m->next)
{
rb_hash_aset(formats, rb_str_new2(m->name), MagickInfo_to_format(m));
}
@@ -316,19 +316,19 @@
#else
// IM 6.1.3 added an exception argument to GetMagickInfoList
GetExceptionInfo(&exception);
magick_info = GetMagickInfoList("*", &number_formats, &exception);
CHECK_EXCEPTION()
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
#endif
for(x = 0; x < number_formats; x++)
{
- rb_hash_aset(formats
- , rb_str_new2(magick_info[x]->name)
- , MagickInfo_to_format((MagickInfo *)magick_info[x]));
+ (void) rb_hash_aset(formats
+ , rb_str_new2(magick_info[x]->name)
+ , MagickInfo_to_format((MagickInfo *)magick_info[x]));
}
return formats;
#else
@@ -341,11 +341,11 @@
formats = rb_hash_new();
GetExceptionInfo(&exception);
m = (MagickInfo *)GetMagickInfo("*", &exception);
CHECK_EXCEPTION()
- DestroyExceptionInfo(&exception);
+ (void) DestroyExceptionInfo(&exception);
for ( ; m != NULL; m = m->next)
{
rb_hash_aset(formats, rb_str_new2(m->name), MagickInfo_to_format(m));
}
@@ -378,11 +378,11 @@
{
case T_NIL:
return class;
case T_SYMBOL:
- id = SYM2ID(resource);
+ id = (ID)SYM2ID(resource);
if (id == rb_intern("memory"))
{
res = MemoryResource;
}
else if (id == rb_intern("map"))
@@ -434,11 +434,11 @@
cur_limit = GetMagickResourceLimit(res);
if (argc > 1)
{
- SetMagickResourceLimit(res, NUM2ULONG(limit));
+ (void) SetMagickResourceLimit(res, NUM2ULONG(limit));
}
return ULONG2NUM(cur_limit);
#else
rm_not_implemented();
@@ -530,12 +530,12 @@
*/
static VALUE
Magick_set_cache_threshold(VALUE class, VALUE threshold)
{
unsigned long thrshld = NUM2ULONG(threshold);
- SetMagickResourceLimit(MemoryResource,thrshld);
- SetMagickResourceLimit(MapResource,2*thrshld);
+ (void) SetMagickResourceLimit(MemoryResource,thrshld);
+ (void) SetMagickResourceLimit(MapResource,2*thrshld);
return class;
}
/*
Method: Magick.set_log_event_mask(event,...) -> Magick
@@ -823,10 +823,11 @@
rb_define_method(Class_Image, "import_pixels", Image_import_pixels, -1);
rb_define_method(Class_Image, "initialize_copy", Image_init_copy, 1);
rb_define_method(Class_Image, "inspect", Image_inspect, 0);
rb_define_method(Class_Image, "level2", Image_level2, -1);
rb_define_method(Class_Image, "level_channel", Image_level_channel, -1);
+ rb_define_method(Class_Image, "linear_stretch", Image_linear_stretch, -1);
rb_define_method(Class_Image, "magnify", Image_magnify, 0);
rb_define_method(Class_Image, "magnify!", Image_magnify_bang, 0);
rb_define_method(Class_Image, "map", Image_map, -1);
rb_define_method(Class_Image, "matte_flood_fill", Image_matte_flood_fill, 5);
rb_define_method(Class_Image, "median_filter", Image_median_filter, -1);
@@ -843,10 +844,11 @@
rb_define_method(Class_Image, "opaque", Image_opaque, 2);
rb_define_method(Class_Image, "opaque?", Image_opaque_q, 0);
rb_define_method(Class_Image, "ordered_dither", Image_ordered_dither, -1);
rb_define_method(Class_Image, "palette?", Image_palette_q, 0);
rb_define_method(Class_Image, "pixel_color", Image_pixel_color, -1);
+ rb_define_method(Class_Image, "polaroid", Image_polaroid, -1);
rb_define_method(Class_Image, "posterize", Image_posterize, -1);
// rb_define_method(Class_Image, "plasma", Image_plasma, 6);
rb_define_method(Class_Image, "preview", Image_preview, 1);
rb_define_method(Class_Image, "profile!", Image_profile_bang, 2);
rb_define_method(Class_Image, "quantize", Image_quantize, -1);
@@ -854,10 +856,11 @@
rb_define_method(Class_Image, "radial_blur", Image_radial_blur, 1);
rb_define_method(Class_Image, "radial_blur_channel", Image_radial_blur_channel, -1);
rb_define_method(Class_Image, "raise", Image_raise, -1);
rb_define_method(Class_Image, "random_channel_threshold", Image_random_channel_threshold, 2);
rb_define_method(Class_Image, "random_threshold_channel", Image_random_threshold_channel, -1);
+ rb_define_method(Class_Image, "recolor", Image_recolor, 1);
rb_define_method(Class_Image, "reduce_noise", Image_reduce_noise, 1);
rb_define_method(Class_Image, "resize", Image_resize, -1);
rb_define_method(Class_Image, "resize!", Image_resize_bang, -1);
rb_define_method(Class_Image, "roll", Image_roll, 2);
rb_define_method(Class_Image, "rotate", Image_rotate, -1);
@@ -907,10 +910,11 @@
rb_define_method(Class_Image, "unsharp_mask", Image_unsharp_mask, -1);
rb_define_method(Class_Image, "unsharp_mask_channel", Image_unsharp_mask_channel, -1);
rb_define_method(Class_Image, "vignette", Image_vignette, -1);
rb_define_method(Class_Image, "watermark", Image_watermark, -1);
rb_define_method(Class_Image, "wave", Image_wave, -1);
+ rb_define_method(Class_Image, "wet_floor", Image_wet_floor, -1);
rb_define_method(Class_Image, "white_threshold", Image_white_threshold, -1);
rb_define_method(Class_Image, "write", Image_write, 1);
/*-----------------------------------------------------------------------*/
/* Class Magick::ImageList methods (see also RMagick.rb) */
@@ -929,10 +933,11 @@
rb_define_method(Class_ImageList, "average", ImageList_average, 0);
rb_define_method(Class_ImageList, "coalesce", ImageList_coalesce, 0);
rb_define_method(Class_ImageList, "deconstruct", ImageList_deconstruct, 0);
rb_define_method(Class_ImageList, "display", ImageList_display, 0);
rb_define_method(Class_ImageList, "flatten_images", ImageList_flatten_images, 0);
+ rb_define_method(Class_ImageList, "fx", ImageList_fx, -1);
rb_define_method(Class_ImageList, "map", ImageList_map, -1);
rb_define_method(Class_ImageList, "montage", ImageList_montage, 0);
rb_define_method(Class_ImageList, "morph", ImageList_morph, 1);
rb_define_method(Class_ImageList, "mosaic", ImageList_mosaic, 0);
rb_define_method(Class_ImageList, "optimize_layers", ImageList_optimize_layers, 1);
@@ -951,11 +956,10 @@
rb_define_singleton_method(Class_Draw, "new", Draw_new, 0);
#endif
DCL_ATTR_WRITER(Draw, affine)
DCL_ATTR_WRITER(Draw, align)
- DCL_ATTR_WRITER(Draw, border_color)
DCL_ATTR_WRITER(Draw, decorate)
DCL_ATTR_WRITER(Draw, density)
DCL_ATTR_WRITER(Draw, encoding)
DCL_ATTR_WRITER(Draw, fill)
DCL_ATTR_WRITER(Draw, font)
@@ -983,17 +987,53 @@
rb_define_method(Class_Draw, "initialize_copy", Draw_init_copy, 1);
rb_define_method(Class_Draw, "inspect", Draw_inspect, 0);
rb_define_method(Class_Draw, "primitive", Draw_primitive, 1);
/*-----------------------------------------------------------------------*/
+ /* Class Magick::DrawOptions is identical to Magick::Draw but with */
+ /* only the attribute writer methods. This is the object that is passed */
+ /* to the block associated with the Draw.new method call. */
+ /*-----------------------------------------------------------------------*/
+
+ Class_DrawOptions = rb_define_class_under(Class_Image, "DrawOptions", rb_cObject);
+
+#if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
+ rb_define_alloc_func(Class_DrawOptions, DrawOptions_alloc);
+#else
+ rb_define_singleton_method(Class_DrawOptions, "new", DrawOptions_new, 0);
+#endif
+
+ rb_define_method(Class_DrawOptions, "initialize", DrawOptions_initialize, 0);
+
+ SHARE_ATTR_WRITER(DrawOptions, Draw, affine)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, align)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, decorate)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, density)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, encoding)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, fill)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, font)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, font_family)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, font_stretch)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, font_style)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, font_weight)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, gravity)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, pointsize)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, rotation)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, stroke)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, stroke_width)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, text_antialias)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, tile)
+ SHARE_ATTR_WRITER(DrawOptions, Draw, undercolor)
+
+ /*-----------------------------------------------------------------------*/
/* Class Magick::Pixel */
/*-----------------------------------------------------------------------*/
Class_Pixel = rb_define_class_under(Module_Magick, "Pixel", rb_cObject);
// include Observable in Pixel for Image::View class
- rb_require("observer");
+ (void) rb_require("observer");
observable = rb_const_get(rb_cObject, rb_intern("Observable"));
rb_include_module(Class_Pixel, observable);
// include Comparable
rb_include_module(Class_Pixel, rb_mComparable);
@@ -1114,10 +1154,11 @@
DCL_ATTR_ACCESSOR(Info, matte_color)
DCL_ATTR_WRITER(Info, monitor)
DCL_ATTR_ACCESSOR(Info, monochrome)
DCL_ATTR_ACCESSOR(Info, number_scenes) // new in 5.5.6, replaces subrange
DCL_ATTR_ACCESSOR(Info, orientation) // new in 6.0.0
+ DCL_ATTR_ACCESSOR(Info, origin) // new in 6.3.1
DCL_ATTR_ACCESSOR(Info, page)
DCL_ATTR_ACCESSOR(Info, pointsize)
DCL_ATTR_ACCESSOR(Info, quality)
DCL_ATTR_ACCESSOR(Info, sampling_factor)
DCL_ATTR_ACCESSOR(Info, scene) // new in 5.5.6, replaces subimage
@@ -1129,11 +1170,46 @@
DCL_ATTR_ACCESSOR(Info, tile) // deprecated >=5.5.6, replaced by extract and scenes
DCL_ATTR_ACCESSOR(Info, image_type)
DCL_ATTR_ACCESSOR(Info, units)
DCL_ATTR_ACCESSOR(Info, view)
+
/*-----------------------------------------------------------------------*/
+ /* Class Magick::Image::PolaroidOptions */
+ /*-----------------------------------------------------------------------*/
+
+ Class_PolaroidOptions = rb_define_class_under(Class_Image, "PolaroidOptions", rb_cObject);
+
+#if defined(HAVE_RB_DEFINE_ALLOC_FUNC)
+ rb_define_alloc_func(Class_PolaroidOptions, PolaroidOptions_alloc);
+#else
+ rb_define_singleton_method(Class_PolaroidOptions, "new", PolaroidOptions_new, 0);
+#endif
+
+ rb_define_method(Class_PolaroidOptions, "initialize", PolaroidOptions_initialize, 0);
+
+ DCL_ATTR_WRITER(PolaroidOptions, shadow_color)
+ // The other attribute writer methods are implemented by Draw's functions
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, align)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, decorate)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, density)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, encoding)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, fill)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, font)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, font_family)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, font_stretch)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, font_style)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, font_weight)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, gravity)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, pointsize)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, stroke)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, stroke_width)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, text_antialias)
+ SHARE_ATTR_WRITER(PolaroidOptions, Draw, undercolor)
+
+
+ /*-----------------------------------------------------------------------*/
/* Magick::******Fill classes and methods */
/*-----------------------------------------------------------------------*/
// class Magick::GradientFill
Class_GradientFill = rb_define_class_under(Module_Magick, "GradientFill", rb_cObject);
@@ -1343,16 +1419,14 @@
ENUMERATOR(CopyBlueCompositeOp)
ENUMERATOR(CopyCompositeOp)
ENUMERATOR(CopyGreenCompositeOp)
ENUMERATOR(CopyOpacityCompositeOp)
ENUMERATOR(CopyRedCompositeOp)
-#if defined(HAVE_COPYCYANCOMPOSITEOP) // CYMK added 5.5.7
ENUMERATOR(CopyCyanCompositeOp)
ENUMERATOR(CopyMagentaCompositeOp)
ENUMERATOR(CopyYellowCompositeOp)
ENUMERATOR(CopyBlackCompositeOp)
-#endif
ENUMERATOR(DarkenCompositeOp)
ENUMERATOR(DifferenceCompositeOp)
ENUMERATOR(DisplaceCompositeOp)
ENUMERATOR(DissolveCompositeOp)
#if defined(HAVE_DSTCOMPOSITEOP)
@@ -1492,10 +1566,13 @@
ENUMERATOR(TrueColorType)
ENUMERATOR(TrueColorMatteType)
ENUMERATOR(ColorSeparationType)
ENUMERATOR(ColorSeparationMatteType)
ENUMERATOR(OptimizeType)
+#if defined(HAVE_PALETTEBILEVELMATTETYPE)
+ ENUMERATOR(PaletteBilevelMatteType)
+#endif
END_ENUM
// InterlaceType constants
DEF_ENUM(InterlaceType)
ENUMERATOR(UndefinedInterlace)
@@ -1849,25 +1926,25 @@
char long_version[1000];
mgk_version = GetMagickVersion(NULL);
str = rb_str_new2(mgk_version);
- rb_obj_freeze(str);
+ (void) rb_obj_freeze(str);
rb_define_const(Module_Magick, "Magick_version", str);
str = rb_str_new2(PACKAGE_STRING);
- rb_obj_freeze(str);
+ (void) rb_obj_freeze(str);
rb_define_const(Module_Magick, "Version", str);
sprintf(long_version,
- "This is %s ($Date: 2006/10/21 13:43:23 $) Copyright (C) 2006 by Timothy P. Hunter\n"
+ "This is %s ($Date: 2007/01/20 15:45:29 $) Copyright (C) 2007 by Timothy P. Hunter\n"
"Built with %s\n"
"Built for %s\n"
"Web page: http://rmagick.rubyforge.org\n"
"Email: rmagick@rubyforge.org\n",
PACKAGE_STRING, mgk_version, RUBY_VERSION_STRING);
str = rb_str_new2(long_version);
- rb_obj_freeze(str);
+ (void) rb_obj_freeze(str);
rb_define_const(Module_Magick, "Long_version", str);
}