#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 online=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; std::unique_ptr sm; void publish(const double render_time); void sendThumbnail(const uint64_t ts, const kj::Array &buf); QMapboxGLSettings m_settings; QScopedPointer m_map; void initLayers(); uint32_t frame_id = 0; QTimer* timer; public slots: void updatePosition(QMapbox::Coordinate position, float bearing); void updateRoute(QList coordinates); void msgUpdate(); };