[Qt] Add API for adding icon to the style
This commit is contained in:
@@ -202,6 +202,9 @@ public:
|
||||
void addSource(const QString &sourceID, const QVariantMap& params);
|
||||
void removeSource(const QString &sourceID);
|
||||
|
||||
void addImage(const QString &name, const QImage &sprite);
|
||||
void removeImage(const QString &name);
|
||||
|
||||
void addCustomLayer(const QString &id,
|
||||
QMapbox::CustomLayerInitializeFunction,
|
||||
QMapbox::CustomLayerRenderFunction,
|
||||
|
||||
@@ -127,6 +127,18 @@ auto fromQStringList(const QStringList &list)
|
||||
return strings;
|
||||
}
|
||||
|
||||
std::unique_ptr<const mbgl::SpriteImage> toSpriteImage(const QImage &sprite) {
|
||||
const QImage swapped = sprite
|
||||
.rgbSwapped()
|
||||
.convertToFormat(QImage::Format_ARGB32_Premultiplied);
|
||||
|
||||
auto img = std::make_unique<uint8_t[]>(swapped.byteCount());
|
||||
memcpy(img.get(), swapped.constBits(), swapped.byteCount());
|
||||
|
||||
return std::make_unique<mbgl::SpriteImage>(mbgl::PremultipliedImage
|
||||
{ size_t(swapped.width()), size_t(swapped.height()), std::move(img) }, 1.0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -619,15 +631,7 @@ void QMapboxGL::addAnnotationIcon(const QString &name, const QImage &sprite)
|
||||
{
|
||||
if (sprite.isNull()) return;
|
||||
|
||||
const QImage swapped = sprite
|
||||
.rgbSwapped()
|
||||
.convertToFormat(QImage::Format_ARGB32_Premultiplied);
|
||||
|
||||
auto img = std::make_unique<uint8_t[]>(swapped.byteCount());
|
||||
memcpy(img.get(), swapped.constBits(), swapped.byteCount());
|
||||
|
||||
d_ptr->mapObj->addAnnotationIcon(name.toStdString(), std::make_shared<mbgl::SpriteImage>(
|
||||
mbgl::PremultipliedImage { size_t(swapped.width()), size_t(swapped.height()), std::move(img) }, 1.0));
|
||||
d_ptr->mapObj->addAnnotationIcon(name.toStdString(), std::move(toSpriteImage(sprite)));
|
||||
}
|
||||
|
||||
QPointF QMapboxGL::pixelForCoordinate(const Coordinate &coordinate_) const
|
||||
@@ -751,6 +755,18 @@ void QMapboxGL::removeLayer(const QString& id)
|
||||
d_ptr->mapObj->removeLayer(id.toStdString());
|
||||
}
|
||||
|
||||
void QMapboxGL::addImage(const QString &name, const QImage &sprite)
|
||||
{
|
||||
if (sprite.isNull()) return;
|
||||
|
||||
d_ptr->mapObj->addImage(name.toStdString(), toSpriteImage(sprite));
|
||||
}
|
||||
|
||||
void QMapboxGL::removeImage(const QString &name)
|
||||
{
|
||||
d_ptr->mapObj->removeImage(name.toStdString());
|
||||
}
|
||||
|
||||
void QMapboxGL::setFilter(const QString& layer_, const QVariant& filter_)
|
||||
{
|
||||
using namespace mbgl::style;
|
||||
|
||||
Reference in New Issue
Block a user