diff --git a/aegisub/src/include/aegisub/audio_player.h b/aegisub/src/include/aegisub/audio_player.h index 9bddc6c70..d520f858f 100644 --- a/aegisub/src/include/aegisub/audio_player.h +++ b/aegisub/src/include/aegisub/audio_player.h @@ -52,21 +52,34 @@ class AudioProvider; -/////////////////////////// -// Audio Player base class + +/// @class AudioPlayer +/// @brief DOCME +/// +/// DOCME class AudioPlayer : public wxEvtHandler { private: void OnStopAudio(wxCommandEvent &event); protected: + + /// DOCME AudioProvider *provider; + + /// DOCME wxTimer *displayTimer; public: AudioPlayer(); virtual ~AudioPlayer(); + + /// @brief DOCME + /// virtual void OpenStream() {} + + /// @brief DOCME + /// virtual void CloseStream() {} virtual void Play(int64_t start,int64_t count)=0; // Play sample range @@ -94,11 +107,16 @@ public: }; -/////////// -// Factory + +/// @class AudioPlayerFactory +/// @brief DOCME +/// +/// DOCME class AudioPlayerFactory { public: + + /// @brief DOCME + /// virtual ~AudioPlayerFactory() {} virtual AudioPlayer *CreatePlayer()=0; }; - diff --git a/aegisub/src/include/aegisub/audio_provider.h b/aegisub/src/include/aegisub/audio_provider.h index 044bfa198..4270119db 100644 --- a/aegisub/src/include/aegisub/audio_provider.h +++ b/aegisub/src/include/aegisub/audio_provider.h @@ -48,19 +48,36 @@ class VideoProvider; -//////////////////////// -// Audio provider class + +/// @class AudioProvider +/// @brief DOCME +/// +/// DOCME class AudioProvider { private: + + /// DOCME char *raw; + + /// DOCME int raw_len; protected: + + /// DOCME int channels; + + /// DOCME int64_t num_samples; // for one channel, ie. number of PCM frames + + /// DOCME int sample_rate; + + /// DOCME int bytes_per_sample; + + /// DOCME wxString filename; public: @@ -81,11 +98,16 @@ public: }; -/////////// -// Factory + +/// @class AudioProviderFactory +/// @brief DOCME +/// +/// DOCME class AudioProviderFactory { public: + + /// @brief DOCME + /// virtual ~AudioProviderFactory() {} virtual AudioProvider *CreateProvider(wxString filename)=0; }; - diff --git a/aegisub/src/include/aegisub/exception.h b/aegisub/src/include/aegisub/exception.h index d683be51c..9ff60d4b5 100644 --- a/aegisub/src/include/aegisub/exception.h +++ b/aegisub/src/include/aegisub/exception.h @@ -38,55 +38,94 @@ #include + +/// DOCME namespace Aegisub { - // Base class for exceptions - // No public creators, all exceptions throws must be specific + + /// @class Exception + /// @brief DOCME + /// + /// DOCME class Exception { + + /// DOCME wxString message; + + /// DOCME Exception *inner; protected: + + /// @brief DOCME + /// @param msg + /// @param 0 + /// Exception(const wxString &msg, Exception *inr = 0) : message(msg), inner(inr) { } Exception(); // not implemented, not wanted + + /// @brief DOCME + /// @return + /// virtual ~Exception() { if (inner) delete inner; } public: - // Error message for outer exception + + /// @brief // Error message for outer exception + /// @return + /// virtual wxString GetMessage() const { return message; } - // Error message for outer exception, and chained message for inner exception + + /// @brief // Error message for outer exception, and chained message for inner exception + /// @return + /// wxString GetChainedMessage() const { if (inner) return inner->GetChainedMessage() + _T("\r\n") + GetMessage(); else return GetMessage(); } // Name of exception class, should only be implemented by specific classes virtual const wxChar * GetName() const = 0; + + /// @brief DOCME + /// @return + /// operator const wxChar * () { return GetMessage().c_str(); } + + /// @brief DOCME + /// @return + /// operator wxString () { return GetMessage(); } }; - // Macro to quickly add location information to an error message + +/// DOCME #define AG_WHERE _T(" (at ") _T(__FILE__) _T(":") _T(#__LINE__) _T(")") - // Macros to define basic exception classes that do nothing fancy - // These should always be used inside the Aegisub namespace + +/// DOCME #define DEFINE_SIMPLE_EXCEPTION_NOINNER(classname,baseclass,displayname) \ class classname : public baseclass { \ public: \ classname(const wxString &msg) : baseclass(msg) { } \ const wxChar * GetName() const { return _T(displayname); } \ }; + +/// DOCME #define DEFINE_SIMPLE_EXCEPTION(classname,baseclass,displayname) \ class classname : public baseclass { \ public: \ classname(const wxString &msg, Exception *inner) : baseclass(msg, inner) { } \ const wxChar * GetName() const { return _T(displayname); } \ }; + +/// DOCME #define DEFINE_BASE_EXCEPTION_NOINNER(classname,baseclass) \ class classname : public baseclass { \ public: \ classname(const wxString &msg) : baseclass(msg) { } \ }; + +/// DOCME #define DEFINE_BASE_EXCEPTION(classname,baseclass) \ class classname : public baseclass { \ public: \ @@ -111,10 +150,23 @@ namespace Aegisub { // A file can't be accessed for some reason DEFINE_SIMPLE_EXCEPTION_NOINNER(FileNotAccessibleError,FileSystemError,"filesystem/not_accessible") - // A file isn't accessible because it doesn't exist + + /// DOCME + /// @class FileNotFoundError + /// @brief DOCME + /// + /// DOCME class FileNotFoundError : public FileNotAccessibleError { public: + + /// @brief DOCME + /// @param filename + /// @return + /// FileNotFoundError(const wxString &filename) : FileNotAccessibleError(wxString(_T("File not found: ")) + filename) { } + + /// @brief DOCME + /// const wxChar * GetName() const { return _T("filesystem/not_accessible/not_found"); } }; @@ -127,4 +179,3 @@ namespace Aegisub { // Define new classes if none fit the error you're reporting }; - diff --git a/aegisub/src/include/aegisub/spellchecker.h b/aegisub/src/include/aegisub/spellchecker.h index 45d4c3449..c9306646d 100644 --- a/aegisub/src/include/aegisub/spellchecker.h +++ b/aegisub/src/include/aegisub/spellchecker.h @@ -43,14 +43,33 @@ #include "aegisub.h" -/////////////////////////// -// Spellchecking interface + +/// @class SpellChecker +/// @brief DOCME +/// +/// DOCME class SpellChecker { public: + + /// @brief DOCME + /// SpellChecker() {} + + /// @brief DOCME + /// virtual ~SpellChecker() {} + + /// @brief DOCME + /// @param word + /// @return + /// virtual void AddWord(wxString word) {} + + /// @brief DOCME + /// @param word + /// @return + /// virtual bool CanAddWord(wxString word) { return false; } virtual bool CheckWord(wxString word)=0; @@ -61,11 +80,18 @@ public: }; -/////////// -// Factory + +/// @class SpellCheckerFactory +/// @brief DOCME +/// +/// DOCME class SpellCheckerFactory { public: + + /// @brief DOCME + /// virtual ~SpellCheckerFactory() {} virtual SpellChecker *CreateSpellChecker()=0; }; + diff --git a/aegisub/src/include/aegisub/subtitles_provider.h b/aegisub/src/include/aegisub/subtitles_provider.h index dfdf48920..e9a2cb617 100644 --- a/aegisub/src/include/aegisub/subtitles_provider.h +++ b/aegisub/src/include/aegisub/subtitles_provider.h @@ -49,22 +49,37 @@ class AssFile; -//////////////////////////////// -// Subtitles provider interface + +/// @class SubtitlesProvider +/// @brief DOCME +/// +/// DOCME class SubtitlesProvider { public: virtual ~SubtitlesProvider(); virtual void LoadSubtitles(AssFile *subs)=0; + + /// @brief DOCME + /// @param dst + /// @param time + /// virtual void DrawSubtitles(AegiVideoFrame &dst,double time) {} }; -/////////// -// Factory + +/// @class SubtitlesProviderFactory +/// @brief DOCME +/// +/// DOCME class SubtitlesProviderFactory { public: + + /// @brief DOCME + /// virtual ~SubtitlesProviderFactory() {} virtual SubtitlesProvider *CreateProvider(wxString subType=_T(""))=0; }; + diff --git a/aegisub/src/include/aegisub/video_provider.h b/aegisub/src/include/aegisub/video_provider.h index 76b96cb79..3f77437a4 100644 --- a/aegisub/src/include/aegisub/video_provider.h +++ b/aegisub/src/include/aegisub/video_provider.h @@ -45,11 +45,17 @@ #include "aegisub.h" #include "vfr.h" -//////////////////////////// -// Video Provider interface + +/// @class VideoProvider +/// @brief DOCME +/// +/// DOCME class VideoProvider { public: - // Virtual destructor + + /// @brief // Virtual destructor + /// @return + /// virtual ~VideoProvider() {} // Override this method to actually get frames @@ -66,27 +72,54 @@ public: virtual wxArrayInt GetKeyFrames()=0; // Returns list of keyframes virtual FrameRate GetTrueFrameRate()=0; // Returns magic VFR stuff - // Use this to set any post-loading warnings, such as "being loaded with unreliable seeking" + + /// @brief // Use this to set any post-loading warnings, such as "being loaded with unreliable seeking" + /// @return + /// virtual wxString GetWarning() { return L""; } - // Name of decoder, e.g. "Avisynth/FFMpegSource" + + /// @brief // Name of decoder, e.g. "Avisynth/FFMpegSource" + /// @return + /// virtual wxString GetDecoderName() { return L"Unknown"; } - // How many frames does this provider want Aegisub to cache? Set to 0 if it doesn't require caching. + + /// @brief // How many frames does this provider want Aegisub to cache? Set to 0 if it doesn't require caching. + /// @return + /// virtual int GetDesiredCacheSize() { return 0; } - // For "special" providers that don't deal well with VFR (i.e. Avisynth) + + /// @brief // For "special" providers that don't deal well with VFR (i.e. Avisynth) + /// @return + /// virtual bool NeedsVFRHack() { return false; }; // Returns true if provider needs special VFR treatment + + /// @brief DOCME + /// @return + /// virtual bool IsNativelyByFrames() { return true; }; + + /// @brief DOCME + /// @param list + /// virtual void OverrideFrameTimeList(std::vector list) {} // Override the list with the provided one, for VFR handling }; -/////////// -// Factory + +/// @class VideoProviderFactory +/// @brief DOCME +/// +/// DOCME class VideoProviderFactory { public: + + /// @brief DOCME + /// virtual ~VideoProviderFactory() {} virtual VideoProvider *CreateProvider(wxString video)=0; }; +