audacia/src/effects/Silence.cpp

115 lines
2.4 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
Silence.cpp
Dominic Mazzoni
*******************************************************************//**
\class EffectSilence
\brief An effect to add silence.
*//*******************************************************************/
#include "Silence.h"
#include "LoadEffects.h"
#include <wx/intl.h>
#include "../ShuttleGui.h"
#include "../WaveTrack.h"
#include "../widgets/NumericTextCtrl.h"
const ComponentInterfaceSymbol EffectSilence::Symbol
/* i18n-hint: noun */
{ XC("Silence", "generator") };
namespace{ BuiltinEffectsModule::Registration< EffectSilence > reg; }
EffectSilence::EffectSilence()
{
SetLinearEffectFlag(true);
}
EffectSilence::~EffectSilence()
{
}
// ComponentInterface implementation
ComponentInterfaceSymbol EffectSilence::GetSymbol()
{
return Symbol;
}
TranslatableString EffectSilence::GetDescription()
{
return XO("Creates audio of zero amplitude");
}
ManualPageID EffectSilence::ManualPage()
{
return L"Silence";
}
// EffectDefinitionInterface implementation
EffectType EffectSilence::GetType()
{
return EffectTypeGenerate;
}
// Effect implementation
void EffectSilence::PopulateOrExchange(ShuttleGui & S)
{
S.StartVerticalLay();
{
S.StartHorizontalLay();
{
S.AddPrompt(XXO("&Duration:"));
mDurationT = safenew
NumericTextCtrl(S.GetParent(), wxID_ANY,
NumericConverter::TIME,
GetDurationFormat(),
GetDuration(),
mProjectRate,
NumericTextCtrl::Options{}
.AutoPos(true));
S.Name(XO("Duration"))
.Position(wxALIGN_CENTER | wxALL)
.AddWindow(mDurationT);
}
S.EndHorizontalLay();
}
S.EndVerticalLay();
return;
}
bool EffectSilence::TransferDataToWindow()
{
mDurationT->SetValue(GetDuration());
return true;
}
bool EffectSilence::TransferDataFromWindow()
{
SetDuration(mDurationT->GetValue());
return true;
}
bool EffectSilence::GenerateTrack(WaveTrack *tmp,
const WaveTrack & WXUNUSED(track),
int WXUNUSED(ntrack))
{
tmp->InsertSilence(0.0, GetDuration());
return true;
}