16 namespace visualization {
20 static int g_next_vector_edit_id = 1;
31 impl_->id_ =
"##vectoredit_" +
std::to_string(g_next_vector_edit_id++);
39 if (impl_->is_unit_vector_) {
40 impl_->value_ = val.normalized();
47 std::function<
void(
const Eigen::Vector3f&)> on_changed) {
48 impl_->on_changed_ = on_changed;
53 auto em =
std::ceil(ImGui::GetTextLineHeight());
54 auto padding = ImGui::GetStyle().FramePadding;
60 ImGui::SetCursorScreenPos(
61 ImVec2(
float(
frame.x),
float(
frame.y) - ImGui::GetScrollY()));
63 ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding,
66 ImGui::PushStyleColor(
69 ImGui::PushStyleColor(
70 ImGuiCol_FrameBgHovered,
72 ImGui::PushStyleColor(
73 ImGuiCol_FrameBgActive,
79 if (ImGui::InputFloat3(impl_->id_.c_str(), impl_->value_.data())) {
82 ImGui::PopItemWidth();
86 ImGui::PopStyleColor(3);
89 if (ImGui::IsItemDeactivatedAfterEdit()) {
90 if (impl_->on_changed_) {
91 impl_->on_changed_(impl_->value_);
Size CalcPreferredSize(const LayoutContext &context, const Constraints &constraints) const override
Eigen::Vector3f GetValue() const
Widget::DrawResult Draw(const DrawContext &context) override
void SetValue(const Eigen::Vector3f &val)
Sets the value of the widget. Does not call onValueChanged.
void SetOnValueChanged(std::function< void(const Eigen::Vector3f &)> on_changed)
MiniVec< float, N > ceil(const MiniVec< float, N > &a)
ImVec4 colorToImgui(const Color &color)
Generic file read and write utility for python interface.
std::string to_string(const T &n)
std::function< void(const Eigen::Vector3f &)> on_changed_