blob: a238532e8840035ef660c5cfa869142ef26c8de1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
#pragma once
#include "drape/pointers.hpp"
#include "drape_frontend/gui/skin.hpp"
#include "drape_frontend/user_event_stream.hpp"
#include "qt/qt_common/qtoglcontextfactory.hpp"
#include <QtCore/QTimer>
#include <QtWidgets/QOpenGLWidget>
#include <memory>
class Framework;
class QMouseEvent;
class QWidget;
class ScreenBase;
class QOpenGLShaderProgram;
class QOpenGLVertexArrayObject;
class QOpenGLBuffer;
namespace qt
{
namespace common
{
class ScaleSlider;
class MapWidget : public QOpenGLWidget
{
Q_OBJECT
public:
MapWidget(Framework & framework, bool apiOpenGLES3, QWidget * parent);
~MapWidget() override;
void BindHotkeys(QWidget & parent);
void BindSlider(ScaleSlider & slider);
void CreateEngine();
signals:
void OnContextMenuRequested(QPoint const & p);
public slots:
void ScalePlus();
void ScaleMinus();
void ScalePlusLight();
void ScaleMinusLight();
void ScaleChanged(int action);
void SliderPressed();
void SliderReleased();
void AntialiasingOn();
void AntialiasingOff();
public:
Q_SIGNAL void BeforeEngineCreation();
protected:
enum class SliderState
{
Pressed,
Released
};
int L2D(int px) const { return px * m_ratio; }
m2::PointD GetDevicePoint(QMouseEvent * e) const;
df::Touch GetTouch(QMouseEvent * e) const;
df::TouchEvent GetTouchEvent(QMouseEvent * e, df::TouchEvent::ETouchType type) const;
df::Touch GetSymmetrical(df::Touch const & touch) const;
void UpdateScaleControl();
void Build();
// QOpenGLWidget overrides:
void initializeGL() override;
void paintGL() override;
void resizeGL(int width, int height) override;
void mouseDoubleClickEvent(QMouseEvent * e) override;
void mousePressEvent(QMouseEvent * e) override;
void mouseMoveEvent(QMouseEvent * e) override;
void mouseReleaseEvent(QMouseEvent * e) override;
void wheelEvent(QWheelEvent * e) override;
Framework & m_framework;
bool m_apiOpenGLES3;
ScaleSlider * m_slider;
SliderState m_sliderState;
qreal m_ratio;
drape_ptr<QtOGLContextFactory> m_contextFactory;
std::unique_ptr<gui::Skin> m_skin;
std::unique_ptr<QTimer> m_updateTimer;
unique_ptr<QOpenGLShaderProgram> m_program;
unique_ptr<QOpenGLVertexArrayObject> m_vao;
unique_ptr<QOpenGLBuffer> m_vbo;
};
} // namespace common
} // namespace qt
|