diff --git a/examples/waver/common.cpp b/examples/waver/common.cpp index 7740d98..e3efec3 100644 --- a/examples/waver/common.cpp +++ b/examples/waver/common.cpp @@ -664,6 +664,8 @@ void renderMain() { static bool lastMouseButtonLeft = 0; static bool isTextInput = false; static bool scrollMessagesToBottom = true; + static bool hasAudioCaptureData = false; + static bool hasNewMessages = false; static double tStartInput = 0.0f; static double tEndInput = -100.0f; @@ -679,9 +681,11 @@ void renderMain() { if (stateCurrent.flags.newMessage) { scrollMessagesToBottom = true; messageHistory.push_back(std::move(stateCurrent.message)); + hasNewMessages = true; } if (stateCurrent.flags.newSpectrum) { spectrumCurrent = std::move(stateCurrent.spectrum); + hasAudioCaptureData = !spectrumCurrent.empty(); } if (stateCurrent.flags.newTxAmplitudeData) { txAmplitudeDataCurrent = std::move(stateCurrent.txAmplitudeData); @@ -750,8 +754,17 @@ void renderMain() { } ImGui::SameLine(); - if (ImGui::ButtonSelectable(ICON_FA_COMMENT_ALT " Messages", { 0.35f*ImGui::GetContentRegionAvailWidth(), menuButtonHeight }, windowId == WindowId::Messages)) { - windowId = WindowId::Messages; + { + auto posSave = ImGui::GetCursorScreenPos(); + if (ImGui::ButtonSelectable(ICON_FA_COMMENT_ALT " Messages", { 0.35f*ImGui::GetContentRegionAvailWidth(), menuButtonHeight }, windowId == WindowId::Messages)) { + windowId = WindowId::Messages; + } + auto radius = 0.3f*ImGui::GetTextLineHeight(); + posSave.x += 2.0f*radius; + posSave.y += 2.0f*radius; + if (hasNewMessages) { + ImGui::GetWindowDrawList()->AddCircleFilled(posSave, radius, ImGui::ColorConvertFloat4ToU32({ 1.0f, 0.0f, 0.0f, 1.0f }), 16); + } } ImGui::SameLine(); @@ -760,8 +773,15 @@ void renderMain() { } ImGui::SameLine(); - if (ImGui::ButtonSelectable(ICON_FA_SIGNAL " Spectrum", { 1.0f*ImGui::GetContentRegionAvailWidth(), menuButtonHeight }, windowId == WindowId::Spectrum)) { - windowId = WindowId::Spectrum; + { + auto posSave = ImGui::GetCursorScreenPos(); + if (ImGui::ButtonSelectable(ICON_FA_SIGNAL " Spectrum", { 1.0f*ImGui::GetContentRegionAvailWidth(), menuButtonHeight }, windowId == WindowId::Spectrum)) { + windowId = WindowId::Spectrum; + } + auto radius = 0.3f*ImGui::GetTextLineHeight(); + posSave.x += 2.0f*radius; + posSave.y += 2.0f*radius; + ImGui::GetWindowDrawList()->AddCircleFilled(posSave, radius, hasAudioCaptureData ? ImGui::ColorConvertFloat4ToU32({ 0.0f, 1.0f, 0.0f, 1.0f }) : ImGui::ColorConvertFloat4ToU32({ 1.0f, 0.0f, 0.0f, 1.0f }), 16); } if (windowId == WindowId::Settings) { @@ -865,6 +885,8 @@ void renderMain() { const float messagesHistoryHeigthMax = ImGui::GetContentRegionAvail().y - messagesInputHeight - 2.0f*style.ItemSpacing.x; float messagesHistoryHeigth = messagesHistoryHeigthMax; + hasNewMessages = false; + // no automatic screen resize support for iOS #if defined(IOS) || defined(ANDROID) if (displaySize.x < displaySize.y) { @@ -1444,7 +1466,7 @@ void renderMain() { ImGui::Text("FPS: %4.2f\n", ImGui::GetIO().Framerate); ImGui::SetCursorScreenPos(posSave); } - if (spectrumCurrent.empty() == false) { + if (hasAudioCaptureData) { auto wSize = ImGui::GetContentRegionAvail(); ImGui::PushStyleColor(ImGuiCol_FrameBg, { 0.3f, 0.3f, 0.3f, 0.3f }); if (statsCurrent.isReceiving) { diff --git a/examples/waver/main.cpp b/examples/waver/main.cpp index e0ce3fe..5c627c9 100644 --- a/examples/waver/main.cpp +++ b/examples/waver/main.cpp @@ -116,8 +116,8 @@ bool ImGui_EndFrame(SDL_Window * window) { bool ImGui_SetStyle() { ImGuiStyle & style = ImGui::GetStyle(); - style.AntiAliasedFill = false; - style.AntiAliasedLines = false; + style.AntiAliasedFill = true; + style.AntiAliasedLines = true; style.WindowRounding = 0.0f; style.WindowPadding = ImVec2(8, 8);