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

A projector tuning holds adjustment and distorsion data for a single projector and screen A tuning consists of a projector, warp grid, blend mask and color correction. It holds a color as well. It can render a projector calibration. More...

#include <Tuning.h>

Collaboration diagram for omni::proj::Tuning:
Collaboration graph
[legend]

Public Types

typedef omni::visual::Tuning visualizer_type
 

Public Member Functions

 Tuning (Session const &)
 Constructor. More...
 
void assignVirtualScreen ()
 Assign virtual screen to tuning. More...
 
void setScreen (QScreen const *_screen, int _subScreenIndex)
 Set screen for this tuning. More...
 
QScreen const * screen () const
 
int subScreenIndex () const
 
Projectorprojector ()
 
Projector const & projector () const
 
WarpGridwarpGrid ()
 Returns reference to warp grid. More...
 
WarpGrid const & warpGrid () const
 Returns reference to warp grid (const version) More...
 
BlendMaskblendMask ()
 Returns reference to blend mask. More...
 
BlendMask const & blendMask () const
 Returns reference to blend mask (const version) More...
 
PatchListpatches ()
 Return list of patches. More...
 
PatchList const & patches () const
 Return list of patches (const version) More...
 
ColorCorrectioncolorCorrection ()
 Color correction for projector. More...
 
ColorCorrection const & colorCorrection () const
 Color correction for projector (const) More...
 
QColor color () const
 Returns color for mapping. More...
 
void setColor (QColor const &)
 Sets color for mapping. More...
 
visualizer_typevisualizer ()
 Return pointer to visualizer. More...
 
visualizer_type const * visualizer () const
 Return pointer to visualizer (const version) More...
 
visualizer_typemakeVisualizer ()
 Make visualizer if it is not instantiated yet. More...
 
bool hasScreen () const
 Return if a screen is associated with mapping. More...
 
void renderCalibration (Calibration &_calib) const
 Render calibration. More...
 
QRect screenGeometry () const
 Rectangle of the output screen on desktop. More...
 
QRect contentGeometry () const
 Content rectangle (position) inside the screen. More...
 
Calibration renderCalibration (CalibrationMode=CalibrationMode::TEXCOORDS) const
 Render and return calibration. More...
 
int width () const
 Returns width of screen. More...
 
int height () const
 Returns height of screen. More...
 
bool outputDisabled () const
 Return flag if output is disabled, projector output is black. More...
 
bool outputEnabled () const
 Return flag if output is enabled. More...
 
void setOutputDisabled (bool _disabled=true)
 Disable output if _disabled is true, enable otherwise. More...
 
void setOutputEnabled (bool _enabled=true)
 Enable output if _enabled is true, disable otherwise. More...
 
float overlapOpacity () const
 Return opacity of overlapped blend mask. More...
 
void setOverlapOpacity (float)
 Set opacity of overlap mask in blend mode. More...
 
void toStream (QDataStream &) const
 Write tuning to stream. More...
 
void fromStream (QDataStream &)
 Read tuning from stream. More...
 
Session const & session () const
 Return const reference to owning session. More...
 
int id () const
 Return id of tuning. More...
 

Private Attributes

bool outputDisabled_ = false
 
bool overlapOpacity_ = 0.0
 
QColor color_
 
Projector projector_
 
QScreen const * screen_ = nullptr
 Screen this tuning is assigned to. If screen is nullptr, tuning is assigned to virtual screen. More...
 
int subScreenIndex_ = 0
 SubScreen index of this tuning. More...
 
WarpGrid warpGrid_
 
BlendMask blendMask_
 
ColorCorrection colorCorrection_
 
std::unique_ptr< visualizer_typeviz_
 
PatchList patches_
 
Session const & session_
 

Friends

bool operator== (Tuning const &, Tuning const &)
 Test for equality. More...
 

Detailed Description

A projector tuning holds adjustment and distorsion data for a single projector and screen A tuning consists of a projector, warp grid, blend mask and color correction. It holds a color as well. It can render a projector calibration.

Member Typedef Documentation

Constructor & Destructor Documentation

omni::proj::Tuning::Tuning ( Session const &  _session)

Constructor.

37  :
38  color_("#FFFFFF"),
39  blendMask_(*this),
40  session_(_session)
41  {
42  }
Session const & session_
Definition: Tuning.h:187
BlendMask blendMask_
Definition: Tuning.h:183
QColor color_
Definition: Tuning.h:171

Member Function Documentation

void omni::proj::Tuning::assignVirtualScreen ( )

Assign virtual screen to tuning.

44  {
45  setScreen(nullptr,0);
46  }
void setScreen(QScreen const *_screen, int _subScreenIndex)
Set screen for this tuning.
Definition: Tuning.cpp:48
BlendMask & omni::proj::Tuning::blendMask ( )

Returns reference to blend mask.

97  {
98  return blendMask_;
99  }
BlendMask blendMask_
Definition: Tuning.h:183
BlendMask const & omni::proj::Tuning::blendMask ( ) const

Returns reference to blend mask (const version)

102  {
103  return blendMask_;
104  }
BlendMask blendMask_
Definition: Tuning.h:183
QColor omni::proj::Tuning::color ( ) const

Returns color for mapping.

125  {
126  return color_;
127  }
QColor color_
Definition: Tuning.h:171
ColorCorrection & omni::proj::Tuning::colorCorrection ( )

Color correction for projector.

116  {
117  return colorCorrection_;
118  }
ColorCorrection colorCorrection_
Definition: Tuning.h:184
ColorCorrection const & omni::proj::Tuning::colorCorrection ( ) const

Color correction for projector (const)

120  {
121  return colorCorrection_;
122  }
ColorCorrection colorCorrection_
Definition: Tuning.h:184
QRect omni::proj::Tuning::contentGeometry ( ) const

Content rectangle (position) inside the screen.

167  {
168  QRect _screenRect(screenGeometry());
169  int _w = session_.screenSetup().subScreenWidth(screen());
170 
171  QRect _contentRect(_w * subScreenIndex(),0,_w,_screenRect.height());
172  return _contentRect;
173  }
Session const & session_
Definition: Tuning.h:187
QRect screenGeometry() const
Rectangle of the output screen on desktop.
Definition: Tuning.cpp:162
int subScreenIndex() const
Definition: Tuning.cpp:61
QScreen const * screen() const
Definition: Tuning.cpp:56
ScreenSetup & screenSetup()
Return reference to current screen setup.
Definition: Session.cpp:114
void omni::proj::Tuning::fromStream ( QDataStream &  _is)

Read tuning from stream.

Reset visualizer

246  {
247  /// Reset visualizer
248  viz_.reset();
249 
250  PropertyMap _map;
251  _is >> _map;
252  QRect _screenRect = _map.getValue<QRect>("screenGeometry");
253  if (!_screenRect.isNull()) {
254  screen_ = ScreenSetup::screenFromRect(_screenRect);
255  }
256  OMNI_DEBUG << _screenRect << screen_;
257 
258  _map.get("subScreenIndex", subScreenIndex_);
259  _map.get("color",color_);
260  _map.get("projector",projector_);
261  _map.get("warpGrid",warpGrid_);
262  _map.get("blendMask",blendMask_);
263  _map.get("outputDisabled",outputDisabled_);
264  _map.get("overlapOpacity",overlapOpacity_);
265  _map.get("colorCorrection",colorCorrection_);
266  _map.get("patches",patches_);
267  }
static QScreen const * screenFromRect(QRect const &)
Return pointer to screen for rectangle, nullptr if no screen with.
Definition: ScreenSetup.cpp:243
int subScreenIndex_
SubScreen index of this tuning.
Definition: Tuning.h:180
WarpGrid warpGrid_
Definition: Tuning.h:182
PatchList patches_
Definition: Tuning.h:186
Projector projector_
Definition: Tuning.h:172
bool overlapOpacity_
Definition: Tuning.h:170
#define OMNI_DEBUG
Definition: util.h:122
BlendMask blendMask_
Definition: Tuning.h:183
std::unique_ptr< visualizer_type > viz_
Definition: Tuning.h:185
ColorCorrection colorCorrection_
Definition: Tuning.h:184
QScreen const * screen_
Screen this tuning is assigned to. If screen is nullptr, tuning is assigned to virtual screen...
Definition: Tuning.h:177
QColor color_
Definition: Tuning.h:171
bool outputDisabled_
Definition: Tuning.h:169
bool omni::proj::Tuning::hasScreen ( ) const

Return if a screen is associated with mapping.

157  {
158  return screen_ != nullptr;
159  }
QScreen const * screen_
Screen this tuning is assigned to. If screen is nullptr, tuning is assigned to virtual screen...
Definition: Tuning.h:177
int omni::proj::Tuning::height ( ) const

Returns height of screen.

193  {
194  return contentGeometry().height();
195  }
QRect contentGeometry() const
Content rectangle (position) inside the screen.
Definition: Tuning.cpp:167
int omni::proj::Tuning::id ( ) const

Return id of tuning.

286  {
287  int i = 0;
288  for (auto& _tuning : session().tunings()) {
289  if (_tuning.get() == this) return i;
290  ++i;
291  }
292  return -1;
293  }
Session const & session() const
Return const reference to owning session.
Definition: Tuning.cpp:282
Tuning::visualizer_type * omni::proj::Tuning::makeVisualizer ( )

Make visualizer if it is not instantiated yet.

139  {
140  if (!QOpenGLContext::currentContext()) return nullptr;
141 
142  if (!viz_) {
143  viz_.reset(new visualizer_type(*this));
144  }
145  if (!viz_->initialized()) {
146  viz_->update();
147  }
148  return visualizer();
149  }
visualizer_type * visualizer()
Return pointer to visualizer.
Definition: Tuning.cpp:135
std::unique_ptr< visualizer_type > viz_
Definition: Tuning.h:185
omni::visual::Tuning visualizer_type
Definition: Tuning.h:54
bool omni::proj::Tuning::outputDisabled ( ) const

Return flag if output is disabled, projector output is black.

198  {
199  return outputDisabled_;
200  }
bool outputDisabled_
Definition: Tuning.h:169
bool omni::proj::Tuning::outputEnabled ( ) const

Return flag if output is enabled.

203  {
204  return !outputDisabled();
205  }
bool outputDisabled() const
Return flag if output is disabled, projector output is black.
Definition: Tuning.cpp:198
float omni::proj::Tuning::overlapOpacity ( ) const

Return opacity of overlapped blend mask.

217  {
218  return overlapOpacity_;
219  }
bool overlapOpacity_
Definition: Tuning.h:170
PatchList & omni::proj::Tuning::patches ( )

Return list of patches.

107  {
108  return patches_;
109  }
PatchList patches_
Definition: Tuning.h:186
PatchList const & omni::proj::Tuning::patches ( ) const

Return list of patches (const version)

112  {
113  return patches_;
114  }
PatchList patches_
Definition: Tuning.h:186
Projector & omni::proj::Tuning::projector ( )
77  {
78  return projector_;
79  }
Projector projector_
Definition: Tuning.h:172
Projector const & omni::proj::Tuning::projector ( ) const
82  {
83  return projector_;
84  }
Projector projector_
Definition: Tuning.h:172
void omni::proj::Tuning::renderCalibration ( Calibration _calib) const

Render calibration.

177  {
178  _calib.render(*this,session_.exportSettings().outputMode());
179  }
ExportSettings & exportSettings()
Return reference to export settings.
Definition: Session.cpp:152
Session const & session_
Definition: Tuning.h:187
Calibration omni::proj::Tuning::renderCalibration ( CalibrationMode  _outputMode = CalibrationMode::TEXCOORDS) const

Render and return calibration.

183  {
184  return Calibration(*this,_outputMode);
185  }
QScreen const * omni::proj::Tuning::screen ( ) const
57  {
58  return screen_;
59  }
QScreen const * screen_
Screen this tuning is assigned to. If screen is nullptr, tuning is assigned to virtual screen...
Definition: Tuning.h:177
QRect omni::proj::Tuning::screenGeometry ( ) const

Rectangle of the output screen on desktop.

162  {
163  return session_.screenSetup().screenGeometry(screen());
164  }
Session const & session_
Definition: Tuning.h:187
QScreen const * screen() const
Definition: Tuning.cpp:56
ScreenSetup & screenSetup()
Return reference to current screen setup.
Definition: Session.cpp:114
Session const & omni::proj::Tuning::session ( ) const

Return const reference to owning session.

282  {
283  return session_;
284  }
Session const & session_
Definition: Tuning.h:187
void omni::proj::Tuning::setColor ( QColor const &  _color)

Sets color for mapping.

130  {
131  color_ = _color;
132  }
QColor color_
Definition: Tuning.h:171
void omni::proj::Tuning::setOutputDisabled ( bool  _disabled = true)

Disable output if _disabled is true, enable otherwise.

208  {
209  outputDisabled_ = _disabled;
210  }
bool outputDisabled_
Definition: Tuning.h:169
void omni::proj::Tuning::setOutputEnabled ( bool  _enabled = true)

Enable output if _enabled is true, disable otherwise.

213  {
214  setOutputDisabled(!_enabled);
215  }
void setOutputDisabled(bool _disabled=true)
Disable output if _disabled is true, enable otherwise.
Definition: Tuning.cpp:208
void omni::proj::Tuning::setOverlapOpacity ( float  _overlapOpacity)

Set opacity of overlap mask in blend mode.

222  {
223  overlapOpacity_ = _overlapOpacity;
224  }
bool overlapOpacity_
Definition: Tuning.h:170
void omni::proj::Tuning::setScreen ( QScreen const *  _screen,
int  _subScreenIndex 
)

Set screen for this tuning.

49  {
50  screen_ = _screen;
51  subScreenIndex_ = _subScreenIndex;
52  projector_.setAspectRatio(session_.screenSetup().subScreenAspectRatio(screen()));
54  }
int subScreenIndex_
SubScreen index of this tuning.
Definition: Tuning.h:180
Session const & session_
Definition: Tuning.h:187
void setAspectRatio(qreal)
Set aspect ratio of screen.
Definition: Projector.cpp:65
void setBrush(float _size, float _feather, float _opacity, bool _invert)
Set blend brush settings.
Definition: BlendMask.cpp:83
Projector projector_
Definition: Tuning.h:172
float feather() const
Return feather value.
Definition: BlendBrush.cpp:74
BlendBrush const & brush() const
Return reference blend brush (const version)
Definition: BlendMask.cpp:104
BlendMask blendMask_
Definition: Tuning.h:183
float opacity() const
Return opacity value.
Definition: BlendBrush.cpp:57
QScreen const * screen_
Screen this tuning is assigned to. If screen is nullptr, tuning is assigned to virtual screen...
Definition: Tuning.h:177
bool invert() const
Returns true if the brush is inverted (aka eraser mode)
Definition: BlendBrush.cpp:89
QScreen const * screen() const
Definition: Tuning.cpp:56
ScreenSetup & screenSetup()
Return reference to current screen setup.
Definition: Session.cpp:114
int omni::proj::Tuning::subScreenIndex ( ) const
62  {
63  if (!screen_) {
64  // Calculate subscreen index by iterating tuning
65  int _index = 0;
66  for (auto& _tuning : session_.tunings()) {
67  if (_tuning->hasScreen()) continue;
68  if (_tuning.get() == this) return _index;
69  ++_index;
70  }
71  return 0;
72  }
73  return subScreenIndex_;
74  }
int subScreenIndex_
SubScreen index of this tuning.
Definition: Tuning.h:180
Session const & session_
Definition: Tuning.h:187
proj::TuningList & tunings()
Returns reference to projector tunings.
Definition: Session.cpp:55
QScreen const * screen_
Screen this tuning is assigned to. If screen is nullptr, tuning is assigned to virtual screen...
Definition: Tuning.h:177
void omni::proj::Tuning::toStream ( QDataStream &  _os) const

Write tuning to stream.

227  {
228  PropertyMap _map;
229  _map("color",color_)
230  ("projector",projector_)
231  ("warpGrid",warpGrid_)
232  ("blendMask",blendMask_)
233  ("outputDisabled",outputDisabled_)
234  ("overlapOpacity",overlapOpacity_)
235  ("colorCorrection",colorCorrection_)
236  ("patches",patches_)
237  ;
238 
239  _map("screenGeometry", screenGeometry());
240  _map("contentGeometry", contentGeometry());
241  _map("subScreenIndex", subScreenIndex_);
242  _os << _map;
243  }
int subScreenIndex_
SubScreen index of this tuning.
Definition: Tuning.h:180
WarpGrid warpGrid_
Definition: Tuning.h:182
QRect screenGeometry() const
Rectangle of the output screen on desktop.
Definition: Tuning.cpp:162
PatchList patches_
Definition: Tuning.h:186
Projector projector_
Definition: Tuning.h:172
bool overlapOpacity_
Definition: Tuning.h:170
BlendMask blendMask_
Definition: Tuning.h:183
ColorCorrection colorCorrection_
Definition: Tuning.h:184
QRect contentGeometry() const
Content rectangle (position) inside the screen.
Definition: Tuning.cpp:167
QColor color_
Definition: Tuning.h:171
bool outputDisabled_
Definition: Tuning.h:169
Tuning::visualizer_type * omni::proj::Tuning::visualizer ( )

Return pointer to visualizer.

135  {
136  return viz_.get();
137  }
std::unique_ptr< visualizer_type > viz_
Definition: Tuning.h:185
Tuning::visualizer_type const * omni::proj::Tuning::visualizer ( ) const

Return pointer to visualizer (const version)

152  {
153  return viz_.get();
154  }
std::unique_ptr< visualizer_type > viz_
Definition: Tuning.h:185
WarpGrid & omni::proj::Tuning::warpGrid ( )

Returns reference to warp grid.

87  {
88  return warpGrid_;
89  }
WarpGrid warpGrid_
Definition: Tuning.h:182
WarpGrid const & omni::proj::Tuning::warpGrid ( ) const

Returns reference to warp grid (const version)

92  {
93  return warpGrid_;
94  }
WarpGrid warpGrid_
Definition: Tuning.h:182
int omni::proj::Tuning::width ( ) const

Returns width of screen.

188  {
189  return contentGeometry().width();
190  }
QRect contentGeometry() const
Content rectangle (position) inside the screen.
Definition: Tuning.cpp:167

Friends And Related Function Documentation

bool operator== ( Tuning const &  _lhs,
Tuning const &  _rhs 
)
friend

Test for equality.

270  {
271  return
279  }
WarpGrid warpGrid_
Definition: Tuning.h:182
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125
Projector projector_
Definition: Tuning.h:172
bool overlapOpacity_
Definition: Tuning.h:170
BlendMask blendMask_
Definition: Tuning.h:183
ColorCorrection colorCorrection_
Definition: Tuning.h:184
QColor color_
Definition: Tuning.h:171
bool outputDisabled_
Definition: Tuning.h:169

Field Documentation

BlendMask omni::proj::Tuning::blendMask_
private
QColor omni::proj::Tuning::color_
private
ColorCorrection omni::proj::Tuning::colorCorrection_
private
bool omni::proj::Tuning::outputDisabled_ = false
private
bool omni::proj::Tuning::overlapOpacity_ = 0.0
private
PatchList omni::proj::Tuning::patches_
private
Projector omni::proj::Tuning::projector_
private
QScreen const* omni::proj::Tuning::screen_ = nullptr
private

Screen this tuning is assigned to. If screen is nullptr, tuning is assigned to virtual screen.

Session const& omni::proj::Tuning::session_
private
int omni::proj::Tuning::subScreenIndex_ = 0
private

SubScreen index of this tuning.

std::unique_ptr<visualizer_type> omni::proj::Tuning::viz_
private
WarpGrid omni::proj::Tuning::warpGrid_
private

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