ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ccPickingHub Class Reference

Point/triangle picking hub. More...

#include <ecvPickingHub.h>

Inheritance diagram for ccPickingHub:
Collaboration diagram for ccPickingHub:

Public Slots

void onActiveWindowChanged (QMdiSubWindow *)
 
void onActiveWindowDeleted (QObject *)
 
void processPickedItem (ccHObject *, unsigned, int, int, const CCVector3 &)
 

Public Member Functions

 ccPickingHub (ecvMainAppInterface *app, QObject *parent=nullptr)
 Default constructor. More...
 
 ~ccPickingHub () override=default
 
size_t listenerCount () const
 Returns the number of currently registered listeners. More...
 
bool addListener (ccPickingListener *listener, bool exclusive=false, bool autoStartPicking=true, ecvDisplayTools::PICKING_MODE mode=ecvDisplayTools::POINT_OR_TRIANGLE_PICKING)
 Adds a listener. More...
 
void removeListener (ccPickingListener *listener, bool autoStopPickingIfLast=true)
 Removes a listener. More...
 
void togglePickingMode (bool state)
 Manual start / stop of the picking mode on the active window. More...
 
QWidget * activeWindow () const
 Returns the currently active window. More...
 
bool isLocked () const
 

Protected Attributes

std::set< ccPickingListener * > m_listeners
 Listeners. More...
 
ecvMainAppInterfacem_app
 Associated application. More...
 
QWidget * m_activeWindow
 Active window. More...
 
ecvDisplayTools::PICKING_MODE m_pickingMode
 Default picking mode. More...
 
bool m_autoEnableOnActivatedWindow
 Automatically enables the picking mechanism on activated GL windows. More...
 
bool m_exclusive
 Exclusive mode. More...
 

Detailed Description

Point/triangle picking hub.

Definition at line 29 of file ecvPickingHub.h.

Constructor & Destructor Documentation

◆ ccPickingHub()

ccPickingHub::ccPickingHub ( ecvMainAppInterface app,
QObject *  parent = nullptr 
)

Default constructor.

Definition at line 19 of file ecvPickingHub.cpp.

◆ ~ccPickingHub()

ccPickingHub::~ccPickingHub ( )
overridedefault

Member Function Documentation

◆ activeWindow()

QWidget* ccPickingHub::activeWindow ( ) const
inline

Returns the currently active window.

Definition at line 74 of file ecvPickingHub.h.

Referenced by RgbDialog::onItemPicked(), and ScalarDialog::onItemPicked().

◆ addListener()

bool ccPickingHub::addListener ( ccPickingListener listener,
bool  exclusive = false,
bool  autoStartPicking = true,
ecvDisplayTools::PICKING_MODE  mode = ecvDisplayTools::POINT_OR_TRIANGLE_PICKING 
)

Adds a listener.

Parameters
listenerlistener to be registered
exclusiveprevents new listeners from registering
autoStartPickingautomatically enables the picking mode on the active window (if any)
modesets the picking mode (warning: may be rejected if another listener is currently registered with another mode)
Returns
success

Definition at line 104 of file ecvPickingHub.cpp.

References m_exclusive, m_listeners, m_pickingMode, togglePickingMode(), and CVLog::Warning().

Referenced by ecvAnimationParamDlg::enableListener(), MainWindow::enablePickingOperation(), ccWaveDialog::onPointPickingButtonToggled(), ecvMeasurementTool::onPointPickingRequested(), HSVDialog::pickPoint(), RgbDialog::pickPoint_first(), ScalarDialog::pickPoint_first(), RgbDialog::pickPoint_second(), ScalarDialog::pickPoint_second(), ccPlaneEditDlg::pickPointAsCenter(), ccTracePolylineTool::restart(), ccPointPairRegistrationDlg::start(), ccPointPickingGenericInterface::start(), and ccCompass::startPicking().

◆ isLocked()

bool ccPickingHub::isLocked ( ) const
inline

Returns whether the picking mechanism is currently locked (i.e. an exclusive listener is registered)

Definition at line 78 of file ecvPickingHub.h.

◆ listenerCount()

size_t ccPickingHub::listenerCount ( ) const
inline

Returns the number of currently registered listeners.

Definition at line 38 of file ecvPickingHub.h.

◆ onActiveWindowChanged

void ccPickingHub::onActiveWindowChanged ( QMdiSubWindow *  mdiSubWindow)
slot

◆ onActiveWindowDeleted

void ccPickingHub::onActiveWindowDeleted ( QObject *  obj)
slot

Definition at line 70 of file ecvPickingHub.cpp.

References m_activeWindow.

Referenced by onActiveWindowChanged().

◆ processPickedItem

void ccPickingHub::processPickedItem ( ccHObject entity,
unsigned  itemIndex,
int  x,
int  y,
const CCVector3 P3D 
)
slot

◆ removeListener()

◆ togglePickingMode()

void ccPickingHub::togglePickingMode ( bool  state)

Manual start / stop of the picking mode on the active window.

Definition at line 27 of file ecvPickingHub.cpp.

References ecvDisplayTools::DEFAULT_PICKING, m_activeWindow, m_pickingMode, and ecvDisplayTools::SetPickingMode().

Referenced by addListener(), onActiveWindowChanged(), and removeListener().

Member Data Documentation

◆ m_activeWindow

QWidget* ccPickingHub::m_activeWindow
protected

Active window.

Definition at line 94 of file ecvPickingHub.h.

Referenced by onActiveWindowChanged(), onActiveWindowDeleted(), and togglePickingMode().

◆ m_app

ecvMainAppInterface* ccPickingHub::m_app
protected

Associated application.

Definition at line 91 of file ecvPickingHub.h.

◆ m_autoEnableOnActivatedWindow

bool ccPickingHub::m_autoEnableOnActivatedWindow
protected

Automatically enables the picking mechanism on activated GL windows.

Definition at line 100 of file ecvPickingHub.h.

Referenced by onActiveWindowChanged().

◆ m_exclusive

bool ccPickingHub::m_exclusive
protected

Exclusive mode.

Definition at line 103 of file ecvPickingHub.h.

Referenced by addListener(), and removeListener().

◆ m_listeners

std::set<ccPickingListener*> ccPickingHub::m_listeners
protected

Listeners.

Definition at line 88 of file ecvPickingHub.h.

Referenced by addListener(), onActiveWindowChanged(), processPickedItem(), and removeListener().

◆ m_pickingMode

ecvDisplayTools::PICKING_MODE ccPickingHub::m_pickingMode
protected

Default picking mode.

Definition at line 97 of file ecvPickingHub.h.

Referenced by addListener(), and togglePickingMode().


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