//________________________________________________
    QPixmap TransitionWidget::grab( QWidget* widget, QRect rect )
    {

        // change rect
        if( !rect.isValid() ) rect = widget->rect();
        if( !rect.isValid() ) return QPixmap();

        // initialize pixmap
        QPixmap out( rect.size() );
        out.fill( Qt::transparent );
        _paintEnabled = false;

        if( testFlag( GrabFromWindow ) )
        {

            rect = rect.translated( widget->mapTo( widget->window(), widget->rect().topLeft() ) );
            widget = widget->window();
            #if QT_VERSION < 0x050000
            out = QPixmap::grabWidget( widget, rect );
            #else
            out = widget->grab( rect );
            #endif

        } else {

            if( !testFlag( Transparent ) ) { grabBackground( out, widget, rect ); }
            grabWidget( out, widget, rect );

        }

        _paintEnabled = true;

        return out;

    }
Esempio n. 2
0
void Isoeng::run() {
	SDL_Event event;

	if(SDL_PollEvent(&event)) {
		switch(event.type) {
			case SDL_QUIT:
				alive = false;
				break;

			case SDL_KEYDOWN:
				switch(event.key.keysym.sym) {
					case SDLK_ESCAPE:
						alive = false;
						break;

					case SDLK_LCTRL:
					case SDLK_RCTRL:
						SDL_ShowCursor(SDL_DISABLE);
						cursor_style = 0;
						break;

					default:
						break;
				}
				break;

			case SDL_KEYUP:
				switch(event.key.keysym.sym) {
					case SDLK_LCTRL:
					case SDLK_RCTRL:
						SDL_ShowCursor(SDL_ENABLE);
						break;

					default:
						break;
				}
				break;

			case SDL_MOUSEMOTION:
				if(cursor_style) {
					x_offset += event.motion.xrel;
					y_offset += event.motion.yrel;
				} else if(m_x && m_y) {
					SDL_GetMouseState(&c_x, &c_y);
				}
				break;

			case SDL_MOUSEBUTTONDOWN:
				if(!SDL_ShowCursor(SDL_QUERY)) {
					cursor_style = 1;
				} else {
					SDL_GetMouseState(&m_x, &m_y);
					c_x = m_x + 1;
					c_y = m_y + 1;
				}
				break;

			case SDL_MOUSEBUTTONUP:
				cursor_style = 0;
				m_x = m_y = 0;
				break;
		}
	}

	renderBackground();

	if(!SDL_ShowCursor(SDL_QUERY)) {
		grabBackground();
	} else if(m_x && m_y) {
		selectAssets();
	}

	SDL_Flip(window_main);
}