From 3496022b1505f066a6596536f5b166dae49ceaf5 Mon Sep 17 00:00:00 2001 From: Rodrigo Braz Monteiro Date: Sun, 9 Nov 2008 23:08:22 +0000 Subject: [PATCH] More fixes for athenasub. Originally committed to SVN as r2437. --- aegilib/aegilib_2008.vcproj | 4 ++++ aegilib/include/athenasub/athenatime.h | 4 ++-- aegilib/src/formats/format_ass_dialogue.cpp | 8 +++++++- aegilib/test/src/main.cpp | 17 ++++------------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/aegilib/aegilib_2008.vcproj b/aegilib/aegilib_2008.vcproj index 5d2dac68f..ec11ba3f8 100644 --- a/aegilib/aegilib_2008.vcproj +++ b/aegilib/aegilib_2008.vcproj @@ -178,6 +178,10 @@ RelativePath=".\include\athenasub\athenasub.h" > + + diff --git a/aegilib/include/athenasub/athenatime.h b/aegilib/include/athenasub/athenatime.h index daaba9c35..50fe387d0 100644 --- a/aegilib/include/athenasub/athenatime.h +++ b/aegilib/include/athenasub/athenatime.h @@ -44,9 +44,9 @@ namespace Athenasub { public: Time() { ms = 0; } - Time(int milliseconds) { ms = milliseconds; } + Time(int milliseconds) { SetMS(milliseconds); } - inline void SetMS(int milliseconds) { ms = milliseconds; } + inline void SetMS(int milliseconds) { ms = milliseconds > 0 ? milliseconds : 0; } inline int GetMS() const { return ms; } }; diff --git a/aegilib/src/formats/format_ass_dialogue.cpp b/aegilib/src/formats/format_ass_dialogue.cpp index ccc49a91a..6ae61bcdb 100644 --- a/aegilib/src/formats/format_ass_dialogue.cpp +++ b/aegilib/src/formats/format_ass_dialogue.cpp @@ -92,6 +92,12 @@ String GetTimeString(const Time& time,int ms_precision,int h_precision) else if (ms_precision == 1) _ms /= 100; else if (ms_precision == 0) _ms = 0; + // Asserts + assert(h >= 0 && h <= 9); + assert(min >= 0 && min <= 59); + assert(s >= 0 && s <= 59); + assert(_ms >= 0 && _ms <= 999); + // Get write buffer String final; size_t size = 7+h_precision+ms_precision; @@ -110,7 +116,7 @@ String GetTimeString(const Time& time,int ms_precision,int h_precision) final.WriteNumber(temp,_ms,ms_precision,pos); // Write terminator - final.WriteText("\0",1,pos); + //final.WriteText("\0",1,pos); // Restore string's state and return final.SetSize(pos-1); diff --git a/aegilib/test/src/main.cpp b/aegilib/test/src/main.cpp index 3d56e2449..3cca7f84e 100644 --- a/aegilib/test/src/main.cpp +++ b/aegilib/test/src/main.cpp @@ -86,16 +86,15 @@ int main() // Save subtitles cout << "Saving file... "; timer.Start(); - control->SaveFile(L"subs_out.ass",L"UTF-8"); + control->SaveFile("subs_out.ass","UTF-8"); timer.Pause(); cout << "Done in " << timer.Time() << " ms.\n"; - system("pause"); // Issue an action #ifdef WXDEBUG - int n = 1; -#else int n = 1000; +#else + int n = 1; #endif cout << "Executing action " << n << " times... "; timer.Start(); @@ -117,8 +116,6 @@ int main() timer.Pause(); cout << "Done in " << timer.Time() << " ms.\n"; - system("pause"); - // Rollback cout << "Undoing " << n-1 << " times... "; timer.Start(); @@ -128,8 +125,6 @@ int main() timer.Pause(); cout << "Done in " << timer.Time() << " ms.\n"; - system("pause"); - // Undo n = 1000; cout << "Undoing and redoing " << n << " times... "; @@ -143,21 +138,17 @@ int main() // Get style test ConstStyle style = control->GetStyle("japro1_star"); - cout << "Style " << style->GetName().c_str() << " font is " << style->GetFontName().c_str() << " " << style->GetFontSize() << ".\n"; + cout << "Style " << style->GetName() << " font is " << style->GetFontName() << " " << style->GetFontSize() << ".\n"; // Save a few more control->SaveFile("subs_out2.ass","UTF-8"); control->Undo(); control->SaveFile("subs_out3.ass","UTF-8"); - - system("pause"); } catch (std::exception &e) { cout << "\n\nException: " << e.what() << endl << endl; } - system("pause"); - return true; }