diff --git a/src/anm2.h b/src/anm2.h index 301140a..16819f1 100644 --- a/src/anm2.h +++ b/src/anm2.h @@ -22,7 +22,6 @@ #define ANM2_EXTENSION "anm2" #define ANM2_SPRITESHEET_EXTENSION "png" -/* Elements */ #define ANM2_ELEMENT_LIST \ X(ANIMATED_ACTOR, "AnimatedActor") \ X(INFO, "Info") \ @@ -101,14 +100,16 @@ DEFINE_ENUM_TO_STRING_FUNCTION(ANM2_ELEMENT_ENUM_TO_STRING, ANM2_ELEMENT_STRINGS X(EVENT_ID, "EventId") \ X(AT_FRAME, "AtFrame") -typedef enum { +typedef enum +{ #define X(name, str) ANM2_ATTRIBUTE_##name, ANM2_ATTRIBUTE_LIST #undef X ANM2_ATTRIBUTE_COUNT } Anm2Attribute; -static const char* ANM2_ATTRIBUTE_STRINGS[] = { +static const char* ANM2_ATTRIBUTE_STRINGS[] = +{ #define X(name, str) str, ANM2_ATTRIBUTE_LIST #undef X diff --git a/src/imgui.cpp b/src/imgui.cpp index 04bedb4..96724b8 100644 --- a/src/imgui.cpp +++ b/src/imgui.cpp @@ -1,5 +1,17 @@ #include "imgui.h" +static const char* _imgui_f32_format_get(const ImguiItem& item, f32& value) +{ + if (item.isEmptyFormat) return ""; + return f32_format_get(value); +} + +static const char* _imgui_vec2_format_get(const ImguiItem& item, vec2& value) +{ + if (item.isEmptyFormat) return ""; + return vec2_format_get(value); +} + static bool _imgui_window_color_from_position_get(SDL_Window* self, const vec2& position, vec4& color) { ImGuiIO& io = ImGui::GetIO(); @@ -259,7 +271,6 @@ static void _imgui_item_post(const ImguiItem& self, Imgui* imgui, ImguiItemType if (self.isSeparator) ImGui::Separator(); } - #define IMGUI_ITEM_FUNCTION(NAME, TYPE, FUNCTION) \ static bool NAME(ImguiItem self, Imgui* imgui) \ { \ @@ -398,10 +409,10 @@ IMGUI_ITEM_VALUE_FUNCTION(_imgui_color_button, IMGUI_COLOR_BUTTON, vec4, ImGui:: IMGUI_ITEM_VALUE_FUNCTION(_imgui_checkbox, IMGUI_CHECKBOX, bool, ImGui::Checkbox(self.label_get(), &value)); IMGUI_ITEM_VALUE_CLAMP_FUNCTION(_imgui_input_int, IMGUI_INPUT_INT, s32, ImGui::InputInt(self.label_get(), &value, self.step, self.stepFast, self.flags)); IMGUI_ITEM_VALUE_CLAMP_FUNCTION(_imgui_input_int2, IMGUI_INPUT_INT, ivec2, ImGui::InputInt2(self.label_get(), value_ptr(value), self.flags)); -IMGUI_ITEM_VALUE_CLAMP_FUNCTION(_imgui_input_float, IMGUI_INPUT_FLOAT, f32, ImGui::InputFloat(self.label_get(), &value, self.step, self.stepFast, f32_format_get(value), self.flags)); -IMGUI_ITEM_VALUE_FUNCTION(_imgui_slider_float, IMGUI_SLIDER_FLOAT, f32, ImGui::SliderFloat(self.label_get(), &value, self.min, self.max, f32_format_get(value), self.flags)); -IMGUI_ITEM_VALUE_FUNCTION(_imgui_drag_float, IMGUI_DRAG_FLOAT, f32, ImGui::DragFloat(self.label_get(), &value, self.speed, self.min, self.max, f32_format_get(value))); -IMGUI_ITEM_VALUE_FUNCTION(_imgui_drag_float2, IMGUI_DRAG_FLOAT, vec2, ImGui::DragFloat2(self.label_get(), value_ptr(value), self.speed, self.min, self.max, vec2_format_get(value))); +IMGUI_ITEM_VALUE_CLAMP_FUNCTION(_imgui_input_float, IMGUI_INPUT_FLOAT, f32, ImGui::InputFloat(self.label_get(), &value, self.step, self.stepFast, _imgui_f32_format_get(self, value), self.flags)); +IMGUI_ITEM_VALUE_FUNCTION(_imgui_slider_float, IMGUI_SLIDER_FLOAT, f32, ImGui::SliderFloat(self.label_get(), &value, self.min, self.max, _imgui_f32_format_get(self, value), self.flags)); +IMGUI_ITEM_VALUE_FUNCTION(_imgui_drag_float, IMGUI_DRAG_FLOAT, f32, ImGui::DragFloat(self.label_get(), &value, self.speed, self.min, self.max, _imgui_f32_format_get(self, value))); +IMGUI_ITEM_VALUE_FUNCTION(_imgui_drag_float2, IMGUI_DRAG_FLOAT, vec2, ImGui::DragFloat2(self.label_get(), value_ptr(value), self.speed, self.min, self.max, _imgui_vec2_format_get(self, value))); IMGUI_ITEM_VALUE_FUNCTION(_imgui_color_edit3, IMGUI_COLOR_EDIT, vec3, ImGui::ColorEdit3(self.label_get(), value_ptr(value), self.flags)); IMGUI_ITEM_VALUE_FUNCTION(_imgui_color_edit4, IMGUI_COLOR_EDIT, vec4, ImGui::ColorEdit4(self.label_get(), value_ptr(value), self.flags)); IMGUI_ITEM_CHECKBOX_FUNCTION(_imgui_checkbox_selectable, _imgui_selectable(self, imgui)); @@ -1326,7 +1337,7 @@ static void _imgui_taskbar(Imgui* self) static auto& columns = self->settings->generateColumns; static auto& count = self->settings->generateCount; static auto& delay = self->settings->generateDelay; - static auto& time = self->generatePreview->time; + static f32& time = self->generatePreview->time; _imgui_begin_child(IMGUI_GENERATE_ANIMATION_FROM_GRID_OPTIONS_CHILD, self); _imgui_input_int2(IMGUI_GENERATE_ANIMATION_FROM_GRID_START_POSITION, self, startPosition); diff --git a/src/imgui.h b/src/imgui.h index d1bcdd8..74fab2c 100644 --- a/src/imgui.h +++ b/src/imgui.h @@ -500,6 +500,7 @@ struct ImguiItem ImguiPopupType popupType = IMGUI_POPUP_CENTER_WINDOW; bool isDisabled = false; bool isMnemonicDisabled = false; + bool isEmptyFormat = false; bool isSelected = false; bool isUseItemActivated = false; bool isSizeToText = false; @@ -794,6 +795,7 @@ IMGUI_ITEM(IMGUI_GENERATE_ANIMATION_FROM_GRID_SLIDER, self.max = GENERATE_PREVIEW_TIME_MAX, self.value = GENERATE_PREVIEW_TIME_MIN, self.rowCount = 1, + self.isEmptyFormat = true, self.flags = ImGuiSliderFlags_NoInput );