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 
34 // typedef boost::signals2::signal<void ()> signal_t;
35 
36 namespace ddt {
37 
41 typedef struct FitsExtension {
50 
55 
59  std::string extension;
60 
64  std::string extensionName;
66 
76 class DataFile {
77  public:
82  DataFile();
83 
87  virtual ~DataFile();
88 
94 
107  bool OpenFile(const std::string& filename, const int position = 0);
108 
121  cpl_vector* OpenAndLoadVector(const std::string& file_name, int position = 0);
122 
135  cpl_image* OpenAndLoadImage(const std::string& file_name, int position = 0);
136 
151  cpl_image* OpenAndLoadCube(const std::string& file_name, int plane_number = 0,
152  int position = 0);
153 
159  cpl_vector* LoadVector();
160 
168  cpl_image* LoadImage(int plane_number = 0);
169 
177  cpl_table* LoadBinaryTable(const int extension_number);
178 
184  cpl_propertylist* LoadPropertyList();
185 
191  cpl_wcs* LoadWCS();
192 
193  cpl_image* LoadImageExtensionsAsOne();
194 
199  int get_FilePosition() const;
200 
205  std::string get_FileName() const;
206 
211  int get_NumberAxis() const;
212 
217  int get_NumberPlanes() const;
218 
223  int get_NumberExtensions() const;
224 
229  int get_ImageWidth() const;
230 
235  int get_ImageHeight() const;
236 
241  bool get_IsVector() const;
242 
247  bool get_IsImage() const;
248 
253  bool get_IsCube() const;
254 
259  bool get_IsBintable() const;
260 
267  FitsExtension* get_FitsExtensionInfo(const int extension_number);
268 
274 
275  protected:
280 
281  private:
285  void initialize();
286 
290  bool SetImageProperties();
291 
295  void RetrieveExtensionInfo();
296 
300  bool OpenFileExtension(const int position);
301 
305  bool OpenPrimaryHDU();
306 
310  std::string file_name;
311 
315  int file_position;
316 
320  int number_axis;
321 
325  int number_planes;
326 
330  int number_extensions;
331 
335  int image_width;
336 
340  int image_height;
341 
345  bool is_vector;
346 
350  bool is_image;
351 
355  bool is_cube;
356 
360  bool is_bintable;
361 
365  FitsExtension primaryHDU;
366 
370  std::vector<FitsExtension> extensions;
371 };
372 
373 } // namespace ddt
374 
375 #endif /* DATAFILE_HPP */
ddt::DataFile::LoadBinaryTable
cpl_table * LoadBinaryTable(const int extension_number)
Definition: dataFile.cpp:349
ddt::DataFile::get_ImageWidth
int get_ImageWidth() const
Definition: dataFile.cpp:481
ddt::DataFile::OpenFile
bool OpenFile(const std::string &filename, const int position=0)
Definition: dataFile.cpp:141
ddt::DataFile::get_FilePosition
int get_FilePosition() const
Definition: dataFile.cpp:443
ddt::DdtLogger
Definition: ddtLogger.hpp:71
ddt
Definition: ddtClient.hpp:36
ddt::FitsExtension
struct ddt::FitsExtension FitsExtension
ddt::DataFile::DataFile
DataFile()
Definition: dataFile.cpp:26
ddt::FitsExtension::extension
std::string extension
Definition: dataFile.hpp:59
ddt::DataFile::OpenAndLoadCube
cpl_image * OpenAndLoadCube(const std::string &file_name, int plane_number=0, int position=0)
Definition: dataFile.cpp:300
ddt::FitsExtension
Definition: dataFile.hpp:41
ddt::FitsExtension::image_height
int image_height
Definition: dataFile.hpp:54
imageIO.hpp
ddt::FitsExtension::number_axis
int number_axis
Definition: dataFile.hpp:45
ddt::DataFile::get_IsCube
bool get_IsCube() const
Definition: dataFile.cpp:505
ddt::FitsExtension::extensionName
std::string extensionName
Definition: dataFile.hpp:64
ddt::DataFile::get_NumberPlanes
int get_NumberPlanes() const
Definition: dataFile.cpp:457
ddt::DataFile::OpenAndLoadVector
cpl_vector * OpenAndLoadVector(const std::string &file_name, int position=0)
Definition: dataFile.cpp:252
ddt::DataFile::get_PrimaryHDUInfo
FitsExtension get_PrimaryHDUInfo() const
Definition: dataFile.cpp:475
ddt::DataFile::get_FitsExtensionInfo
FitsExtension * get_FitsExtensionInfo(const int extension_number)
Definition: dataFile.cpp:465
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:49
ddt::DataFile::get_ImageHeight
int get_ImageHeight() const
Definition: dataFile.cpp:487
ddt::DataFile
Definition: dataFile.hpp:76
ddt::DataFile::get_NumberAxis
int get_NumberAxis() const
Definition: dataFile.cpp:451
ddt::DataFile::get_IsVector
bool get_IsVector() const
Definition: dataFile.cpp:493
ddt::DataFile::OpenAndLoadImage
cpl_image * OpenAndLoadImage(const std::string &file_name, int position=0)
Definition: dataFile.cpp:276
ddt::DataFile::get_NumberExtensions
int get_NumberExtensions() const
Definition: dataFile.cpp:463
ddt::DataFile::get_FileName
std::string get_FileName() const
Definition: dataFile.cpp:445
ddtLogger.hpp
ddt::DataFile::LoadPropertyList
cpl_propertylist * LoadPropertyList()
Definition: dataFile.cpp:354
ddt::DataFile::LoadVector
cpl_vector * LoadVector()
Definition: dataFile.cpp:323
ddt::DataFile::LoadWCS
cpl_wcs * LoadWCS()
Definition: dataFile.cpp:358
ddt::DataFile::logger
ddt::DdtLogger * logger
Definition: dataFile.hpp:279
ddt::DataFile::get_IsBintable
bool get_IsBintable() const
Definition: dataFile.cpp:507
ddt::DataFile::get_IsImage
bool get_IsImage() const
Definition: dataFile.cpp:499
ddt::DataFile::LoadImageExtensionsAsOne
cpl_image * LoadImageExtensionsAsOne()
Definition: dataFile.cpp:373
ddt::DataFile::LoadImage
cpl_image * LoadImage(int plane_number=0)
Definition: dataFile.cpp:327