From e35a90b4f45a94ab5ddf7bc9660cab451fe1a7b3 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sat, 11 May 2024 19:53:35 -0400 Subject: (mapman) Export images. --- mapman/src/groupview.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'mapman/src/groupview.cpp') diff --git a/mapman/src/groupview.cpp b/mapman/src/groupview.cpp index ea4225a..7881184 100644 --- a/mapman/src/groupview.cpp +++ b/mapman/src/groupview.cpp @@ -1,6 +1,7 @@ #include "groupview.hpp" #include "library.hpp" #include "painter.hpp" +#include "src/utils.hpp" #include @@ -19,6 +20,8 @@ #include #include #include +#include +#include group_view::group_view() : QMdiSubWindow() { @@ -141,6 +144,14 @@ void group_view::set_library(map_library *lib) refresh_list(); } +void group_view::export_group_image(QString fn, int64_t gid) +{ + if (!l || !l->has_group(gid)) + return; + QImage img = image_of_map_group(l, l->get_group(gid), 1.); + img.save(fn, "PNG"); +} + void group_view::add_group() { map_group_t g { @@ -260,3 +271,31 @@ void group_view::update_map_view() for (int i = 0; i < g.hc * g.vc; ++i) p->set_map_id(i, g.populated[i], g.ids[i]); } + +void group_view::export_current_group() +{ + int64_t curgid = -1; + if (tv->currentIndex().isValid() && tv->currentIndex().siblingAtColumn(3).isValid()) + { + auto idx = tv->currentIndex().siblingAtColumn(3); + curgid = mf->data(idx, Qt::ItemDataRole::DisplayRole).toLongLong(); + } + if (!~curgid) + return; + QString fn = QFileDialog::getSaveFileName(this, "Export Image", QString(), "Images (*.png)"); + if (fn.isEmpty()) return; + export_group_image(fn, curgid); +} + +void group_view::export_all_groups() +{ + QString fp = QFileDialog::getExistingDirectory(this, "Select Output Directory"); + if (fp.isEmpty()) return; + auto gids = l->groups(); + for (auto gid : gids) + { + auto g = l->get_group(gid); + auto fn = QString("%1/%2_%3.png").arg(fp).arg(gid).arg(QString::fromStdString(g.title)); + export_group_image(fn, gid); + } +} -- cgit v1.2.3