Locus No Pilotus
Project of four first grade MIPT DAFE/RSE students (for engineering practical work in the second semester) in Qt C++
Loading...
Searching...
No Matches
trappy_line.h
Go to the documentation of this file.
1#pragma once
2
3// our code dirs:
4#include "lib/trappy_line.h"
5#include "target.h"
6
7namespace gui {
8
9/**
10 * @brief Фигура линии опасного перелета
11 * @details Фигура представляет собой пунктирное красное соединение между
12 * заданными контрольными точками (причем эти точки выделяются)
13 */
14class TrappyLine : public Drawable {
15 public:
16 TrappyLine() = default;
17
18 TrappyLine(gui::Target* first_target, gui::Target* second_target) {
19 UpdateData(first_target, second_target);
20 }
21
22 TrappyLine(std::pair<gui::Target*, gui::Target*> targets) {
23 UpdateData(targets);
24 }
25
26 TrappyLine(const lib::TrappyLine& data) : data_(data) {}
27
28 TrappyLine(const TrappyLine&) = default;
29 TrappyLine(TrappyLine&&) = default;
30
31 TrappyLine& operator=(const TrappyLine&) = default;
33
35 SetTargets(target, targets_.second);
36 }
37
39 SetTargets(targets_.first, target);
40 }
41
42 void SetTargets(gui::Target* first_target, gui::Target* second_target) {
43 UpdateData(first_target, second_target);
44 }
45
46 void SetTargets(std::pair<gui::Target*, gui::Target*> targets) {
47 UpdateData(targets);
48 }
49
50 const lib::TrappyLine& GetData() const { return data_; }
52
53 /**
54 * @brief Отрисовывает фигуру на полотне
55 * @details Фигура представляет собой пунктирное красное соединение между
56 * заданными контрольными точками (причем эти точки выделяются)
57 * @param plot: указатель на полотно
58 */
59 void Draw(QCustomPlot* plot) override;
60
61 /**
62 * @brief Возвращает значение указателя на полотне
63 * @return QCPGraph*: указатель
64 */
65 QCPGraph* GetGraphPtr() const { return graph_; }
66
67 std::pair<gui::Target, gui::Target> GetTargets() const {
68 return std::make_pair(*targets_.first, *targets_.second);
69 }
70
71 std::pair<gui::Target*, gui::Target*> GetTargetsPtrs() { return targets_; }
72
73 const std::pair<gui::Target*, gui::Target*>& GetTargetsPtrs() const {
74 return targets_;
75 }
76
77 bool operator==(const gui::TrappyLine& tr_line) const {
78 return data_ == tr_line.GetData();
79 }
80
81 private:
82 void UpdateData(gui::Target* first_target, gui::Target* second_target);
83 void UpdateData(std::pair<gui::Target*, gui::Target*> targets);
84
86
87 QCPGraph* graph_{nullptr};
88
89 // самый простой способ иметь доступ из TrappyLine к привязанным к.т.
90 // здесь нет смысла использовать умные указатели, так как мы не создаём новых
91 std::pair<gui::Target*, gui::Target*> targets_;
92};
93
94} // namespace gui
Некоторая возможная к рисованию фигура [абстрактный класс].
Definition base.h:9
Фигура контрольной точки
Definition target.h:13
Фигура линии опасного перелета
Definition trappy_line.h:14
TrappyLine(gui::Target *first_target, gui::Target *second_target)
Definition trappy_line.h:18
void SetSecondTarget(gui::Target *target)
Definition trappy_line.h:38
void Draw(QCustomPlot *plot) override
Отрисовывает фигуру на полотне
Definition trappy_line.cpp:6
std::pair< gui::Target *, gui::Target * > targets_
Definition trappy_line.h:91
void SetFirstTarget(gui::Target *target)
Definition trappy_line.h:34
bool operator==(const gui::TrappyLine &tr_line) const
Definition trappy_line.h:77
TrappyLine()=default
TrappyLine & operator=(const TrappyLine &)=default
TrappyLine(std::pair< gui::Target *, gui::Target * > targets)
Definition trappy_line.h:22
TrappyLine(const lib::TrappyLine &data)
Definition trappy_line.h:26
const std::pair< gui::Target *, gui::Target * > & GetTargetsPtrs() const
Definition trappy_line.h:73
void SetTargets(gui::Target *first_target, gui::Target *second_target)
Definition trappy_line.h:42
std::pair< gui::Target, gui::Target > GetTargets() const
Definition trappy_line.h:67
void SetTargets(std::pair< gui::Target *, gui::Target * > targets)
Definition trappy_line.h:46
std::pair< gui::Target *, gui::Target * > GetTargetsPtrs()
Definition trappy_line.h:71
QCPGraph * graph_
Definition trappy_line.h:87
lib::TrappyLine data_
Definition trappy_line.h:85
const lib::TrappyLine & GetData() const
Definition trappy_line.h:50
void UpdateData(gui::Target *first_target, gui::Target *second_target)
Definition trappy_line.cpp:23
lib::TrappyLine & GetData()
Definition trappy_line.h:51
TrappyLine(TrappyLine &&)=default
TrappyLine(const TrappyLine &)=default
QCPGraph * GetGraphPtr() const
Возвращает значение указателя на полотне
Definition trappy_line.h:65
TrappyLine & operator=(TrappyLine &&)=default
Линия опасного перелета
Definition trappy_line.h:13
Definition airport.h:6