# gdcmSimpleSubjectWatcher.h

Go to the documentation of this file.

    00001 /*=========================================================================
    00002
    00003   Program: GDCM (Grassroots DICOM). A DICOM library
    00004   Module:  $URL$
    00005
    00006   Copyright (c) 2006-2010 Mathieu Malaterre
    00007   All rights reserved.
    00008   See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
    00009
    00010      This software is distributed WITHOUT ANY WARRANTY; without even
    00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
    00012      PURPOSE.  See the above copyright notice for more information.
    00013
    00014 =========================================================================*/
    00015 #ifndef GDCMSIMPLESUBJECTWATCHER_H
    00016 #define GDCMSIMPLESUBJECTWATCHER_H
    00017
    00018 #include "gdcmSubject.h"
    00019 #include "gdcmCommand.h"
    00020 #include "gdcmSmartPointer.h"
    00021 #include "gdcmAnonymizeEvent.h"
    00022
    00023 namespace gdcm
    00024 {
    00025 //-----------------------------------------------------------------------------
    00026 class Event;
    00031 class GDCM_EXPORT SimpleSubjectWatcher
    00032 {
    00033 public:
    00034   SimpleSubjectWatcher(Subject * s, const char *comment = "");
    00035   virtual ~SimpleSubjectWatcher();
    00036
    00037 protected:
    00038   virtual void StartFilter();
    00039   virtual void EndFilter();
    00040   virtual void ShowProgress(Subject *caller, const Event &evt);
    00041   virtual void ShowIteration();
    00042   virtual void ShowAnonymization(Subject *caller, const Event &evt);
    00043   virtual void ShowAbort();
    00044
    00045 protected:
    00046   // Custom API used for internal Testing do not use !
    00047   void TestAbortOn();
    00048   void TestAbortOff();
    00049
    00050 private:
    00051   SmartPointer<gdcm::Subject> m_Subject;
    00052   std::string m_Comment;
    00053
    00054   typedef SimpleMemberCommand<SimpleSubjectWatcher> SimpleCommandType;
    00055   typedef MemberCommand<SimpleSubjectWatcher> CommandType;
    00056
    00057   SmartPointer<SimpleCommandType> m_StartFilterCommand;
    00058   SmartPointer<SimpleCommandType> m_EndFilterCommand;
    00059   SmartPointer<CommandType> m_ProgressFilterCommand;
    00060   SmartPointer<SimpleCommandType> m_IterationFilterCommand;
    00061   SmartPointer<SimpleCommandType> m_AbortFilterCommand;
    00062   SmartPointer<CommandType> m_AnonymizeFilterCommand;
    00063
    00064   unsigned long m_StartTag;
    00065   unsigned long m_EndTag;
    00066   unsigned long m_ProgressTag;
    00067   unsigned long m_IterationTag;
    00068   unsigned long m_AbortTag;
    00069   unsigned long m_AnonymizeTag;
    00070
    00071   bool m_TestAbort;
    00072
    00073   SimpleSubjectWatcher(const SimpleSubjectWatcher&);  // Not implemented.
    00074   void operator=(const SimpleSubjectWatcher&);  // Not implemented.
    00075 };
    00076 } // end namespace gdcm
    00077 //-----------------------------------------------------------------------------
    00078 #endif //GDCMSIMPLESUBJECTWATCHER_H