6#include "slideio/drivers/scn/scn_api_def.hpp"
7#include "slideio/core/cvscene.hpp"
8#include "slideio/imagetools/tifftools.hpp"
9#include "slideio/core/tools/tilecomposer.hpp"
10#include "slideio/drivers/scn/scnstruct.h"
11#include "slideio/imagetools/tiffkeeper.hpp"
19#pragma warning( push )
20#pragma warning(disable: 4251)
25 class SLIDEIO_SCN_EXPORTS SCNScene :
public CVScene,
public Tiler
33 SCNScene(
const std::string& filePath,
int sceneIndex,
const std::string& driverId,
const tinyxml2::XMLElement* xmlImage);
37 std::string getFilePath()
const override {
40 const std::string& getDriverId()
const override {
43 int getSceneIndex()
const override {
46 void setSceneIndex(
int index) {
49 std::string getName()
const override {
55 slideio::Resolution getResolution()
const override{
58 double getMagnification()
const override{
59 return m_magnification;
61 DataType getChannelDataType(
int channelIndex)
const override{
62 return m_channelDataType[channelIndex];
64 const std::vector<TiffDirectory>& getChannelDirectories(
int channelIndex,
int zIndex)
const {
65 const int dirIndex = zIndex * m_planeCount + (m_interleavedChannels ? 0 : channelIndex);
66 return m_channelDirectories[dirIndex];
68 cv::Rect getRect()
const override;
69 int getNumChannels()
const override;
70 int getNumZSlices()
const override {
73 void readResampledBlockChannelsEx(
const cv::Rect& blockRect,
const cv::Size& blockSize,
74 const std::vector<int>& channelIndicesIn,
int zSliceIndex,
int tFrameIndex, cv::OutputArray output)
override;
75 std::string getChannelName(
int channel)
const override;
76 int getTileCount(
void* userData)
override;
77 bool getTileRect(
int tileIndex, cv::Rect& tileRect,
void* userData)
override;
78 bool readTile(
int tileIndex,
const std::vector<int>& channelIndices, cv::OutputArray tileRaster,
79 void* userData)
override;
80 void initializeBlock(
const cv::Size& blockSize,
const std::vector<int>& channelIndices, cv::OutputArray output)
override;
81 const TiffDirectory* findZoomDirectory(
int channelIndex,
int zIndex,
double zoom)
const;
82 static std::vector<SCNDimensionInfo> parseDimensions(
const tinyxml2::XMLElement* xmlPixels);
84 void init(
const tinyxml2::XMLElement* xmlImage);
85 void parseChannelNames(
const tinyxml2::XMLElement* xmlImage);
86 void parseGeometry(
const tinyxml2::XMLElement* xmlImage);
87 void parseMagnification(
const tinyxml2::XMLElement* xmlImage);
88 void defineChannelDataType();
89 void setupChannels(
const tinyxml2::XMLElement* xmlPixels);
90 libtiff::TIFF* getFileHandle() {
93 void createEmptyChannelTile(
int tileIndex,
int channel, cv::OutputArray output,
void* userData);
96 std::string m_filePath;
97 std::string m_driverId;
100 Resolution m_resolution;
101 double m_magnification;
106 std::vector<std::string> m_channelNames;
107 std::vector<DataType> m_channelDataType;
108 std::vector<std::vector<TiffDirectory>> m_channelDirectories;
109 bool m_interleavedChannels;
115#pragma warning( pop )
Definition: exceptions.hpp:15
Compression
raster data compression enum
Definition: slideio_enums.hpp:12