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-07 15:51:50 Functions: 80.0 % 5 4

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

Generated by: LCOV version 2.0-1