void Viewport::mousePressEvent(QMouseEvent * event) {
  int x = event->x();
  int y = event->y();
  Point2D * point = pointInPosition(x,y);
  if(event->button() == Qt::LeftButton) { // Clic gauche
    // Un point ne peut etre cree que s'il ne se superpose pas a un autre.
    // De plus, si des points sont presents dans le viewport, il faut que le point actuellement selectionne soit le premier point de la
    // trajectoire ou le dernier.
    if(point == NULL && (selectedPoint == &(points.front()) || selectedPoint == &(points.back()) || selectedPoint == NULL)) {
      if(selectedPoint == &(points.back())){
	addPoint(x,y,END);
	this->repaint();
	enterTime(&(points.back()));
      } else {
	addPoint(x,y,BEGIN);
	this->repaint();
	enterTime(&(points.front()));
      }
    }
  } else if(event->button() == Qt::RightButton) { // Clic droit
    if(point != NULL && !point->selected())
      selectNewPoint(point);
  } else if(event->button() == Qt::MidButton) { // Clic du milieu
    if(point != NULL && point->selected())
      movingPoint = point;
  }
  this->repaint();
}
void ViewportPainter::drawPoint(Point2D & point) {
    if(point.getTime() != "-1") {
      QString text("t = " + point.getTime());
      QRect rect(point.x()+TEXT_OFFSET_X, point.y()-TEXT_OFFSET_Y,10*text.length()+2*TEXT_MARGIN,15+2*TEXT_MARGIN);
      this->setBrush(QColor(255, 255, 255, 255));
      this->drawRect(rect);
      this->drawText(rect,Qt::AlignHCenter|Qt::AlignVCenter,text);
    }
    if(point.selected())
      this->setBrush(QColor(255, 0, 0, 255));
    else
      this->setBrush(QColor(255, 248, 133, 255));
    this->drawEllipse(point.x()-POINT_SIZE/2,point.y()-POINT_SIZE/2,POINT_SIZE,POINT_SIZE);
}