SlideIO 2.9.0
Open-source library for reading of medical images
Loading...
Searching...
No Matches
pketiledscene.hpp
1// This file is part of slideio project.
2// It is subject to the license terms in the LICENSE file found in the top-level directory
3// of this distribution and at http://slideio.com/license.html.
4#pragma once
5
6#include "slideio/drivers/pke/pkescene.hpp"
7#include "slideio/imagetools/tifftools.hpp"
8#include "slideio/core/tools/tilecomposer.hpp"
9
10#if defined(_MSC_VER)
11#pragma warning( push )
12#pragma warning(disable: 4251)
13#endif
14
15namespace slideio
16{
17 class SLIDEIO_PKE_EXPORTS PKETiledScene : public PKEScene, public Tiler
18 {
19 public:
20 PKETiledScene(const std::string& filePath,
21 int sceneIndex,
22 const std::string& driverId,
23 const std::string& name,
24 const std::vector<slideio::TiffDirectory>& dirs);
25 PKETiledScene(const std::string& filePath,
26 int sceneIndex,
27 const std::string& driverId,
28 libtiff::TIFF* hFile,
29 const std::string& name,
30 const std::vector<slideio::TiffDirectory>& dirs);
31 int getNumChannels() const override;
32 cv::Rect getRect() const override;
33 void readResampledBlockChannelsEx(const cv::Rect& blockRect, const cv::Size& blockSize,
34 const std::vector<int>& componentIndices, int zSliceIndex, int tFrameIndex, cv::OutputArray output) override;
35 void readResampledLevelBlockChannelsEx(int level, const cv::Rect& levelRect,
36 const cv::Size& blockSize, const std::vector<int>& channelIndices,
37 int zSliceIndex, int tFrameIndex, cv::OutputArray output) override;
38 int findZoomLevel(double zoom) const;
39 // Tiler methods
40 int getTileCount(void* userData) override;
41 bool getTileRect(int tileIndex, cv::Rect& tileRect, void* userData) override;
42 bool readTile(int tileIndex, const std::vector<int>& channelIndices, cv::OutputArray tileRaster,
43 void* userData) override;
44 void initializeBlock(const cv::Size& blockSize, const std::vector<int>& channelIndices, cv::OutputArray output) override;
45 std::string getChannelName(int channel) const override;
46 bool isBrightField() const;
47 private:
48 void initialize();
49 void initializeChannelNames();
50 bool readTiffTile(int tileIndex, int zoomLevel, const std::vector<int>& channelIndices, cv::OutputArray tileRaster);
51 bool readTiffDirectory(const TiffDirectory& dir, const std::vector<int>& channelIndices, cv::OutputArray tileRaster);
52 private:
53 std::vector<slideio::TiffDirectory> m_directories;
54 bool m_isUnmixed = false;
55 std::vector<int> m_zoomDirectoryIndices;
56 int m_numChannels = 0;
57 std::vector<std::string> m_channelNames;
58 };
59}
60
61#if defined(_MSC_VER)
62#pragma warning( pop )
63#endif
Definition: exceptions.hpp:15