59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
#include "ffi_extra.h"
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <utility>
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
|
|
std::unique_ptr<ParameterMap> get_transform_parameter_map(itk::simple::ElastixImageFilter& tfilter, const unsigned int index) {
|
|
itk::simple::ElastixImageFilter::ParameterMapType parameter_map = tfilter.GetTransformParameterMap(index);
|
|
ParameterMap transform_parameter_map = ParameterMap(parameter_map);
|
|
auto ptr = std::make_unique<ParameterMap>(parameter_map);
|
|
return ptr;
|
|
}
|
|
|
|
std::unique_ptr<ParameterMap> get_default_parameter_map(const std::string& kind) {
|
|
itk::simple::ElastixImageFilter::ParameterMapType parameter_map = itk::simple::GetDefaultParameterMap(kind);
|
|
ParameterMap default_parameter_map = ParameterMap(parameter_map);
|
|
auto ptr = std::make_unique<ParameterMap>(default_parameter_map);
|
|
return ptr;
|
|
}
|
|
|
|
void set_parameter_map(itk::simple::ElastixImageFilter& tfilter, const std::unique_ptr<ParameterMap>& parameter_map) {
|
|
tfilter.SetParameterMap(parameter_map->parameters);
|
|
};
|
|
|
|
ParameterMap::ParameterMap() = default;
|
|
ParameterMap::~ParameterMap() = default;
|
|
|
|
ParameterMap::ParameterMap(itk::simple::ElastixImageFilter::ParameterMapType parameter_map) {
|
|
this->parameters = std::move(parameter_map);
|
|
}
|
|
|
|
std::unique_ptr<ParameterMap> new_parameter_map() {
|
|
ParameterMap parameter_map;
|
|
auto ptr = std::make_unique<ParameterMap>(parameter_map);
|
|
return ptr;
|
|
}
|
|
|
|
void ParameterMap::insert(const std::string &key, const std::vector<std::string> &value) {
|
|
this->parameters.emplace(key, value);
|
|
}
|
|
|
|
std::unique_ptr<std::vector<std::string>> ParameterMap::keys() const {
|
|
std::vector<std::string> keys;
|
|
for (auto &[key, value] : this->parameters) {
|
|
keys.push_back(key);
|
|
}
|
|
auto ptr = std::make_unique<std::vector<std::string>>(keys);
|
|
return ptr;
|
|
}
|
|
|
|
std::unique_ptr<std::vector<std::string>> ParameterMap::get(const std::string& key) const {
|
|
std::vector<std::string> value = this->parameters.at(key);
|
|
auto ptr = std::make_unique<std::vector<std::string>>(value);
|
|
return ptr;
|
|
}
|