Esempio n. 1
1
AbstractScrollArea::AbstractScrollArea(QGraphicsWidget *parent)
    : GvbWidget(parent)
    , m_viewport(0)
    , m_horizontalScrollBar(0)
    , m_verticalScrollBar(0)
    , m_prevHorizontalValue(0.0)
    , m_prevVerticalValue(0.0)
{
    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    setContentsMargins(0, 0, 0, 0);     

    m_horizontalScrollBar = new ScrollBar(Qt::Horizontal, this);
    m_horizontalScrollBar->hide();
    m_horizontalScrollBar->setContentsMargins(0, 0, 0, 0); 
    m_horizontalScrollBarPolicy = Qt::ScrollBarAsNeeded;
    m_horizontalScrollBar->setZValue(zValue()+1); // Raise scroll bar to top
    m_horizontalScrollBar->setVisible(false);

    connect(m_horizontalScrollBar, SIGNAL(sliderPositionChange(qreal)),
            this, SLOT(horizontalScroll(qreal)));
    connect(m_horizontalScrollBar, SIGNAL(sliderPressed()),
            this, SLOT(horizontalScrollStart()));

    m_verticalScrollBar = new ScrollBar(Qt::Vertical, this);
    m_verticalScrollBar->hide();
    m_verticalScrollBar->setContentsMargins(0, 0, 0, 0); 
    m_verticalScrollBarPolicy = Qt::ScrollBarAsNeeded;
    m_verticalScrollBar->setZValue(zValue()+1); // Raise scroll bar to top
    m_verticalScrollBar->setVisible(false);

    connect(m_verticalScrollBar, SIGNAL(sliderPositionChange(qreal)),
            this, SLOT(verticalScroll(qreal)));
    connect(m_verticalScrollBar, SIGNAL(sliderPressed()),
            this, SLOT(verticalScrollStart()));

    QGraphicsWidget *viewport = new QGraphicsWidget;
    setViewport(viewport);
}
Esempio n. 2
0
void moveMouse() {
	// gesture analysis
	
	barycBufferX[barycBufferIndex] = barycX;
	barycBufferY[barycBufferIndex] = barycY;
	barycBufferZ[barycBufferIndex] = barycZ;
	barycBufferIndex = (barycBufferIndex + 1) % HAND_POS_BUFFER_SIZE;

	
	
	if (isOpenHand) {
		
		int prevBarycBufferIndex = (barycBufferIndex > 0) ? barycBufferIndex-1 : HAND_POS_BUFFER_SIZE-1;
		
		int countX = -round((barycBufferX[barycBufferIndex] - barycBufferX[prevBarycBufferIndex]) * 600);
		int countY = round((barycBufferY[barycBufferIndex] - barycBufferY[prevBarycBufferIndex]) * 600);
		
		verticalScroll(countX, countY);
		
		printf("Scrolling > countX: %d\n", countX);
		return;
	}
	
	
	double meanBarycX = 0;
	double meanBarycY = 0;
	double meanBarycZ = 0;
	
	int i;
	for (i=0; i<HAND_POS_BUFFER_SIZE; i++) {
		meanBarycX += barycBufferX[i] / HAND_POS_BUFFER_SIZE;
		meanBarycY += barycBufferY[i] / HAND_POS_BUFFER_SIZE;
		meanBarycZ += barycBufferZ[i] / HAND_POS_BUFFER_SIZE;
	}
	
	
	mousePosX = round(-meanBarycX * 1280 + 640);
	mousePosY = round(meanBarycY * 1280 + 400);
	

	if (leftButtonState == MOUSE_CLICK_UP && normVecY < -0.45) {
		leftButtonPressed(mousePosX, mousePosY);
		leftButtonState = MOUSE_CLICK_DOWN;
		printf("Mouse click left down\n");
		
	}
	else if (leftButtonState == MOUSE_CLICK_DOWN && normVecY >= -0.45 ) {
		leftButtonReleased(mousePosX, mousePosY);
		leftButtonState = MOUSE_CLICK_UP;
		printf("Mouse click left up\n");
	}
	else if (rightButtonState == MOUSE_CLICK_UP && normVecX < -0.5) {
		rightButtonPressed(mousePosX, mousePosY);
		rightButtonState = MOUSE_CLICK_DOWN;
		printf("Mouse click right down\n");	
	}
	else if (rightButtonState == MOUSE_CLICK_DOWN && normVecX >= -0.5 ) {
		rightButtonReleased(mousePosX, mousePosY);
		rightButtonState = MOUSE_CLICK_UP;	
		printf("Mouse click right up\n");
	}	
	else {
		moveCursor(mousePosX, mousePosY);
	}

	
}