1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
/**********************************************************************
Audacity: A Digital Audio Editor
@file NumericConverterFormatterContext.cpp
Dmitry Vedenko
**********************************************************************/
#include "NumericConverterFormatterContext.h"
#include "Project.h"
#include "ProjectRate.h"
FormatterContext::FormatterContext(const AudacityProject& project)
: mProject(project.weak_from_this())
{
}
FormatterContext::FormatterContext(double sampleRate)
: mProjectRate { sampleRate }
{
}
FormatterContext FormatterContext::EmptyContext()
{
return {};
}
FormatterContext
FormatterContext::ProjectContext(const AudacityProject& project)
{
return FormatterContext { project };
}
FormatterContext FormatterContext::SampleRateContext(double sampleRate)
{
return FormatterContext { sampleRate };
}
FormatterContext::~FormatterContext()
{
}
bool FormatterContext::HasProject() const
{
return !mProject.expired();
}
std::shared_ptr<const AudacityProject> FormatterContext::GetProject() const
{
return mProject.lock();
}
bool FormatterContext::HasSampleRate() const
{
return HasProject() || mProjectRate.has_value();
}
double FormatterContext::GetSampleRate(double defaultSampleRate) const
{
auto project = GetProject();
if (project)
return ProjectRate::Get(*project).GetRate();
if (mProjectRate.has_value())
return *mProjectRate;
return defaultSampleRate;
}
|