File indexing completed on 2024-06-09 04:53:02
0001 /* 0002 SPDX-FileCopyrightText: 2007-2009 Sergio Pistone <sergio_pistone@yahoo.com.ar> 0003 SPDX-FileCopyrightText: 2010-2022 Mladen Milinkovic <max@smoothware.net> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef FORMATMANAGER_H 0009 #define FORMATMANAGER_H 0010 0011 #include "format.h" 0012 0013 #include <QString> 0014 #include <QStringList> 0015 #include <QMap> 0016 0017 #include <QUrl> 0018 #include <KEncodingProber> 0019 0020 QT_FORWARD_DECLARE_CLASS(QTextCodec) 0021 0022 namespace SubtitleComposer { 0023 class InputFormat; 0024 class OutputFormat; 0025 class Subtitle; 0026 class FormatManager 0027 { 0028 public: 0029 enum Status { 0030 SUCCESS = 1, 0031 CANCEL = 0, 0032 ERROR = -1 0033 }; 0034 static FormatManager & instance(); 0035 0036 bool hasInput(const QString &name) const; 0037 const InputFormat * input(const QString &name) const; 0038 QStringList inputNames() const; 0039 0040 Status readSubtitle(Subtitle &subtitle, bool primary, const QUrl &url, 0041 QTextCodec **codec, QString *format = nullptr) const; 0042 0043 bool hasOutput(const QString &name) const; 0044 const OutputFormat * output(const QString &name) const; 0045 const OutputFormat * defaultOutput() const; 0046 QStringList outputNames() const; 0047 0048 bool writeSubtitle(const Subtitle &subtitle, bool primary, const QUrl &url, 0049 QTextCodec *codec, const QString &format, bool overwrite) const; 0050 0051 protected: 0052 FormatManager(); 0053 ~FormatManager(); 0054 0055 Status readBinary(Subtitle &subtitle, const QUrl &url, bool primary, 0056 QTextCodec **codec, QString *format) const; 0057 Status readText(Subtitle &subtitle, const QUrl &url, bool primary, 0058 QTextCodec **codec, QString *formatName) const; 0059 0060 QMap<QString, InputFormat *> m_inputFormats; 0061 QMap<QString, OutputFormat *> m_outputFormats; 0062 }; 0063 } 0064 #endif