9#include "slideio/drivers/vsi/vsi_api_def.hpp"
10#include "slideio/imagetools/tifftools.hpp"
11#include "slideio/drivers/vsi/volume.hpp"
12#include "slideio/drivers/vsi/taginfo.hpp"
13#include <nlohmann/json.hpp>
15using json = nlohmann::json;
18#pragma warning( push )
19#pragma warning(disable: 4251)
30 class SLIDEIO_VSI_EXPORTS VSIFile
33 VSIFile(
const std::string& filePath);
34 std::shared_ptr<vsi::EtsFile> getEtsFile(
int index)
const {
35 return m_etsFiles[index];
37 int getNumEtsFiles()
const {
38 return static_cast<int>(m_etsFiles.size());
40 std::string getRawMetadata()
const;
41 void assignAuxVolumes();
43 int getNumTiffDirectories()
const {
44 return static_cast<int>(m_directories.size());
46 const TiffDirectory& getTiffDirectory(
int index) {
47 return m_directories[index];
49 int getNumVolumes()
const {
50 return static_cast<int>(m_volumes.size());
52 std::shared_ptr<Volume> getVolume(
int index)
const {
53 return m_volumes[index];
55 bool hasMetadata()
const {
56 return !m_metadata.empty();
58 bool expectExternalFiles()
const {
59 return m_expectExternalFiles;
61 bool hasExternalFiles()
const {
62 return !m_etsFiles.empty();
64 void getVolumeMetadataItems(std::list<const TagInfo*>& volumes)
const;
65 static void getImageFrameMetadataItems(
const TagInfo* volume, std::list<const TagInfo*>& frames);
70 void checkExternalFilePresence();
71 static StackType getVolumeStackType(
const TagInfo* volume);
72 void extractVolumesFromMetadata();
73 bool readVolumeHeader(vsi::VSIStream& vsi, vsi::VolumeHeader& volumeHeader);
74 bool readMetadata(VSIStream& vsiStream, std::list<TagInfo>& path);
75 void serializeMetadata(
const TagInfo& tagInfo, json& jsonObj)
const;
76 void readVolumeInfo();
77 void processOrphanEtsFiles(std::list<std::shared_ptr<Volume>> volumes,
78 std::list<std::pair<EtsFilePtr, TileInfoListPtr>> orphanEtsFiles);
79 void readExternalFiles();
80 void readExtendedType(vsi::VSIStream& vsi, TagInfo& tag, std::list<TagInfo>& path);
82 std::vector<std::shared_ptr<vsi::EtsFile>> m_etsFiles;
83 bool m_expectExternalFiles =
false;
84 int m_numChannels = 0;
86 std::string m_filePath;
88 std::vector<TiffDirectory> m_directories;
89 std::vector<std::shared_ptr<Volume>> m_volumes;
Definition: exceptions.hpp:15