Пример #1
0
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);

}
Пример #2
0
// 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);
}