Files

39 lines
1.2 KiB
C++
Raw Permalink Normal View History

2025-09-22 23:13:28 +02:00
#include "PixelariumImageFactory.hpp"
#include <cctype>
#include <memory>
#include "IPixelariumImage.hpp"
#include "PixelariumCzi.hpp"
#include "PixelariumJpg.hpp"
#include "PixelariumMem.hpp"
#include "PixelariumPng.hpp"
#include "PixelariumTiff.hpp"
2025-09-22 23:13:28 +02:00
2026-01-23 23:00:35 +00:00
/*static*/ std::unique_ptr<pixelarium::imaging::IPixelariumImageCvMat>
2025-09-26 21:09:51 +02:00
pixelarium::imaging::PixelariumImageFactory::CreateImage(const std::string& uri, const Log& log)
2025-09-22 23:13:28 +02:00
{
const auto res{std::filesystem::path(uri)};
const auto target_type{ExtensionToType(res.extension().string())};
switch (target_type)
{
2025-10-07 12:18:00 +02:00
case ImageFileType::kUnknown:
2025-09-22 23:13:28 +02:00
return {};
2025-10-07 12:18:00 +02:00
case ImageFileType::kAbstract:
2025-09-22 23:13:28 +02:00
return {};
2025-10-07 12:18:00 +02:00
case ImageFileType::kPng:
2025-09-22 23:13:28 +02:00
return std::make_unique<PixelariumPng>(uri);
2025-10-07 12:18:00 +02:00
case ImageFileType::kJpg:
2025-09-22 23:13:28 +02:00
return std::make_unique<PixelariumJpg>(uri);
2025-10-07 12:18:00 +02:00
case ImageFileType::kCzi:
2025-09-26 21:09:51 +02:00
return std::make_unique<PixelariumCzi>(uri, log);
2025-10-12 21:47:17 +02:00
case ImageFileType::kTiff:
return std::make_unique<PixelariumTiff>(uri, log);
case ImageFileType::kMemory:
return std::make_unique<PixelariumMem>(cv::Mat(), uri, log);
default:
return {};
2025-09-22 23:13:28 +02:00
}
}