ext/RMagick/rmutil.c in rmagick-1.8.3 vs ext/RMagick/rmutil.c in rmagick-1.9.0

- old
+ new

@@ -1,6 +1,6 @@ -/* $Id: rmutil.c,v 1.51 2005/03/05 16:18:39 rmagick Exp $ */ +/* $Id: rmutil.c,v 1.53 2005/06/21 22:55:01 rmagick Exp $ */ /*============================================================================\ | Copyright (C) 2005 by Timothy P. Hunter | Name: rmutil.c | Author: Tim Hunter | Purpose: Utility functions for RMagick @@ -2758,12 +2758,43 @@ } rm_handle_error(&badboy->exception); } } +/* + Extern: rm_progress_monitor + Purpose: SetImage(Info)ProgressMonitor exit + Notes: ImageMagick's "tag" argument is unused. We pass along the method name instead. +*/ +#if defined(HAVE_SETIMAGEPROGRESSMONITOR) +MagickBooleanType rm_progress_monitor( + const char *tag, + const MagickOffsetType of, + const MagickSizeType sp, + void *client_data) +{ + volatile VALUE rval; + volatile VALUE method, offset, span; +#if defined(HAVE_LONG_LONG) // defined in Ruby's defines.h + offset = rb_ll2inum(of); + span = rb_ull2inum(sp); +#else + offset = rb_int2big((long)of); + span = rb_uint2big((unsigned long)sp); +#endif + + method = rb_str_new2(rb_id2name(rb_frame_last_func())); + + rval = rb_funcall((VALUE)client_data, ID_call, 3, method, offset, span); + + return RTEST(rval) ? MagickTrue : MagickFalse; +} +#endif + + /* - Extern: unseq + Extern: rm_split Purpose: Remove the ImageMagick links between images in an scene sequence. Notes: The images remain grouped via the ImageList */ void