void Render::run(void) { ExCom ex; do { ex = cmdq->consome(); if(buffer == NULL) { msleep(100); continue; } switch(ex.cmd) { case NENHUM: msleep(100); continue; case INCZOOM: incZoom(); break; case DECZOOM: decZoom(); break; case INCX: incX(); break; case DECX: decX(); break; case INCY: incY(); break; case DECY: decY(); break; case PONTOS: mostraPonto = !mostraPonto; renderizaFront(); break; case ARESTAS: mostraAresta = !mostraAresta; renderizaFront(); break; case FACES: mostraFace = !mostraFace; renderizaFront(); break; case SELECT: if(sel == NULL) sel = new QPoint(); sel->setX(ex.x); sel->setY(ex.y); click(); break; case CONVHULL: convexHull(); break; case EXTERN: externa(); break; } atualizaScreen(); } while (true); }
// Event handler for the framebuffer int CqFramebuffer::handle(int event) { switch(event) { case FL_FOCUS: return 1; case FL_UNFOCUS: return 1; case FL_KEYDOWN: { boost::shared_ptr<Aqsis::CqImage>& image = m_uiImageWidget->image(); int key = Fl::event_key(); if(Fl::event_ctrl()) { switch(key) { case FL_KP + '+': incSubImage(true); return 1; case FL_KP + '-': incSubImage(false); return 1; } } else if(Fl::event_shift()) { switch(key) { case 'r': if(image) image->reloadFromFile(); return 1; } } else { switch(key) { case 'h': // 'Home' widget back to center centerImageWidget(); m_scroll->redraw(); return 1; case FL_KP + '+': incZoom(1); return 1; case FL_KP + '-': incZoom(-1); return 1; } } } break; case FL_KEYUP: break; case FL_PUSH: switch (Fl::event_button()) { case FL_MIDDLE_MOUSE: // pan m_lastPos[0] = Fl::event_x(); m_lastPos[1] = Fl::event_y(); return 1; } break; case FL_RELEASE: switch (Fl::event_button()) { case FL_MIDDLE_MOUSE: fl_cursor(FL_CURSOR_DEFAULT, FL_FOREGROUND_COLOR, FL_BACKGROUND_COLOR); return 1; } break; case FL_DRAG: switch (Fl::event_button()) { case FL_MIDDLE_MOUSE: fl_cursor(FL_CURSOR_MOVE, FL_FOREGROUND_COLOR, FL_BACKGROUND_COLOR); int dx = Fl::event_x() - m_lastPos[0]; int dy = Fl::event_y() - m_lastPos[1]; m_uiImageWidget->position(m_uiImageWidget->x() + dx, m_uiImageWidget->y()+dy); m_scroll->redraw(); m_lastPos[0] = Fl::event_x(); m_lastPos[1] = Fl::event_y(); return 1; } break; case FL_MOUSEWHEEL: { if(Fl::event_ctrl()) incSubImage(Fl::event_dy() < 0); else incZoom(-Fl::event_dy()); return 1; } break; } return Fl_Window::handle(event); }