mirror of https://github.com/odrling/Aegisub
Debloatify some stuff
This commit is contained in:
parent
76afcdafa1
commit
010f6c4f79
|
@ -21,9 +21,7 @@
|
||||||
#include <libaegisub/util.h>
|
#include <libaegisub/util.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
|
||||||
#include <boost/algorithm/string/split.hpp>
|
#include <boost/algorithm/string/split.hpp>
|
||||||
#include <boost/range/adaptor/filtered.hpp>
|
|
||||||
|
|
||||||
namespace agi {
|
namespace agi {
|
||||||
Time::Time(int time) : time(util::mid(0, time, 10 * 60 * 60 * 1000 - 1)) { }
|
Time::Time(int time) : time(util::mid(0, time, 10 * 60 * 60 * 1000 - 1)) { }
|
||||||
|
@ -31,7 +29,7 @@ Time::Time(int time) : time(util::mid(0, time, 10 * 60 * 60 * 1000 - 1)) { }
|
||||||
Time::Time(std::string const& text) {
|
Time::Time(std::string const& text) {
|
||||||
int after_decimal = -1;
|
int after_decimal = -1;
|
||||||
int current = 0;
|
int current = 0;
|
||||||
for (char c : text | boost::adaptors::filtered(boost::is_any_of(",.0123456789:"))) {
|
for (char c : text) {
|
||||||
if (c == ':') {
|
if (c == ':') {
|
||||||
time = time * 60 + current;
|
time = time * 60 + current;
|
||||||
current = 0;
|
current = 0;
|
||||||
|
@ -41,6 +39,8 @@ Time::Time(std::string const& text) {
|
||||||
current = 0;
|
current = 0;
|
||||||
after_decimal = 100;
|
after_decimal = 100;
|
||||||
}
|
}
|
||||||
|
else if (c < '0' || c > '9')
|
||||||
|
continue;
|
||||||
else if (after_decimal < 0) {
|
else if (after_decimal < 0) {
|
||||||
current *= 10;
|
current *= 10;
|
||||||
current += c - '0';
|
current += c - '0';
|
||||||
|
@ -80,21 +80,21 @@ int Time::GetTimeSeconds() const { return (time % 60000) / 1000; }
|
||||||
int Time::GetTimeMiliseconds() const { return (time % 1000); }
|
int Time::GetTimeMiliseconds() const { return (time % 1000); }
|
||||||
int Time::GetTimeCentiseconds() const { return (time % 1000) / 10; }
|
int Time::GetTimeCentiseconds() const { return (time % 1000) / 10; }
|
||||||
|
|
||||||
SmpteFormatter::SmpteFormatter(vfr::Framerate fps, std::string sep)
|
SmpteFormatter::SmpteFormatter(vfr::Framerate fps, char sep)
|
||||||
: fps(std::move(fps))
|
: fps(std::move(fps))
|
||||||
, sep(std::move(sep))
|
, sep(sep)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string SmpteFormatter::ToSMPTE(Time time) const {
|
std::string SmpteFormatter::ToSMPTE(Time time) const {
|
||||||
int h=0, m=0, s=0, f=0;
|
int h=0, m=0, s=0, f=0;
|
||||||
fps.SmpteAtTime(time, &h, &m, &s, &f);
|
fps.SmpteAtTime(time, &h, &m, &s, &f);
|
||||||
return format("%02d%s%02d%s%02d%s%02d", h, sep, m, sep, s, sep, f);
|
return format("%02d%c%02d%c%02d%c%02d", h, sep, m, sep, s, sep, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
Time SmpteFormatter::FromSMPTE(std::string const& str) const {
|
Time SmpteFormatter::FromSMPTE(std::string const& str) const {
|
||||||
std::vector<std::string> toks;
|
std::vector<std::string> toks;
|
||||||
boost::split(toks, str, boost::is_any_of(sep));
|
boost::split(toks, str, [=](char c) { return c == sep; });
|
||||||
if (toks.size() != 4) return 0;
|
if (toks.size() != 4) return 0;
|
||||||
|
|
||||||
int h, m, s, f;
|
int h, m, s, f;
|
||||||
|
|
|
@ -228,6 +228,63 @@ bool formatter<Char>::parse_next() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Char>
|
||||||
|
Char formatter<Char>::next_format() {
|
||||||
|
this->pending = false;
|
||||||
|
|
||||||
|
if (this->width < 0) {
|
||||||
|
this->out.fill(' ');
|
||||||
|
this->out.setf(std::ios::left, std::ios::adjustfield);
|
||||||
|
this->width = -this->width;
|
||||||
|
}
|
||||||
|
this->out.width(this->width);
|
||||||
|
this->out.precision(this->precision < 0 ? 6 : this->precision);
|
||||||
|
|
||||||
|
Char c = *this->fmt_cur ? this->fmt_cur[0] : 's';
|
||||||
|
if (c >= 'A' && c <= 'Z') {
|
||||||
|
this->out.setf(std::ios::uppercase);
|
||||||
|
c += 'a' - 'A';
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (c) {
|
||||||
|
case 'c':
|
||||||
|
this->out.setf(std::ios::dec, std::ios::basefield);
|
||||||
|
break;
|
||||||
|
case 'd': case 'i':
|
||||||
|
this->out.setf(std::ios::dec, std::ios::basefield);
|
||||||
|
break;
|
||||||
|
case 'o':
|
||||||
|
this->out.setf(std::ios::oct, std::ios::basefield);
|
||||||
|
break;
|
||||||
|
case 'x':
|
||||||
|
this->out.setf(std::ios::hex, std::ios::basefield);
|
||||||
|
break;
|
||||||
|
case 'u':
|
||||||
|
this->out.setf(std::ios::dec, std::ios::basefield);
|
||||||
|
break;
|
||||||
|
case 'e':
|
||||||
|
this->out.setf(std::ios::scientific, std::ios::floatfield);
|
||||||
|
this->out.setf(std::ios::dec, std::ios::basefield);
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
this->out.setf(std::ios::fixed, std::ios::floatfield);
|
||||||
|
break;
|
||||||
|
case 'g':
|
||||||
|
this->out.setf(std::ios::dec, std::ios::basefield);
|
||||||
|
this->out.flags(this->out.flags() & ~std::ios::floatfield);
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
this->out.setf(std::ios::hex, std::ios::basefield);
|
||||||
|
break;
|
||||||
|
default: // s and other
|
||||||
|
this->out.setf(std::ios::boolalpha);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->fmt = *this->fmt_cur ? this->fmt_cur + 1 : this->fmt_cur;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename Char>
|
template<typename Char>
|
||||||
formatter<Char>::~formatter() {
|
formatter<Char>::~formatter() {
|
||||||
// Write remaining formatting string
|
// Write remaining formatting string
|
||||||
|
|
|
@ -27,10 +27,10 @@ class SmpteFormatter {
|
||||||
/// Frame rate to use
|
/// Frame rate to use
|
||||||
vfr::Framerate fps;
|
vfr::Framerate fps;
|
||||||
/// Separator character
|
/// Separator character
|
||||||
std::string sep;
|
char sep;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SmpteFormatter(vfr::Framerate fps, std::string sep=":");
|
SmpteFormatter(vfr::Framerate fps, char sep=':');
|
||||||
|
|
||||||
/// Convert an Time to a SMPTE timecode
|
/// Convert an Time to a SMPTE timecode
|
||||||
std::string ToSMPTE(Time time) const;
|
std::string ToSMPTE(Time time) const;
|
||||||
|
|
|
@ -94,6 +94,7 @@ class formatter : formatter_state<Char> {
|
||||||
boost::io::basic_ios_all_saver<Char> saver;
|
boost::io::basic_ios_all_saver<Char> saver;
|
||||||
|
|
||||||
bool parse_next();
|
bool parse_next();
|
||||||
|
Char next_format();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
formatter(std::basic_ostream<Char>& out, const Char *fmt)
|
formatter(std::basic_ostream<Char>& out, const Char *fmt)
|
||||||
|
@ -115,68 +116,41 @@ public:
|
||||||
this->read_precision = false;
|
this->read_precision = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this->pending = false;
|
|
||||||
|
|
||||||
if (this->width < 0) {
|
Char c = next_format();
|
||||||
this->out.fill(' ');
|
|
||||||
this->out.setf(std::ios::left, std::ios::adjustfield);
|
|
||||||
this->width = -this->width;
|
|
||||||
}
|
|
||||||
this->out.width(this->width);
|
|
||||||
this->out.precision(this->precision < 0 ? 6 : this->precision);
|
|
||||||
|
|
||||||
Char c = *this->fmt_cur ? this->fmt_cur[0] : 's';
|
|
||||||
if (c >= 'A' && c <= 'Z') {
|
|
||||||
this->out.setf(std::ios::uppercase);
|
|
||||||
c += 'a' - 'A';
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'c':
|
case 'c':
|
||||||
this->out.setf(std::ios::dec, std::ios::basefield);
|
|
||||||
this->out << runtime_cast<Char>(value);
|
this->out << runtime_cast<Char>(value);
|
||||||
break;
|
break;
|
||||||
case 'd': case 'i':
|
case 'd': case 'i':
|
||||||
this->out.setf(std::ios::dec, std::ios::basefield);
|
|
||||||
this->out << runtime_cast<intmax_t>(value);
|
this->out << runtime_cast<intmax_t>(value);
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
this->out.setf(std::ios::oct, std::ios::basefield);
|
|
||||||
this->out << runtime_cast<intmax_t>(value);
|
this->out << runtime_cast<intmax_t>(value);
|
||||||
break;
|
break;
|
||||||
case 'x':
|
case 'x':
|
||||||
this->out.setf(std::ios::hex, std::ios::basefield);
|
|
||||||
this->out << runtime_cast<intmax_t>(value);
|
this->out << runtime_cast<intmax_t>(value);
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
this->out.setf(std::ios::dec, std::ios::basefield);
|
|
||||||
this->out << runtime_cast<uintmax_t>(value);
|
this->out << runtime_cast<uintmax_t>(value);
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
this->out.setf(std::ios::scientific, std::ios::floatfield);
|
|
||||||
this->out.setf(std::ios::dec, std::ios::basefield);
|
|
||||||
this->out << runtime_cast<double>(value);
|
this->out << runtime_cast<double>(value);
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
this->out.setf(std::ios::fixed, std::ios::floatfield);
|
|
||||||
this->out << runtime_cast<double>(value);
|
this->out << runtime_cast<double>(value);
|
||||||
break;
|
break;
|
||||||
case 'g':
|
case 'g':
|
||||||
this->out.setf(std::ios::dec, std::ios::basefield);
|
|
||||||
this->out.flags(this->out.flags() & ~std::ios::floatfield);
|
|
||||||
this->out << runtime_cast<double>(value);
|
this->out << runtime_cast<double>(value);
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
this->out.setf(std::ios::hex, std::ios::basefield);
|
|
||||||
this->out << runtime_cast<const void *>(value);
|
this->out << runtime_cast<const void *>(value);
|
||||||
break;
|
break;
|
||||||
default: // s and other
|
default: // s and other
|
||||||
this->out.setf(std::ios::boolalpha);
|
|
||||||
writer<Char, typename std::decay<T>::type>::write(this->out, this->precision, value);
|
writer<Char, typename std::decay<T>::type>::write(this->out, this->precision, value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->fmt = *this->fmt_cur ? this->fmt_cur + 1 : this->fmt_cur;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ void AssKaraoke::ParseSyllables(AssDialogue *line, Syllable &syl) {
|
||||||
else {
|
else {
|
||||||
std::string& otext = syl.ovr_tags[syl.text.size()];
|
std::string& otext = syl.ovr_tags[syl.text.size()];
|
||||||
// Merge adjacent override tags
|
// Merge adjacent override tags
|
||||||
boost::trim_right_if(text, boost::is_any_of("}"));
|
boost::trim_right_if(text, [](char c) { return c == '}'; });
|
||||||
if (!in_tag)
|
if (!in_tag)
|
||||||
otext += "{";
|
otext += "{";
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
#include <libaegisub/scoped_ptr.h>
|
#include <libaegisub/scoped_ptr.h>
|
||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
|
||||||
#include <boost/algorithm/string/split.hpp>
|
#include <boost/algorithm/string/split.hpp>
|
||||||
#include <boost/asio/ip/tcp.hpp>
|
#include <boost/asio/ip/tcp.hpp>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -322,7 +321,7 @@ void DoCheck(bool interactive) {
|
||||||
if (line.empty()) continue;
|
if (line.empty()) continue;
|
||||||
|
|
||||||
std::vector<std::string> parsed;
|
std::vector<std::string> parsed;
|
||||||
boost::split(parsed, line, boost::is_any_of("|"));
|
boost::split(parsed, line, [](char c) { return c == '|'; });
|
||||||
if (parsed.size() != 6) continue;
|
if (parsed.size() != 6) continue;
|
||||||
|
|
||||||
if (atoi(parsed[1].c_str()) <= GetSVNRevision())
|
if (atoi(parsed[1].c_str()) <= GetSVNRevision())
|
||||||
|
|
|
@ -65,7 +65,7 @@ void EncoreSubtitleFormat::WriteFile(const AssFile *src, agi::fs::path const& fi
|
||||||
|
|
||||||
// Encore wants ; for NTSC and : for PAL
|
// Encore wants ; for NTSC and : for PAL
|
||||||
// The manual suggests no other frame rates are supported
|
// The manual suggests no other frame rates are supported
|
||||||
agi::SmpteFormatter ft(fps, fps.NeedsDropFrames() ? ";" : ":");
|
agi::SmpteFormatter ft(fps, fps.NeedsDropFrames() ? ';' : ':');
|
||||||
|
|
||||||
// Write lines
|
// Write lines
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
#include <libaegisub/make_unique.h>
|
#include <libaegisub/make_unique.h>
|
||||||
#include <libaegisub/util.h>
|
#include <libaegisub/util.h>
|
||||||
|
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
|
||||||
#include <boost/algorithm/string/predicate.hpp>
|
#include <boost/algorithm/string/predicate.hpp>
|
||||||
#include <boost/algorithm/string/split.hpp>
|
#include <boost/algorithm/string/split.hpp>
|
||||||
#include <boost/filesystem/path.hpp>
|
#include <boost/filesystem/path.hpp>
|
||||||
|
@ -107,7 +106,7 @@ std::unique_ptr<VideoProvider> CreateDummyVideoProvider(agi::fs::path const& fil
|
||||||
|
|
||||||
std::vector<std::string> toks;
|
std::vector<std::string> toks;
|
||||||
auto const& fields = filename.string().substr(7);
|
auto const& fields = filename.string().substr(7);
|
||||||
boost::split(toks, fields, boost::is_any_of(":"));
|
boost::split(toks, fields, [](char c) { return c == ':'; });
|
||||||
if (toks.size() != 8)
|
if (toks.size() != 8)
|
||||||
throw VideoOpenError("Too few fields in dummy video parameter list");
|
throw VideoOpenError("Too few fields in dummy video parameter list");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue