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); }