libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
imagefileio.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <promeki/namespace.h>
14#include <promeki/list.h>
15#include <promeki/string.h>
16#include <promeki/stringlist.h>
17#include <promeki/mediaconfig.h>
18
25#define PROMEKI_REGISTER_IMAGEFILEIO(name) \
26 [[maybe_unused]] static int PROMEKI_CONCAT(__promeki_imagefileio_, PROMEKI_UNIQUE_ID) = \
27 ImageFileIO::registerImageFileIO(new name);
28
29
30PROMEKI_NAMESPACE_BEGIN
31
32class Error;
33class ImageFile;
34
42class ImageFileIO {
43 public:
45 using IDList = ::promeki::List<int>;
46
52 static int registerImageFileIO(ImageFileIO *object);
53
59 static const ImageFileIO *lookup(int id);
60
73 static IDList registeredIDs();
74
76 ImageFileIO() = default;
77
79 virtual ~ImageFileIO() {};
80
85 int id() const { return _id; }
86
91 bool isValid() const { return _id != 0; }
92
97 bool canLoad() const { return _canLoad; }
98
103 bool canSave() const { return _canSave; }
104
109 String name() const { return _name; }
110
121 String description() const { return _description; }
122
134 const StringList &extensions() const { return _extensions; }
135
149 String mediaIoName() const {
150 if (!_mediaIoName.isEmpty()) return _mediaIoName;
151 return String("ImgSeq") + _name;
152 }
153
164 virtual Error load(ImageFile &imageFile, const MediaConfig &config = MediaConfig()) const;
165
176 virtual Error save(ImageFile &imageFile, const MediaConfig &config = MediaConfig()) const;
177
178 protected:
179 int _id = 0;
180 bool _canLoad = false;
181 bool _canSave = false;
182 String _name;
183 String _description;
184 StringList _extensions;
185 String _mediaIoName;
186};
187
188PROMEKI_NAMESPACE_END
189
190#endif // PROMEKI_ENABLE_PROAV