Centralize legacy video export bridge
This commit is contained in:
@@ -61,6 +61,11 @@ enum class DocumentExportCollectionKind {
|
||||
animation_frames,
|
||||
};
|
||||
|
||||
enum class DocumentVideoExportKind {
|
||||
animation_mp4,
|
||||
timelapse,
|
||||
};
|
||||
|
||||
struct DocumentExportMenuPlan {
|
||||
DocumentExportMenuKind kind = DocumentExportMenuKind::jpeg;
|
||||
DocumentExportMenuAction action = DocumentExportMenuAction::show_jpeg_dialog;
|
||||
@@ -96,6 +101,16 @@ public:
|
||||
virtual void export_cube_faces(std::string_view document_name) = 0;
|
||||
};
|
||||
|
||||
class DocumentVideoExportServices {
|
||||
public:
|
||||
virtual ~DocumentVideoExportServices() = default;
|
||||
|
||||
virtual void export_animation_mp4(std::string_view path) = 0;
|
||||
virtual void export_timelapse_mp4(std::string_view path) = 0;
|
||||
virtual void show_animation_export_success(std::string_view path) = 0;
|
||||
virtual void show_timelapse_export_success(std::string_view path) = 0;
|
||||
};
|
||||
|
||||
[[nodiscard]] constexpr DocumentExportStartDecision plan_document_export_start(
|
||||
bool requires_license,
|
||||
bool license_valid,
|
||||
@@ -342,6 +357,29 @@ public:
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
[[nodiscard]] inline pp::foundation::Status execute_document_video_export(
|
||||
DocumentVideoExportKind kind,
|
||||
std::string_view path,
|
||||
DocumentVideoExportServices& services)
|
||||
{
|
||||
if (path.empty()) {
|
||||
return pp::foundation::Status::invalid_argument("video export path must not be empty");
|
||||
}
|
||||
|
||||
switch (kind) {
|
||||
case DocumentVideoExportKind::animation_mp4:
|
||||
services.export_animation_mp4(path);
|
||||
services.show_animation_export_success(path);
|
||||
return pp::foundation::Status::success();
|
||||
case DocumentVideoExportKind::timelapse:
|
||||
services.export_timelapse_mp4(path);
|
||||
services.show_timelapse_export_success(path);
|
||||
return pp::foundation::Status::success();
|
||||
}
|
||||
|
||||
return pp::foundation::Status::invalid_argument("unknown document video export kind");
|
||||
}
|
||||
|
||||
[[nodiscard]] inline pp::foundation::Status execute_document_export_menu_plan(
|
||||
const DocumentExportMenuPlan& plan,
|
||||
DocumentExportMenuServices& services)
|
||||
|
||||
Reference in New Issue
Block a user