/* Copyright (C) 2026 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "subrip_writer.h" #include "subtitle.h" #include #include using std::string; using std::vector; using namespace sub; static string time_to_subrip_string(Time t) { return fmt::format("{:02d}:{:02d}:{:02d},{:03d}", t.hours(), t.minutes(), t.seconds(), t.milliseconds()); } static string wrap_with_tags(string text, bool bold, bool italic, bool underline) { if (bold) { text = "" + text + ""; } if (italic) { text = "" + text + ""; } if (underline) { text = "" + text + ""; } return text; } void sub::write_subrip(vector const& subtitles, boost::filesystem::path file_name) { std::ofstream f(file_name.string()); int index = 1; for (auto const& sub: subtitles) { f << index << "\n"; f << time_to_subrip_string(sub.from) << " --> " << time_to_subrip_string(sub.to) << "\n"; for (auto const& line: sub.lines) { for (auto const& block: line.blocks) { f << wrap_with_tags(block.text, block.bold, block.italic, block.underline); } f << "\n"; } f << "\n"; ++index; } f.close(); }