/
/
/
1#include "q_pen_drawer/canvasview.h"
2
3CanvasView::CanvasView(QWidget* parent): QGraphicsView(parent){
4 scene_ = new QGraphicsScene(parent);
5 QGraphicsView::setScene(scene_);
6 QGraphicsView::setMouseTracking(true);
7
8 bezier_item_ = new BezierLine();
9 scene_->addItem(bezier_item_);
10}
11
12CanvasView::~CanvasView(){
13}
14
15void CanvasView::wheelEvent(QWheelEvent* event){
16 QGraphicsView::wheelEvent(event);
17 scene_->update();
18}
19
20void CanvasView::mousePressEvent(QMouseEvent* event){
21 QGraphicsView::mousePressEvent(event);
22
23 QPointF pressed = QGraphicsView::mapToScene(event->pos());
24
25 if (event->button() == Qt::LeftButton) {
26 control_drag_ = true;
27 if(!bezier_item_->selectClosest(pressed))
28 bezier_item_->addPoint(pressed);
29 }
30
31 scene_->update();
32
33}
34
35void CanvasView::mouseReleaseEvent(QMouseEvent* event){
36 QGraphicsView::mouseReleaseEvent(event);
37 if (event->button() == Qt::LeftButton) {
38 control_drag_ = false;
39 }
40}
41
42void CanvasView::mouseMoveEvent(QMouseEvent* event){
43 QGraphicsView::mouseMoveEvent(event);
44 QPointF drag = QGraphicsView::mapToScene(event->pos());
45 if(control_drag_){
46 bezier_item_->updateControlPoint(drag);
47 scene_->update();
48 }
49}
50
51void CanvasView::updateAverageLength(int value){
52 bezier_item_->setAverageStep(value);
53 scene_->update();
54}