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
			| 
								 
											2 years 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
							 |