minimap_image_provider.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "minimap_image_provider.h"
  2. #include <QMutexLocker>
  3. MinimapImageProvider::MinimapImageProvider()
  4. : QQuickImageProvider(QQuickImageProvider::Image) {}
  5. QImage MinimapImageProvider::requestImage(const QString &id, QSize *size,
  6. const QSize &requested_size) {
  7. Q_UNUSED(id);
  8. QImage image_copy;
  9. {
  10. QMutexLocker locker(&m_mutex);
  11. image_copy = m_minimap_image;
  12. }
  13. if (image_copy.isNull()) {
  14. QImage placeholder(64, 64, QImage::Format_RGBA8888);
  15. placeholder.fill(QColor(15, 26, 34));
  16. if (size) {
  17. *size = placeholder.size();
  18. }
  19. return placeholder;
  20. }
  21. if (size) {
  22. *size = image_copy.size();
  23. }
  24. if (requested_size.isValid() && !requested_size.isEmpty()) {
  25. return image_copy.scaled(requested_size, Qt::KeepAspectRatio,
  26. Qt::SmoothTransformation);
  27. }
  28. return image_copy;
  29. }
  30. void MinimapImageProvider::set_minimap_image(const QImage &image) {
  31. QMutexLocker locker(&m_mutex);
  32. m_minimap_image = image;
  33. }