29 constexpr int64_t lo = std::numeric_limits<int>::lowest();
30 constexpr int64_t hi = std::numeric_limits<int>::max();
31 const int min = (int)std::clamp(v.min.value_or(lo), lo, hi);
32 const int max = (int)std::clamp(v.max.value_or(hi), (int64_t)min, hi);
33 const int def = (int)std::clamp((int64_t)v.def, (int64_t)min, (int64_t)max);
34 return new Process::IntSpinBox(min, max, def, name,
id, parent);
37 std::vector<std::pair<QString, ossia::value>> alternatives;
38 const bool labelled = v.labels.size() == v.values.size();
39 for(std::size_t idx = 0; idx < v.values.size(); idx++)
41 const auto& val = v.values[idx];
44 if(
auto i = ossia::get_if<int64_t>(&val))
47 text = QString::number(*i);
49 else if(
auto d = ossia::get_if<double>(&val))
52 text = QString::number(*d);
54 else if(
auto s = ossia::get_if<std::string>(&val))
56 text = QString::fromStdString(*s);
59 text = QString::fromStdString(v.labels[idx]);
60 alternatives.emplace_back(std::move(text), value);
65 const ossia::value init
66 = alternatives[std::min<std::size_t>(v.def, alternatives.size() - 1)].second;
67 return new Process::ComboBox(std::move(alternatives), init, name,
id, parent);
Process::ControlInlet * makeLongInputControl(const isf::long_input &v, const QString &name, Id< Process::Port > id, QObject *parent)
The control of an ISF / CSF / geometry-filter long input.
Definition LongInputControl.hpp:23