Files
panopainter/src/legacy_recording_services.cpp

112 lines
2.6 KiB
C++

#include "pch.h"
#include "legacy_recording_services.h"
#include "app.h"
#include "canvas.h"
#include "legacy_app_dialog_services.h"
#include "node_progress_bar.h"
namespace pp::panopainter {
namespace {
class LegacyRecordingServices final : public pp::app::RecordingServices {
public:
explicit LegacyRecordingServices(App& app) noexcept
: app_(app)
{
}
void start_thread() override
{
app_.update_rec_frames();
app_.rec_thread = std::thread(&App::rec_loop, &app_);
}
void stop_thread() override
{
app_.rec_running = false;
app_.rec_cv.notify_all();
if (app_.rec_thread.joinable())
app_.rec_thread.join();
app_.update_rec_frames();
}
void delete_recorded_files() override
{
app_.clear_platform_recorded_files(app_.rec_path);
}
void set_frame_count(int frame_count) override
{
app_.rec_count = frame_count;
}
void update_frame_label() override
{
app_.update_rec_frames();
}
void begin_export(int progress_total) override
{
pp::app::RecordingExportPlan plan;
plan.progress_total = progress_total;
progress_ = pp::panopainter::create_legacy_app_progress_dialog(
app_,
pp::app::plan_recording_export_progress_dialog(plan)).get();
}
void write_mp4(std::string_view path) override
{
Canvas::I->m_encoder->write_mp4(std::string(path));
}
void end_export() override
{
if (progress_)
progress_->destroy();
progress_ = nullptr;
}
private:
App& app_;
NodeProgressBar* progress_ = nullptr;
};
} // namespace
pp::foundation::Status execute_legacy_recording_start_action(
App& app,
pp::app::RecordingStartAction action)
{
LegacyRecordingServices services(app);
return pp::app::execute_recording_start_action(action, services);
}
pp::foundation::Status execute_legacy_recording_stop_action(
App& app,
pp::app::RecordingStopAction action)
{
LegacyRecordingServices services(app);
return pp::app::execute_recording_stop_action(action, services);
}
pp::foundation::Status execute_legacy_recording_clear_plan(
App& app,
const pp::app::RecordingClearPlan& plan)
{
LegacyRecordingServices services(app);
return pp::app::execute_recording_clear_plan(plan, services);
}
pp::foundation::Status execute_legacy_recording_export_plan(
App& app,
const pp::app::RecordingExportPlan& plan,
std::string_view path)
{
LegacyRecordingServices services(app);
return pp::app::execute_recording_export_plan(plan, services, path);
}
} // namespace pp::panopainter