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); }