11 #include <QMainWindow>
19 : QObject(parent), m_appInterface(appInterface), m3dMouseInput(nullptr) {
22 enableDevice(
true,
true);
33 void cc3DMouseManager::enableDevice(
bool state,
bool silent) {
43 &cc3DMouseManager::on3DMouseMove);
45 &cc3DMouseManager::on3DMouseReleased);
47 &cc3DMouseManager::on3DMouseKeyDown);
49 &cc3DMouseManager::on3DMouseKeyUp);
51 &cc3DMouseManager::on3DMouseCMDKeyDown);
53 &cc3DMouseManager::on3DMouseCMDKeyUp);
56 m3dMouseInput =
nullptr;
60 "[3D Mouse] No device found");
71 m_actionEnable->blockSignals(
true);
72 m_actionEnable->setChecked(state);
73 m_actionEnable->blockSignals(
false);
76 void cc3DMouseManager::releaseDevice() {
77 if (m3dMouseInput ==
nullptr)
return;
80 m3dMouseInput->disconnect(
this);
83 m3dMouseInput =
nullptr;
86 void cc3DMouseManager::on3DMouseKeyUp(
int) {
90 void cc3DMouseManager::on3DMouseCMDKeyUp(
int) {
94 void cc3DMouseManager::on3DMouseKeyDown(
int key) {
148 ccGLWindow* activeWin = m_appInterface->getActiveGLWindow();
149 if (activeWin !=
nullptr) {
153 double angle =
M_PI / 2;
158 activeWin->rotateBaseViewMat(mat);
173 void cc3DMouseManager::on3DMouseCMDKeyDown(
int cmd) {
209 ccGLWindow* activeWin = m_appInterface->getActiveGLWindow();
210 if (activeWin !=
nullptr) {
214 double angle =
M_PI / 2;
219 activeWin->rotateBaseViewMat(mat);
225 ccGLWindow* activeWin = m_appInterface->getActiveGLWindow();
226 if (activeWin !=
nullptr) {
230 double angle =
M_PI / 2;
235 activeWin->rotateBaseViewMat(mat);
241 ccGLWindow* activeWin = m_appInterface->getActiveGLWindow();
242 if (activeWin !=
nullptr) {
246 double angle =
M_PI / 2;
251 activeWin->rotateBaseViewMat(mat);
262 void cc3DMouseManager::on3DMouseMove(std::vector<float>& vec) {
263 ccGLWindow* win = m_appInterface->getActiveGLWindow();
264 if (win ==
nullptr)
return;
269 void cc3DMouseManager::on3DMouseReleased() {
270 ccGLWindow* win = m_appInterface->getActiveGLWindow();
271 if (win ==
nullptr)
return;
273 if (win->getPivotVisibility() == ccGLWindow::PIVOT_SHOW_ON_MOVE) {
275 win->showPivotSymbol(
false);
280 void cc3DMouseManager::setupMenu() {
281 m_menu =
new QMenu(
"3D Mouse");
282 m_menu->setIcon(QIcon(
":/CC/images/im3DxLogo.png"));
284 m_actionEnable =
new QAction(tr(
"Enable"),
this);
285 m_actionEnable->setCheckable(
true);
287 connect(m_actionEnable, &QAction::toggled,
288 [
this](
bool state) { enableDevice(state,
false); });
290 m_menu->addAction(m_actionEnable);
static bool Warning(const char *format,...)
Prints out a formatted warning message in console.
static bool Error(const char *format,...)
Display an error dialog with formatted message.
cc3DMouseManager(ecvMainAppInterface *appInterface, QObject *parent)
void initFromParameters(T alpha_rad, const Vector3Tpl< T > &axis3D, const Vector3Tpl< T > &t3D)
Inits transformation from a rotation axis, an angle and a translation.
Double version of ccGLMatrixTpl.
Main application interface (for plugins)
virtual void setGlobalZoom()=0
virtual QMainWindow * getMainWindow()=0
Returns main window.
virtual void setView(CC_VIEW_ORIENTATION view)=0
virtual const ccHObject::Container & getSelectedEntities() const =0
Returns currently selected entities ("read only")
virtual void zoomOnSelectedEntities()=0