#ifndef IMAGEWRITER_H #define IMAGEWRITER_H class ImageWriterProto; class Image; class Config; class ImageWriter { public: ImageWriter(const ImageWriterProto& config); virtual ~ImageWriter() {}; public: static std::unique_ptr create(Config& config); static std::unique_ptr create(const ImageWriterProto& config); static std::unique_ptr createD64ImageWriter( const ImageWriterProto& config); static std::unique_ptr createDiskCopyImageWriter( const ImageWriterProto& config); static std::unique_ptr createImgImageWriter( const ImageWriterProto& config); static std::unique_ptr createLDBSImageWriter( const ImageWriterProto& config); static std::unique_ptr createNsiImageWriter( const ImageWriterProto& config); static std::unique_ptr createRawImageWriter( const ImageWriterProto& config); static std::unique_ptr createD88ImageWriter( const ImageWriterProto& config); static std::unique_ptr createImdImageWriter( const ImageWriterProto& config); public: void printMap(const Image& sectors); void writeCsv(const Image& sectors, const std::string& filename); /* Writes a raw image. */ virtual void writeImage(const Image& sectors) = 0; protected: const ImageWriterProto& _config; }; #endif