Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "mitkMultiStepper.h"
00020 #include "mitkStepper.h"
00021
00022 mitk::MultiStepper::MultiStepper()
00023 {
00024 }
00025
00026 mitk::MultiStepper::~MultiStepper()
00027 {
00028 }
00029 void mitk::MultiStepper::AddStepper(Stepper::Pointer stepper,unsigned int repeat) {
00030 m_SubSteppers.insert(stepper);
00031 m_ScaleFactors.insert(std::make_pair(stepper,repeat));
00032 UpdateStepCount();
00033 }
00034 void mitk::MultiStepper::RemoveStepper(Stepper::Pointer stepper, unsigned int ) {
00035 m_SubSteppers.erase(stepper);
00036 m_ScaleFactors.erase(stepper);
00037 UpdateStepCount();
00038 }
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 void mitk::MultiStepper::SetPos(unsigned int pos) {
00061 Stepper::SetPos(pos);
00062 for (StepperSet::iterator it = m_SubSteppers.begin(); it != m_SubSteppers.end() ; it++ ) {
00063 unsigned int count = (*it)->GetSteps() * m_ScaleFactors[(*it)];
00064 if ((this->GetSteps() != 0 ) && ((*it)->GetSteps() != 0)) {
00065 (*it)->SetPos((pos * count / this->GetSteps() ) % (*it)->GetSteps()) ;
00066 }
00067 }
00068 };
00069
00070 void mitk::MultiStepper::SetSteps(unsigned int ) {
00071 assert(false);
00072 };
00073
00074 void mitk::MultiStepper::UpdateStepCount() {
00075 m_Steps=0;
00076 m_LargestRangeStepper = NULL;
00077 for (StepperSet::iterator it = m_SubSteppers.begin(); it != m_SubSteppers.end() ; it++ ) {
00078 unsigned int count = (*it)->GetSteps() * m_ScaleFactors[(*it)];
00079 if (count > m_Steps) {
00080 m_Steps = count;
00081 m_LargestRangeStepper = *it;
00082 }
00083 }
00084 }