Skip to content
Snippets Groups Projects
Commit 2356ef9b authored by Gilles Marckmann's avatar Gilles Marckmann
Browse files

minor correctio

parent cb810a53
Branches
Tags
No related merge requests found
...@@ -348,20 +348,26 @@ int openglWindow::handle(int event) ...@@ -348,20 +348,26 @@ int openglWindow::handle(int event)
_trySelectionXYWH[2] = 5; _trySelectionXYWH[2] = 5;
_trySelectionXYWH[3] = 5; _trySelectionXYWH[3] = 5;
} }
// (m1) and (!shift) and (!alt) => rotation
else if(Fl::event_button() == 1 && else if(Fl::event_button() == 1 &&
!Fl::event_state(FL_SHIFT) && !Fl::event_state(FL_ALT)) { !Fl::event_state(FL_SHIFT) && !Fl::event_state(FL_ALT)) {
// trackball
if(CTX::instance()->useTrackball) if(CTX::instance()->useTrackball)
_ctx->addQuaternion((2. * _prev.win[0] - w()) / w(), _ctx->addQuaternion((2. * _prev.win[0] - w()) / w(),
(h() - 2. * _prev.win[1]) / h(), (h() - 2. * _prev.win[1]) / h(),
(2. * _curr.win[0] - w()) / w(), (2. * _curr.win[0] - w()) / w(),
(h() - 2. * _curr.win[1]) / h()); (h() - 2. * _curr.win[1]) / h());
// !trackball
else { else {
_ctx->r[1] += ((fabs(dx) > fabs(dy)) ? 180. * dx / (double)w() : 0.); _ctx->r[1] += ((fabs(dx) > fabs(dy)) ? 180. * dx / (double)w() : 0.);
_ctx->r[0] += ((fabs(dx) > fabs(dy)) ? 0. : 180. * dy / (double)h()); _ctx->r[0] += ((fabs(dx) > fabs(dy)) ? 0. : 180. * dy / (double)h());
} }
} }
// m2 or (m1 and shift) => zoom (only move in y is used)
// but start point is the center of the homothety
else if(Fl::event_button() == 2 || else if(Fl::event_button() == 2 ||
(Fl::event_button() == 1 && Fl::event_state(FL_SHIFT))) { (Fl::event_button() == 1 && Fl::event_state(FL_SHIFT))) {
// move in y greater than move in x
if(fabs(dy) > fabs(dx)) { if(fabs(dy) > fabs(dx)) {
double fact = (CTX::instance()->zoomFactor * fabs(dy) + h()) / (double)h(); double fact = (CTX::instance()->zoomFactor * fabs(dy) + h()) / (double)h();
_ctx->s[0] *= ((dy > 0) ? fact : 1./fact); _ctx->s[0] *= ((dy > 0) ? fact : 1./fact);
...@@ -369,9 +375,11 @@ int openglWindow::handle(int event) ...@@ -369,9 +375,11 @@ int openglWindow::handle(int event)
_ctx->s[2] = _ctx->s[0]; _ctx->s[2] = _ctx->s[0];
_click.recenter(_ctx); _click.recenter(_ctx);
} }
// trackball
else if(!CTX::instance()->useTrackball) else if(!CTX::instance()->useTrackball)
_ctx->r[2] += -180. * dx / (double)w(); _ctx->r[2] += -180. * dx / (double)w();
} }
// other case => translation
else { else {
_ctx->t[0] += (_curr.wnr[0] - _click.wnr[0]); _ctx->t[0] += (_curr.wnr[0] - _click.wnr[0]);
_ctx->t[1] += (_curr.wnr[1] - _click.wnr[1]); _ctx->t[1] += (_curr.wnr[1] - _click.wnr[1]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment