// Copyright (C) 2018 Intel Corporation. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef CONVERTER_H #define CONVERTER_H #include #include #include #include //! [0] class Converter { static QList &converters(); protected: Converter(); static bool isNull(const Converter *converter); // in nullconverter.cpp public: static const QList &allConverters(); enum class Direction { In = 1, Out = 2, InOut = In | Out }; Q_DECLARE_FLAGS(Directions, Direction) enum Option { SupportsArbitraryMapKeys = 0x01 }; Q_DECLARE_FLAGS(Options, Option) virtual ~Converter() = 0; virtual QString name() const = 0; virtual Directions directions() const = 0; virtual Options outputOptions() const; virtual const char *optionsHelp() const; virtual bool probeFile(QIODevice *f) const; virtual QVariant loadFile(QIODevice *f, const Converter *&outputConverter) const; virtual void saveFile(QIODevice *f, const QVariant &contents, const QStringList &options) const = 0; }; Q_DECLARE_OPERATORS_FOR_FLAGS(Converter::Directions) Q_DECLARE_OPERATORS_FOR_FLAGS(Converter::Options) //! [0] #endif // CONVERTER_H