/usr/include/InsightToolkit/Common/itkProgressAccumulator.h is in libinsighttoolkit3-dev 3.20.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkProgressAccumulator.h
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkProgressAccumulator_h
#define __itkProgressAccumulator_h
#include "itkCommand.h"
#include "itkObject.h"
#include "itkProcessObject.h"
#include <vector>
namespace itk {
/**
* \class ProgressAccumulator
* \brief Facilitates progress reporting for filters that wrap around
* multiple other filters.
*
* This object allows a mini-pipeline filters to easily keep track of the
* progress performed by the internal filters.
* See DiscreteGaussianImageFilter.txx for an implementation example.
*
* \sa DiscreteGaussianImageFilter
*
*/
class ITKCommon_EXPORT ProgressAccumulator : public Object
{
public:
/** Standard class typedefs. */
typedef ProgressAccumulator Self;
typedef Object Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Typedef for inputting filters */
typedef ProcessObject GenericFilterType;
typedef GenericFilterType::Pointer GenericFilterPointer;
/** Standard New method. */
itkNewMacro(Self);
/** Runtime information support. */
itkTypeMacro(ProgressAccumulator,Object);
/** Get the total progress accumulated by this object */
itkGetConstMacro(AccumulatedProgress,float);
/** Set the mini-pipeline filter */
itkSetObjectMacro(MiniPipelineFilter,ProcessObject);
/** Set the mini-pipeline filter */
itkGetConstObjectMacro(MiniPipelineFilter,ProcessObject);
/**
* Register a filter with the progress accumulator and specify the
* fraction of the overall progress associated with this filter
*/
void RegisterInternalFilter(GenericFilterType *filter, float weight);
/**
* Unregister all filters that have been registered with this object
*/
void UnregisterAllFilters();
/**
* Reset the progress accumulator. This method should be called in
* the beginning of the GenerateData() method in the mini-pipeline
* filter.
*/
void ResetProgress();
void ResetFilterProgressAndKeepAccumulatedProgress();
protected:
ProgressAccumulator();
virtual ~ProgressAccumulator();
void PrintSelf(std::ostream &s, Indent indent) const;
private:
/** Command for observing progress of pipeline filters */
typedef MemberCommand< Self > CommandType;
typedef CommandType::Pointer CommandPointer;
/** Structure associated with each filter in the pipeline */
struct FilterRecord
{
// Pointer to the filter
GenericFilterPointer Filter;
// The weight of the filter in total progress of the mini-pipeline
float Weight;
// The tags for adding/removing observers to mini-pipeline filter
unsigned long ProgressObserverTag;
unsigned long IterationObserverTag;
// The progress accumulated by the filter since last Reset()
float Progress;
};
/** A callback function that is called by the progressing filters */
void ReportProgress(Object * object, const EventObject & event);
/** The client mini-pipeline filter */
GenericFilterPointer m_MiniPipelineFilter;
/** An array of record structures */
typedef std::vector<struct FilterRecord> FilterRecordVector;
/** The total accumulated progress */
float m_AccumulatedProgress;
/** The total accumulated progress for multiple runs of the mini-pipeline */
float m_BaseAccumulatedProgress;
/**
* A list of progress proportions of the different filters in the
* pipeline
*/
FilterRecordVector m_FilterRecord;
/** The callback command */
CommandPointer m_CallbackCommand;
};
} // End namespace itk
#endif // __itkProgressAccumulator_h_
|