Skip to content

Commit

Permalink
Merge branch 'main' into feature_new-modelwarping-config
Browse files Browse the repository at this point in the history
  • Loading branch information
adamkewley committed Jul 31, 2024
2 parents 3993aa6 + 890d513 commit 689c78e
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 40 deletions.
2 changes: 1 addition & 1 deletion src/OpenSimCreator/UI/SplashTab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ class osc::SplashTab::Impl final {
// names
int imguiID = 0;

ui::set_num_columns(2, nullptr, false);
ui::set_num_columns(2, std::nullopt, false);
drawMenuLeftColumnContent(imguiID);
ui::next_column();
drawMenuRightColumnContent(imguiID);
Expand Down
18 changes: 9 additions & 9 deletions src/oscar/UI/oscimgui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,12 @@ void osc::ui::draw_text(CStringView sv)
ImGui::TextUnformatted(sv.c_str(), sv.c_str() + sv.size());
}

void osc::ui::draw_text_v(CStringView fmt, va_list args)
void osc::ui::detail::draw_text_v(CStringView fmt, va_list args)
{
ImGui::TextV(fmt.c_str(), args);
}

void osc::ui::draw_text_disabled_v(CStringView fmt, va_list args)
void osc::ui::detail::draw_text_disabled_v(CStringView fmt, va_list args)
{
ImGui::TextDisabledV(fmt.c_str(), args);
}
Expand All @@ -134,7 +134,7 @@ void osc::ui::draw_text_wrapped(CStringView sv)
ImGui::TextWrapped("%s", sv.c_str());
}

void osc::ui::draw_text_wrapped_v(CStringView fmt, va_list args)
void osc::ui::detail::draw_text_wrapped_v(CStringView fmt, va_list args)
{
ImGui::TextWrappedV(fmt.c_str(), args);
}
Expand Down Expand Up @@ -227,9 +227,9 @@ bool osc::ui::draw_tab_item_button(CStringView label)
return ImGui::TabItemButton(label.c_str());
}

void osc::ui::set_num_columns(int count, const char* id, bool border)
void osc::ui::set_num_columns(int count, std::optional<CStringView> id, bool border)
{
ImGui::Columns(count, id, border);
ImGui::Columns(count, id ? id->c_str() : nullptr, border);
}

float osc::ui::get_column_width(int column_index)
Expand Down Expand Up @@ -427,9 +427,9 @@ void osc::ui::close_current_popup()
ImGui::CloseCurrentPopup();
}

void osc::ui::set_tooltip_v(const char* fmt, va_list args)
void osc::ui::detail::set_tooltip_v(CStringView fmt, va_list args)
{
ImGui::SetTooltipV(fmt, args);
ImGui::SetTooltipV(fmt.c_str(), args);
}

void osc::ui::set_scroll_y_here()
Expand Down Expand Up @@ -2414,9 +2414,9 @@ Rect osc::ui::plot::get_plot_screen_rect()
return {top_left, top_left + Vec2{ImPlot::GetPlotSize()}};
}

void osc::ui::plot::draw_annotation_v(Vec2 location_dataspace, const Color& color, Vec2 pixel_offset, bool clamp, const char* fmt, va_list args)
void osc::ui::plot::detail::draw_annotation_v(Vec2 location_dataspace, const Color& color, Vec2 pixel_offset, bool clamp, CStringView fmt, va_list args)
{
ImPlot::AnnotationV(location_dataspace.x, location_dataspace.y, color, pixel_offset, clamp, fmt, args);
ImPlot::AnnotationV(location_dataspace.x, location_dataspace.y, color, pixel_offset, clamp, fmt.c_str(), args);
}

bool osc::ui::plot::drag_point(int id, Vec2d* location, const Color& color, float size, DragToolFlags flags)
Expand Down
86 changes: 58 additions & 28 deletions src/oscar/UI/oscimgui.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,34 +39,58 @@ namespace osc::ui
// vertically align upcoming text baseline to FramePadding.y so that it will align properly to regularly framed items (call if you have text on a line before a framed item)
void align_text_to_frame_padding();

namespace detail
{
void draw_text_v(CStringView fmt, va_list);
inline void draw_text(CStringView fmt, ...)
{
va_list args;
va_start(args, fmt);
draw_text_v(fmt, args);
va_end(args);
}
}
void draw_text(CStringView);
void draw_text_v(CStringView fmt, va_list);
inline void draw_text(const char* fmt, ...)
template<typename... Args>
void draw_text(CStringView fmt, Args&&... args)
{
va_list args;
va_start(args, fmt);
draw_text_v(fmt, args);
va_end(args);
detail::draw_text(fmt, std::forward<Args>(args)...);
}

namespace detail
{
void draw_text_disabled_v(CStringView fmt, va_list);
inline void draw_text_disabled(CStringView fmt, ...)
{
va_list args;
va_start(args, fmt);
draw_text_disabled_v(fmt, args);
va_end(args);
}
}
void draw_text_disabled(CStringView);
void draw_text_disabled_v(CStringView fmt, va_list);
inline void draw_text_disabled(const char* fmt, ...)
template<typename... Args>
void draw_text_disabled(CStringView fmt, Args&&... args)
{
va_list args;
va_start(args, fmt);
draw_text_disabled_v(fmt, args);
va_end(args);
detail::draw_text_disabled(fmt, std::forward<Args>(args)...);
}

namespace detail
{
void draw_text_wrapped_v(CStringView fmt, va_list);
inline void draw_text_wrapped(CStringView fmt, ...)
{
va_list args;
va_start(args, fmt);
draw_text_wrapped_v(fmt, args);
va_end(args);
}
}
void draw_text_wrapped(CStringView);
void draw_text_wrapped_v(CStringView fmt, va_list);
inline void draw_text_wrapped(const char* fmt, ...)
template<typename... Args>
void draw_text_wrapped(CStringView fmt, Args&&... args)
{
va_list args;
va_start(args, fmt);
draw_text_wrapped_v(fmt, args);
va_end(args);
detail::draw_text_wrapped(fmt, std::forward<Args>(args)...);
}

void draw_text_unformatted(CStringView);
Expand Down Expand Up @@ -110,7 +134,7 @@ namespace osc::ui

bool draw_tab_item_button(CStringView label);

void set_num_columns(int count = 1, const char* id = nullptr, bool border = true);
void set_num_columns(int count = 1, std::optional<CStringView> id = std::nullopt, bool border = true);
float get_column_width(int column_index = -1);
void next_column();

Expand Down Expand Up @@ -138,7 +162,7 @@ namespace osc::ui

bool draw_float_slider(CStringView label, float* v, float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags flags = 0);

bool draw_scalar_input(CStringView label, ImGuiDataType data_type, void* p_data, const void* p_step = NULL, const void* p_step_fast = NULL, const char* format = NULL, ImGuiInputTextFlags flags = 0);
bool draw_scalar_input(CStringView label, ImGuiDataType data_type, void* p_data, const void* p_step = nullptr, const void* p_step_fast = nullptr, const char* format = nullptr, ImGuiInputTextFlags flags = 0);

bool draw_int_input(CStringView label, int* v, int step = 1, int step_fast = 100, ImGuiInputTextFlags flags = 0);

Expand Down Expand Up @@ -174,7 +198,7 @@ namespace osc::ui

ImGuiViewport* get_main_viewport();

ImGuiID enable_dockspace_over_viewport(const ImGuiViewport* viewport = NULL, ImGuiDockNodeFlags flags = 0, const ImGuiWindowClass* window_class = NULL);
ImGuiID enable_dockspace_over_viewport(const ImGuiViewport* viewport = nullptr, ImGuiDockNodeFlags flags = 0, const ImGuiWindowClass* window_class = nullptr);

bool begin_panel(CStringView name, bool* p_open = nullptr, ImGuiWindowFlags flags = 0);
void end_panel();
Expand All @@ -184,12 +208,15 @@ namespace osc::ui

void close_current_popup();

void set_tooltip_v(const char* fmt, va_list);
inline void set_tooltip(const char* fmt, ...)
namespace detail
{
void set_tooltip_v(CStringView fmt, va_list);
}
inline void set_tooltip(CStringView fmt, ...)
{
va_list args;
va_start(args, fmt);
set_tooltip_v(fmt, args);
detail::set_tooltip_v(fmt, args);
va_end(args);
}

Expand Down Expand Up @@ -272,7 +299,7 @@ namespace osc::ui
void open_popup(CStringView str_id, ImGuiPopupFlags popup_flags = 0);
bool begin_popup(CStringView str_id, ImGuiWindowFlags flags = 0);
bool begin_popup_context_menu(CStringView str_id = nullptr, ImGuiPopupFlags popup_flags = 1);
bool begin_popup_modal(CStringView name, bool* p_open = NULL, ImGuiWindowFlags flags = 0);
bool begin_popup_modal(CStringView name, bool* p_open = nullptr, ImGuiWindowFlags flags = 0);
void end_popup();

Vec2 get_mouse_pos();
Expand Down Expand Up @@ -938,12 +965,15 @@ namespace osc::ui
//
// - clamping keeps annotations in the plot area
// - annotations are always rendered on top of the plot area
void draw_annotation_v(Vec2 location_dataspace, const Color& color, Vec2 pixel_offset, bool clamp, const char* fmt, va_list args);
inline void draw_annotation(Vec2 location_dataspace, const Color& color, Vec2 pixel_offset, bool clamp, const char* fmt, ...)
namespace detail
{
void draw_annotation_v(Vec2 location_dataspace, const Color& color, Vec2 pixel_offset, bool clamp, CStringView fmt, va_list args);
}
inline void draw_annotation(Vec2 location_dataspace, const Color& color, Vec2 pixel_offset, bool clamp, CStringView fmt, ...)
{
va_list args;
va_start(args, fmt);
draw_annotation_v(location_dataspace, color, pixel_offset, clamp, fmt, args);
detail::draw_annotation_v(location_dataspace, color, pixel_offset, clamp, fmt, args);
va_end(args);
}

Expand Down
2 changes: 1 addition & 1 deletion src/oscar/UI/ui_context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ void osc::ui::context::init()
// load application-level ImGui settings, then the user one,
// so that the user settings takes precedence
#ifdef EMSCRIPTEN
io.IniFilename = NULL;
io.IniFilename = nullptr;
#else
float dpi_scale_factor = [&]()
{
Expand Down
2 changes: 1 addition & 1 deletion tests/testoscar/Utils/TestFlags.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,4 +150,4 @@ TEST(Flags, lowest_set_returns_lowest_flag_for_non_None_values)
const auto flags = Flags<ExampleDenseFlags>{ExampleDenseFlags::Flag1, ExampleDenseFlags::Flag3};
ASSERT_EQ(flags.lowest_set(), ExampleDenseFlags::Flag1);
}
}
}

0 comments on commit 689c78e

Please sign in to comment.