00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "subtitle.hh"
00022
00023 SubTitle::SubTitle()
00024 {
00025 line_count = 0;
00026 }
00027
00028 SubTitle::SubTitle(SubTitle const *s)
00029 {
00030 line_count = s->line_count;
00031 for(std::vector<Event *>::const_iterator ei = s->events.begin();
00032 ei != s->events.end(); ++ei) {
00033 Event *e = new Event;
00034 e->start = (*ei)->start;
00035 e->end = (*ei)->end;
00036 e->name = (*ei)->name;
00037 e->dialogue = (*ei)->dialogue;
00038 events.push_back(e);
00039 }
00040 }
00041
00042 SubTitle::~SubTitle()
00043 {
00044 }
00045
00046 size_t SubTitle::count() const
00047 {
00048 return line_count;
00049 }
00050
00051 SubTitle::Event *SubTitle::operator[](size_t const i) const
00052 {
00053 return events[i];
00054 }
00055
00056 void SubTitle::insertBefore(size_t const i, Event *e)
00057 {
00058 std::vector<Event *>::iterator ei = events.begin();
00059 advance(ei, i);
00060 events.insert(ei, e);
00061 ++line_count;
00062 }
00063
00064 void SubTitle::insertAfter(size_t const i, Event *e)
00065 {
00066 std::vector<Event *>::iterator ei = events.begin();
00067 advance(ei, i+1);
00068 events.insert(ei, e);
00069 ++line_count;
00070 }
00071
00072 void SubTitle::erase(size_t const i)
00073 {
00074 std::vector<Event *>::iterator ei = events.begin();
00075 advance(ei, i);
00076 delete *ei;
00077 events.erase(ei);
00078 --line_count;
00079 }
00080
00081 void SubTitle::eraseAll()
00082 {
00083 for(std::vector<Event *>::iterator ei = events.begin();
00084 ei != events.end(); ++ei)
00085 delete *ei;
00086 events.clear();
00087 line_count = 0;
00088 }
00089
00090 bool SubTitle::extractTime(QString const str, QTime &t,
00091 bool const srt_style) const
00092 {
00093 bool ok = true;
00094 unsigned int h, m, s, z;
00095
00096 if(srt_style) {
00097 if(sscanf(str, "%2d:%2d:%2d,%3d", &h, &m, &s, &z) != 4)
00098 ok = false;
00099 else
00100 t = QTime(h, m, s, z);
00101 } else {
00102 if(sscanf(str, "%2d:%2d:%2d.%2d", &h, &m, &s, &z) != 4)
00103 ok = false;
00104 else
00105 t = QTime(h, m, s, 10 * z);
00106 }
00107 return ok;
00108 }