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));
		}
	}
}
Example #4
0
void GL_widget_2::add_point_to_selection(double x, double y) {
	emit add_point_to_selection(QPointF(x,y));
}