43 #include "magick/studio.h" 44 #include "magick/artifact.h" 45 #include "magick/image.h" 46 #include "magick/log.h" 47 #include "magick/monitor.h" 48 #include "magick/monitor-private.h" 49 #include "magick/pixel-private.h" 50 #include "magick/statistic-private.h" 76 MagickPrivate MagickBooleanType MonitorComponentGenesis(
void)
79 ActivateSemaphoreInfo(&monitor_semaphore);
101 MagickPrivate
void MonitorComponentTerminus(
void)
104 ActivateSemaphoreInfo(&monitor_semaphore);
105 LockSemaphoreInfo(monitor_semaphore);
106 UnlockSemaphoreInfo(monitor_semaphore);
107 DestroySemaphoreInfo(&monitor_semaphore);
141 MagickExport MagickBooleanType SetImageProgress(
const Image *image,
142 const char *tag,
const MagickOffsetType offset,
const MagickSizeType extent)
145 message[MagickPathExtent];
150 if (image->progress_monitor == (MagickProgressMonitor) NULL)
152 (void) FormatLocaleString(message,MagickPathExtent,
"%s/%s",
153 tag == (
const char *) NULL ?
"null" : tag,image->filename);
155 ActivateSemaphoreInfo(&monitor_semaphore);
156 LockSemaphoreInfo(monitor_semaphore);
157 status=image->progress_monitor(message,offset,extent,image->client_data);
158 (void) FormatLocaleString(message,MagickPathExtent,
"%g%%:%s:%s",
159 (100.0*offset*MagickSafeReciprocal(extent-1.0)),
160 tag == (
const char *) NULL ?
"null" : tag,image->filename);
161 (void) SetImageArtifact((
Image *) image,
"monitor:progress",message);
162 UnlockSemaphoreInfo(monitor_semaphore);
203 MagickExport MagickProgressMonitor SetImageProgressMonitor(
Image *image,
204 const MagickProgressMonitor progress_monitor,
void *client_data)
206 MagickProgressMonitor
209 previous_monitor=image->progress_monitor;
210 image->progress_monitor=progress_monitor;
211 image->client_data=client_data;
212 return(previous_monitor);
252 MagickExport MagickProgressMonitor SetImageInfoProgressMonitor(
253 ImageInfo *image_info,
const MagickProgressMonitor progress_monitor,
256 MagickProgressMonitor
259 previous_monitor=image_info->progress_monitor;
260 image_info->progress_monitor=progress_monitor;
261 image_info->client_data=client_data;
262 return(previous_monitor);