diff --git a/src/ass_exporter.cpp b/src/ass_exporter.cpp index 777f967eb..123bcd076 100644 --- a/src/ass_exporter.cpp +++ b/src/ass_exporter.cpp @@ -91,7 +91,7 @@ void AssExporter::Export(agi::fs::path const& filename, std::string const& chars if (!writer) throw agi::InvalidInputException("Unknown file type."); - writer->WriteFile(&subs, filename, c->project->Timecodes(), charset); + writer->ExportFile(&subs, filename, c->project->Timecodes(), charset); } wxSizer *AssExporter::GetSettingsSizer(std::string const& name) { diff --git a/src/subtitle_format.h b/src/subtitle_format.h index bb2878942..c02e90af0 100644 --- a/src/subtitle_format.h +++ b/src/subtitle_format.h @@ -106,6 +106,15 @@ public: /// @param forceEncoding Encoding to use or empty string for default virtual void WriteFile(const AssFile *src, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& encoding="") const { } + /// Export a subtitle file + /// + /// This is used when saving via Export As..., for subtitle formats which + /// want to distinguish between exporting a final version of a script and + /// saving a project. + virtual void ExportFile(const AssFile *src, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& encoding="") const { + WriteFile(src, filename, fps, encoding); + } + /// Get the wildcards for a save or load dialog /// @param mode 0: load 1: save static std::string GetWildcards(int mode); diff --git a/src/subtitle_format_ass.cpp b/src/subtitle_format_ass.cpp index be4c31356..a2a134ef7 100644 --- a/src/subtitle_format_ass.cpp +++ b/src/subtitle_format_ass.cpp @@ -160,3 +160,11 @@ void AssSubtitleFormat::WriteFile(const AssFile *src, agi::fs::path const& filen writer.Write(src->Events); writer.WriteExtradata(src->Extradata); } + +void AssSubtitleFormat::ExportFile(const AssFile *src, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& encoding) const { + Writer writer(filename, encoding); + writer.Write(src->Info); + writer.Write(src->Styles); + writer.Write(src->Attachments); + writer.Write(src->Events); +} diff --git a/src/subtitle_format_ass.h b/src/subtitle_format_ass.h index 61dfab131..42691e6f7 100644 --- a/src/subtitle_format_ass.h +++ b/src/subtitle_format_ass.h @@ -28,4 +28,7 @@ public: void ReadFile(AssFile *target, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& forceEncoding) const override; void WriteFile(const AssFile *src, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& encoding) const override; + + // Does not write [Aegisub Project Garbage] and [Aegisub Extradata] sections when exporting + void ExportFile(const AssFile *src, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& encoding) const override; };