comparison Framework/Inputs/OpenSlideLibrary.h @ 278:169f168ba07a

retrieval of properties from openslide
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 12 Jul 2023 17:12:10 +0200
parents 20a730889ae2
children 7020852a8fa9
comparison
equal deleted inserted replaced
268:a6e4834ac141 278:169f168ba07a
23 #pragma once 23 #pragma once
24 24
25 #include <Images/ImageAccessor.h> 25 #include <Images/ImageAccessor.h>
26 #include <SharedLibrary.h> 26 #include <SharedLibrary.h>
27 27
28 #include <map>
28 #include <vector> 29 #include <vector>
29 30
30 namespace OrthancWSI 31 namespace OrthancWSI
31 { 32 {
32 class OpenSlideLibrary : public boost::noncopyable 33 class OpenSlideLibrary : public boost::noncopyable
37 typedef void (*FunctionGetLevelDimensions) (void*, int32_t, int64_t*, int64_t*); 38 typedef void (*FunctionGetLevelDimensions) (void*, int32_t, int64_t*, int64_t*);
38 typedef double (*FunctionGetLevelDownsample) (void*, int32_t); 39 typedef double (*FunctionGetLevelDownsample) (void*, int32_t);
39 typedef void* (*FunctionOpen) (const char*); 40 typedef void* (*FunctionOpen) (const char*);
40 typedef void (*FunctionReadRegion) (void*, uint32_t*, int64_t, int64_t, int32_t, int64_t, int64_t); 41 typedef void (*FunctionReadRegion) (void*, uint32_t*, int64_t, int64_t, int32_t, int64_t, int64_t);
41 42
43 // New in WSI 2.0
44 typedef const char* const* (*FunctionGetPropertyNames) (void*);
45 typedef const char* (*FunctionGetPropertyValue) (void*, const char*);
46
42 Orthanc::SharedLibrary library_; 47 Orthanc::SharedLibrary library_;
43 FunctionClose close_; 48 FunctionClose close_;
44 FunctionGetLevelCount getLevelCount_; 49 FunctionGetLevelCount getLevelCount_;
45 FunctionGetLevelDimensions getLevelDimensions_; 50 FunctionGetLevelDimensions getLevelDimensions_;
46 FunctionGetLevelDownsample getLevelDownsample_; 51 FunctionGetLevelDownsample getLevelDownsample_;
47 FunctionOpen open_; 52 FunctionOpen open_;
48 FunctionReadRegion readRegion_; 53 FunctionReadRegion readRegion_;
54 FunctionGetPropertyNames getPropertyNames_;
55 FunctionGetPropertyValue getPropertyValue_;
49 56
50 public: 57 public:
51 explicit OpenSlideLibrary(const std::string& path); 58 explicit OpenSlideLibrary(const std::string& path);
52 59
53 static OpenSlideLibrary& GetInstance(); 60 static OpenSlideLibrary& GetInstance();
70 Level(int64_t width, 77 Level(int64_t width,
71 int64_t height, 78 int64_t height,
72 double downsample); 79 double downsample);
73 }; 80 };
74 81
75 OpenSlideLibrary& that_; 82 OpenSlideLibrary& that_;
76 void* handle_; 83 void* handle_;
77 std::vector<Level> levels_; 84 std::vector<Level> levels_;
85 std::map<std::string, std::string> properties_;
78 86
79 void Initialize(const std::string& path); 87 void Initialize(const std::string& path);
80 88
81 void Close(); 89 void Close();
82 90
107 Orthanc::ImageAccessor* ReadRegion(unsigned int level, 115 Orthanc::ImageAccessor* ReadRegion(unsigned int level,
108 uint64_t x, 116 uint64_t x,
109 uint64_t y, 117 uint64_t y,
110 unsigned int width, 118 unsigned int width,
111 unsigned int height); 119 unsigned int height);
120
121 bool LookupProperty(std::string& value,
122 const std::string& property) const;
112 }; 123 };
113 }; 124 };
114 } 125 }