void GL_insert_ball_layer_2::mousePressEvent(QMouseEvent *e) { // insert - without left button if ((is_control(e)/* || is_alt(e)*/) && e->button() == Qt::LeftButton) { last_x = widget->x_real(e->x()); last_y = widget->y_real(e->y()); state = CIRCLE; emit add_point_to_selection(QPointF(last_x,last_y)); /* if (is_alt(e)) { points_buffer.push_back(QPointF(x,y)); emit add_point_to_selection(QPointF(x,y)); } else emit point_created(x,y);*/ } // spray - with middle button if ((is_control(e)/* || is_alt(e)*/) && e->button() == Qt::MidButton) { state = SPRAY; QSettings settings; min_squared_distance = settings.value("insert-point-min-squared-distance").toInt(); // std::cout << "insert-point-min-squared-distance: " << min_squared_distance << std::endl; last_spray_x = last_spray_y = -1; mouseMoveEvent(e); // to insert the first point } if ((is_control(e)/* || is_alt(e)*/) && e->button() == Qt::RightButton) { last_x = widget->x_real(e->x()); last_y = widget->y_real(e->y()); emit ball_created(Point3D(last_x, last_y, last_radius)); } }
void GL_insert_ball_layer_2::mouseMoveEvent(QMouseEvent *e) { if (state==CIRCLE) { double x, y; x = widget->x_real(e->x()); y = widget->y_real(e->y()); last_radius = sqrt((x-last_x)*(x-last_x) + (y-last_y)*(y-last_y)); // std::cout << "ball radius: " << last_radius << std::endl; emit clear_balls_from_selection(); emit add_ball_to_selection(QPointF(last_x, last_y), (float)last_radius); widget->repaint(); } if (state==SPRAY) { int screen_x = e->x(); int screen_y = e->y(); if ( (last_spray_x == -1 && last_spray_y == -1) || ((screen_x-last_spray_x)*(screen_x-last_spray_x) + (screen_y-last_spray_y)*(screen_y-last_spray_y) > min_squared_distance) ) { double x, y; x = widget->x_real(e->x()); y = widget->y_real(e->y()); balls_buffer.push_back(Point3D(x,y,last_radius)); last_spray_x = e->x(); last_spray_y = e->y(); emit add_point_to_selection(QPointF(x,y)); emit add_ball_to_selection(QPointF(x,y), (float)last_radius); } } }
void GL_insert_point_layer_2::mouseMoveEvent(QMouseEvent *e) { if (state==SPRAY) { int screen_x = e->x(); int screen_y = e->y(); if ( (last_spray_x == -1 && last_spray_y == -1) || ((screen_x-last_spray_x)*(screen_x-last_spray_x) + (screen_y-last_spray_y)*(screen_y-last_spray_y) > min_squared_distance) ) { double x, y; x = widget->x_real(e->x()); y = widget->y_real(e->y()); points_buffer.push_back(QPointF(x,y)); last_spray_x = e->x(); last_spray_y = e->y(); emit add_point_to_selection(QPointF(x,y)); } } }
void GL_widget_2::add_point_to_selection(double x, double y) { emit add_point_to_selection(QPointF(x,y)); }