TileStamp TileStamp::fromJson(const QJsonObject &json, const QDir &mapDir) { TileStamp stamp; stamp.setName(json.value(QLatin1String("name")).toString()); stamp.setQuickStampIndex(static_cast<int>(json.value(QLatin1String("quickStampIndex")).toDouble(-1))); const QJsonArray variations = json.value(QLatin1String("variations")).toArray(); for (const QJsonValue value : variations) { QJsonObject variationJson = value.toObject(); QVariant mapVariant = variationJson.value(QLatin1String("map")).toVariant(); VariantToMapConverter converter; auto map = converter.toMap(mapVariant, mapDir); if (!map) { qDebug() << "Failed to load map for stamp:" << converter.errorString(); continue; } qreal probability = variationJson.value(QLatin1String("probability")).toDouble(1); stamp.addVariation(std::move(map), probability); } return stamp; }
void TileStampManager::setQuickStamp(int index, TileStamp stamp) { stamp.setName(tr("Quickstamp %1").arg(index + 1)); stamp.setQuickStampIndex(index); // make sure existing quickstamp is removed from stamp model eraseQuickStamp(index); mTileStampModel->addStamp(stamp); mQuickStamps[index] = stamp; }