#pragma once #include #include #include #include #include #include #include #include #include #include "cereal/visionipc/visionipc_server.h" #include "cereal/messaging/messaging.h" class MapRenderer : public QObject { Q_OBJECT public: MapRenderer(const QMapboxGLSettings &, bool enable_vipc=true); uint8_t* getImage(); void update(); bool loaded(); ~MapRenderer(); private: std::unique_ptr ctx; std::unique_ptr surface; std::unique_ptr gl_functions; std::unique_ptr fbo; std::unique_ptr vipc_server; std::unique_ptr pm; void sendVipc(); QMapboxGLSettings m_settings; QScopedPointer m_map; void initLayers(); uint32_t frame_id = 0; public slots: void updatePosition(QMapbox::Coordinate position, float bearing); void updateRoute(QList coordinates); };