Bump libdcp.
[libsub.git] / src / stl_binary_reader.h
index 0491cb8d393caf11a8e102db26b6f77ecbb42f71..94d68b36686f3b5629ef86d1386ec42563ad04b8 100644 (file)
 
 */
 
-#include <map>
+#ifndef LIBSUB_STL_BINARY_READER_H
+#define LIBSUB_STL_BINARY_READER_H
+
 #include "reader.h"
+#include "stl_binary_tables.h"
+#include <map>
 
 namespace sub {
 
-template<class T>
-class STLCode
-{
-public:
-       STLCode ()
-               : value ((T) 0)
-       {}
-
-       STLCode (T v, std::string d)
-               : value (v)
-               , description (d)
-       {}
-       
-       T value;
-       std::string description;
-};
+class InputReader;
 
+/** @class STLBinaryReader
+ *  @brief A class to read binary STL files.
+ */
 class STLBinaryReader : public Reader
 {
 public:
-       STLBinaryReader (std::istream &);
-       ~STLBinaryReader ();
+       explicit STLBinaryReader (std::istream& in);
+       explicit STLBinaryReader (FILE* in);
 
        std::map<std::string, std::string> metadata () const;
 
-       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
-       };
-
        int code_page_number;
        int frame_rate;
        DisplayStandard display_standard;
@@ -204,15 +70,11 @@ public:
        std::string editor_contact_details;
 
 private:
-       std::string fixed_string (int, int) const;
-       void create_maps ();
-       
-       std::map<std::string, STLCode<DisplayStandard> > _display_standard_map;
-       std::map<std::string, STLCode<LanguageGroup> > _language_group_map;
-       std::map<std::string, STLCode<Language> > _language_map;
-       std::map<std::string, STLCode<TimecodeStatus> > _timecode_status_map;
+       void read (std::shared_ptr<InputReader> reader);
 
-       unsigned char* _buffer;
+       STLBinaryTables _tables;
 };
 
 }
+
+#endif