LCOV - code coverage report
Current view: top level - src/gui/pedalboard - pedal_widget_body.cpp (source / functions) Coverage Total Hit
Test: merged.info Lines: 100.0 % 61 61
Test Date: 2026-06-01 11:15:25 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #include "gui/pedalboard/pedal_widget.h"
       2              : #include "audio/effects/amp_simulator.h"
       3              : #include "gui/theme/theme.h"
       4              : 
       5              : #include <cstdio>
       6              : 
       7              : namespace Amplitron {
       8              : 
       9           12 : void PedalWidget::render_amp_cabinet(ImDrawList* dl, ImVec2 p0, ImVec2 p1, float pedal_width, float pedal_height, float zoom) {
      10            4 :     (void)pedal_height;
      11           12 :     ImU32 cab_body = IM_COL32(30, 22, 16, 255);
      12           12 :     ImU32 cab_border = IM_COL32(90, 70, 40, 255);
      13           12 :     ImU32 cab_grille = IM_COL32(18, 14, 10, 255);
      14           12 :     ImU32 cab_grille_line = IM_COL32(38, 30, 22, 180);
      15              : 
      16           12 :     dl->AddRectFilled(p0, p1, cab_body, Theme::ROUNDING_MD * zoom);
      17           12 :     dl->AddRect(p0, p1, cab_border, Theme::ROUNDING_MD * zoom, 0, 2.5f * zoom);
      18              : 
      19           16 :     dl->AddRectFilled(
      20           12 :         ImVec2(p0.x + 6 * zoom, p0.y + 6 * zoom),
      21           12 :         ImVec2(p1.x - 6 * zoom, p0.y + 10 * zoom),
      22            4 :         Theme::ACCENT_GOLD_DIM, 2.0f * zoom);
      23              : 
      24           12 :     ImVec2 plate_p0 = ImVec2(p0.x + 8 * zoom, p0.y + 14 * zoom);
      25           12 :     ImVec2 plate_p1 = ImVec2(p1.x - 8 * zoom, p0.y + 50 * zoom);
      26           16 :     dl->AddRectFilled(plate_p0, plate_p1,
      27            4 :         IM_COL32(46, 38, 28, 220), Theme::ROUNDING_SM * zoom);
      28           16 :     dl->AddRect(plate_p0, plate_p1,
      29            4 :         IM_COL32(70, 58, 38, 180), Theme::ROUNDING_SM * zoom, 0, 1.0f * zoom);
      30              : 
      31           12 :     ImGui::SetCursorScreenPos(ImVec2(p0.x + 12 * zoom, p0.y + 18 * zoom));
      32           12 :     ImGui::PushStyleColor(ImGuiCol_Text, Theme::Gold());
      33           12 :     ImGui::Text("AMP");
      34           12 :     ImGui::PopStyleColor();
      35              : 
      36           12 :     int model_idx = static_cast<int>(effect_->params()[0].value);
      37           12 :     const auto& models = get_amp_models();
      38           12 :     const char* model_name = "Unknown";
      39           16 :     if (model_idx >= 0 && model_idx < static_cast<int>(models.size())) {
      40           12 :         model_name = models[model_idx].name;
      41            4 :     }
      42           12 :     ImVec2 mn_size = ImGui::CalcTextSize(model_name);
      43           12 :     float mn_x = p0.x + (pedal_width - mn_size.x) * 0.5f;
      44           12 :     ImGui::SetCursorScreenPos(ImVec2(mn_x, p0.y + 33 * zoom));
      45           12 :     ImGui::PushStyleColor(ImGuiCol_Text, Theme::TextPrimary());
      46           12 :     ImGui::Text("%s", model_name);
      47           12 :     ImGui::PopStyleColor();
      48              : 
      49           12 :     float led_x = p1.x - 22 * zoom;
      50           12 :     float led_y = p0.y + 26 * zoom;
      51           12 :     dl->AddCircleFilled(ImVec2(led_x, led_y), 5 * zoom, Theme::LED_GREEN);
      52           12 :     dl->AddCircleFilled(ImVec2(led_x, led_y), 8 * zoom, Theme::LED_GREEN_GLOW & 0x30FFFFFF);
      53              : 
      54           12 :     float grille_top = p1.y - 100 * zoom;
      55           12 :     float grille_bottom = p1.y - 12 * zoom;
      56           12 :     float grille_left = p0.x + 12 * zoom;
      57           12 :     float grille_right = p1.x - 12 * zoom;
      58              : 
      59           16 :     dl->AddRectFilled(
      60           16 :         ImVec2(grille_left, grille_top),
      61           12 :         ImVec2(grille_right, grille_bottom),
      62            4 :         cab_grille, Theme::ROUNDING_SM * zoom);
      63           16 :     dl->AddRect(
      64           16 :         ImVec2(grille_left, grille_top),
      65           12 :         ImVec2(grille_right, grille_bottom),
      66            4 :         IM_COL32(50, 40, 28, 180), Theme::ROUNDING_SM * zoom, 0, 1.0f * zoom);
      67              : 
      68          204 :     for (float gy = grille_top + 6 * zoom; gy < grille_bottom - 4 * zoom; gy += 5.0f * zoom) {
      69          256 :         dl->AddLine(
      70          192 :             ImVec2(grille_left + 4 * zoom, gy),
      71          256 :             ImVec2(grille_right - 4 * zoom, gy),
      72           64 :             cab_grille_line, 1.0f * zoom);
      73           64 :     }
      74              : 
      75           16 :     dl->AddRectFilled(
      76           12 :         ImVec2(p0.x + 6 * zoom, p1.y - 10 * zoom),
      77           12 :         ImVec2(p1.x - 6 * zoom, p1.y - 6 * zoom),
      78            4 :         Theme::ACCENT_GOLD_DIM, 2.0f * zoom);
      79           12 : }
      80              : 
      81              : } // namespace Amplitron
        

Generated by: LCOV version 2.0-1