void ScreenGrabberChooserRectItem::mouseMoveHandle(int x, int y, QGraphicsSceneMouseEvent* event)
{
    if (this->state != HandleResizing)
        return;

    QPointF delta = event->scenePos() - event->lastScenePos();
    delta.rx() *= qreal(std::abs(x));
    delta.ry() *= qreal(std::abs(y));

    // We increase if the multiplier and the delta have the same sign
    bool increaseX = ((x < 0) == (delta.x() < 0));
    bool increaseY = ((y < 0) == (delta.y() < 0));

    if ((delta.x() < 0 && increaseX) || (delta.x() >= 0 && !increaseX))
    {
        moveBy(delta.x(), 0);
        delta.rx() *= -1;
    }

    if ((delta.y() < 0 && increaseY) || (delta.y() >= 0 && !increaseY))
    {
        moveBy(0, delta.y());
        delta.ry() *= -1;
    }

    //
    this->rectWidth += delta.x();
    this->rectHeight += delta.y();
    this->mainRect->setRect (0, 0, this->rectWidth, this->rectHeight);
    updateHandlePositions();
    emit regionChosen(chosenRect());
}
void Number::highlight() {
	if (highlighted_ == false)
		moveBy(2, 2);
	else
		moveBy(-2, -2);

	highlighted_ = !highlighted_;
	update();
}
void SoundArgumentMonster::move(int x, int y){

    //I am not using player awareness for this item so to get rid of warnings:
    x = x; y = y;

    //Travel a fixed distance, and then turn if it is time.
    //I will use 100 as this fixed distance for now.
    if (moveCounter % 100 == 0){
        switch(myDir){
        case LEFT:
            myDir = UP;
            break;
        case UP:
            myDir = RIGHT;
            break;
        case RIGHT:
            myDir = DOWN;
            break;
        case DOWN:
            myDir = LEFT;
            break;
        default:
            ;
        }
    }

    //Now move.

    int travelLength = 1;
    if (moveClockwise){
        ; //Do nothing
    }
    else{
        travelLength *= -1;
    }

    switch(myDir){
    case LEFT:
        moveBy(-1*travelLength, 0);
        break;
    case UP:
        moveBy(0, travelLength);
        break;
    case RIGHT:
        moveBy(travelLength, 0);
        break;
    case DOWN:
        moveBy(0, -1*travelLength);
        break;
    default:
        ;
    }
    moveCounter++;
}
void ULWhiteItem::keyPressEvent(QKeyEvent * event)
{
	if(event->modifiers().testFlag(Qt::ControlModifier))
	{
		switch(event->key())
		{
			case Qt::Key_Left: moveBy(-0.1,0.0);
			break;
			case Qt::Key_Right: moveBy(0.1,0.0);
			break;
			case Qt::Key_Up: moveBy(0.0,-0.1);
			break;
			case Qt::Key_Down : moveBy(0.0,0.1);
			break;
			default : break;
		}
	}
	else
	{
		switch(event->key())
		{
			case Qt::Key_Left: moveBy(-1.0,0.0);
			break;
			case Qt::Key_Right: moveBy(1.0,0.0);
			break;
			case Qt::Key_Up: moveBy(0.0,-1.0);
			break;
			case Qt::Key_Down : moveBy(0.0,1.0);
			break;
			default : break;
		}
	}
}
Beispiel #5
0
void ShapeMoveStrategy::handleMouseMove(const QPointF &point, Qt::KeyboardModifiers modifiers)
{
    if(m_selectedShapes.isEmpty())
        return;
    QPointF diff = point - m_start;

    if(modifiers & (Qt::AltModifier | Qt::ControlModifier)) {
        // keep x or y position unchanged
        if(qAbs(diff.x()) < qAbs(diff.y()))
            diff.setX(0);
        else
            diff.setY(0);
    }
    else
    {
        QPointF positionToSnap = point + m_initialOffset;
        m_canvas->updateCanvas( m_canvas->snapGuide()->boundingRect() );
        QPointF snappedPosition = m_canvas->snapGuide()->snap( positionToSnap, modifiers );
        m_canvas->updateCanvas( m_canvas->snapGuide()->boundingRect() );
        diff = snappedPosition - m_initialOffset - m_start;
    }

    m_diff = diff;

    moveBy( diff );
}
bool hitTestFlow(const RenderBlockFlow& flow, const Layout& layout, const HitTestRequest& request, HitTestResult& result, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction hitTestAction)
{
    if (hitTestAction != HitTestForeground)
        return false;

    if (!layout.runCount())
        return false;

    RenderStyle& style = flow.style();
    if (style.visibility() != VISIBLE || style.pointerEvents() == PE_NONE)
        return false;

    RenderObject& renderer = *flow.firstChild();
    LayoutRect rangeRect = locationInContainer.boundingBox();
    rangeRect.moveBy(-accumulatedOffset);

    auto resolver = lineResolver(flow, layout);
    auto range = resolver.rangeForRect(rangeRect);
    for (auto it = range.begin(), end = range.end(); it != end; ++it) {
        auto lineRect = *it;
        lineRect.moveBy(accumulatedOffset);
        if (!locationInContainer.intersects(lineRect))
            continue;
        renderer.updateHitTestResult(result, locationInContainer.point() - toLayoutSize(accumulatedOffset));
        if (!result.addNodeToRectBasedTestResult(renderer.node(), request, locationInContainer, lineRect))
            return true;
    }

    return false;
}
Beispiel #7
0
bool Clover::move(){
	count++;
	if(count==15){
		x+=velocityX;
		y+=velocityY;
		if(x<0 || y<0 || (x+50)>700 || (y+50) > 475){
			return false;
		}
	//
		//x+=velocityX;
		//y+=velocityY;
		count=0;
		moveBy(velocityX, velocityY);
		count2++;
		if( count2==15){
			velocityX*=-1;
			velocityY*=-1;
		} 
		if (count2==25) {
			velocityX*=-1;
			velocityY*=-1;
			count2=0;
		}
	}
		//setPos(x,y);
	return true;
}
Beispiel #8
0
void LabelCanvas::move_outside(QRect r, double angle)
{
    QPoint center(r.center());
    QRect lbl_r(0, 0, width(), height());

    // place it centered on r
    lbl_r.moveCenter(center);

    // goes outside r, moving by 5 points
    double cx = center.x();
    double cy = center.y();
    double d_x = 5 * cos(angle * 3.1415927 / 180);
    double d_y = 5 * sin(angle * 3.1415927 / 180);

    do {
        cx += d_x;
        cy += d_y;

        QPoint p((int) cx, (int) cy);

        lbl_r.moveCenter(p);
    }
    while (lbl_r.intersects(r));
    moveBy(lbl_r.x(), lbl_r.y());
}
Beispiel #9
0
const Rect & CIntObject::center(const Point &p, bool propagate /*= true*/)
{
	moveBy(Point(p.x - pos.w/2 - pos.x, 
		p.y - pos.h/2 - pos.y), 
		propagate);
	return pos;
}
Beispiel #10
0
void PointRight::move()
{
    	x -= 10;
    	if(x==20)
    		deleteMe=true;
    	moveBy(-10, 0);
}
Beispiel #11
0
    virtual void keyPressEvent(QKeyEvent *event){
        if(!hasFocus()){
            event->ignore();
            return;
        }

        int delta_y = 0;
        switch(event->key()){
        case Qt::Key_Up: delta_y = -1; break;
        case Qt::Key_Down: delta_y = 1; break;
        case Qt::Key_Delete:{
                if(DeleteAction)
                    DeleteAction->trigger();
                return;
            }

        default:
            break;
        }

        if(delta_y == 0){
            event->ignore();
            return;
        }

        if(event->modifiers() & Qt::ShiftModifier)
            delta_y *= 5;

        event->accept();
        moveBy(0, delta_y);
    }
Beispiel #12
0
/*Déplacement en temps normal*/
void personnage::move(){

    if(!alive){
            image = img_mort[0];


    }
   else if(!isfighting){
        moveBy(speed*deplacement_x,speed*deplacement_y);
        if(deplacement_x>0){
            direction = 1;
        }
        else if(deplacement_x<0){
            direction = 3;
        }
        else if(deplacement_y<0){
            direction = 0;
        }
        else if(deplacement_y>0){
            direction = 2;
        }
        if(deplacement_y||deplacement_x){
            changement_deplacement();
        }
    }
}
Beispiel #13
0
void Button::mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
{
    moveBy(0, -1);
    mPressedEffect->setOffset(0, 2);
    if (boundingRect().contains(event->pos()))
        emit buttonPressed();
}
Beispiel #14
0
void Properties::mouseMoveEvent( QGraphicsSceneMouseEvent* mouseEvent )
{
	if( Qt::LeftButton == mouseEvent->buttons() )
	{
		if( _haveToResize )
		{
			// make sure we don't resize in minus (switch the coordinate systems)
			if(	( mouseEvent->scenePos().x() > mapToScene(_target->getGeometry().topLeft()).x() ) && 
				( mouseEvent->scenePos().y() > mapToScene(_target->getGeometry().topLeft()).y() ) )
			{
				qreal w = mouseEvent->pos().x() - mouseEvent->lastPos().x();
				qreal h = mouseEvent->pos().y() - mouseEvent->lastPos().y();

				_target->resize( w, h );

				setTarget( _target );
			}
		}
		else
		{
			moveBy(	mouseEvent->scenePos().x()-mouseEvent->lastScenePos().x(), 
					mouseEvent->scenePos().y()-mouseEvent->lastScenePos().y() );

			_target->moveBy(	mouseEvent->scenePos().x()-mouseEvent->lastScenePos().x(),
							mouseEvent->scenePos().y()-mouseEvent->lastScenePos().y() );
		}
	}

	QGraphicsRectItem::mouseMoveEvent( mouseEvent );
}
Beispiel #15
0
void MapHero::keyPressEvent(QKeyEvent *event){
    double cSize;
    switch(  event->key() ) {
    case Qt::Key_Right:
        moveBy(9, 0);
        heroImage = 3;
        if ( (cSize = collidingItems().size()) > 0){
            std::cout << cSize;
            moveBy(-9, 0);
            heroImage = 1;
        }
        break;
    case Qt::Key_Left:
        moveBy(-9, 0);
        heroImage = 1;
        if ( (collidingItems().size() > 0)){
            moveBy(9, 0);
            heroImage = 3;
        }
        break;
    case Qt::Key_Up:
        moveBy(0, -9);
        heroImage = 2;
        if ( (collidingItems().size() > 0)){
            moveBy(0, 9);
            heroImage = 0;
        }
        break;
    case Qt::Key_Down:
        moveBy(0, 9);
        heroImage = 0;
        if ( (collidingItems().size() > 0)){
            moveBy(0, -9);
            heroImage = 2;
        }
        break;
    case Qt::Key_P:
        pause->setModal(true);
        pause->exec();
        break;
    case Qt::Key_B:
        std::cout<<"b";
        //battle->setModal(true);
        battle->setModal(true);
        battle->startBattle('e',2,0,0,'h',2,1,1,'c',1,2,2);
        //battle->setGeometry(0,0,300,400);
        battle->exec();
        break;
    case Qt::Key_L:
        enemon->hide();
        break;
    default:
        break;
    }
        update();
}
void GuiPart::slotMoveBy( double dx, double dy )
{
	if ( dx==0 && dy==0 )
		return;
	
	moveBy( dx, dy );
	posChanged();
}
void GGraphicsDeviceSequenceItem::PositionBelow( GGraphicsDeviceSequenceItem* pDeviceGraph )
{
	QRectF previousDeviceRect = pDeviceGraph->sceneBoundingRect();
	QRectF thatDeviceRect = sceneBoundingRect();
	double botOther = previousDeviceRect.bottom();
	double topThis = thatDeviceRect.top();
	if(botOther != topThis)
		moveBy(0, botOther - topThis);
}
Beispiel #18
0
void food::advance(int phase)
{
    qDebug() << "advance called";

    if( 1 == phase)
    {
        moveBy(5 * currentDirection,0);
    }
}
// move the hand out of collision, move it back until no collision is detected
bool GraspitDBPlanner::moveHandOutOfCollision()
{
  CollisionReport colReport;
  int numCols;
  double offset = -10.0;
  std::vector<Body *> justPalm;
  justPalm.push_back(mHand->getPalm());

  //go back only while PALM is in collision
  do {
    numCols = mHand->getWorld()->getCollisionReport(&colReport, &justPalm);
    if (numCols) { moveBy(vec3(0.0, 0.0, offset)); }
  } while (numCols);

  //open fingers that are in collision
  numCols = mHand->getWorld()->getCollisionReport(&colReport);
  for (int c = 0; c < mHand->getNumChains(); c++) {
    if (!mHand->snapChainToContacts(c, colReport)) {
      //std::cout <<"failed to get a chain our of collision" << std::endl;
      //failed to get a chain out of collision, do not return
      //return false;
    }
  }
  //go back only while anything is in collision
  int safeGuard = 0;
  while (++safeGuard < 1000) {
    numCols = mHand->getWorld()->getCollisionReport(&colReport);
    if (numCols) {
      moveBy(vec3(0.0, 0.0, offset));
    }
    else {
      break;
    }
  }
  //always approach to contact no matter how far
  double step = 10.0;
  for (int i = 0; i < 10; i ++) {
    if (mHand->approachToContact(step)) {
      break;
    }
  }
  return true;
}
Beispiel #20
0
void Shape::resize	( qreal deltaW, qreal deltaH )
{
	QRectF	newRect = rect();
			newRect.setWidth ( newRect.width()  + deltaW );
			newRect.setHeight( newRect.height() + deltaH );

	setGeometry( newRect );

	moveBy( deltaW/2, deltaH/2 );
}
Beispiel #21
0
void UBFreeHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    QPointF p = mapToParent(event->pos());

    QPointF diff = p - pos();

    moveBy(diff.x(), diff.y());

    mEditableObject->updateHandle(this);
}
void
CQIllustratorShape::
moveTo(const CPoint2D &pos)
{
  const CBBox2D &bbox = getFlatBBox();

  CPoint2D d = pos - bbox.getLL();

  moveBy(d);
}
void BoxGroup::keyPressEvent(QKeyEvent *event)
{
    switch (event->key())
    {
    case Qt::Key_Down :
        moveBy(0, 20);
        if (isColliding()) {
            moveBy(0, -20);

            // 将小方块从方块组中移除到场景中
            clearBoxGroup();

            // 需要显示新的方块
            emit needNewBox();
        }
        break;

    case Qt::Key_Left :
        moveBy(-20, 0);
        if (isColliding())
            moveBy(20, 0);
        break;

    case Qt::Key_Right :
        moveBy(20, 0);
        if (isColliding())
            moveBy(-20, 0);
        break;

    case Qt::Key_Up :
        rotate(90);
        if(isColliding())
            rotate(-90);
        break;

    // 空格键实现坠落
    case Qt::Key_Space :
        moveBy(0, 20);
        while (!isColliding()) {
            moveBy(0, 20);
        }
        moveBy(0, -20);
        clearBoxGroup();
        emit needNewBox();
        break;
    }
}
Beispiel #24
0
void Carre::advance(int step)
{
	if (!step)
		return;
	if(_dy < 5)
		_dy += 0.1;

	if(_dx) {
		if(_dx > 0 && _dx+0.2 < 2)
			_dx += 0.2;
		else if (_dx < 0 && _dx-0.2 > -2)
			_dx -= 0.2;
	}


	if(scene()->sceneRect().contains(boundingRect().translated(_dx,0).translated(pos())))
		moveBy(_dx,0);

	if(scene()->sceneRect().contains(boundingRect().translated(0,_dy).translated(pos())))
		moveBy(0,_dy);
}
Beispiel #25
0
void Ball::move()
{
    QPointF v = QPointF(-(speed_.x() * (10.0 / Frames) + acc_.reading()->x() * (1.0 / Frames) * (10.0 / Frames) / 2),
                        speed_.y() * (10.0 / Frames) + acc_.reading()->y() * (1.0 / Frames) * (10.0 / Frames) / 2);

    if (collidingItems().size() == 0) {
        moveBy(v.x(), v.y());
        updateSpeed();
    } else {
        emit collision();
    }
}
void LinkedStructure::update()
{
  // Performs an update to the position of the
  // linked structure. Performs a tip move by the
  // step that has been specified
  if(isTargetResolved()) return;
  
   float x = (mTargetPosition(0) - mPosition(0) > 1) ? mStep : -mStep;
   float y = (mTargetPosition(1) + mPosition(1) > 1) ? mStep : -mStep;

  moveBy(x, y);
}
Beispiel #27
0
/*!
  This function is called by QGraphicsScene::advance().
  It is called twice for each item at each animation step,
  first with \a phase = 0, and then with \a phase = 1.

  In phase 0, each item moves itself. In phase 1, each item
  that is responsible for handling collisions detects its
  collisions and handles them.

  Note: Each subclass of this base class must implement
  advance() and call this function when \a phase == 0.
  \internal
 */
void
KSprite::advance(int phase)
{
    if (phase == 0) {
	if (dying())
	    markDead();
	if ((vx_ != 0.0) || (vy_ != 0.0)) {
	    moveBy(vx_,vy_);
	    wrap();
	}
    }
}
void ClickBoxSize1::keyPressEvent(QKeyEvent *event) {
    switch ( event->key() ) {
    case Qt::Key_Right: {
            moveBy(2,0);
            break;
        }
    case Qt::Key_Left: {
            moveBy(-2,0);
            break;
        }
    case Qt::Key_Up: {
            moveBy(0,-2);
            break;
        }
    case Qt::Key_Down: {
            moveBy(0,2);
            break;
        }
    }
    update();
}
CodeDocument::Position CodeDocument::findWordBreakBefore (const Position& position) const noexcept
{
    auto p = position;
    const int maxDistance = 256;
    int i = 0;
    bool stoppedAtLineStart = false;

    while (i < maxDistance)
    {
        auto c = p.movedBy (-1).getCharacter();

        if (c == '\r' || c == '\n')
        {
            stoppedAtLineStart = true;

            if (i > 0)
                break;
        }

        if (! CharacterFunctions::isWhitespace (c))
            break;

        p.moveBy (-1);
        ++i;
    }

    if (i < maxDistance && ! stoppedAtLineStart)
    {
        auto type = getCharacterType (p.movedBy (-1).getCharacter());

        while (i < maxDistance && type == getCharacterType (p.movedBy (-1).getCharacter()))
        {
            p.moveBy (-1);
            ++i;
        }
    }

    return p;
}
Beispiel #30
0
void SpriteObject::age()
{
    if( mLifeSpan > 0 ) {
        mLifeSpan--;
    }
    mCycle++;
    moveBy(vx, vy);

    if( mCycle > mSeq->delay( frame() ) ) {
        setFrame((frame()+1)%frameCount());
        mCycle = 0;
    }
}