Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Signals | Public Member Functions | Private Member Functions | Private Attributes
omni::ui::Blend Class Reference

Dockwidget for editing the blend mask. More...

#include <Blend.h>

Inheritance diagram for omni::ui::Blend:
Inheritance graph
[legend]
Collaboration diagram for omni::ui::Blend:
Collaboration graph
[legend]

Signals

void dataModelChanged ()
 

Public Member Functions

 Blend (QWidget *=nullptr)
 
 ~Blend ()
 
- Public Member Functions inherited from omni::ui::DockWidget
 DockWidget (QWidget *=nullptr)
 
template<typename UI >
 DockWidget (UI &_ui, QWidget *_parent=nullptr)
 
virtual ~DockWidget ()
 
- Public Member Functions inherited from omni::ui::mixin::DataModel< DATAMODEL, SHARED >
 DataModel ()
 
void setDataModel (pointer_type _dataModel)
 Set new data model. More...
 
pointer_type dataModel ()
 Return pointer to data model. More...
 
const pointer_type dataModel () const
 Return pointer to data model (const version) More...
 
virtual void updateFrontend ()
 Push data to frontend widgets and all child widgets. More...
 
virtual void updateDataModel ()
 Update the data model interface. More...
 

Private Member Functions

void dataToFrontend ()
 Update sliders from given blend mask. More...
 
bool frontendToData ()
 Assign slider values to blend mask. More...
 
omni::BlendMask const * blendMask () const
 
omni::BlendMaskblendMask ()
 

Private Attributes

std::unique_ptr< Ui::Blend > ui_
 

Additional Inherited Members

- Public Types inherited from omni::ui::mixin::DataModel< DATAMODEL, SHARED >
typedef DATAMODEL data_model_type
 Data type. More...
 
typedef DataModel
< data_model_type, SHARED > 
type
 This type. More...
 
typedef detail::PointerType
< data_model_type, SHARED > 
pointer_type_handler
 Pointer type handler. More...
 
typedef pointer_type_handler::type pointer_type
 Derived pointer type. More...
 
- Protected Member Functions inherited from omni::ui::DockWidget
template<typename UI >
void setup (UI &_ui)
 Setup ui form UI parameter is smart pointer (e.g. unique_ptr) to UI form. More...
 
- Protected Member Functions inherited from omni::ui::mixin::Locked
template<typename F >
void locked (F f)
 Lock widget and execute given functor. More...
 
bool isLocked () const
 Return true if widget is locked. More...
 

Detailed Description

Dockwidget for editing the blend mask.

Constructor & Destructor Documentation

omni::ui::Blend::Blend ( QWidget *  _parent = nullptr)

Setup top, left, right and bottom sliders

Setup gamma

Setup brush widgets

Blend mode combobox

31  :
32  DockWidget(_parent)
33  {
34  this->setup(ui_);
35 
36  auto setupSlider = [&](RangedFloat *_slider, QString _label)
37  {
38  _slider->setLabel(_label);
39  _slider->setRange(0.0, 0.5);
40  _slider->setSingleStep(0.01);
41  _slider->setPageStep(0.05);
42  _slider->setGripSize(0);
43  connect(_slider,
45  this,
47  };
48 
49  /// Setup top, left, right and bottom sliders
50  {
51  setupSlider(ui_->sliderTop, "Top");
52  setupSlider(ui_->sliderLeft, "Left");
53  setupSlider(ui_->sliderRight, "Right");
54  setupSlider(ui_->sliderBottom, "Bottom");
55  setupSlider(ui_->sliderInputOpacity, "Input Opacity");
56  ui_->sliderInputOpacity->setRange(0.0, 1.0);
57  }
58 
59  /// Setup gamma
60  {
61  setupSlider(ui_->sliderGamma, "Gamma");
62  ui_->sliderGamma->setRange(0.0, 3.0);
63  ui_->sliderGamma->setSingleStep(0.05);
64  ui_->sliderGamma->setPageStep(0.3);
65  }
66 
67  /// Setup brush widgets
68  {
69  setupSlider(ui_->sliderSize, "Brush size");
70  ui_->sliderSize->setRange(5.0, 500.0);
71  ui_->sliderSize->setSingleStep(5.0);
72  ui_->sliderSize->setPageStep(50.0);
73 
74  setupSlider(ui_->sliderFeather, "Feather");
75  ui_->sliderFeather->setRange(0.1, 4.0);
76  ui_->sliderFeather->setSingleStep(0.1);
77  ui_->sliderFeather->setPageStep(0.5);
78 
79  setupSlider(ui_->sliderOpacity, "Opacity");
80  ui_->sliderOpacity->setRange(0.0, 1.0);
81  ui_->sliderOpacity->setSingleStep(0.01);
82  ui_->sliderOpacity->setPageStep(0.1);
83 
84  connect(ui_->chkInvert, &QCheckBox::clicked, this,
86  }
87 
88  /// Blend mode combobox
89  {
90  connect(ui_->boxMaskColor,
91  static_cast<void (QComboBox::*)(int)>(&QComboBox::
92  currentIndexChanged), this,
94  }
95  }
void setup(UI &_ui)
Setup ui form UI parameter is smart pointer (e.g. unique_ptr) to UI form.
Definition: DockWidget.h:44
DockWidget(QWidget *=nullptr)
Definition: DockWidget.cpp:24
virtual void updateDataModel()
Update the data model interface.
Definition: DataModel.h:134
std::unique_ptr< Ui::Blend > ui_
Definition: Blend.h:63
omni::ui::Blend::~Blend ( )
98  {}

Member Function Documentation

omni::BlendMask const * omni::ui::Blend::blendMask ( ) const
private
159  {
160  if (!dataModel()) return nullptr;
161 
162  return dataModel()->tunings().current() ? &dataModel()->tunings().
163  current()->blendMask() : nullptr;
164  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
omni::BlendMask * omni::ui::Blend::blendMask ( )
private
167  {
168  if (!dataModel()) return nullptr;
169 
170  return dataModel()->tunings().current() ? &dataModel()->tunings().
171  current()->blendMask() : nullptr;
172  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
void omni::ui::Blend::dataModelChanged ( )
signal
void omni::ui::Blend::dataToFrontend ( )
privatevirtual

Update sliders from given blend mask.

Implements omni::ui::mixin::DataModel< DATAMODEL, SHARED >.

101  {
102  if (!blendMask()) return;
103 
104  ui_->sliderLeft->setValue(blendMask()->leftWidth());
105  ui_->sliderRight->setValue(blendMask()->rightWidth());
106  ui_->sliderTop->setValue(blendMask()->topWidth());
107  ui_->sliderBottom->setValue(blendMask()->bottomWidth());
108  ui_->sliderGamma->setValue(blendMask()->gamma());
109  ui_->sliderInputOpacity->setValue(
110  dataModel()->blendSettings().inputOpacity());
111 
112  auto& _brush = blendMask()->brush();
113  ui_->sliderSize->setValue(blendMask()->brushSize());
114  ui_->sliderFeather->setValue(_brush.feather());
115  ui_->sliderOpacity->setValue(_brush.opacity());
116  ui_->chkInvert->setChecked(_brush.invert());
117  ui_->brushPreview->update(_brush.feather(),
118  _brush.opacity(), _brush.invert());
119  }
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
omni::BlendMask const * blendMask() const
Definition: Blend.cpp:158
BlendBrush const & brush() const
Return reference blend brush (const version)
Definition: BlendMask.cpp:104
std::unique_ptr< Ui::Blend > ui_
Definition: Blend.h:63
float gamma(float v, float gamma_value)
Calculate gamma corrected value.
Definition: colorcorrection.h:46
bool omni::ui::Blend::frontendToData ( )
privatevirtual

Assign slider values to blend mask.

Implements omni::ui::mixin::DataModel< DATAMODEL, SHARED >.

122  {
123  if (!blendMask()) return false;
124 
125  float _left = ui_->sliderLeft->value();
126  float _right = ui_->sliderRight->value();
127  float _top = ui_->sliderTop->value();
128  float _bottom = ui_->sliderBottom->value();
129 
130  blendMask()->setRect(
131  QRectF(_left, _top, 1.0 - _right - _left, 1.0 - _top - _bottom));
132 
133  blendMask()->setGamma(ui_->sliderGamma->value());
134 
135  float _feather = ui_->sliderFeather->value();
136  float _opacity = ui_->sliderOpacity->value();
137  bool _invert = ui_->chkInvert->isChecked();
138 
139  blendMask()->setBrush(
140  ui_->sliderSize->value(), // Size
141  _feather, _opacity, _invert);
142  ui_->brushPreview->update(_feather, _opacity, _invert);
143 
144  int _blendModeIndex = ui_->boxMaskColor->currentIndex();
145  auto& _blendSettings = dataModel()->blendSettings();
146 
147  if (_blendModeIndex == 0) _blendSettings.setColorMode(
149 
150  if (_blendModeIndex == 1) _blendSettings.setColorMode(
152 
153  _blendSettings.setInputOpacity(ui_->sliderInputOpacity->value());
154 
155  return true;
156  }
void setRect(QRectF const &)
Sets rect of blends Clamps rect to borders 0,0,1,1 if its overlapping.
Definition: BlendMask.cpp:41
pointer_type dataModel()
Return pointer to data model.
Definition: DataModel.h:118
omni::BlendMask const * blendMask() const
Definition: Blend.cpp:158
void setBrush(float _size, float _feather, float _opacity, bool _invert)
Set blend brush settings.
Definition: BlendMask.cpp:83
std::unique_ptr< Ui::Blend > ui_
Definition: Blend.h:63
void setGamma(float _gamma)
Sets gamma value for edge mask.
Definition: BlendMask.cpp:71

Field Documentation

std::unique_ptr<Ui::Blend> omni::ui::Blend::ui_
private

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