Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkMultiStepper.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #include "mitkMultiStepper.h"
14 #include "mitkStepper.h"
15 
17 {
18 }
19 
21 {
22 }
23 void mitk::MultiStepper::AddStepper(Stepper::Pointer stepper, unsigned int repeat)
24 {
25  m_SubSteppers.insert(stepper);
26  m_ScaleFactors.insert(std::make_pair(stepper, repeat));
28 }
29 void mitk::MultiStepper::RemoveStepper(Stepper::Pointer stepper, unsigned int /* repeat */)
30 {
31  m_SubSteppers.erase(stepper);
32  m_ScaleFactors.erase(stepper);
34 }
35 /*void mitk::MultiStepper::Next() {
36  for (StepperSet::iterator it = m_SubSteppers.begin(); it != m_SubSteppers.end() ; it++ ) {
37  (*it)->Next();
38  }
39 }
40 void mitk::MultiStepper::Previous() {
41  for (StepperSet::iterator it = m_SubSteppers.begin(); it != m_SubSteppers.end() ; it++ ) {
42  (*it)->Previous();
43  }
44 }
45 void mitk::MultiStepper::First() {
46  for (StepperSet::iterator it = m_SubSteppers.begin(); it != m_SubSteppers.end() ; it++ ) {
47  (*it)->First();
48  }
49 }
50 void mitk::MultiStepper::Last() {
51  for (StepperSet::iterator it = m_SubSteppers.begin(); it != m_SubSteppers.end() ; it++ ) {
52  (*it)->Last();
53  }
54 }*/
55 
56 void mitk::MultiStepper::SetPos(unsigned int pos)
57 {
58  Stepper::SetPos(pos);
59  for (auto it = m_SubSteppers.begin(); it != m_SubSteppers.end(); it++)
60  {
61  unsigned int count = (*it)->GetSteps() * m_ScaleFactors[(*it)];
62  if ((this->GetSteps() != 0) && ((*it)->GetSteps() != 0))
63  {
64  (*it)->SetPos((pos * count / this->GetSteps()) % (*it)->GetSteps());
65  }
66  }
67 };
68 
69 void mitk::MultiStepper::SetSteps(unsigned int /*steps*/)
70 {
71  assert(false);
72 };
73 
75 {
76  m_Steps = 0;
77  m_LargestRangeStepper = nullptr;
78  for (auto it = m_SubSteppers.begin(); it != m_SubSteppers.end(); it++)
79  {
80  unsigned int count = (*it)->GetSteps() * m_ScaleFactors[(*it)];
81  if (count > m_Steps)
82  {
83  m_Steps = count;
85  }
86  }
87 }
Stepper::Pointer m_LargestRangeStepper
void AddStepper(Stepper::Pointer stepper, unsigned int repeat=1)
void RemoveStepper(Stepper::Pointer stepper, unsigned int repeat=1)
ScaleFactorMap m_ScaleFactors
unsigned int m_Steps
Definition: mitkStepper.h:126
virtual void SetPos(unsigned int pos)
Definition: mitkStepper.h:55
void SetSteps(const unsigned int steps) override
StepperSet m_SubSteppers
virtual unsigned int GetSteps() const
void SetPos(unsigned int pos) override