ddt  0.1
dataFile.hpp
Go to the documentation of this file.
1 // @copyright
2 // (c) Copyright ESO 2020
3 // All Rights Reserved
4 // ESO (eso.org) is an Intergovernmental Organization, and therefore special
5 // legal conditions apply.
6 //
7 // @file dataFile.hpp
8 // @brief Data file class, offers access to FITS file functions.
9 //
10 // This file is part of the DDT Image Handling Library and
11 // provides a class that offers access to FITS file functions.
12 //
13 // @author Christoph Bortlisz, CGI
14 // @since 2020/08/24
15 //
16 
17 #ifndef DATAFILE_HPP
18 #define DATAFILE_HPP
19 
20 #include <sys/stat.h>
21 
22 #include <algorithm>
23 #include <boost/bind/bind.hpp>
24 #include <boost/signals2/signal.hpp>
25 #include <cctype>
26 
27 #include "ddt/ddtLogger.hpp"
28 #include "ddt/imageError.hpp"
29 #include "ddt/imageIO.hpp"
30 
31 namespace ddt {
32 
36 typedef struct FitsExtension {
45 
50 
54  std::string extension;
55 
59  std::string extensionName;
61 
71 class DataFile {
72  public:
77  DataFile();
78 
82  virtual ~DataFile();
83 
89 
102  bool OpenFile(const std::string& filename, const int position = 0);
103 
116  cpl_vector* OpenAndLoadVector(const std::string& file_name,
117  const int position = 0);
118 
131  cpl_image* OpenAndLoadImage(const std::string& file_name,
132  const int position = 0);
133 
148  cpl_image* OpenAndLoadCube(const std::string& file_name,
149  const int plane_number = 0,
150  const int position = 0);
151 
157  cpl_vector* LoadVector();
158 
166  cpl_image* LoadImage(const int plane_number = 0);
167 
175  cpl_table* LoadBinaryTable(const int extension_number);
176 
182  cpl_propertylist* LoadPropertyList();
183 
189  cpl_wcs* LoadWCS();
190 
198  cpl_image* LoadImageExtensionsAsOne(const int plane_number = 0);
199 
204  int get_FilePosition() const;
205 
210  std::string get_FileName() const;
211 
216  int get_NumberAxis() const;
217 
222  int get_NumberPlanes() const;
223 
228  int get_NumberExtensions() const;
229 
234  int get_ImageWidth() const;
235 
240  int get_ImageHeight() const;
241 
246  bool get_IsVector() const;
247 
252  bool get_IsImage() const;
253 
258  bool get_IsCube() const;
259 
264  bool get_IsBintable() const;
265 
272  FitsExtension* get_FitsExtensionInfo(const int extension_number);
273 
279 
284  std::vector<int> get_invalid_image_hdus() const;
285 
286  protected:
291 
292  private:
296  void initialize();
297 
301  bool SetImageProperties();
302 
306  bool RetrieveImageProperties(const cpl_propertylist* const property_list);
307 
311  void RetrieveExtensionInfo();
312 
316  bool OpenFileExtension(const int position);
317 
321  bool OpenPrimaryHDU();
322 
326  std::string file_name;
327 
331  int file_position;
332 
336  int number_axis;
337 
341  int number_planes;
342 
346  int number_extensions;
347 
351  int image_width;
352 
356  int image_height;
357 
361  bool is_vector;
362 
366  bool is_image;
367 
371  bool is_cube;
372 
376  bool is_bintable;
377 
381  FitsExtension primaryHDU;
382 
386  std::vector<FitsExtension> extensions;
387 
392  std::vector<int> invalid_image_hdus;
393 };
394 
395 } // namespace ddt
396 
397 #endif /* DATAFILE_HPP */
ddt::DataFile::LoadBinaryTable
cpl_table * LoadBinaryTable(const int extension_number)
Definition: dataFile.cpp:404
ddt::DataFile::get_ImageWidth
int get_ImageWidth() const
Definition: dataFile.cpp:569
ddt::DataFile::OpenFile
bool OpenFile(const std::string &filename, const int position=0)
Definition: dataFile.cpp:150
ddt::DataFile::get_FilePosition
int get_FilePosition() const
Definition: dataFile.cpp:530
ddt::DdtLogger
Definition: ddtLogger.hpp:48
ddt::DataFile::OpenAndLoadImage
cpl_image * OpenAndLoadImage(const std::string &file_name, const int position=0)
Definition: dataFile.cpp:325
ddt::DataFile::LoadImage
cpl_image * LoadImage(const int plane_number=0)
Definition: dataFile.cpp:378
ddt
Definition: ddtClient.hpp:36
ddt::FitsExtension
struct ddt::FitsExtension FitsExtension
ddt::DataFile::DataFile
DataFile()
Definition: dataFile.cpp:26
ddt::DataFile::OpenAndLoadVector
cpl_vector * OpenAndLoadVector(const std::string &file_name, const int position=0)
Definition: dataFile.cpp:301
ddt::FitsExtension::extension
std::string extension
Definition: dataFile.hpp:54
ddt::FitsExtension
Definition: dataFile.hpp:36
ddt::FitsExtension::image_height
int image_height
Definition: dataFile.hpp:49
imageIO.hpp
ddt::FitsExtension::number_axis
int number_axis
Definition: dataFile.hpp:40
ddt::DataFile::get_IsCube
bool get_IsCube() const
Definition: dataFile.cpp:593
ddt::FitsExtension::extensionName
std::string extensionName
Definition: dataFile.hpp:59
ddt::DataFile::get_NumberPlanes
int get_NumberPlanes() const
Definition: dataFile.cpp:544
ddt::DataFile::get_PrimaryHDUInfo
FitsExtension get_PrimaryHDUInfo() const
Definition: dataFile.cpp:563
ddt::DataFile::get_FitsExtensionInfo
FitsExtension * get_FitsExtensionInfo(const int extension_number)
Definition: dataFile.cpp:552
ddt::DataFile::set_logger
void set_logger(ddt::DdtLogger *logger)
Definition: dataFile.cpp:31
imageError.hpp
ddt::DataFile::~DataFile
virtual ~DataFile()
ddt::FitsExtension::image_width
int image_width
Definition: dataFile.hpp:44
ddt::DataFile::get_invalid_image_hdus
std::vector< int > get_invalid_image_hdus() const
Definition: dataFile.cpp:522
ddt::DataFile::get_ImageHeight
int get_ImageHeight() const
Definition: dataFile.cpp:575
ddt::DataFile
Definition: dataFile.hpp:71
ddt::DataFile::get_NumberAxis
int get_NumberAxis() const
Definition: dataFile.cpp:538
ddt::DataFile::get_IsVector
bool get_IsVector() const
Definition: dataFile.cpp:581
ddt::DataFile::get_NumberExtensions
int get_NumberExtensions() const
Definition: dataFile.cpp:550
ddt::DataFile::get_FileName
std::string get_FileName() const
Definition: dataFile.cpp:532
ddt::DataFile::LoadImageExtensionsAsOne
cpl_image * LoadImageExtensionsAsOne(const int plane_number=0)
Definition: dataFile.cpp:435
ddt::DataFile::OpenAndLoadCube
cpl_image * OpenAndLoadCube(const std::string &file_name, const int plane_number=0, const int position=0)
Definition: dataFile.cpp:349
ddtLogger.hpp
ddt::DataFile::LoadPropertyList
cpl_propertylist * LoadPropertyList()
Definition: dataFile.cpp:414
ddt::DataFile::LoadVector
cpl_vector * LoadVector()
Definition: dataFile.cpp:374
ddt::DataFile::LoadWCS
cpl_wcs * LoadWCS()
Definition: dataFile.cpp:419
ddt::DataFile::logger
ddt::DdtLogger * logger
Definition: dataFile.hpp:290
ddt::DataFile::get_IsBintable
bool get_IsBintable() const
Definition: dataFile.cpp:599
ddt::DataFile::get_IsImage
bool get_IsImage() const
Definition: dataFile.cpp:587