diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-05-29 14:20:17 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-05-29 14:20:17 +0100 |
| commit | f6fb2090f4180f8cd507d694f7eb663b3f25d2f0 (patch) | |
| tree | 0df38a2b6377f12c3760197c7a107984e1e3407f /src/stl_binary_tables.h | |
| parent | aebf2cb7812c8f593b85182611b587e6014aefc6 (diff) | |
Separate out STL binary tables so that writer can use them; start of writer.
Diffstat (limited to 'src/stl_binary_tables.h')
| -rw-r--r-- | src/stl_binary_tables.h | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/src/stl_binary_tables.h b/src/stl_binary_tables.h new file mode 100644 index 0000000..0a85dd8 --- /dev/null +++ b/src/stl_binary_tables.h @@ -0,0 +1,220 @@ +/* + Copyright (C) 2014 Carl Hetherington <cth@carlh.net> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include <string> +#include <map> + +namespace sub { + +enum DisplayStandard { + DISPLAY_STANDARD_UNDEFINED, + DISPLAY_STANDARD_OPEN_SUBTITLING, + DISPLAY_STANDARD_LEVEL_1_TELETEXT, + DISPLAY_STANDARD_LEVEL_2_TELETEXT +}; + +enum LanguageGroup { + LANGUAGE_GROUP_LATIN, + LANGUAGE_GROUP_LATIN_CYRILLIC, + LANGUAGE_GROUP_LATIN_ARABIC, + LANGUAGE_GROUP_LATIN_GREEK, + LANGUAGE_GROUP_LATIN_HEBREW +}; + +enum Language { + LANGUAGE_UNKNOWN, + LANGUAGE_ALBANIAN, + LANGUAGE_BRETON, + LANGUAGE_CATALAN, + LANGUAGE_CROATIAN, + LANGUAGE_WELSH, + LANGUAGE_CZECH, + LANGUAGE_DANISH, + LANGUAGE_GERMAN, + LANGUAGE_ENGLISH, + LANGUAGE_SPANISH, + LANGUAGE_ESPERANTO, + LANGUAGE_ESTONIAN, + LANGUAGE_BASQUE, + LANGUAGE_FAROESE, + LANGUAGE_FRENCH, + LANGUAGE_FRISIAN, + LANGUAGE_IRISH, + LANGUAGE_GAELIC, + LANGUAGE_GALACIAN, + LANGUAGE_ICELANDIC, + LANGUAGE_ITALIAN, + LANGUAGE_LAPPISH, + LANGUAGE_LATIN, + LANGUAGE_LATVIAN, + LANGUAGE_LUXEMBORGIAN, + LANGUAGE_LITHUANIAN, + LANGUAGE_HUNGARIAN, + LANGUAGE_MALTESE, + LANGUAGE_DUTCH, + LANGUAGE_NORWEGIAN, + LANGUAGE_OCCITAN, + LANGUAGE_POLISH, + LANGUAGE_PORTUGESE, + LANGUAGE_ROMANIAN, + LANGUAGE_ROMANSH, + LANGUAGE_SERBIAN, + LANGUAGE_SLOVAK, + LANGUAGE_SLOVENIAN, + LANGUAGE_FINNISH, + LANGUAGE_SWEDISH, + LANGUAGE_TURKISH, + LANGUAGE_FLEMISH, + LANGUAGE_WALLON, + LANGUAGE_AMHARIC, + LANGUAGE_ARABIC, + LANGUAGE_ARMENIAN, + LANGUAGE_ASSAMESE, + LANGUAGE_AZERBAIJANI, + LANGUAGE_BAMBORA, + LANGUAGE_BIELORUSSIAN, + LANGUAGE_BENGALI, + LANGUAGE_BULGARIAN, + LANGUAGE_BURMESE, + LANGUAGE_CHINESE, + LANGUAGE_CHURASH, + LANGUAGE_DARI, + LANGUAGE_FULANI, + LANGUAGE_GEORGIAN, + LANGUAGE_GREEK, + LANGUAGE_GUJURATI, + LANGUAGE_GURANI, + LANGUAGE_HAUSA, + LANGUAGE_HEBREW, + LANGUAGE_HINDI, + LANGUAGE_INDONESIAN, + LANGUAGE_JAPANESE, + LANGUAGE_KANNADA, + LANGUAGE_KAZAKH, + LANGUAGE_KHMER, + LANGUAGE_KOREAN, + LANGUAGE_LAOTIAN, + LANGUAGE_MACEDONIAN, + LANGUAGE_MALAGASAY, + LANGUAGE_MALAYSIAN, + LANGUAGE_MOLDAVIAN, + LANGUAGE_MARATHI, + LANGUAGE_NDEBELE, + LANGUAGE_NEPALI, + LANGUAGE_ORIYA, + LANGUAGE_PAPAMIENTO, + LANGUAGE_PERSIAN, + LANGUAGE_PUNJABI, + LANGUAGE_PUSHTU, + LANGUAGE_QUECHUA, + LANGUAGE_RUSSIAN, + LANGUAGE_RUTHENIAN, + LANGUAGE_SERBO_CROAT, + LANGUAGE_SHONA, + LANGUAGE_SINHALESE, + LANGUAGE_SOMALI, + LANGUAGE_SRANAN_TONGO, + LANGUAGE_SWAHILI, + LANGUAGE_TADZHIK, + LANGUAGE_TAMIL, + LANGUAGE_TATAR, + LANGUAGE_TELUGU, + LANGUAGE_THAI, + LANGUAGE_UKRANIAN, + LANGUAGE_URDU, + LANGUAGE_UZBEK, + LANGUAGE_VIETNAMESE, + LANGUAGE_ZULU +}; + +enum TimecodeStatus { + TIMECODE_STATUS_NOT_INTENDED_FOR_USE, + TIMECODE_STATUS_INTENDED_FOR_USE +}; + +enum CumulativeStatus { + CUMULATIVE_STATUS_NOT_CUMULATIVE, + CUMULATIVE_STATUS_FIRST, + CUMULATIVE_STATUS_INTERMEDIATE, + CUMULATIVE_STATUS_LAST +}; + +enum Justification { + JUSTIFICATION_NONE, + JUSTIFICATION_LEFT, + JUSTIFICATION_CENTRE, + JUSTIFICATION_RIGHT +}; + +enum Comment { + COMMENT_NO, + COMMENT_YES +}; + +template<class T> +class STLBinaryCode +{ +public: + STLBinaryCode () + : value ((T) 0) + {} + + STLBinaryCode (T v, std::string d) + : value (v) + , description (d) + {} + + T value; + std::string description; +}; + +class STLBinaryTables +{ +public: + STLBinaryTables (); + + DisplayStandard display_standard_file_to_enum (std::string) const; + LanguageGroup language_group_file_to_enum (std::string) const; + Language language_file_to_enum (std::string) const; + TimecodeStatus timecode_status_file_to_enum (std::string) const; + CumulativeStatus cumulative_status_file_to_enum (int) const; + Justification justification_file_to_enum (int) const; + Comment comment_file_to_enum (int) const; + + std::string language_enum_to_file (Language) const; + + std::string display_standard_enum_to_description (DisplayStandard) const; + std::string language_group_enum_to_description (LanguageGroup) const; + std::string language_enum_to_description (Language) const; + std::string timecode_status_enum_to_description (TimecodeStatus) const; + std::string cumulative_status_enum_to_description (CumulativeStatus) const; + std::string justification_enum_to_description (Justification) const; + std::string comment_enum_to_description (Comment) const; + +private: + std::map<std::string, STLBinaryCode<DisplayStandard> > _display_standard_map; + std::map<std::string, STLBinaryCode<LanguageGroup> > _language_group_map; + std::map<std::string, STLBinaryCode<Language> > _language_map; + std::map<std::string, STLBinaryCode<TimecodeStatus> > _timecode_status_map; + std::map<int, STLBinaryCode<CumulativeStatus> > _cumulative_status_map; + std::map<int, STLBinaryCode<Justification> > _justification_map; + std::map<int, STLBinaryCode<Comment> > _comment_map; +}; + +} |
