MeVisLabToolboxReference
|
This library contains the base class DataCompressor which allows for implementing new data compression algorithms and a factory class DataCompressorFactory allowing for registration of user derived classes. In this way any number of new compression classes can be implemented which are automatically detected by classes using compression algorithms.
virtual const std::string getTypeName() const = 0; virtual const std::string getVersion() const = 0; virtual const bool isSupportedVersion(const std::string &ver) const = 0; virtual MLErrorCode compress(const void *srcMem, size_t srcSize, void *&dstMem, MLint &dstNum) const = 0; virtual MLErrorCode decompress(const void *srcMem, size_t srcSize, void *&dstMem, MLint64 &resSize) const = 0;
virtual std::string getVendor() const { return ""; } virtual std::string getSuffix() const { return ""; } virtual bool isLossy() const { return false; }
YourDataCompressor::initClass(); DataCompressorFactory::registerCompressor(YourDataCompressor::getClassTypeId());
ML_CLASS_HEADER(YourDataCompressor)
ML_CLASS_SOURCE(YourDataCompressor, DataCompressor)
Then all classes using DataCompressors via the DataCompressorFactory (for example the MLImageFormat class) will automatically detect your compression algorithm and offer it as an option.