11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
25#define PROMEKI_REGISTER_IMAGEFILEIO(name) \
26 [[maybe_unused]] static int PROMEKI_CONCAT(__promeki_imagefileio_, PROMEKI_UNIQUE_ID) = \
27 ImageFileIO::registerImageFileIO(new name);
30PROMEKI_NAMESPACE_BEGIN
45 using IDList = ::promeki::List<int>;
52 static int registerImageFileIO(ImageFileIO *
object);
59 static const ImageFileIO *lookup(
int id);
73 static IDList registeredIDs();
76 ImageFileIO() =
default;
79 virtual ~ImageFileIO() {};
85 int id()
const {
return _id; }
91 bool isValid()
const {
return _id != 0; }
97 bool canLoad()
const {
return _canLoad; }
103 bool canSave()
const {
return _canSave; }
109 String name()
const {
return _name; }
121 String description()
const {
return _description; }
134 const StringList &extensions()
const {
return _extensions; }
149 String mediaIoName()
const {
150 if (!_mediaIoName.isEmpty())
return _mediaIoName;
151 return String(
"ImgSeq") + _name;
164 virtual Error load(ImageFile &imageFile,
const MediaConfig &config = MediaConfig())
const;
176 virtual Error save(ImageFile &imageFile,
const MediaConfig &config = MediaConfig())
const;
180 bool _canLoad =
false;
181 bool _canSave =
false;
184 StringList _extensions;