diff --git a/aegisub/src/ass_dialogue.cpp b/aegisub/src/ass_dialogue.cpp index 28d40fb7c..a55298b67 100644 --- a/aegisub/src/ass_dialogue.cpp +++ b/aegisub/src/ass_dialogue.cpp @@ -418,11 +418,7 @@ void AssDialogue::ProcessParameters(AssDialogueBlockOverride::ProcessParametersC bool AssDialogue::CollidesWith(AssDialogue *target) { if (!target) return false; - int a = Start.GetMS(); - int b = End.GetMS(); - int c = target->Start.GetMS(); - int d = target->End.GetMS(); - return ((a < c) ? (c < b) : (a < d)); + return ((Start < target->Start) ? (target->Start < End) : (Start < target->End)); } wxString AssDialogue::GetStrippedText() const { diff --git a/aegisub/src/ass_file.cpp b/aegisub/src/ass_file.cpp index 6e9b92450..467a8db04 100644 --- a/aegisub/src/ass_file.cpp +++ b/aegisub/src/ass_file.cpp @@ -282,7 +282,7 @@ bool AssFile::CanSave() { curdiag = dynamic_cast(*cur); if (curdiag) { // Timed? - if (curdiag->Start.GetMS() != 0 || curdiag->End.GetMS() != 0) return false; + if (curdiag->Start != 0 || curdiag->End != 0) return false; // Overrides? curdiag->ParseASSTags(); diff --git a/aegisub/src/ass_karaoke.cpp b/aegisub/src/ass_karaoke.cpp index b56fa8a1f..50bf2d5f8 100644 --- a/aegisub/src/ass_karaoke.cpp +++ b/aegisub/src/ass_karaoke.cpp @@ -65,7 +65,7 @@ void AssKaraoke::SetLine(AssDialogue *line, bool auto_split) { syls.clear(); Syllable syl; - syl.start_time = line->Start.GetMS(); + syl.start_time = line->Start; syl.duration = 0; syl.tag_type = "\\k"; @@ -133,7 +133,7 @@ void AssKaraoke::SetLine(AssDialogue *line, bool auto_split) { line->ClearBlocks(); // Normalize the syllables so that the total duration is equal to the line length - int end_time = active_line->End.GetMS(); + int end_time = active_line->End; int last_end = syl.start_time + syl.duration; // Total duration is shorter than the line length so just extend the last @@ -142,7 +142,7 @@ void AssKaraoke::SetLine(AssDialogue *line, bool auto_split) { syls.back().duration += end_time - last_end; else if (last_end > end_time) { // Shrink each syllable proportionately - int start_time = active_line->Start.GetMS(); + int start_time = active_line->Start; double scale_factor = double(end_time - start_time) / (last_end - start_time); for (size_t i = 0; i < size(); ++i) { @@ -285,8 +285,8 @@ void AssKaraoke::SplitLines(std::set const& lines, agi::Context *c for (iterator kit = kara.begin(); kit != kara.end(); ++kit) { AssDialogue *new_line = new AssDialogue(*diag); - new_line->Start.SetMS(kit->start_time); - new_line->End.SetMS(kit->start_time + kit->duration); + new_line->Start = kit->start_time; + new_line->End = kit->start_time + kit->duration; new_line->Text = kit->GetText(false); c->ass->Line.insert(it, new_line); diff --git a/aegisub/src/ass_time.cpp b/aegisub/src/ass_time.cpp index 0cf57e509..215438d6f 100644 --- a/aegisub/src/ass_time.cpp +++ b/aegisub/src/ass_time.cpp @@ -45,7 +45,7 @@ #include "utils.h" -AssTime::AssTime(int time) { SetMS(time); } +AssTime::AssTime(int time) : time(mid(0, time, 10 * 60 * 60 * 1000 - 1)) { } void AssTime::ParseASS(wxString const& text) { int ms = 0; @@ -72,15 +72,7 @@ void AssTime::ParseASS(wxString const& text) { // Milliseconds (includes seconds) ms += AegiStringToFix(text, 3, end, text.size()); - SetMS(ms); -} - -int AssTime::GetMS() const { - return time / 10 * 10; -} - -void AssTime::SetMS(int ms) { - time = mid(0, ms, 10 * 60 * 60 * 1000 - 1); + *this = AssTime(ms); } wxString AssTime::GetASSFormated (bool msPrecision) const { @@ -90,38 +82,6 @@ wxString AssTime::GetASSFormated (bool msPrecision) const { return wxString::Format("%d:%02d:%02d.%02d", GetTimeHours(), GetTimeMinutes(), GetTimeSeconds(), GetTimeCentiseconds()); } -bool operator < (AssTime t1, AssTime t2) { - return t1.GetMS() < t2.GetMS(); -} - -bool operator > (AssTime t1, AssTime t2) { - return t1.GetMS() > t2.GetMS(); -} - -bool operator <= (AssTime t1, AssTime t2) { - return t1.GetMS() <= t2.GetMS(); -} - -bool operator >= (AssTime t1, AssTime t2) { - return t1.GetMS() >= t2.GetMS(); -} - -bool operator == (AssTime t1, AssTime t2) { - return t1.GetMS() == t2.GetMS(); -} - -bool operator != (AssTime t1, AssTime t2) { - return t1.GetMS() != t2.GetMS(); -} - -AssTime operator + (AssTime t1, AssTime t2) { - return AssTime(t1.GetMS() + t2.GetMS()); -} - -AssTime operator - (AssTime t1, AssTime t2) { - return AssTime(t1.GetMS() - t2.GetMS()); -} - int AssTime::GetTimeHours() const { return time / 3600000; } int AssTime::GetTimeMinutes() const { return (time % 3600000) / 60000; } int AssTime::GetTimeSeconds() const { return (time % 60000) / 1000; } @@ -134,16 +94,12 @@ FractionalTime::FractionalTime(agi::vfr::Framerate fps, bool dropframe) { } -wxString FractionalTime::FromAssTime(AssTime time, char sep) { - return FromMillisecs(time.GetMS(), sep); -} - -wxString FractionalTime::FromMillisecs(int64_t msec, char sep) { +wxString FractionalTime::ToSMPTE(AssTime time, char sep) { int h=0, m=0, s=0, f=0; // hours, minutes, seconds, fractions - int fn = fps.FrameAtTime(msec); + int fn = fps.FrameAtTime(time); // return 00:00:00:00 - if (msec <= 0) { + if (time <= 0) { } // dropframe? else if (drop) { diff --git a/aegisub/src/ass_time.h b/aegisub/src/ass_time.h index 36cda3233..6320efac3 100644 --- a/aegisub/src/ass_time.h +++ b/aegisub/src/ass_time.h @@ -54,16 +54,15 @@ class AssTime { public: AssTime(int ms = 0); + /// Get millisecond, rounded to centisecond precision + operator int() const { return time / 10 * 10; } + int GetTimeHours() const; ///< Get the hours portion of this time int GetTimeMinutes() const; ///< Get the minutes portion of this time int GetTimeSeconds() const; ///< Get the seconds portion of this time int GetTimeMiliseconds() const; ///< Get the miliseconds portion of this time int GetTimeCentiseconds() const; ///< Get the centiseconds portion of this time - /// Get millisecond, rounded to centisecond precision - int GetMS() const; - /// Sets values to milliseconds with bounds-checking - void SetMS(int ms); /// Parse an ASS time string, leaving the time unchanged if the string is malformed void ParseASS(wxString const& text); /// Return the time as a string @@ -71,17 +70,6 @@ public: wxString GetASSFormated(bool ms=false) const; }; -// Comparison operators -bool operator == (AssTime t1, AssTime t2); -bool operator != (AssTime t1, AssTime t2); -bool operator < (AssTime t1, AssTime t2); -bool operator > (AssTime t1, AssTime t2); -bool operator <= (AssTime t1, AssTime t2); -bool operator >= (AssTime t1, AssTime t2); -// Arithmetic operators -AssTime operator + (AssTime t1, AssTime t2); -AssTime operator - (AssTime t1, AssTime t2); - /// DOCME /// @class FractionalTime /// @brief DOCME @@ -101,7 +89,5 @@ public: agi::vfr::Framerate const& FPS() const { return fps; } /// Convert an AssTime to a SMPTE timecode - wxString FromAssTime(AssTime time, char sep=':'); - /// Convert milliseconds to a SMPTE timecode - wxString FromMillisecs(int64_t msec, char sep=':'); + wxString ToSMPTE(AssTime time, char sep=':'); }; diff --git a/aegisub/src/audio_display.cpp b/aegisub/src/audio_display.cpp index 7f8221249..fc024b6b0 100644 --- a/aegisub/src/audio_display.cpp +++ b/aegisub/src/audio_display.cpp @@ -1058,8 +1058,7 @@ void AudioDisplay::SetTrackCursor(int new_pos, bool show_time) if (show_time) { - AssTime new_label_time; - new_label_time.SetMS(controller->MillisecondsFromSamples(SamplesFromAbsoluteX(track_cursor_pos))); + AssTime new_label_time = controller->MillisecondsFromSamples(SamplesFromAbsoluteX(track_cursor_pos)); track_cursor_label = new_label_time.GetASSFormated(); track_cursor_label_rect.x += new_pos - old_pos; RefreshRect(track_cursor_label_rect, false); diff --git a/aegisub/src/audio_timing_dialogue.cpp b/aegisub/src/audio_timing_dialogue.cpp index 0103f8c93..42592351c 100644 --- a/aegisub/src/audio_timing_dialogue.cpp +++ b/aegisub/src/audio_timing_dialogue.cpp @@ -427,8 +427,8 @@ void AudioTimingControllerDialogue::Commit() context->selectionController->GetSelectedSet(sel); for (Selection::iterator sub = sel.begin(); sub != sel.end(); ++sub) { - (*sub)->Start.SetMS(new_start_ms); - (*sub)->End.SetMS(new_end_ms); + (*sub)->Start = new_start_ms; + (*sub)->End = new_end_ms; } commit_connection.Block(); @@ -450,7 +450,7 @@ void AudioTimingControllerDialogue::Commit() /// like the edit box, so maybe add a way to do that which both /// this and the edit box can use Next(); - if (context->selectionController->GetActiveLine()->End.GetMS() == 0) { + if (context->selectionController->GetActiveLine()->End == 0) { const int default_duration = OPT_GET("Timing/Default Duration")->GetInt(); active_markers[0].SetPosition(context->audioController->SamplesFromMilliseconds(new_end_ms)); active_markers[1].SetPosition(context->audioController->SamplesFromMilliseconds(new_end_ms + default_duration)); @@ -467,10 +467,10 @@ void AudioTimingControllerDialogue::Revert() AssTime new_start = line->Start; AssTime new_end = line->End; - if (new_start.GetMS() != 0 || new_end.GetMS() != 0) + if (new_start != 0 || new_end != 0) { - active_markers[0].SetPosition(context->audioController->SamplesFromMilliseconds(new_start.GetMS())); - active_markers[1].SetPosition(context->audioController->SamplesFromMilliseconds(new_end.GetMS())); + active_markers[0].SetPosition(context->audioController->SamplesFromMilliseconds(new_start)); + active_markers[1].SetPosition(context->audioController->SamplesFromMilliseconds(new_end)); timing_modified = false; UpdateSelection(); } @@ -558,9 +558,9 @@ void AudioTimingControllerDialogue::RegenerateInactiveLines() if (AssDialogue *prev = dynamic_cast(*it)) { inactive_markers.push_back(InactiveLineMarker( - context->audioController->SamplesFromMilliseconds(prev->Start.GetMS()), true)); + context->audioController->SamplesFromMilliseconds(prev->Start), true)); inactive_markers.push_back(InactiveLineMarker( - context->audioController->SamplesFromMilliseconds(prev->End.GetMS()), false)); + context->audioController->SamplesFromMilliseconds(prev->End), false)); } } break; @@ -574,9 +574,9 @@ void AudioTimingControllerDialogue::RegenerateInactiveLines() if (line && line != active_line) { inactive_markers.push_back(InactiveLineMarker( - context->audioController->SamplesFromMilliseconds(line->Start.GetMS()), true)); + context->audioController->SamplesFromMilliseconds(line->Start), true)); inactive_markers.push_back(InactiveLineMarker( - context->audioController->SamplesFromMilliseconds(line->End.GetMS()), false)); + context->audioController->SamplesFromMilliseconds(line->End), false)); } } break; diff --git a/aegisub/src/audio_timing_karaoke.cpp b/aegisub/src/audio_timing_karaoke.cpp index 6b8f638bf..9fe981866 100644 --- a/aegisub/src/audio_timing_karaoke.cpp +++ b/aegisub/src/audio_timing_karaoke.cpp @@ -151,8 +151,8 @@ AudioTimingControllerKaraoke::AudioTimingControllerKaraoke(agi::Context *c, AssK , separator_pen("Colour/Audio Display/Syllable Boundaries", "Audio/Line Boundaries Thickness", wxPENSTYLE_DOT) , start_pen("Colour/Audio Display/Line boundary Start", "Audio/Line Boundaries Thickness") , end_pen("Colour/Audio Display/Line boundary End", "Audio/Line Boundaries Thickness") -, start_marker(ToSamples(active_line->Start.GetMS()), &start_pen, AudioMarker::Feet_Right) -, end_marker(ToSamples(active_line->End.GetMS()), &end_pen, AudioMarker::Feet_Left) +, start_marker(ToSamples(active_line->Start), &start_pen, AudioMarker::Feet_Right) +, end_marker(ToSamples(active_line->End), &end_pen, AudioMarker::Feet_Left) , keyframes_provider(c, "Audio/Display/Draw/Keyframes in Karaoke Mode") , auto_commit(OPT_GET("Audio/Auto/Commit")->GetBool()) , auto_next(OPT_GET("Audio/Next Line on Commit")->GetBool()) @@ -253,8 +253,8 @@ void AudioTimingControllerKaraoke::Revert() { cur_syl = 0; commit_id = -1; - start_marker.Move(ToSamples(active_line->Start.GetMS())); - end_marker.Move(ToSamples(active_line->End.GetMS())); + start_marker.Move(ToSamples(active_line->Start)); + end_marker.Move(ToSamples(active_line->End)); markers.clear(); labels.clear(); diff --git a/aegisub/src/auto4_lua_assfile.cpp b/aegisub/src/auto4_lua_assfile.cpp index a99f2040d..2bcdcc435 100644 --- a/aegisub/src/auto4_lua_assfile.cpp +++ b/aegisub/src/auto4_lua_assfile.cpp @@ -219,8 +219,8 @@ namespace Automation4 { set_field(L, "layer", dia->Layer); - set_field(L, "start_time", dia->Start.GetMS()); - set_field(L, "end_time", dia->End.GetMS()); + set_field(L, "start_time", dia->Start); + set_field(L, "end_time", dia->End); set_field(L, "style", dia->Style); set_field(L, "actor", dia->Actor); @@ -351,8 +351,8 @@ namespace Automation4 { dia->Comment = get_bool_field(L, "comment", "dialogue"); dia->Layer = get_int_field(L, "layer", "dialogue"); - dia->Start.SetMS(get_int_field(L, "start_time", "dialogue")); - dia->End.SetMS(get_int_field(L, "end_time", "dialogue")); + dia->Start = get_int_field(L, "start_time", "dialogue"); + dia->End = get_int_field(L, "end_time", "dialogue"); dia->Style = get_string_field(L, "style", "dialogue"); dia->Actor = get_string_field(L, "actor", "dialogue"); dia->Margin[0] = get_int_field(L, "margin_l", "dialogue"); diff --git a/aegisub/src/base_grid.cpp b/aegisub/src/base_grid.cpp index e1d744335..0f9e6a7ba 100644 --- a/aegisub/src/base_grid.cpp +++ b/aegisub/src/base_grid.cpp @@ -604,8 +604,8 @@ void BaseGrid::GetRowStrings(int row, AssDialogue *line, bool *paint_columns, wx if (paint_columns[0]) strings[0] = wxString::Format("%d", row + 1); if (paint_columns[1]) strings[1] = wxString::Format("%d", line->Layer); if (byFrame) { - if (paint_columns[2]) strings[2] = wxString::Format("%d", context->videoController->FrameAtTime(line->Start.GetMS(), agi::vfr::START)); - if (paint_columns[3]) strings[3] = wxString::Format("%d", context->videoController->FrameAtTime(line->End.GetMS(), agi::vfr::END)); + if (paint_columns[2]) strings[2] = wxString::Format("%d", context->videoController->FrameAtTime(line->Start, agi::vfr::START)); + if (paint_columns[3]) strings[3] = wxString::Format("%d", context->videoController->FrameAtTime(line->End, agi::vfr::END)); } else { if (paint_columns[2]) strings[2] = line->Start.GetASSFormated(); @@ -737,7 +737,7 @@ void BaseGrid::OnMouseEvent(wxMouseEvent &event) { // Normal click if ((click || dclick) && !shift && !ctrl && !alt) { SetActiveLine(dlg); - if (dclick) context->videoController->JumpToTime(dlg->Start.GetMS()); + if (dclick) context->videoController->JumpToTime(dlg->Start); SelectRow(row,false); lastRow = row; return; @@ -887,8 +887,8 @@ void BaseGrid::SetColumnWidths() { // Times if (byFrame) { - maxStart = std::max(maxStart, context->videoController->FrameAtTime(curDiag->Start.GetMS(), agi::vfr::START)); - maxEnd = std::max(maxEnd, context->videoController->FrameAtTime(curDiag->End.GetMS(), agi::vfr::END)); + maxStart = std::max(maxStart, context->videoController->FrameAtTime(curDiag->Start, agi::vfr::START)); + maxEnd = std::max(maxEnd, context->videoController->FrameAtTime(curDiag->End, agi::vfr::END)); } } @@ -970,8 +970,8 @@ bool BaseGrid::IsDisplayed(const AssDialogue *line) const { if (!context->videoController->IsLoaded()) return false; int frame = context->videoController->GetFrameN(); return - context->videoController->FrameAtTime(line->Start.GetMS(),agi::vfr::START) <= frame && - context->videoController->FrameAtTime(line->End.GetMS(),agi::vfr::END) >= frame; + context->videoController->FrameAtTime(line->Start,agi::vfr::START) <= frame && + context->videoController->FrameAtTime(line->End,agi::vfr::END) >= frame; } void BaseGrid::OnKeyDown(wxKeyEvent &event) { diff --git a/aegisub/src/command/audio.cpp b/aegisub/src/command/audio.cpp index c91d2e984..2b0c0bd74 100644 --- a/aegisub/src/command/audio.cpp +++ b/aegisub/src/command/audio.cpp @@ -212,8 +212,8 @@ struct audio_save_clip : public Command { for (Selection::iterator it = sel.begin(); it != sel.end(); ++it) { c->audioController->SaveClip( wxFileSelector(_("Save audio clip"), "", "", "wav", "", wxFD_SAVE|wxFD_OVERWRITE_PROMPT, c->parent), - SampleRange(c->audioController->SamplesFromMilliseconds((*it)->Start.GetMS()), - c->audioController->SamplesFromMilliseconds((*it)->End.GetMS()))); + SampleRange(c->audioController->SamplesFromMilliseconds((*it)->Start), + c->audioController->SamplesFromMilliseconds((*it)->End))); } } }; diff --git a/aegisub/src/command/edit.cpp b/aegisub/src/command/edit.cpp index 3cb257675..ba95a50bf 100644 --- a/aegisub/src/command/edit.cpp +++ b/aegisub/src/command/edit.cpp @@ -185,7 +185,7 @@ static void combine_lines(agi::Context *c, void (*combiner)(AssDialogue *, AssDi combiner(first, diag); - first->End.SetMS(diag->End.GetMS()); + first->End = diag->End; delete diag; } @@ -198,7 +198,7 @@ static void combine_lines(agi::Context *c, void (*combiner)(AssDialogue *, AssDi } static void combine_karaoke(AssDialogue *first, AssDialogue *second) { - first->Text += wxString::Format("{\\k%d}%s", (second->Start.GetMS() - first->End.GetMS()) / 10, second->Text); + first->Text += wxString::Format("{\\k%d}%s", (second->Start - first->End) / 10, second->Text); } static void combine_concat(AssDialogue *first, AssDialogue *second) { diff --git a/aegisub/src/command/subtitle.cpp b/aegisub/src/command/subtitle.cpp index 988beab7d..35c2018f3 100644 --- a/aegisub/src/command/subtitle.cpp +++ b/aegisub/src/command/subtitle.cpp @@ -128,8 +128,8 @@ static void insert_subtitle_at_video(agi::Context *c, bool after) { // Create line to add AssDialogue *def = new AssDialogue; int video_ms = c->videoController->TimeAtFrame(c->videoController->GetFrameN(), agi::vfr::START); - def->Start.SetMS(video_ms); - def->End.SetMS(video_ms + OPT_GET("Timing/Default Duration")->GetInt()); + def->Start = video_ms; + def->End = video_ms + OPT_GET("Timing/Default Duration")->GetInt(); def->Style = c->subsGrid->GetDialogue(n)->Style; // Insert it @@ -156,13 +156,13 @@ struct subtitle_insert_after : public validate_nonempty_selection { if (n == nrows-1) { def->Start = c->subsGrid->GetDialogue(n)->End; def->End = c->subsGrid->GetDialogue(n)->End; - def->End.SetMS(def->End.GetMS()+OPT_GET("Timing/Default Duration")->GetInt()); + def->End = def->End + OPT_GET("Timing/Default Duration")->GetInt(); } else { def->Start = c->subsGrid->GetDialogue(n)->End; def->End = c->subsGrid->GetDialogue(n+1)->Start; } - if (def->End.GetMS() < def->Start.GetMS()) def->End.SetMS(def->Start.GetMS()+OPT_GET("Timing/Default Duration")->GetInt()); + if (def->End < def->Start) def->End = def->Start + OPT_GET("Timing/Default Duration")->GetInt(); def->Style = c->subsGrid->GetDialogue(n)->Style; // Insert it @@ -200,18 +200,18 @@ struct subtitle_insert_before : public validate_nonempty_selection { // Create line to add AssDialogue *def = new AssDialogue; if (n == 0) { - def->Start.SetMS(0); + def->Start = 0; def->End = c->subsGrid->GetDialogue(n)->Start; } - else if (c->subsGrid->GetDialogue(n-1)->End.GetMS() > c->subsGrid->GetDialogue(n)->Start.GetMS()) { - def->Start.SetMS(c->subsGrid->GetDialogue(n)->Start.GetMS()-OPT_GET("Timing/Default Duration")->GetInt()); + else if (c->subsGrid->GetDialogue(n-1)->End > c->subsGrid->GetDialogue(n)->Start) { + def->Start = c->subsGrid->GetDialogue(n)->Start-OPT_GET("Timing/Default Duration")->GetInt(); def->End = c->subsGrid->GetDialogue(n)->Start; } else { def->Start = c->subsGrid->GetDialogue(n-1)->End; def->End = c->subsGrid->GetDialogue(n)->Start; } - if (def->End.GetMS() < def->Start.GetMS()) def->End.SetMS(def->Start.GetMS()+OPT_GET("Timing/Default Duration")->GetInt()); + if (def->End < def->Start) def->End = def->Start+OPT_GET("Timing/Default Duration")->GetInt(); def->Style = c->subsGrid->GetDialogue(n)->Style; // Insert it @@ -408,8 +408,8 @@ struct subtitle_select_visible : public Command { for (entryIter it = c->ass->Line.begin(); it != c->ass->Line.end(); ++it) { AssDialogue *diag = dynamic_cast(*it); if (diag && - c->videoController->FrameAtTime(diag->Start.GetMS(), agi::vfr::START) <= frame && - c->videoController->FrameAtTime(diag->End.GetMS(), agi::vfr::END) >= frame) + c->videoController->FrameAtTime(diag->Start, agi::vfr::START) <= frame && + c->videoController->FrameAtTime(diag->End, agi::vfr::END) >= frame) { if (new_selection.empty()) c->selectionController->SetActiveLine(diag); diff --git a/aegisub/src/command/time.cpp b/aegisub/src/command/time.cpp index 4ce8a8dff..fb408bca3 100644 --- a/aegisub/src/command/time.cpp +++ b/aegisub/src/command/time.cpp @@ -135,11 +135,11 @@ struct time_frame_current : public validate_video_loaded { if (sel.empty() || !active_line) return; - int shift_by = c->videoController->TimeAtFrame(c->videoController->GetFrameN(), agi::vfr::START) - active_line->Start.GetMS(); + int shift_by = c->videoController->TimeAtFrame(c->videoController->GetFrameN(), agi::vfr::START) - active_line->Start; for (std::set::iterator it = sel.begin(); it != sel.end(); ++it) { - (*it)->Start.SetMS((*it)->Start.GetMS() + shift_by); - (*it)->End.SetMS((*it)->End.GetMS() + shift_by); + (*it)->Start = (*it)->Start + shift_by; + (*it)->End = (*it)->End + shift_by; } c->ass->Commit(_("shift to frame"), AssFile::COMMIT_DIAG_TIME); @@ -169,10 +169,10 @@ static void snap_subs_video(agi::Context *c, bool set_start) { int end = c->videoController->TimeAtFrame(c->videoController->GetFrameN(), agi::vfr::END); for (std::set::iterator it = sel.begin(); it != sel.end(); ++it) { - if (set_start || (*it)->Start.GetMS() > start) - (*it)->Start.SetMS(start); - if (!set_start || (*it)->End.GetMS() < end) - (*it)->End.SetMS(end); + if (set_start || (*it)->Start > start) + (*it)->Start = start; + if (!set_start || (*it)->End < end) + (*it)->End = end; } c->ass->Commit(_("timing"), AssFile::COMMIT_DIAG_TIME); @@ -235,8 +235,8 @@ struct time_snap_scene : public validate_video_loaded { // Update rows for (size_t i=0;isubsGrid->GetDialogue(sel[i]); - cur->Start.SetMS(start_ms); - cur->End.SetMS(end_ms); + cur->Start = start_ms; + cur->End = end_ms; } // Commit @@ -251,7 +251,7 @@ struct time_add_lead_in : public Command { STR_HELP("Add lead in") void operator()(agi::Context *c) { if (AssDialogue *line = c->selectionController->GetActiveLine()) { - line->Start.SetMS(line->Start.GetMS() - OPT_GET("Audio/Lead/IN")->GetInt()); + line->Start = line->Start - OPT_GET("Audio/Lead/IN")->GetInt(); c->ass->Commit(_("add lead in"), AssFile::COMMIT_DIAG_TIME); } } @@ -264,7 +264,7 @@ struct time_add_lead_out : public Command { STR_HELP("Add lead out") void operator()(agi::Context *c) { if (AssDialogue *line = c->selectionController->GetActiveLine()) { - line->End.SetMS(line->End.GetMS() + OPT_GET("Audio/Lead/OUT")->GetInt()); + line->End = line->End + OPT_GET("Audio/Lead/OUT")->GetInt(); c->ass->Commit(_("add lead out"), AssFile::COMMIT_DIAG_TIME); } } diff --git a/aegisub/src/command/video.cpp b/aegisub/src/command/video.cpp index 103a4eaec..5430c87ea 100644 --- a/aegisub/src/command/video.cpp +++ b/aegisub/src/command/video.cpp @@ -353,13 +353,13 @@ struct video_frame_next_boundary : public validator_video_loaded { AssDialogue *active_line = c->selectionController->GetActiveLine(); if (!active_line) return; - int target = c->videoController->FrameAtTime(active_line->Start.GetMS(), agi::vfr::START); + int target = c->videoController->FrameAtTime(active_line->Start, agi::vfr::START); if (target > c->videoController->GetFrameN()) { c->videoController->JumpToFrame(target); return; } - target = c->videoController->FrameAtTime(active_line->End.GetMS(), agi::vfr::END); + target = c->videoController->FrameAtTime(active_line->End, agi::vfr::END); if (target > c->videoController->GetFrameN()) { c->videoController->JumpToFrame(target); return; @@ -368,7 +368,7 @@ struct video_frame_next_boundary : public validator_video_loaded { c->selectionController->NextLine(); AssDialogue *new_line = c->selectionController->GetActiveLine(); if (new_line != active_line) - c->videoController->JumpToTime(new_line->Start.GetMS()); + c->videoController->JumpToTime(new_line->Start); } }; @@ -424,13 +424,13 @@ struct video_frame_prev_boundary : public validator_video_loaded { AssDialogue *active_line = c->selectionController->GetActiveLine(); if (!active_line) return; - int target = c->videoController->FrameAtTime(active_line->End.GetMS(), agi::vfr::END); + int target = c->videoController->FrameAtTime(active_line->End, agi::vfr::END); if (target < c->videoController->GetFrameN()) { c->videoController->JumpToFrame(target); return; } - target = c->videoController->FrameAtTime(active_line->Start.GetMS(), agi::vfr::START); + target = c->videoController->FrameAtTime(active_line->Start, agi::vfr::START); if (target < c->videoController->GetFrameN()) { c->videoController->JumpToFrame(target); return; @@ -439,7 +439,7 @@ struct video_frame_prev_boundary : public validator_video_loaded { c->selectionController->PrevLine(); AssDialogue *new_line = c->selectionController->GetActiveLine(); if (new_line != active_line) - c->videoController->JumpToTime(new_line->End.GetMS(), agi::vfr::END); + c->videoController->JumpToTime(new_line->End, agi::vfr::END); } }; @@ -560,7 +560,7 @@ struct video_jump_end : public validator_video_loaded { void operator()(agi::Context *c) { if (AssDialogue *active_line = c->selectionController->GetActiveLine()) { - c->videoController->JumpToTime(active_line->End.GetMS(), agi::vfr::END); + c->videoController->JumpToTime(active_line->End, agi::vfr::END); } } }; @@ -574,7 +574,7 @@ struct video_jump_start : public validator_video_loaded { void operator()(agi::Context *c) { if (AssDialogue *active_line = c->selectionController->GetActiveLine()) { - c->videoController->JumpToTime(active_line->Start.GetMS()); + c->videoController->JumpToTime(active_line->Start); } } }; diff --git a/aegisub/src/dialog_jumpto.cpp b/aegisub/src/dialog_jumpto.cpp index f4a503776..738345a9e 100644 --- a/aegisub/src/dialog_jumpto.cpp +++ b/aegisub/src/dialog_jumpto.cpp @@ -62,8 +62,7 @@ DialogJumpTo::DialogJumpTo(agi::Context *c) SetIcon(BitmapToIcon(GETIMAGE(jumpto_button_24))); // Set initial values - AssTime jumptime; - jumptime.SetMS(c->videoController->TimeAtFrame(jumpframe)); + AssTime jumptime = c->videoController->TimeAtFrame(jumpframe); wxString maxLength = wxString::Format("%i",c->videoController->GetLength() - 1); // Times @@ -111,7 +110,7 @@ void DialogJumpTo::OnOK(wxCommandEvent &) { } void DialogJumpTo::OnEditTime (wxCommandEvent &) { - long newframe = c->videoController->FrameAtTime(JumpTime->GetMS()); + long newframe = c->videoController->FrameAtTime(JumpTime->GetTime()); if (jumpframe != newframe) { jumpframe = newframe; JumpFrame->ChangeValue(wxString::Format("%i", jumpframe)); @@ -120,5 +119,5 @@ void DialogJumpTo::OnEditTime (wxCommandEvent &) { void DialogJumpTo::OnEditFrame (wxCommandEvent &event) { JumpFrame->GetValue().ToLong(&jumpframe); - JumpTime->SetMS(c->videoController->TimeAtFrame(jumpframe)); + JumpTime->SetTime(c->videoController->TimeAtFrame(jumpframe)); } diff --git a/aegisub/src/dialog_shift_times.cpp b/aegisub/src/dialog_shift_times.cpp index e38b939b8..24c75fe6c 100644 --- a/aegisub/src/dialog_shift_times.cpp +++ b/aegisub/src/dialog_shift_times.cpp @@ -193,7 +193,7 @@ void DialogShiftTimes::OnClose(wxCommandEvent &) { long shift; shift_frames->GetValue().ToLong(&shift); - OPT_SET("Tool/Shift Times/Time")->SetInt(shift_time->GetMS()); + OPT_SET("Tool/Shift Times/Time")->SetInt(shift_time->GetTime()); OPT_SET("Tool/Shift Times/Frames")->SetInt(shift); OPT_SET("Tool/Shift Times/ByTime")->SetBool(shift_by_time->GetValue()); OPT_SET("Tool/Shift Times/Type")->SetInt(time_fields->GetSelection()); @@ -289,7 +289,7 @@ void DialogShiftTimes::Process(wxCommandEvent &) { long shift; if (by_time) { - shift = shift_time->GetMS(); + shift = shift_time->GetTime(); if (shift == 0) { Close(); return; @@ -323,9 +323,9 @@ void DialogShiftTimes::Process(wxCommandEvent &) { block_start = row_number; if (start) - line->Start.SetMS(Shift(line->Start.GetMS(), shift, by_time, agi::vfr::START)); + line->Start = Shift(line->Start, shift, by_time, agi::vfr::START); if (end) - line->End.SetMS(Shift(line->End.GetMS(), shift, by_time, agi::vfr::END)); + line->End = Shift(line->End, shift, by_time, agi::vfr::END); } context->ass->Commit(_("shifting"), AssFile::COMMIT_DIAG_TIME); diff --git a/aegisub/src/dialog_styling_assistant.cpp b/aegisub/src/dialog_styling_assistant.cpp index cf64e9163..8ffd38601 100644 --- a/aegisub/src/dialog_styling_assistant.cpp +++ b/aegisub/src/dialog_styling_assistant.cpp @@ -180,7 +180,7 @@ void DialogStyling::OnActiveLineChanged(AssDialogue *new_line) { style_list->SetStringSelection(active_line->Style); if (auto_seek->IsChecked() && IsActive()) - c->videoController->JumpToTime(active_line->Start.GetMS()); + c->videoController->JumpToTime(active_line->Start); } void DialogStyling::Commit(bool next) { @@ -201,7 +201,7 @@ void DialogStyling::OnActivate(wxActivateEvent &) { style_list->Set(c->ass->GetStyles()); if (auto_seek->IsChecked()) - c->videoController->JumpToTime(active_line->Start.GetMS()); + c->videoController->JumpToTime(active_line->Start); style_name->SetFocus(); } diff --git a/aegisub/src/dialog_timing_processor.cpp b/aegisub/src/dialog_timing_processor.cpp index df831f61e..a994a110e 100644 --- a/aegisub/src/dialog_timing_processor.cpp +++ b/aegisub/src/dialog_timing_processor.cpp @@ -299,7 +299,7 @@ void DialogTimingProcessor::OnApply(wxCommandEvent &) { // Check if rows are valid for (entryIter cur = c->ass->Line.begin(); cur != c->ass->Line.end(); ++cur) { if (AssDialogue *tempDiag = dynamic_cast(*cur)) { - if (tempDiag->Start.GetMS() > tempDiag->End.GetMS()) { + if (tempDiag->Start > tempDiag->End) { wxMessageBox( wxString::Format( _("One of the lines in the file (%i) has negative duration. Aborting."), @@ -371,7 +371,7 @@ void DialogTimingProcessor::Process() { // Compare to every previous line (yay for O(n^2)!) to see if it's OK to add lead-in if (inVal) { - int startLead = cur->Start.GetMS() - inVal; + int startLead = cur->Start - inVal; for (int j=0;jCollidesWith(comp)) continue; // Get comparison times - startLead = std::max(startLead, comp->End.GetMS()); + startLead = std::max(startLead, comp->End); } - cur->Start.SetMS(startLead); + cur->Start = startLead; } // Compare to every line to see how far can lead-out be extended if (outVal) { - int endLead = cur->End.GetMS() + outVal; + int endLead = cur->End + outVal; for (int j=i+1;jCollidesWith(comp)) continue; // Get comparison times - endLead = std::min(endLead, comp->Start.GetMS()); + endLead = std::min(endLead, comp->Start); } - cur->End.SetMS(endLead); + cur->End = endLead; } } } @@ -417,13 +417,11 @@ void DialogTimingProcessor::Process() { if (cur->CollidesWith(prev)) continue; // Compare distance - int curStart = cur->Start.GetMS(); - int prevEnd = prev->End.GetMS(); - int dist = curStart-prevEnd; + int dist = cur->Start - prev->End; if (dist > 0 && dist <= adjsThres) { - int setPos = prevEnd+int(dist*bias); - cur->Start.SetMS(setPos); - prev->End.SetMS(setPos); + int setPos = prev->End + int(dist*bias); + cur->Start = setPos; + prev->End = setPos; } prev = cur; @@ -449,19 +447,19 @@ void DialogTimingProcessor::Process() { AssDialogue *cur = Sorted[i]; // Get start/end frames - int startF = c->videoController->FrameAtTime(cur->Start.GetMS(),agi::vfr::START); - int endF = c->videoController->FrameAtTime(cur->End.GetMS(),agi::vfr::END); + int startF = c->videoController->FrameAtTime(cur->Start,agi::vfr::START); + int endF = c->videoController->FrameAtTime(cur->End,agi::vfr::END); // Get closest for start int closest = GetClosestKeyFrame(startF); if ((closest > startF && closest-startF <= beforeStart) || (closest < startF && startF-closest <= afterStart)) { - cur->Start.SetMS(c->videoController->TimeAtFrame(closest,agi::vfr::START)); + cur->Start = c->videoController->TimeAtFrame(closest,agi::vfr::START); } // Get closest for end closest = GetClosestKeyFrame(endF)-1; if ((closest > endF && closest-endF <= beforeEnd) || (closest < endF && endF-closest <= afterEnd)) { - cur->End.SetMS(c->videoController->TimeAtFrame(closest,agi::vfr::END)); + cur->End = c->videoController->TimeAtFrame(closest,agi::vfr::END); } } } diff --git a/aegisub/src/dialog_translation.cpp b/aegisub/src/dialog_translation.cpp index 206f4806b..b97e64556 100644 --- a/aegisub/src/dialog_translation.cpp +++ b/aegisub/src/dialog_translation.cpp @@ -226,7 +226,7 @@ void DialogTranslation::UpdateDisplay() { original_text->SetReadOnly(true); - if (seek_video->IsChecked()) c->videoController->JumpToTime(active_line->Start.GetMS()); + if (seek_video->IsChecked()) c->videoController->JumpToTime(active_line->Start); translated_text->ClearAll(); translated_text->SetFocus(); diff --git a/aegisub/src/export_framerate.cpp b/aegisub/src/export_framerate.cpp index 2c7533e52..72a5018dc 100644 --- a/aegisub/src/export_framerate.cpp +++ b/aegisub/src/export_framerate.cpp @@ -176,7 +176,7 @@ void AssTransformFramerateFilter::TransformTimeTags(wxString name,int n,AssOverr switch (curParam->classification) { case PARCLASS_RELATIVE_TIME_START: { - int value = instance->ConvertTime(trunc_cs(curDiag->Start.GetMS()) + parVal) - instance->newStart; + int value = instance->ConvertTime(trunc_cs(curDiag->Start) + parVal) - instance->newStart; // An end time of 0 is actually the end time of the line, so ensure // nonzero is never converted to 0 @@ -188,10 +188,10 @@ void AssTransformFramerateFilter::TransformTimeTags(wxString name,int n,AssOverr break; } case PARCLASS_RELATIVE_TIME_END: - curParam->Set(instance->newEnd - instance->ConvertTime(trunc_cs(curDiag->End.GetMS()) - parVal)); + curParam->Set(instance->newEnd - instance->ConvertTime(trunc_cs(curDiag->End) - parVal)); break; case PARCLASS_KARAOKE: { - int start = curDiag->Start.GetMS() / 10 + instance->oldK + parVal; + int start = curDiag->Start / 10 + instance->oldK + parVal; int value = (instance->ConvertTime(start * 10) - instance->newStart) / 10 - instance->newK; instance->oldK += parVal; instance->newK += value; @@ -212,14 +212,14 @@ void AssTransformFramerateFilter::TransformFrameRate(AssFile *subs) { line = curDialogue; newK = 0; oldK = 0; - newStart = trunc_cs(ConvertTime(curDialogue->Start.GetMS())); - newEnd = trunc_cs(ConvertTime(curDialogue->End.GetMS()) + 9); + newStart = trunc_cs(ConvertTime(curDialogue->Start)); + newEnd = trunc_cs(ConvertTime(curDialogue->End) + 9); // Process stuff curDialogue->ParseASSTags(); curDialogue->ProcessParameters(TransformTimeTags, this); - curDialogue->Start.SetMS(newStart); - curDialogue->End.SetMS(newEnd); + curDialogue->Start = newStart; + curDialogue->End = newEnd; curDialogue->UpdateText(); curDialogue->ClearBlocks(); } diff --git a/aegisub/src/mkv_wrap.cpp b/aegisub/src/mkv_wrap.cpp index 5009a24b1..f0fe30799 100644 --- a/aegisub/src/mkv_wrap.cpp +++ b/aegisub/src/mkv_wrap.cpp @@ -96,9 +96,8 @@ static void read_subtitles(agi::ProgressSink *ps, MatroskaFile *file, MkvStdIO * // Get start and end times longlong timecodeScaleLow = 1000000; - AssTime subStart,subEnd; - subStart.SetMS(startTime / timecodeScaleLow); - subEnd.SetMS(endTime / timecodeScaleLow); + AssTime subStart = startTime / timecodeScaleLow; + AssTime subEnd = endTime / timecodeScaleLow; // Process SSA/ASS if (!srt) { diff --git a/aegisub/src/subs_edit_box.cpp b/aegisub/src/subs_edit_box.cpp index 0363403f8..48492227c 100644 --- a/aegisub/src/subs_edit_box.cpp +++ b/aegisub/src/subs_edit_box.cpp @@ -433,7 +433,7 @@ void SubsEditBox::OnActiveLineChanged(AssDialogue *new_line) { if (sync) { c->videoController->Stop(); - c->videoController->JumpToTime(line->Start.GetMS()); + c->videoController->JumpToTime(line->Start); } } SetEvtHandlerEnabled(true); diff --git a/aegisub/src/subs_grid.cpp b/aegisub/src/subs_grid.cpp index 99379658c..98e3c56b3 100644 --- a/aegisub/src/subs_grid.cpp +++ b/aegisub/src/subs_grid.cpp @@ -69,8 +69,8 @@ static void trim_text(AssDialogue *diag) { } static void expand_times(AssDialogue *src, AssDialogue *dst) { - dst->Start.SetMS(std::min(dst->Start.GetMS(), src->Start.GetMS())); - dst->End.SetMS(std::max(dst->End.GetMS(), src->End.GetMS())); + dst->Start = std::min(dst->Start, src->Start); + dst->End = std::max(dst->End, src->End); } /// @brief Recombine @@ -246,8 +246,8 @@ void SubtitlesGrid::PasteLines(int n,bool pasteOver) { curdiag = new AssDialogue(); curdiag->Text = curdata; // Make sure pasted plain-text lines always are blank-timed - curdiag->Start.SetMS(0); - curdiag->End.SetMS(0); + curdiag->Start = 0; + curdiag->End = 0; } // Paste over @@ -382,9 +382,9 @@ void SubtitlesGrid::DuplicateLines(int n1,int n2,bool nextFrame) { // Shift to next frame if (nextFrame) { - int posFrame = context->videoController->FrameAtTime(cur->End.GetMS(),agi::vfr::END) + 1; - cur->Start.SetMS(context->videoController->TimeAtFrame(posFrame,agi::vfr::START)); - cur->End.SetMS(context->videoController->TimeAtFrame(posFrame,agi::vfr::END)); + int posFrame = context->videoController->FrameAtTime(cur->End,agi::vfr::END) + 1; + cur->Start = context->videoController->TimeAtFrame(posFrame,agi::vfr::START); + cur->End = context->videoController->TimeAtFrame(posFrame,agi::vfr::END); } // Insert @@ -411,9 +411,9 @@ void SubtitlesGrid::SplitLine(AssDialogue *n1,int pos,bool estimateTimes) { if (estimateTimes) { double splitPos = double(pos)/orig.Length(); - int splitTime = (int)((n1->End.GetMS() - n1->Start.GetMS())*splitPos) + n1->Start.GetMS(); - n1->End.SetMS(splitTime); - n2->Start.SetMS(splitTime); + int splitTime = (int)((n1->End - n1->Start)*splitPos) + n1->Start; + n1->End = splitTime; + n2->Start = splitTime; } context->ass->Commit(_("split"), AssFile::COMMIT_DIAG_ADDREM | AssFile::COMMIT_DIAG_FULL); diff --git a/aegisub/src/subtitle_format_encore.cpp b/aegisub/src/subtitle_format_encore.cpp index 4d029dc32..3641f92dc 100644 --- a/aegisub/src/subtitle_format_encore.cpp +++ b/aegisub/src/subtitle_format_encore.cpp @@ -76,7 +76,7 @@ void EncoreSubtitleFormat::WriteFile(wxString const& filename, wxString const& e for (std::list::iterator cur=Line->begin();cur!=Line->end();cur++) { if (AssDialogue *current = dynamic_cast(*cur)) { ++i; - file.WriteLineToFile(wxString::Format("%i %s %s %s", i, ft.FromAssTime(current->Start, sep), ft.FromAssTime(current->End, sep), current->Text)); + file.WriteLineToFile(wxString::Format("%i %s %s %s", i, ft.ToSMPTE(current->Start, sep), ft.ToSMPTE(current->End, sep), current->Text)); } } diff --git a/aegisub/src/subtitle_format_microdvd.cpp b/aegisub/src/subtitle_format_microdvd.cpp index d91b1e0e4..f38091266 100644 --- a/aegisub/src/subtitle_format_microdvd.cpp +++ b/aegisub/src/subtitle_format_microdvd.cpp @@ -116,8 +116,8 @@ void MicroDVDSubtitleFormat::ReadFile(wxString const& filename, wxString const& AssDialogue *line = new AssDialogue; line->group = "[Events]"; line->Style = "Default"; - line->Start.SetMS(fps.TimeAtFrame(f1, agi::vfr::START)); - line->End.SetMS(fps.TimeAtFrame(f2, agi::vfr::END)); + line->Start = fps.TimeAtFrame(f1, agi::vfr::START); + line->End = fps.TimeAtFrame(f2, agi::vfr::END); line->Text = text; Line->push_back(line); } @@ -146,8 +146,8 @@ void MicroDVDSubtitleFormat::WriteFile(wxString const& filename, wxString const& // Write lines for (std::list::iterator cur=Line->begin();cur!=Line->end();cur++) { if (AssDialogue *current = dynamic_cast(*cur)) { - int start = fps.FrameAtTime(current->Start.GetMS(), agi::vfr::START); - int end = fps.FrameAtTime(current->End.GetMS(), agi::vfr::END); + int start = fps.FrameAtTime(current->Start, agi::vfr::START); + int end = fps.FrameAtTime(current->End, agi::vfr::END); file.WriteLineToFile(wxString::Format("{%i}{%i}%s", start, end, current->Text)); } diff --git a/aegisub/src/subtitle_format_srt.cpp b/aegisub/src/subtitle_format_srt.cpp index e4f27228e..2133bb9de 100644 --- a/aegisub/src/subtitle_format_srt.cpp +++ b/aegisub/src/subtitle_format_srt.cpp @@ -350,14 +350,12 @@ allparsed: while (ms_chars < 3) ms *= 10, ms_chars++; while (ms_chars > 3) ms /= 10, ms_chars--; - AssTime res; - res.SetMS(ms + 1000*(s + 60*(m + 60*(h + d*24)))); - return res; + return ms + 1000*(s + 60*(m + 60*(h + d*24))); } wxString WriteSRTTime(AssTime const& ts) { - int time = ts.GetMS(); + int time = ts; int ms_part = time % 1000; time /= 1000; // now holds seconds diff --git a/aegisub/src/subtitle_format_transtation.cpp b/aegisub/src/subtitle_format_transtation.cpp index 80efe6ed8..788ec5ceb 100644 --- a/aegisub/src/subtitle_format_transtation.cpp +++ b/aegisub/src/subtitle_format_transtation.cpp @@ -77,7 +77,7 @@ void TranStationSubtitleFormat::WriteFile(wxString const& filename, wxString con AssDialogue *cur = dynamic_cast(*it); if (prev && cur) { - file.WriteLineToFile(ConvertLine(prev, &ft, cur->Start.GetMS())); + file.WriteLineToFile(ConvertLine(prev, &ft, cur->Start)); file.WriteLineToFile(""); } @@ -118,10 +118,10 @@ wxString TranStationSubtitleFormat::ConvertLine(AssDialogue *current, Fractional // Subtract one frame if the end time of the current line is equal to the // start of next one, since the end timestamp is inclusive and the lines // would overlap if left as is. - if (nextl_start > 0 && end.GetMS() == nextl_start) - end.SetMS(ft->FPS().TimeAtFrame(ft->FPS().FrameAtTime(end.GetMS(), agi::vfr::END) - 1, agi::vfr::END)); + if (nextl_start > 0 && end == nextl_start) + end = ft->FPS().TimeAtFrame(ft->FPS().FrameAtTime(end, agi::vfr::END) - 1, agi::vfr::END); - wxString header = wxString::Format("SUB[%i%s%s ", valign, halign, type) + ft->FromAssTime(start) + ">" + ft->FromAssTime(end) + "]\r\n"; + wxString header = wxString::Format("SUB[%i%s%s ", valign, halign, type) + ft->ToSMPTE(start) + ">" + ft->ToSMPTE(end) + "]\r\n"; // Process text wxString lineEnd = "\r\n"; diff --git a/aegisub/src/subtitle_format_ttxt.cpp b/aegisub/src/subtitle_format_ttxt.cpp index 08733e49a..d43fbaf71 100644 --- a/aegisub/src/subtitle_format_ttxt.cpp +++ b/aegisub/src/subtitle_format_ttxt.cpp @@ -102,8 +102,8 @@ void TTXTSubtitleFormat::ReadFile(wxString const& filename, wxString const& forc AssDialogue *line = new AssDialogue(); line->group = "[Events]"; line->Style = "Default"; - line->Start.SetMS(0); - line->End.SetMS(5000); + line->Start = 0; + line->End = 5000; Line->push_back(line); } } @@ -127,8 +127,8 @@ bool TTXTSubtitleFormat::ProcessLine(wxXmlNode *node) { if (!text.IsEmpty()) { // Create dialogue diag = new AssDialogue(); - diag->Start.SetMS(time.GetMS()); - diag->End.SetMS(36000000-10); + diag->Start = time; + diag->End = 36000000-10; diag->group = "[Events]"; diag->Style = "Default"; diag->Comment = false; @@ -297,8 +297,8 @@ void TTXTSubtitleFormat::ConvertToTTXT () { // Insert blank line at the end AssDialogue *diag = new AssDialogue(); - diag->Start.SetMS(lastTime.GetMS()); - diag->End.SetMS(lastTime.GetMS()+OPT_GET("Timing/Default Duration")->GetInt()); + diag->Start = lastTime; + diag->End = lastTime+OPT_GET("Timing/Default Duration")->GetInt(); diag->group = "[Events]"; diag->Style = "Default"; diag->Comment = false; diff --git a/aegisub/src/subtitle_format_txt.cpp b/aegisub/src/subtitle_format_txt.cpp index ed39171be..408fd6ae7 100644 --- a/aegisub/src/subtitle_format_txt.cpp +++ b/aegisub/src/subtitle_format_txt.cpp @@ -117,13 +117,10 @@ void TXTSubtitleFormat::ReadFile(wxString const& filename, wxString const& encod // Sets line up AssDialogue *line = new AssDialogue; - line->group = "[Events]"; - line->Style = "Default"; line->Actor = isComment ? "" : line->Actor; line->Comment = isComment; line->Text = value; - line->Start.SetMS(0); - line->End.SetMS(0); + line->End = 0; // Adds line Line->push_back(line); @@ -133,10 +130,7 @@ void TXTSubtitleFormat::ReadFile(wxString const& filename, wxString const& encod // No lines? if (lines == 0) { AssDialogue *line = new AssDialogue; - line->group = "[Events]"; - line->Style = "Default"; - line->Start.SetMS(0); - line->End.SetMS(OPT_GET("Timing/Default Duration")->GetInt()); + line->End = OPT_GET("Timing/Default Duration")->GetInt(); Line->push_back(line); } } diff --git a/aegisub/src/threaded_frame_source.cpp b/aegisub/src/threaded_frame_source.cpp index 2f4454d25..bbdd9ed7f 100644 --- a/aegisub/src/threaded_frame_source.cpp +++ b/aegisub/src/threaded_frame_source.cpp @@ -55,7 +55,7 @@ struct invisible_line : public std::unary_function { invisible_line(double time) : time(time * 1000.) { } bool operator()(const AssEntry *entry) const { const AssDialogue *diag = dynamic_cast(entry); - return diag && (diag->Start.GetMS() > time || diag->End.GetMS() <= time); + return diag && (diag->Start > time || diag->End <= time); } }; diff --git a/aegisub/src/timeedit_ctrl.cpp b/aegisub/src/timeedit_ctrl.cpp index faf88ad0c..377b9570f 100644 --- a/aegisub/src/timeedit_ctrl.cpp +++ b/aegisub/src/timeedit_ctrl.cpp @@ -96,9 +96,9 @@ TimeEdit::TimeEdit(wxWindow* parent, wxWindowID id, agi::Context *c, const wxStr Bind(wxEVT_COMMAND_MENU_SELECTED, std::tr1::bind(&TimeEdit::PasteTime, this), Time_Edit_Paste); } -void TimeEdit::SetMS(int ms) { - if (ms != time.GetMS()) { - time.SetMS(ms); +void TimeEdit::SetTime(AssTime new_time) { + if (time != new_time) { + time = new_time; UpdateText(); } } @@ -125,7 +125,7 @@ void TimeEdit::OnModified(wxCommandEvent &event) { void TimeEdit::UpdateText() { if (byFrame) - ChangeValue(wxString::Format("%d", c->videoController->FrameAtTime(time.GetMS(), isEnd ? agi::vfr::END : agi::vfr::START))); + ChangeValue(wxString::Format("%d", c->videoController->FrameAtTime(time, isEnd ? agi::vfr::END : agi::vfr::START))); else ChangeValue(time.GetASSFormated()); } diff --git a/aegisub/src/timeedit_ctrl.h b/aegisub/src/timeedit_ctrl.h index fb995cec1..29cd9cbc8 100644 --- a/aegisub/src/timeedit_ctrl.h +++ b/aegisub/src/timeedit_ctrl.h @@ -75,12 +75,7 @@ public: /// Get the current time as an AssTime object AssTime GetTime() const { return time; } /// Set the time - void SetTime(AssTime time) { SetMS(time.GetMS()); } - - /// Get the current time as milliseconds - int GetMS() const { return time.GetMS(); } - /// Set the time to the specified milliseconds - void SetMS(int ms); + void SetTime(AssTime time); /// Set whether the time is displayed as a time or the corresponding frame number /// @param enableByFrame If true, frame numbers are displayed diff --git a/aegisub/src/video_box.cpp b/aegisub/src/video_box.cpp index 70ab65f69..aa2f91f65 100644 --- a/aegisub/src/video_box.cpp +++ b/aegisub/src/video_box.cpp @@ -185,8 +185,8 @@ void VideoBox::UpdateTimeBoxes() { else { VideoSubsPos->SetValue(wxString::Format( "%+dms; %+dms", - time - active_line->Start.GetMS(), - time - active_line->End.GetMS())); + time - active_line->Start, + time - active_line->End)); } } diff --git a/aegisub/src/video_context.cpp b/aegisub/src/video_context.cpp index d4a74b61d..0676273af 100644 --- a/aegisub/src/video_context.cpp +++ b/aegisub/src/video_context.cpp @@ -352,13 +352,13 @@ void VideoContext::PlayLine() { // Start playing audio context->audioController->PlayRange(SampleRange( - context->audioController->SamplesFromMilliseconds(curline->Start.GetMS()), - context->audioController->SamplesFromMilliseconds(curline->End.GetMS()))); + context->audioController->SamplesFromMilliseconds(curline->Start), + context->audioController->SamplesFromMilliseconds(curline->End))); // Round-trip conversion to convert start to exact - int startFrame = FrameAtTime(context->selectionController->GetActiveLine()->Start.GetMS(),agi::vfr::START); + int startFrame = FrameAtTime(context->selectionController->GetActiveLine()->Start,agi::vfr::START); startMS = TimeAtFrame(startFrame); - endFrame = FrameAtTime(context->selectionController->GetActiveLine()->End.GetMS(),agi::vfr::END) + 1; + endFrame = FrameAtTime(context->selectionController->GetActiveLine()->End,agi::vfr::END) + 1; // Jump to start JumpToFrame(startFrame); diff --git a/aegisub/src/visual_tool.cpp b/aegisub/src/visual_tool.cpp index f09045977..ea5b0df66 100644 --- a/aegisub/src/visual_tool.cpp +++ b/aegisub/src/visual_tool.cpp @@ -134,8 +134,8 @@ bool VisualToolBase::IsDisplayed(AssDialogue *line) const { int frame = c->videoController->GetFrameN(); return line && - c->videoController->FrameAtTime(line->Start.GetMS(), agi::vfr::START) <= frame && - c->videoController->FrameAtTime(line->End.GetMS(), agi::vfr::END) >= frame; + c->videoController->FrameAtTime(line->Start, agi::vfr::START) <= frame && + c->videoController->FrameAtTime(line->End, agi::vfr::END) >= frame; } void VisualToolBase::Commit(wxString message) { diff --git a/aegisub/src/visual_tool_drag.cpp b/aegisub/src/visual_tool_drag.cpp index a1c794823..e766c737b 100644 --- a/aegisub/src/visual_tool_drag.cpp +++ b/aegisub/src/visual_tool_drag.cpp @@ -87,8 +87,8 @@ void VisualToolDrag::OnSubTool(wxCommandEvent &) { else { p1 = GetLinePosition(line); // Round the start and end times to exact frames - int start = vc->TimeAtFrame(vc->FrameAtTime(line->Start.GetMS(), agi::vfr::START)) - line->Start.GetMS(); - int end = vc->TimeAtFrame(vc->FrameAtTime(line->Start.GetMS(), agi::vfr::END)) - line->Start.GetMS(); + int start = vc->TimeAtFrame(vc->FrameAtTime(line->Start, agi::vfr::START)) - line->Start; + int end = vc->TimeAtFrame(vc->FrameAtTime(line->Start, agi::vfr::END)) - line->Start; SetOverride(line, "\\move", wxString::Format("(%s,%s,%d,%d)", p1.Str(), p1.Str(), start, end)); } } @@ -255,7 +255,7 @@ bool VisualToolDrag::InitializeDrag(feature_iterator feature) { // Set time of clicked feature to the current frame and shift all other // selected features by the same amount if (feature->type != DRAG_ORIGIN) { - int time = c->videoController->TimeAtFrame(frame_number) - feature->line->Start.GetMS(); + int time = c->videoController->TimeAtFrame(frame_number) - feature->line->Start; int change = time - feature->time; for (sel_iterator cur = sel_features.begin(); cur != sel_features.end(); ++cur) {