LCOV - code coverage report
Current view: top level - src/gui/commands - command_reset.h (source / functions) Coverage Total Hit
Test: merged.info Lines: 96.8 % 31 30
Test Date: 2026-06-01 11:15:25 Functions: 80.0 % 5 4

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include "audio/engine/audio_engine.h"
       4              : #include "audio/effects/effect.h"
       5              : #include "gui/commands/command_base.h"
       6              : #include <vector>
       7              : 
       8              : namespace Amplitron {
       9              : 
      10              : /**
      11              :  * @brief Command that resets all parameters of all effects to their default
      12              :  * values.
      13              :  *
      14              :  * Captures the current parameter values before resetting so that undo() can
      15              :  * restore them.
      16              :  */
      17              : class ResetAllCommand : public Command {
      18              : public:
      19           24 :   explicit ResetAllCommand(AudioEngine &engine) : engine_(engine) {
      20           18 :     auto &effects = engine_.effects();
      21           39 :     for (auto &fx : effects) {
      22           21 :       std::vector<float> values;
      23           87 :       for (const auto &param : fx->params()) {
      24           66 :         values.push_back(param.value);
      25              :       }
      26           21 :       saved_values_.push_back(values);
      27           21 :       saved_enabled_.push_back(fx->is_enabled());
      28           21 :     }
      29           24 :   }
      30              : 
      31           21 :   bool execute() override {
      32           21 :     auto &effects = engine_.effects();
      33           45 :     for (auto &fx : effects) {
      34           24 :       fx->reset(); // Resets internal DSP state
      35           24 :       auto &p = fx->params();
      36           99 :       for (auto &param : p) {
      37           75 :         param.value = param.default_val;
      38              :       }
      39              :     }
      40           21 :     return true;
      41              :   }
      42              : 
      43            9 :   void undo() override {
      44            9 :     auto &effects = engine_.effects();
      45           21 :     for (size_t i = 0; i < effects.size() && i < saved_values_.size(); ++i) {
      46           12 :       auto &fx = effects[i];
      47           12 :       auto &p = fx->params();
      48           12 :       auto &values = saved_values_[i];
      49           51 :       for (size_t j = 0; j < p.size() && j < values.size(); ++j) {
      50           39 :         p[j].value = values[j];
      51           13 :       }
      52           12 :       fx->set_enabled(saved_enabled_[i]);
      53            4 :     }
      54            9 :   }
      55              : 
      56            0 :   const char *description() const override { return "Reset All"; }
      57              : 
      58              : private:
      59              :   AudioEngine &engine_;
      60              :   std::vector<std::vector<float>> saved_values_;
      61              :   std::vector<bool> saved_enabled_;
      62              : };
      63              : 
      64              : } // namespace Amplitron
        

Generated by: LCOV version 2.0-1