5#include "slideio/imagetools/slideio_imagetools_def.hpp"
6#include "tifftools.hpp"
7#include "slideio/base/size.hpp"
8#include "slideio/base/slideio_enums.hpp"
9#include "slideio/imagetools/smallimage.hpp"
13#include <nlohmann/json.hpp>
14#include <opencv2/core/mat.hpp>
22 class SLIDEIO_IMAGETOOLS_EXPORTS FIWrapper :
public SmallImage
25 class SLIDEIO_IMAGETOOLS_EXPORTS Page :
public SmallImagePage
28 Page(FIWrapper* parent,
int pageIndex);
29 Page(FIWrapper* parent, FIBITMAP* bitmap);
30 Page(
const Page&) =
delete;
31 Page& operator=(
const Page&) =
delete;
32 Page(Page&& other)
noexcept =
delete;
33 Page& operator=(Page&& other)
noexcept =
delete;
35 Size getSize()
const override;
36 DataType getDataType()
const override{
39 int getNumChannels()
const override{
42 const std::string& getMetadata()
const override{
48 void readRaster(cv::OutputArray)
override;
49 Resolution getResolution()
const override;
51 void detectMetadata();
52 void extractCommonMetadata();
53 void extractTiffMetadata();
55 void detectNumChannels();
56 void detectDataType();
58 void detectCompression();
60 FIBITMAP* m_pBitmap =
nullptr;
61 FIMULTIBITMAP* m_hFile =
nullptr;
63 int m_numChannels = 0;
64 DataType m_dataType = DataType::DT_Unknown;
65 std::string m_metadata;
67 FREE_IMAGE_FORMAT m_fiFormat = FIF_UNKNOWN;
68 FIWrapper* m_parent =
nullptr;
71 FIWrapper(
const std::string& filePath);
72 FIWrapper(
const FIWrapper&) =
delete;
73 FIWrapper& operator=(
const FIWrapper&) =
delete;
74 FIWrapper(FIWrapper&& other)
noexcept =
delete;
75 FIWrapper& operator=(FIWrapper&& other)
noexcept =
delete;
77 bool isValid()
const override;
78 int getNumPages()
const override;
79 SmallImagePage* readPage(
int page)
override;
80 FIMULTIBITMAP* getFIHandle()
const{
83 FREE_IMAGE_FORMAT getFIFormat()
const {
86 const std::string& getFilePath()
const {
89 int getNumTiffDirectories()
const {
90 return (
int)m_tiffDirectories.size();
92 const TiffDirectory& getTiffDirectory(
int index)
const;
93 static void writeRaster(
const std::string& filePath, Compression compression,
const cv::Mat& raster);
95 FIMULTIBITMAP* m_hFile =
nullptr;
96 FIBITMAP* m_pBitmap =
nullptr;
97 std::map<int, std::shared_ptr<Page>> m_pages;
98 FREE_IMAGE_FORMAT m_fiFormat = FIF_UNKNOWN;
99 std::string m_filePath;
100 std::vector<TiffDirectory> m_tiffDirectories;
Definition: exceptions.hpp:15
Compression
raster data compression enum
Definition: slideio_enums.hpp:12