3#include "MRPch/MRFmt.h"
64 ImGuiButtonFlags
flags = ImGuiButtonFlags_None;
103MRVIEWER_API
bool buttonEx(
const char* label,
bool active,
const Vector2f&
size = Vector2f( 0, 0 ),
107MRVIEWER_API
bool button(
const char* label,
bool active,
const Vector2f&
size = Vector2f( 0, 0 ), ImGuiKey key = ImGuiKey_None );
110inline bool button(
const char* label,
const Vector2f&
size = Vector2f( 0, 0 ), ImGuiKey key = ImGuiKey_None )
116MRVIEWER_API
bool buttonCommonSize(
const char* label,
const Vector2f&
size = Vector2f( 0, 0 ), ImGuiKey key = ImGuiKey_None );
118MRVIEWER_API
bool buttonUnique(
const char* label,
int* value,
int ownValue,
const Vector2f&
size = Vector2f( 0, 0 ), ImGuiKey key = ImGuiKey_None );
127 const std::string& name,
128 const Vector2f& iconSize,
129 const std::string& text,
130 const ImVec2& buttonSize,
133inline bool buttonIcon(
const std::string& name,
const Vector2f& iconSize,
const std::string& text,
bool active,
const ImVec2& buttonSize )
138 return buttonIconEx(name, iconSize, text, buttonSize, params );
141inline bool buttonIcon(
const std::string& name,
const Vector2f& iconSize,
const std::string& text,
const ImVec2& buttonSize )
143 return buttonIconEx( name, iconSize, text, buttonSize );
147 const std::string& name,
148 const Vector2f& iconSize,
149 const std::string& text,
150 const ImVec2& buttonSize,
151 bool textUnderIcon =
true,
152 ImGuiKey key = ImGuiKey_None )
158 params.
underlineFirstLetter = std::string_view( ImGui::GetKeyName( key ) ) == std::string_view( text.c_str(), 1 );
164 const std::string& iconName,
165 const Vector2f& iconSize,
166 const std::string& text,
167 const ImVec2& buttonSize,
170 bool textUnderIcon =
true,
171 ImGuiKey key = ImGuiKey_None );
175MRVIEWER_API
bool toggle(
const char* label,
bool* value );
177MRVIEWER_API
bool checkbox(
const char* label,
bool* value );
181MRVIEWER_API
bool checkboxValid(
const char* label,
bool* value,
bool valid );
183MRVIEWER_API
bool checkboxMixed(
const char* label,
bool* value,
bool mixed );
185template <
typename Getter,
typename Setter>
189 bool ret =
checkbox( label, &value );
193template <
typename Getter,
typename Setter>
206 bool value = bool( target & flags );
207 bool mixed = value && ( target & flags ) != flags;
244MRVIEWER_API
bool radioButton(
const char* label,
int* value,
int valButton );
256 [[nodiscard]]
explicit operator int()
const
271MRVIEWER_API
bool colorEdit4(
const char* label, Vector4f& color, ImGuiColorEditFlags flags = ImGuiColorEditFlags_None );
272MRVIEWER_API
bool colorEdit4(
const char* label,
Color& color, ImGuiColorEditFlags flags = ImGuiColorEditFlags_None );
275MRVIEWER_API
bool combo(
const char* label,
int* v,
const std::vector<std::string>& options,
276 bool showPreview =
true,
const std::vector<std::string>& tooltips = {},
const std::string& defaultText =
"Not selected" );
279MRVIEWER_API
bool beginCombo(
const char* label,
const std::string& text =
"Not selected",
bool showPreview =
true );
280MRVIEWER_API
void endCombo(
bool showPreview =
true );
283MRVIEWER_API
bool inputText(
const char* label, std::string& str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback =
nullptr,
void* user_data =
nullptr );
285MRVIEWER_API
bool inputTextIntoArray(
const char* label,
char* array, std::size_t
size, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback =
nullptr,
void* user_data =
nullptr );
288MRVIEWER_API
bool inputTextMultiline(
const char* label, std::string& str,
const ImVec2&
size = ImVec2(), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback =
nullptr,
void* user_data =
nullptr );
290MRVIEWER_API
bool inputTextIntoArrayMultiline(
const char* label,
char* buf,
size_t buf_size,
const ImVec2&
size = ImVec2(), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback =
nullptr,
void* user_data =
nullptr );
301MRVIEWER_API
bool inputTextCentered(
const char* label, std::string& str,
float width = 0.0f, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback =
nullptr,
void* user_data =
nullptr );
304MRVIEWER_API
void inputTextCenteredReadOnly(
const char* label,
const std::string& str,
float width = 0.0f,
const std::optional<ImVec4>& textColor = {},
const std::optional<ImVec4>& labelColor = {} );
310 MRVIEWER_API
bool genericSlider(
const char* label, ImGuiDataType data_type,
void* p_data,
const void* p_min,
const void* p_max,
const char* format, ImGuiSliderFlags flags );
313 template <
typename T>
314 concept Scalar = std::is_arithmetic_v<T> && !std::is_same_v<T, bool>;
317 template <
typename T>
322 template <
typename Bound,
typename Target>
324 std::same_as<Bound, Target> ||
329 template <
typename Speed,
typename Target>
331 std::same_as<Speed, typename VectorTraits<Target>::BaseType> || std::same_as<Speed, float> ||
332 std::same_as<Speed, Target> || std::same_as<Speed, typename VectorTraits<Target>::template ChangeBase<float>>;
344 template <UnitEnum E, VectorOrScalar T,
typename F>
350 template <UnitEnum E, VectorOrScalar T>
355 template <UnitEnum E, VectorOrScalar T, VectorOrScalar TargetType>
366template <UnitEnum E, detail::VectorOrScalar T, detail::Val
idBoundForTargetType<T> U =
typename VectorTraits<T>::BaseType>
374template <UnitEnum E, detail::VectorOrScalar T, detail::Val
idDragSpeedForTargetType<T> SpeedType =
float, detail::Val
idBoundForTargetType<T> U =
typename VectorTraits<T>::BaseType>
375bool drag(
const char* label, T& v, SpeedType vSpeed =
detail::getDefaultDragSpeed<E, SpeedType>(),
const U& vMin = std::numeric_limits<U>::lowest(),
const U& vMax = std::numeric_limits<U>::max(),
UnitToStringParams<E> unitParams = {}, ImGuiSliderFlags flags =
defaultSliderFlags,
const U& step =
detail::getDefaultStep<E, U, T>(
false ),
const U& stepFast =
detail::getDefaultStep<E, U, T>(
true ) );
381template <UnitEnum E, detail::VectorOrScalar T>
402MRVIEWER_API
void separator(
float scaling,
const std::string& text =
"",
int issueCount = -1 );
405 const std::string& text,
407 const std::string& issueCount );
410MRVIEWER_API
void separator(
float scaling,
const ImGuiImage& icon,
const std::string& text,
const Vector2f& iconSize = { 24.f, 24.f } );
411MRVIEWER_API
void separator(
float scaling,
const std::string& iconName,
const std::string& text,
const Vector2f& iconSize = { 24.f, 24.f } );
417MRVIEWER_API
void progressBar(
float scaling,
float fraction,
const Vector2f&
size = Vector2f( -1, 0 ) );
420MRVIEWER_API
bool beginTabBar(
const char* str_id, ImGuiTabBarFlags flags = 0 );
422MRVIEWER_API
bool beginTabItem(
const char* label,
bool* p_open = NULL, ImGuiTabItemFlags flags = 0 );
449MRVIEWER_API
void highlightWindowArea(
float scaling,
const ImVec2& min = {-1.0f, -1.0f},
const ImVec2& max = { -1.0f, -1.0f } );
455#include "MRUIStyle.ipp"
Definition MRImGuiImage.h:14
Definition MRUIStyle.h:314
Definition MRUIStyle.h:323
Definition MRUIStyle.h:330
Definition MRUIStyle.h:318
auto width(const Box< V > &box)
returns size along x axis
Definition MRMesh/MRBox.h:304
constexpr const V & get(const Box< V > &box) noexcept
get<0> returns min, get<1> returns max
Definition MRMesh/MRBox.h:350
T getDefaultStep(bool fast)
float getDefaultDragSpeed()
MRVIEWER_API bool genericSlider(const char *label, ImGuiDataType data_type, void *p_data, const void *p_min, const void *p_max, const char *format, ImGuiSliderFlags flags)
bool unitWidget(const char *label, T &v, UnitToStringParams< E > &unitParams, F &&func)
MRVIEWER_API bool buttonEx(const char *label, bool active, const Vector2f &size=Vector2f(0, 0), ImGuiButtonFlags flags=ImGuiButtonFlags_None, const ButtonCustomizationParams &custmParams={})
draw gradient button, which can be disabled (active = false)
TextureType
Definition MRUIStyle.h:24
MRVIEWER_API bool checkboxOrModifier(const char *label, CheckboxOrModifierState &value, int modifiers, int respectedModifiers=-1, std::optional< bool > valueOverride={})
MRVIEWER_API std::unique_ptr< ImGuiImage > & getTexture(TextureType type)
MRVIEWER_API void alignTextToRadioButton(float scaling)
Specialization of alignTextToFramePadding for UI::radioButton.
MRVIEWER_API void highlightWindowArea(float scaling, const ImVec2 &min={-1.0f, -1.0f}, const ImVec2 &max={ -1.0f, -1.0f })
MRVIEWER_API bool inputTextMultilineFullyScrollable(CachedTextSize &cache, const char *label, std::string &str, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
This version adds a horizontal scrollbar. Also it never draws the label, and uses full window width b...
MRVIEWER_API bool radioButtonOrModifier(const char *label, RadioButtonOrModifierState &value, int valButton, int modifiers, int respectedModifiers=-1, std::optional< int > valueOverride={})
bool drag(const char *label, T &v, SpeedType vSpeed=detail::getDefaultDragSpeed< E, SpeedType >(), const U &vMin=std::numeric_limits< U >::lowest(), const U &vMax=std::numeric_limits< U >::max(), UnitToStringParams< E > unitParams={}, ImGuiSliderFlags flags=defaultSliderFlags, const U &step=detail::getDefaultStep< E, U, T >(false), const U &stepFast=detail::getDefaultStep< E, U, T >(true))
MRVIEWER_API void separator(float scaling, const std::string &text="", int issueCount=-1)
MRVIEWER_API void endTabBar()
MRVIEWER_API void transparentTextWrapped(const char *fmt,...)
similar to ImGui::TextWrapped but use current text color with alpha channel = 0.5
MRVIEWER_API bool inputTextIntoArrayMultiline(const char *label, char *buf, size_t buf_size, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
This overload is for arrays, as opposed to std::strings.
MRVIEWER_API void endTabItem()
bool buttonIconFlatBG(const std::string &name, const Vector2f &iconSize, const std::string &text, const ImVec2 &buttonSize, bool textUnderIcon=true, ImGuiKey key=ImGuiKey_None)
Definition MRUIStyle.h:146
MRVIEWER_API bool checkbox(const char *label, bool *value)
draw gradient checkbox
MRVIEWER_API void notificationFrame(NotificationType type, const std::string &str, float scaling)
similar to ImGui::TextWrapped but also have styled background and notification type indicator
MRVIEWER_API void inputTextCenteredReadOnly(const char *label, const std::string &str, float width=0.0f, const std::optional< ImVec4 > &textColor={}, const std::optional< ImVec4 > &labelColor={})
draw read-only text box with text aligned by center
MRVIEWER_API bool inputTextIntoArrayMultilineFullyScrollable(CachedTextSize &cache, const char *label, char *buf, size_t buf_size, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
MRVIEWER_API void alignTextToButton(float scaling)
Specialization of alignTextToFramePadding for UI::button with default height.
MRVIEWER_API void alignTextToCheckBox(float scaling)
Specialization of alignTextToFramePadding for UI::checkbox.
MRVIEWER_API void alignTextToControl(float controlHeight)
MRVIEWER_API void drawPoltHorizontalAxis(float menuScaling, const PlotAxis &plotAxis)
MRVIEWER_API bool checkKey(ImGuiKey passedKey)
returns true if button is pressed in this frame, preserve its further processing in viewer keyboard e...
MRVIEWER_API void drawPoltVerticalAxis(float menuScaling, const PlotAxis &plotAxis)
MRVIEWER_API bool beginCombo(const char *label, const std::string &text="Not selected", bool showPreview=true)
draw custom content combo box
bool buttonIcon(const std::string &name, const Vector2f &iconSize, const std::string &text, bool active, const ImVec2 &buttonSize)
Definition MRUIStyle.h:133
constexpr int defaultSliderFlags
Definition MRUIStyle.h:360
bool slider(const char *label, T &v, const U &vMin, const U &vMax, UnitToStringParams< E > unitParams={}, ImGuiSliderFlags flags=defaultSliderFlags)
MRVIEWER_API bool combo(const char *label, int *v, const std::vector< std::string > &options, bool showPreview=true, const std::vector< std::string > &tooltips={}, const std::string &defaultText="Not selected")
draw combo box
MRVIEWER_API const std::pair< const char *, ImU32 > & notificationChar(NotificationType type)
returns icons font character for given notification type, and its color
MRVIEWER_API bool radioButton(const char *label, int *value, int valButton)
draw gradient radio button
MRVIEWER_API void setTooltipIfHovered(const std::string &text, float scaling)
draw tooltip only if current item is hovered
MRVIEWER_API bool checkboxValid(const char *label, bool *value, bool valid)
If valid is false checkbox is disabled. Same as checkboxOrFixedValue( ..., valid ?...
MRVIEWER_API void endCombo(bool showPreview=true)
MRVIEWER_API bool inputTextIntoArray(const char *label, char *array, std::size_t size, ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
This overload is for arrays, as opposed to std::strings.
MRVIEWER_API void transparentText(const char *fmt,...)
similar to ImGui::Text but use current text color with alpha channel = 0.5
MRVIEWER_API void init()
init internal parameters
MRVIEWER_API bool checkboxOrFixedValue(const char *label, bool *value, std::optional< bool > valueOverride)
If valueOverride is specified, then the checkbox is disabled and that value is displayed instead of v...
void readOnlyValue(const char *label, const T &v, std::optional< ImVec4 > textColor={}, UnitToStringParams< E > unitParams={}, std::optional< ImVec4 > labelColor={})
MRVIEWER_API void progressBar(float scaling, float fraction, const Vector2f &size=Vector2f(-1, 0))
MRVIEWER_API bool colorEdit4(const char *label, Vector4f &color, ImGuiColorEditFlags flags=ImGuiColorEditFlags_None)
draw gradient color edit 4
MRVIEWER_API bool buttonUniqueIcon(const std::string &iconName, const Vector2f &iconSize, const std::string &text, const ImVec2 &buttonSize, int *value, int ownValue, bool textUnderIcon=true, ImGuiKey key=ImGuiKey_None)
MRVIEWER_API bool inputTextMultiline(const char *label, std::string &str, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
Draws multiline text input, should be used instead of ImGui::InputTextMultiline().
MRVIEWER_API bool checkboxMixed(const char *label, bool *value, bool mixed)
draw gradient checkbox with mixed state
MRVIEWER_API bool buttonIconEx(const std::string &name, const Vector2f &iconSize, const std::string &text, const ImVec2 &buttonSize, const ButtonIconCustomizationParams ¶ms={})
MRVIEWER_API bool beginTabBar(const char *str_id, ImGuiTabBarFlags flags=0)
bool checkboxFlags(const char *label, T &target, T flags)
Draw a checkbox toggling one or more bits in the mask.
Definition MRUIStyle.h:204
MRVIEWER_API bool buttonUnique(const char *label, int *value, int ownValue, const Vector2f &size=Vector2f(0, 0), ImGuiKey key=ImGuiKey_None)
draw button with same logic as radioButton
MRVIEWER_API bool button(const char *label, bool active, const Vector2f &size=Vector2f(0, 0), ImGuiKey key=ImGuiKey_None)
MRVIEWER_API bool toggle(const char *label, bool *value)
draws checkbox-like toggle (enabled/disabled states)(O=)/(=O)
MRVIEWER_API bool radioButtonOrFixedValue(const char *label, int *value, int valButton, std::optional< int > valueOverride)
If valueOverride is specified, then the radio button is disabled and that value is displayed instead ...
MRVIEWER_API bool inputText(const char *label, std::string &str, ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
Draws text input, should be used instead of ImGui::InputText().
MRVIEWER_API void alignTextToFramePadding(float padding)
MRVIEWER_API bool beginTabItem(const char *label, bool *p_open=NULL, ImGuiTabItemFlags flags=0)
MRVIEWER_API bool inputTextCentered(const char *label, std::string &str, float width=0.0f, ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
draw input text box with text aligned by center
MRVIEWER_API bool buttonCommonSize(const char *label, const Vector2f &size=Vector2f(0, 0), ImGuiKey key=ImGuiKey_None)
Definition MRCameraOrientationPlugin.h:8
ImVec2 size(const ViewportRectangle &rect)
Definition MRViewport.h:29
NotificationType
Definition MRNotificationType.h:7
std::variant< > VarUnitToStringParams
Definition MRUnits.h:321
Definition MRMesh/MRColor.h:9
Definition MRUIStyle.h:293
std::optional< ImVec2 > cachedSize
Definition MRUIStyle.h:294
Definition MRUIStyle.h:220
bool modifierHeld
Definition MRUIStyle.h:224
bool baseValue
Definition MRUIStyle.h:222
Definition MRUIStyle.h:74
float size
Definition MRUIStyle.h:79
VarUnitToStringParams labelFormatParams
Definition MRUIStyle.h:96
float lenDash
Definition MRUIStyle.h:90
size_t textDashIndicesStep
Definition MRUIStyle.h:87
float minValue
Definition MRUIStyle.h:83
float lenDashWithText
Definition MRUIStyle.h:92
ImVec2 startAxisPoint
Definition MRUIStyle.h:76
float optimalLenth
Definition MRUIStyle.h:81
float maxValue
Definition MRUIStyle.h:85
float textPadding
Definition MRUIStyle.h:94
Definition MRMesh/MRVectorTraits.h:15
static constexpr int size
Definition MRMesh/MRVectorTraits.h:19
T BaseType
Definition MRMesh/MRVectorTraits.h:18