Apollo  6.0
Open source self driving car software
main_window.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2018 The Apollo Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
17 #pragma once
18 
19 #include <QtCore/QMutex>
20 #include <QtWidgets/QMainWindow>
21 #include <QtWidgets/QMenu>
22 #include <map>
23 #include <memory>
24 #include <string>
25 
26 #include "modules/drivers/proto/pointcloud.pb.h"
27 #include "modules/drivers/proto/radar.pb.h"
28 #include "modules/drivers/proto/sensor_image.pb.h"
31 
33 class Texture;
34 class Grid;
35 class QAction;
36 class QComboBox;
37 class QTreeWidgetItem;
38 class QOpenGLShaderProgram;
39 class QCheckBox;
40 class QColorDialog;
41 class VideoImagesDialog;
42 
43 namespace Ui {
44 class MainWindow;
45 }
46 
47 class MainWindow : public QMainWindow {
48  Q_OBJECT
49 
50  public:
51  explicit MainWindow(QWidget* parent = nullptr);
52  ~MainWindow();
53 
54  void TopologyChanged(const apollo::cyber::proto::ChangeMsg& change_msg);
55  void AddNewWriter(const apollo::cyber::proto::RoleAttributes& role);
56 
57  protected:
58  void resizeEvent(QResizeEvent*) override;
59 
60  private slots: // NOLINT
61  void ActionAddGrid(void);
62 
63  void ActionOpenPointCloud(void);
64  void PlayRenderableObject(bool);
65  void ChangePointCloudChannel(void);
66 
67  void ActionOpenImage(void);
68  void PlayVideoImage(bool b);
69  void ChangeVideoImgChannel(void);
70  void SelectCurrentTreeItem(FixedAspectRatioWidget*);
71 
72  void ActionDelVideoImage(void);
73 
74  void CloseVideoImgViewer(bool b);
75 
76  void UpdateActions(void);
77  void EnableGrid(bool b);
78 
79  void EditGridColor(QTreeWidgetItem* item, int column);
80  void ChangeGridCellCountBySize(int v);
81 
82  void ActionOpenImages(void);
83  void AddVideoImages(void);
84 
85  void ActionOpenRadarChannel(void);
86  void openRadarChannel(bool b);
87  void EnableRadarPoints(bool b);
88  void ChangeRadarChannel(void);
89 
90  void showMessage(void);
91 
92  void PlayPause(void);
93 
94  private:
95  struct VideoImgProxy;
96  struct RadarData;
97 
98  void PointCloudReaderCallback(
99  const std::shared_ptr<const apollo::drivers::PointCloud>& pdata);
100  void ImageReaderCallback(
101  const std::shared_ptr<const apollo::drivers::Image>& imgData,
102  VideoImgProxy* proxy);
103  void ImageReaderCallback(
104  const std::shared_ptr<const apollo::drivers::CompressedImage>& imgData,
105  VideoImgProxy* proxy);
106 
107  void InsertAllChannelNames(void);
108  VideoImgProxy* AddVideoImgViewer(void);
109  void DoDeleteVideoImg(VideoImgProxy*);
110  void DoPlayVideoImage(bool, VideoImgProxy*);
111  void calculateWH(void);
112 
113  RadarData* createRadarData(void);
114  void DoOpenRadarChannel(bool b, RadarData* radarProxy);
115  void RadarRenderCallback(
116  const std::shared_ptr<const apollo::drivers::RadarObstacles>& rawData,
117  RadarData* radar);
118 
119  Ui::MainWindow* ui_;
120  MessageDialog* msg_dialog_;
121  VideoImagesDialog* open_images_dialog_;
122 
123  QTreeWidgetItem* all_channel_root_;
124 
125  Grid* grid_;
126  QCheckBox* enable_grid_checkBox_;
127  QTreeWidgetItem* grid_root_item_;
128 
129  QTreeWidgetItem* pointcloud_top_item_;
130  QComboBox* pointcloud_comboBox_;
131  QPushButton* pointcloud_button_;
132  CyberChannReader<apollo::drivers::PointCloud>* pointcloud_channel_Reader_;
133 
134  QMutex pointcloud_reader_mutex_;
135 
136  QMenu right_menu_;
137 
138  std::shared_ptr<QOpenGLShaderProgram> pointcloud_shader_;
139  std::shared_ptr<QOpenGLShaderProgram> grid_shader_;
140  std::shared_ptr<QOpenGLShaderProgram> radar_points_shader_;
141 
142  QList<VideoImgProxy*> video_image_viewer_list_;
143  QList<VideoImgProxy*> closed_video_image_viewer_list_;
144 
145  QList<RadarData*> radarData_list_;
146  QList<RadarData*> closed_radarData_list_;
147 
148  std::map<std::string, std::string> _channelName2TypeMap;
149 };
Definition: msg_dialog.h:25
Definition: main_window.h:43
Definition: texture.h:25
Definition: grid.h:23
Definition: video_images_dialog.h:25
Definition: fixedaspectratiowidget.h:24
Definition: main_window.h:47