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

A screen rectangle item representing a QScreen with drawing functionality. More...

#include <ScreenItem.h>

Collaboration diagram for omni::ui::ScreenItem:
Collaboration graph
[legend]

Public Member Functions

 ScreenItem (ScreenSetup &, QScreen const *_screen)
 ScreenSetup::Item. More...
 
 ~ScreenItem ()
 
void detachTuningWidget (omni::ui::proj::Tuning *)
 Detach tuning widget. More...
 
QScreen const * screen () const
 Screen this screen item is assigned to. More...
 
void paint (QPainter &)
 
void detachTunings ()
 Detach all tunings/projectors. More...
 
SubScreenItemitem (int _index)
 
SubScreenItem const * item (int _index) const
 
SubScreenItemhoveredItem ()
 Return pointer to currently hovered item. More...
 
SubScreenItem const * hoveredItem () const
 Return pointer to currently hovered item (const) More...
 
int hoverIndex () const
 Returns flag whether mouse is currently over this item. More...
 
void setHoverIndex (int)
 Set index of current hovered subscreen. More...
 
void setHoverIndex (QPoint const &)
 Set hover index from mouse position. More...
 
bool drop () const
 Flag whether a drop is supposed to happen on this item. More...
 
void startDrop (QColor const &_color=QColor("#FFFFFF"))
 Drop and color of drop. More...
 
void endDrop ()
 Hides fullscreen widget if no tunings are attached. More...
 
QRect rect () const
 
FullScreenfullscreen ()
 
int numSubScreens () const
 

Private Attributes

int hoverIndex_ = -1
 
bool drop_ = false
 
QColor dropColor_
 
ScreenSetupscreenSetup_
 
QScreen const * screen_ = nullptr
 
QUniquePtr< FullScreenfullscreen_
 
std::vector< SubScreenItemsubScreens_
 

Friends

class SubScreenItem
 

Detailed Description

A screen rectangle item representing a QScreen with drawing functionality.

Constructor & Destructor Documentation

omni::ui::ScreenItem::ScreenItem ( ScreenSetup _screenSetup,
QScreen const *  _screen 
)

ScreenSetup::Item.

146  :
147  screenSetup_(_screenSetup),
148  screen_(_screen),
149  fullscreen_(new FullScreen(_screen))
150  {
151  int _numScreens = omni::proj::ScreenSetup::subScreenCountForScreen(_screen);
152 
153  for (int i = 0; i < _numScreens; ++i)
154  {
155  subScreens_.emplace_back(this, i);
156  }
157  }
ScreenSetup & screenSetup_
Definition: ScreenItem.h:144
static int subScreenCountForScreen(QScreen const *)
Static method for getting subscreen count for screen Screen must not be nullptr! ...
Definition: ScreenSetup.cpp:136
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
QUniquePtr< FullScreen > fullscreen_
Definition: ScreenItem.h:146
QScreen const * screen_
Definition: ScreenItem.h:145
omni::ui::ScreenItem::~ScreenItem ( )
160  {
161  }

Member Function Documentation

void omni::ui::ScreenItem::detachTunings ( )

Detach all tunings/projectors.

264  {
265  for (auto& _subScreen : subScreens_)
266  {
267  _subScreen.detachTuningWidget();
268  }
269  }
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
void omni::ui::ScreenItem::detachTuningWidget ( omni::ui::proj::Tuning _tuningWidget)

Detach tuning widget.

163  {
164  for (auto& _subScreen : subScreens_) {
165  if (_subScreen.tuningWidget() == _tuningWidget) {
166  _subScreen.detachTuningWidget();
167  }
168  }
169  }
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
bool omni::ui::ScreenItem::drop ( ) const

Flag whether a drop is supposed to happen on this item.

205  {
206  return drop_;
207  }
bool drop_
Definition: ScreenItem.h:142
void omni::ui::ScreenItem::endDrop ( )

Hides fullscreen widget if no tunings are attached.

Hides fullscreen widget.

218  {
219  fullscreen_->hideDragWidget();
220  drop_ = false;
221  }
bool drop_
Definition: ScreenItem.h:142
QUniquePtr< FullScreen > fullscreen_
Definition: ScreenItem.h:146
FullScreen * omni::ui::ScreenItem::fullscreen ( )
233  {
234  return fullscreen_.get();
235  }
QUniquePtr< FullScreen > fullscreen_
Definition: ScreenItem.h:146
SubScreenItem * omni::ui::ScreenItem::hoveredItem ( )

Return pointer to currently hovered item.

280  {
281  return item(hoverIndex());
282  }
int hoverIndex() const
Returns flag whether mouse is currently over this item.
Definition: ScreenItem.cpp:176
SubScreenItem * item(int _index)
Definition: ScreenItem.cpp:271
SubScreenItem const * omni::ui::ScreenItem::hoveredItem ( ) const

Return pointer to currently hovered item (const)

285  {
286  return item(hoverIndex());
287  }
int hoverIndex() const
Returns flag whether mouse is currently over this item.
Definition: ScreenItem.cpp:176
SubScreenItem * item(int _index)
Definition: ScreenItem.cpp:271
int omni::ui::ScreenItem::hoverIndex ( ) const

Returns flag whether mouse is currently over this item.

177  {
178  return hoverIndex_;
179  }
int hoverIndex_
Definition: ScreenItem.h:141
SubScreenItem * omni::ui::ScreenItem::item ( int  _index)
271  {
272  return (_index < 0 || _index >= subScreens_.size()) ? nullptr : &subScreens_[_index];
273  }
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
SubScreenItem const * omni::ui::ScreenItem::item ( int  _index) const
275  {
276  return (_index < 0 || _index >= subScreens_.size()) ? nullptr : &subScreens_[_index];
277  }
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
int omni::ui::ScreenItem::numSubScreens ( ) const
inline
136  {
137  return int(subScreens_.size());
138  }
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
void omni::ui::ScreenItem::paint ( QPainter &  _p)
238  {
239  int i = 0;
240 
241  for (auto& _subScreen : subScreens_)
242  {
243  bool _hover = i == hoverIndex_;
244  _subScreen.paint(
245  _hover,
246  drop_,
247  dropColor_,
248  _p);
249  ++i;
250  }
251 
252  if (subScreens_.size() > 1)
253  {
254  auto _rect = rect();
255 
256  // Resolution string
257  QString _resStr = QString("%1 x %2").arg(screen_->size().width()).arg(
258  screen_->size().height());
259  _p.drawText(_rect, Qt::AlignHCenter, _resStr);
260  }
261  }
int hoverIndex_
Definition: ScreenItem.h:141
QColor dropColor_
Definition: ScreenItem.h:143
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
bool drop_
Definition: ScreenItem.h:142
QScreen const * screen_
Definition: ScreenItem.h:145
QRect rect() const
Definition: ScreenItem.cpp:223
QRect omni::ui::ScreenItem::rect ( ) const
224  {
225  auto _desktopRect = omni::proj::ScreenSetup::desktopRect();
226 
227  return screenSetup_.transformedRect(screen_->geometry().translated(-
228  _desktopRect
229  .topLeft()))
230  .toRect();
231  }
ScreenSetup & screenSetup_
Definition: ScreenItem.h:144
QRectF transformedRect() const
Returns transformed bounding rect which fits into window and keeps.
Definition: TransformedRect.h:75
QScreen const * screen_
Definition: ScreenItem.h:145
static QRect desktopRect(bool _excludeStandardScreen=true)
Definition: ScreenSetup.cpp:180
QScreen const * omni::ui::ScreenItem::screen ( ) const

Screen this screen item is assigned to.

172  {
173  return screen_;
174  }
QScreen const * screen_
Definition: ScreenItem.h:145
void omni::ui::ScreenItem::setHoverIndex ( int  _hoverIndex)

Set index of current hovered subscreen.

182  {
183  if ((_hoverIndex < 0) || (_hoverIndex >= subScreens_.size())) {
184  hoverIndex_ = -1;
185  return;
186  }
187  hoverIndex_ = _hoverIndex;
188  }
int hoverIndex_
Definition: ScreenItem.h:141
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
void omni::ui::ScreenItem::setHoverIndex ( QPoint const &  _pos)

Set hover index from mouse position.

192  {
193  for (int i = 0; i < subScreens_.size(); ++i)
194  {
195  if (subScreens_[i].rect().contains(_pos))
196  {
197  setHoverIndex(i);
198  return;
199  }
200  }
201  setHoverIndex(-1);
202  }
std::vector< SubScreenItem > subScreens_
Definition: ScreenItem.h:147
void setHoverIndex(int)
Set index of current hovered subscreen.
Definition: ScreenItem.cpp:181
QRect rect() const
Definition: ScreenItem.cpp:223
void omni::ui::ScreenItem::startDrop ( QColor const &  _color = QColor("#FFFFFF"))

Drop and color of drop.

210  {
211  drop_ = true;
212  dropColor_ = _color;
213  fullscreen_->showDragWidget(hoverIndex_, _color);
214  }
int hoverIndex_
Definition: ScreenItem.h:141
QColor dropColor_
Definition: ScreenItem.h:143
bool drop_
Definition: ScreenItem.h:142
QUniquePtr< FullScreen > fullscreen_
Definition: ScreenItem.h:146

Friends And Related Function Documentation

friend class SubScreenItem
friend

Field Documentation

bool omni::ui::ScreenItem::drop_ = false
private
QColor omni::ui::ScreenItem::dropColor_
private
QUniquePtr<FullScreen> omni::ui::ScreenItem::fullscreen_
private
int omni::ui::ScreenItem::hoverIndex_ = -1
private
QScreen const* omni::ui::ScreenItem::screen_ = nullptr
private
ScreenSetup& omni::ui::ScreenItem::screenSetup_
private
std::vector<SubScreenItem> omni::ui::ScreenItem::subScreens_
private

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