Freeciv21
Develop your civilization from humble roots to a global empire
renderer.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2022 Louis Moureaux <m_louis30@yahoo.com>
3  *
4  * SPDX-License-Identifier: GPLv3-or-later
5  */
6 
7 #pragma once
8 
9 #include <QObject>
10 #include <QPainter>
11 #include <QPointF>
12 #include <QRect>
13 #include <QRegion>
14 #include <QSize>
15 
16 namespace freeciv {
17 
19 
20 class renderer : public QObject {
21  Q_OBJECT
22  Q_PROPERTY(QPointF origin READ origin WRITE set_origin);
23  Q_PROPERTY(double scale READ scale WRITE set_scale);
24 
25 public:
26  explicit renderer(QObject *parent = nullptr);
27  virtual ~renderer() = default;
28 
30  QPointF origin() const { return m_origin; }
31  void set_origin(const QPointF &origin);
32 
34  double scale() const { return m_scale; }
35  void set_scale(double scale);
36 
38  QSize viewport_size() const { return m_viewport_size; }
39  void set_viewport_size(const QSize &size);
40 
41  void render(QPainter &painter, const QRegion &region) const;
42  void render(QPainter &painter, const QRect &area) const;
43 
44 signals:
45  void repaint_needed(const QRegion &where);
46 
47 private slots:
48  void unqueue_updates();
49 
50 private:
51  QPointF m_origin;
52  double m_scale = 1.0;
55 };
56 
57 } // namespace freeciv
Records regions of the map that should be updated.
Renders the map on widgets.
Definition: renderer.h:20
void unqueue_updates()
Processes all pending map updates and writes them to the map buffer.
Definition: renderer.cpp:103
void repaint_needed(const QRegion &where)
void set_viewport_size(const QSize &size)
Instructs the renderer to draw a viewport with a different size.
Definition: renderer.cpp:60
QSize m_viewport_size
Definition: renderer.h:53
void set_scale(double scale)
Changes the scale of the rendering (zooms in or out).
Definition: renderer.cpp:47
virtual ~renderer()=default
map_updates_handler * m_updates
Definition: renderer.h:54
QPointF origin
Definition: renderer.h:22
void set_origin(const QPointF &origin)
Changes the origin of the canvas (the point at the top left of the view).
Definition: renderer.cpp:36
QPointF origin() const
The origin of the view (the point at the top left corner)
Definition: renderer.h:30
void render(QPainter &painter, const QRegion &region) const
Renders the specified region of the visible portion of the map on painter.
Definition: renderer.cpp:75
double m_scale
Definition: renderer.h:52
double scale() const
The scale (zoom) at which rendering is performed.
Definition: renderer.h:34
renderer(QObject *parent=nullptr)
Constructor.
Definition: renderer.cpp:26
QPointF m_origin
Definition: renderer.h:51
QSize viewport_size() const
The current dimensions of the viewport.
Definition: renderer.h:38
Definition: path.cpp:10
size_t size
Definition: specvec.h:64