#include "Canvas.h" void Canvas::changeMode(Mode _mode) { mode = _mode; } void Canvas::mousePressEvent(QMouseEvent* event) { QPointF scene = event->pos(); #ifdef _DEBUG qDebug() << "Scene point in" << scene.x() << scene.y(); changeMode(DrawingLine); #endif if (mode == DrawingLine) { if (!current_line) { current_line = new Line(); double* x1 = new double(scene.x()); double* y1 = new double(scene.y()); double* x2 = new double(scene.x()); double* y2 = new double(scene.y()); params.push_back(x1); params.push_back(y1); current_line->p1.x = x1; current_line->p1.y = y1; current_line->p2.x = x2; current_line->p2.y = y2; } else { *current_line->p2.x = scene.x(); *current_line->p2.y = scene.y(); params.push_back(current_line->p2.x); params.push_back(current_line->p2.y); lines.append(current_line); current_line = nullptr; } //#ifdef _DEBUG // if (lines.size()) { // qDebug() << "Line coords" << lines[lines.size() - 1]->p1.get_X() << // lines[lines.size() - 1]->p1.get_Y() << // lines[lines.size() - 1]->p2.get_X() << // lines[lines.size() - 1]->p2.get_Y(); // changeMode(None); // } //#endif } } Canvas::Canvas(QWidget *parent) : QWidget(parent) { current_line = nullptr; setMouseTracking(true); setBackgroundRole(QPalette::Base); setAutoFillBackground(true); } Canvas::~Canvas() { for (Line* line : lines) { delete line; } for (double* param : params) { delete param; } lines.clear(); params.clear(); if (current_line) delete current_line; }