Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
omni::ui::mixin::Scale< SLIDER, SCALAR > Class Template Reference

Scales a set of sliders and sets a common unit suffix. More...

#include <Scale.h>

Collaboration diagram for omni::ui::mixin::Scale< SLIDER, SCALAR >:
Collaboration graph
[legend]

Data Structures

struct  SliderInfo
 Slider Info struct saves min, max and step values. More...
 

Public Types

typedef SLIDER slider_type
 
typedef SCALAR scalar_type
 

Public Member Functions

 Scale ()
 
virtual void setScale (float _scale)
 Set scale and apply to sliders. More...
 
bool rescaleValues () const
 
void setRescaleValues (bool _rescaleValues)
 
float scale () const
 Return scale value. More...
 
QString suffix () const
 Common unit of sliders. More...
 
void setSuffix (QString const &_suffix)
 Set suffix (unit) of slider. More...
 
void registerScaledSlider (slider_type *_slider)
 Register slider to be scaled. More...
 
void unregisterScaledSlider (slider_type *_slider)
 Remove slider from list, keep scale. More...
 

Static Public Member Functions

static int getPrecision (float _scale)
 Return precesion by scale. More...
 

Private Attributes

QString suffix_
 Common suffix is meter. More...
 
int precision_ = 2
 
float scale_ = 1.0
 
bool rescaleValues_ = true
 
std::map< slider_type
*, SliderInfo
sliders_
 

Detailed Description

template<typename SLIDER, typename SCALAR = float>
class omni::ui::mixin::Scale< SLIDER, SCALAR >

Scales a set of sliders and sets a common unit suffix.

Member Typedef Documentation

template<typename SLIDER, typename SCALAR = float>
typedef SCALAR omni::ui::mixin::Scale< SLIDER, SCALAR >::scalar_type
template<typename SLIDER, typename SCALAR = float>
typedef SLIDER omni::ui::mixin::Scale< SLIDER, SCALAR >::slider_type

Constructor & Destructor Documentation

template<typename SLIDER, typename SCALAR = float>
omni::ui::mixin::Scale< SLIDER, SCALAR >::Scale ( )
inline
35 : suffix_("m") {}
QString suffix_
Common suffix is meter.
Definition: Scale.h:146

Member Function Documentation

template<typename SLIDER, typename SCALAR = float>
static int omni::ui::mixin::Scale< SLIDER, SCALAR >::getPrecision ( float  _scale)
inlinestatic

Return precesion by scale.

107  {
108  if (_scale <= 0.1) {
109  return 4;
110  }
111 
112  if (_scale <= 1) {
113  return 3;
114  }
115 
116  if (_scale <= 10) {
117  return 2;
118  }
119 
120  if (_scale <= 100) {
121  return 1;
122  }
123  return 2;
124  }
template<typename SLIDER, typename SCALAR = float>
void omni::ui::mixin::Scale< SLIDER, SCALAR >::registerScaledSlider ( slider_type _slider)
inline

Register slider to be scaled.

89  {
90  if (sliders_.count(_slider)) return;
91 
92  sliders_[_slider] = SliderInfo(_slider->minimum(), _slider->maximum(),
93  _slider->pageStep(),
94  _slider->singleStep(),
95  _slider->defaultValue(),
96  _slider->pivot());
97  }
std::map< slider_type *, SliderInfo > sliders_
Definition: Scale.h:150
template<typename SLIDER, typename SCALAR = float>
bool omni::ui::mixin::Scale< SLIDER, SCALAR >::rescaleValues ( ) const
inline
61  {
62  return rescaleValues_;
63  }
bool rescaleValues_
Definition: Scale.h:149
template<typename SLIDER, typename SCALAR = float>
float omni::ui::mixin::Scale< SLIDER, SCALAR >::scale ( ) const
inline

Return scale value.

70  {
71  return scale_;
72  }
float scale_
Definition: Scale.h:148
template<typename SLIDER, typename SCALAR = float>
void omni::ui::mixin::Scale< SLIDER, SCALAR >::setRescaleValues ( bool  _rescaleValues)
inline
65  {
66  rescaleValues_ = _rescaleValues;
67  }
bool rescaleValues_
Definition: Scale.h:149
template<typename SLIDER, typename SCALAR = float>
virtual void omni::ui::mixin::Scale< SLIDER, SCALAR >::setScale ( float  _scale)
inlinevirtual

Set scale and apply to sliders.

38  {
39  float _oldScale = scale_;
40 
41  scale_ = _scale;
42 
43  for (auto& _slider_info : sliders_) {
44  auto& _slider = _slider_info.first;
45  auto& _info = _slider_info.second;
46  _slider->setRange(_info.min_ * scale_, _info.max_ * scale_);
47 
48  if (rescaleValues_) {
49  auto _value = _slider->value() / _oldScale * scale_;
50  _slider->setValue(_value);
51  }
52 
53  _slider->setSingleStep(_info.singleStep_ * scale_);
54  _slider->setDefaultValue(_info.defaultValue_ * scale_);
55  _slider->setPageStep(_info.pageStep_ * scale_);
56  _slider->setPrecision(getPrecision(scale_));
57  _slider->setPivot(_info.pivot_);
58  }
59  }
std::map< slider_type *, SliderInfo > sliders_
Definition: Scale.h:150
float scale_
Definition: Scale.h:148
bool rescaleValues_
Definition: Scale.h:149
static int getPrecision(float _scale)
Return precesion by scale.
Definition: Scale.h:107
template<typename SLIDER, typename SCALAR = float>
void omni::ui::mixin::Scale< SLIDER, SCALAR >::setSuffix ( QString const &  _suffix)
inline

Set suffix (unit) of slider.

80  {
81  suffix_ = _suffix;
82 
83  for (auto& _slider_info : sliders_) {
84  _slider_info.first->setSuffix(suffix_);
85  }
86  }
QString suffix_
Common suffix is meter.
Definition: Scale.h:146
std::map< slider_type *, SliderInfo > sliders_
Definition: Scale.h:150
template<typename SLIDER, typename SCALAR = float>
QString omni::ui::mixin::Scale< SLIDER, SCALAR >::suffix ( ) const
inline

Common unit of sliders.

75  {
76  return suffix_;
77  }
QString suffix_
Common suffix is meter.
Definition: Scale.h:146
template<typename SLIDER, typename SCALAR = float>
void omni::ui::mixin::Scale< SLIDER, SCALAR >::unregisterScaledSlider ( slider_type _slider)
inline

Remove slider from list, keep scale.

100  {
101  if (!sliders_.count(_slider)) return;
102 
103  sliders_.erase(_slider);
104  }
std::map< slider_type *, SliderInfo > sliders_
Definition: Scale.h:150

Field Documentation

template<typename SLIDER, typename SCALAR = float>
int omni::ui::mixin::Scale< SLIDER, SCALAR >::precision_ = 2
private
template<typename SLIDER, typename SCALAR = float>
bool omni::ui::mixin::Scale< SLIDER, SCALAR >::rescaleValues_ = true
private
template<typename SLIDER, typename SCALAR = float>
float omni::ui::mixin::Scale< SLIDER, SCALAR >::scale_ = 1.0
private
template<typename SLIDER, typename SCALAR = float>
std::map<slider_type *, SliderInfo> omni::ui::mixin::Scale< SLIDER, SCALAR >::sliders_
private
template<typename SLIDER, typename SCALAR = float>
QString omni::ui::mixin::Scale< SLIDER, SCALAR >::suffix_
private

Common suffix is meter.


The documentation for this class was generated from the following file: