ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
00001 /*========================================================================= 00002 * 00003 * Copyright Insight Software Consortium 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0.txt 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 * 00017 *=========================================================================*/ 00018 #ifndef __itkIterationReporter_h 00019 #define __itkIterationReporter_h 00020 00021 #include "itkProcessObject.h" 00022 00023 namespace itk 00024 { 00055 class ITKCommon_EXPORT IterationReporter 00056 { 00057 public: 00059 IterationReporter(ProcessObject *filter, ThreadIdType threadId, 00060 unsigned long stepsPerUpdate = 100); 00061 00063 ~IterationReporter() {} 00064 00066 void CompletedStep() 00067 { 00068 // Inline implementation for efficiency. 00069 // We don't need to test for thread id 0 here because the 00070 // constructor sets m_StepsBeforeUpdate to a value larger than 00071 // the number of pixels for threads other than 0. 00072 if ( --m_StepsBeforeUpdate == 0 ) 00073 { 00074 m_StepsBeforeUpdate = m_StepsPerUpdate; 00075 m_Filter->InvokeEvent( IterationEvent() ); 00076 } 00077 } 00079 00080 protected: 00081 ProcessObject *m_Filter; 00082 ThreadIdType m_ThreadId; 00083 unsigned long m_StepsPerUpdate; 00084 unsigned long m_StepsBeforeUpdate; 00085 }; 00086 } // end namespace itk 00087 00088 #endif 00089