You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.3 KiB
64 lines
1.3 KiB
1 year ago
|
// Copyright (C) 2023 MapLibre contributors
|
||
|
// Copyright (C) 2019 Mapbox, Inc.
|
||
|
|
||
|
// SPDX-License-Identifier: BSD-2-Clause
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "settings.hpp"
|
||
|
|
||
|
#include "utils/renderer_backend.hpp"
|
||
|
|
||
|
#include <mbgl/renderer/renderer.hpp>
|
||
|
#include <mbgl/renderer/renderer_observer.hpp>
|
||
|
#include <mbgl/util/util.hpp>
|
||
|
|
||
|
#include <QtCore/QObject>
|
||
|
|
||
|
#include <QtGlobal>
|
||
|
|
||
|
#include <memory>
|
||
|
#include <mutex>
|
||
|
|
||
|
namespace mbgl {
|
||
|
class Renderer;
|
||
|
class UpdateParameters;
|
||
|
} // namespace mbgl
|
||
|
|
||
|
namespace QMapLibre {
|
||
|
|
||
|
class RendererBackend;
|
||
|
|
||
|
class MapRenderer : public QObject {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
MapRenderer(qreal pixelRatio, Settings::GLContextMode, const QString &localFontFamily);
|
||
|
~MapRenderer() override;
|
||
|
|
||
|
void render();
|
||
|
void updateFramebuffer(quint32 fbo, const mbgl::Size &size);
|
||
|
void setObserver(mbgl::RendererObserver *observer);
|
||
|
|
||
|
// Thread-safe, called by the Frontend
|
||
|
void updateParameters(std::shared_ptr<mbgl::UpdateParameters> parameters);
|
||
|
|
||
|
signals:
|
||
|
void needsRendering();
|
||
|
|
||
|
private:
|
||
|
MBGL_STORE_THREAD(tid)
|
||
|
|
||
|
Q_DISABLE_COPY(MapRenderer)
|
||
|
|
||
|
std::mutex m_updateMutex;
|
||
|
std::shared_ptr<mbgl::UpdateParameters> m_updateParameters;
|
||
|
|
||
|
RendererBackend m_backend;
|
||
|
std::unique_ptr<mbgl::Renderer> m_renderer{};
|
||
|
|
||
|
bool m_forceScheduler{};
|
||
|
};
|
||
|
|
||
|
} // namespace QMapLibre
|