13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
43ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%               M   M   OOO   N   N  IIIII  TTTTT   OOO   RRRR                %
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%               MM MM  O   O  NN  N    I      T    O   O  R   R               %
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%               M M M  O   O  N N N    I      T    O   O  RRRR                %
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%               M   M  O   O  N  NN    I      T    O   O  R R                 %
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%               M   M   OOO   N   N  IIIII    T     OOO   R  R                %
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                     MagickCore Progress Monitor Methods                     %
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                              Software Design                                %
16de984cdc3631106b1cbbb8d3972b76a0fc27e8e8cristy%                                   Cristy                                    %
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                               December 1995                                 %
183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
207ce65e7125a4e1df1a274ce373c537a9df9c16cdCristy%  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization      %
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  dedicated to making software imaging solutions freely available.           %
223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  You may not use this file except in compliance with the License.  You may  %
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  obtain a copy of the License at                                            %
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    http://www.imagemagick.org/script/license.php                            %
273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  Unless required by applicable law or agreed to in writing, software        %
293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  distributed under the License is distributed on an "AS IS" BASIS,          %
303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  See the License for the specific language governing permissions and        %
323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  limitations under the License.                                             %
333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Include declarations.
423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
434c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/studio.h"
444c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/image.h"
454c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/log.h"
464c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/monitor.h"
473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%   S e t I m a g e P r o g r e s s M o n i t o r                             %
543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  SetImageProgressMonitor() sets the image progress monitor to the specified
603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  method and returns the previous progress monitor if any.  The progress
613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  monitor method looks like this:
623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    MagickBooleanType MagickProgressMonitor(const char *text,
64b32b90a7e1ee2275333589072c496b5f69e17feccristy%      const MagickOffsetType offset,const MagickSizeType extent,
653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      void *client_data)
663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  If the progress monitor returns MagickFalse, the current operation is
683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  interrupted.
693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  The format of the SetImageProgressMonitor method is:
713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      MagickProgressMonitor SetImageProgressMonitor(Image *image,
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%        const MagickProgressMonitor progress_monitor,void *client_data)
743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  A description of each parameter follows:
763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o image: the image.
783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o progress_monitor: Specifies a pointer to a method to monitor progress of
803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      an image operation.
813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o client_data: Specifies a pointer to any client data.
833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
853ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagickExport MagickProgressMonitor SetImageProgressMonitor(Image *image,
863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const MagickProgressMonitor progress_monitor,void *client_data)
873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickProgressMonitor
893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    previous_monitor;
903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  previous_monitor=image->progress_monitor;
923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image->progress_monitor=progress_monitor;
933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image->client_data=client_data;
943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(previous_monitor);
953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%   S e t I m a g e I n f o P r o g r e s s M o n i t o r                     %
1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
1043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
1053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
1063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  SetImageInfoProgressMonitor() sets the image_info progress monitor to the
1093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  specified method and returns the previous progress monitor if any.  The
1103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  progress monitor method looks like this:
1113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    MagickBooleanType MagickProgressMonitor(const char *text,
113b32b90a7e1ee2275333589072c496b5f69e17feccristy%      const MagickOffsetType offset,const MagickSizeType extent,
1143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      void *client_data)
1153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  If the progress monitor returns MagickFalse, the current operation is
1173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  interrupted.
1183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  The format of the SetImageInfoProgressMonitor method is:
1203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      MagickProgressMonitor SetImageInfoProgressMonitor(ImageInfo *image_info,
1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%        const MagickProgressMonitor progress_monitor,void *client_data)
1233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  A description of each parameter follows:
1253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o image_info: the image info.
1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o progress_monitor: Specifies a pointer to a method to monitor progress of
1293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      an image operation.
1303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o client_data: Specifies a pointer to any client data.
1323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
1333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
1343ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagickExport MagickProgressMonitor SetImageInfoProgressMonitor(
1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ImageInfo *image_info,const MagickProgressMonitor progress_monitor,
1363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  void *client_data)
1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickProgressMonitor
1393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    previous_monitor;
1403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  previous_monitor=image_info->progress_monitor;
1423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image_info->progress_monitor=progress_monitor;
1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image_info->client_data=client_data;
1443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(previous_monitor);
1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
146