libimgdoc2
Loading...
Searching...
No Matches
IDocInfo.h
1// SPDX-FileCopyrightText: 2023 Carl Zeiss Microscopy GmbH
2//
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
7#include <vector>
8#include <map>
9#include <cstdint>
10#include <limits>
11#include "Intervals.h"
12
13namespace imgdoc2
14{
17 {
18 public:
19 virtual ~IDocInfo() = default;
20
25 virtual void GetTileDimensions(imgdoc2::Dimension* dimensions, std::uint32_t& count) = 0;
26
35 virtual std::map<imgdoc2::Dimension, imgdoc2::Int32Interval> GetMinMaxForTileDimension(const std::vector<imgdoc2::Dimension>& dimensions_to_query_for) = 0;
36
40 virtual std::uint64_t GetTotalTileCount() = 0;
41
45 virtual std::map<int, std::uint64_t> GetTileCountPerLayer() = 0;
46 public:
47 std::vector<imgdoc2::Dimension> GetTileDimensions()
48 {
49 std::uint32_t count = 0;
50 this->GetTileDimensions(nullptr, count);
51 std::vector<imgdoc2::Dimension> dimensions(count);
52 this->GetTileDimensions(dimensions.data(), count);
53 return dimensions;
54 }
55
56 // no copy and no move (-> https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-copy-move-or-destructor-function-define-or-delete-them-all )
57 IDocInfo() = default;
58 IDocInfo(const IDocInfo&) = delete; // copy constructor
59 IDocInfo& operator=(const IDocInfo&) = delete; // copy assignment
60 IDocInfo(IDocInfo&&) = delete; // move constructor
61 IDocInfo& operator=(IDocInfo&&) = delete; // move assignment
62 };
63}
This interface is used for retrieving information about the document.
Definition: IDocInfo.h:17
virtual std::map< int, std::uint64_t > GetTileCountPerLayer()=0
virtual std::uint64_t GetTotalTileCount()=0
virtual void GetTileDimensions(imgdoc2::Dimension *dimensions, std::uint32_t &count)=0
virtual std::map< imgdoc2::Dimension, imgdoc2::Int32Interval > GetMinMaxForTileDimension(const std::vector< imgdoc2::Dimension > &dimensions_to_query_for)=0