ddt  1.0.0
dataFile.hpp
Go to the documentation of this file.
1 
20 #ifndef DATAFILE_HPP
21 #define DATAFILE_HPP
22 
23 #include <sys/stat.h>
24 
25 #include <algorithm>
26 #include <boost/bind/bind.hpp>
27 #include <boost/signals2/signal.hpp>
28 #include <cctype>
29 
30 #include "ddt/ddtLogger.hpp"
31 #include "ddt/imageError.hpp"
32 #include "ddt/imageIO.hpp"
33 
34 namespace ddt {
35 
39 typedef struct FitsExtension {
48 
53 
57  std::string extension;
58 
62  std::string extension_name;
63 
67  cpl_propertylist* extension_headers;
69 
78 class DataFile {
79  public:
83  DataFile();
84 
88  virtual ~DataFile();
89 
95 
108  bool OpenFile(const std::string& filename, const int position = 0);
109 
122  cpl_vector* OpenAndLoadVector(const std::string& file_name,
123  const int position = 0);
124 
137  cpl_image* OpenAndLoadImage(const std::string& file_name,
138  const int position = 0);
139 
154  cpl_image* OpenAndLoadCube(const std::string& file_name,
155  const int plane_number = 0,
156  const int position = 0);
157 
163  cpl_vector* LoadVector();
164 
172  cpl_image* LoadImage(const int plane_number = 0);
173 
181  cpl_table* LoadBinaryTable(const int extension_number);
182 
188  cpl_propertylist* LoadPropertyList();
189 
195  cpl_wcs* LoadWCS();
196 
204  cpl_image* LoadImageExtensionsAsOne(const int plane_number = 0);
205 
210  int get_FilePosition() const;
211 
216  std::string get_FileName() const;
217 
222  int get_NumberAxis() const;
223 
228  int get_NumberPlanes() const;
229 
234  int get_NumberExtensions() const;
235 
240  int get_ImageWidth() const;
241 
246  int get_ImageHeight() const;
247 
252  bool get_IsVector() const;
253 
258  bool get_IsImage() const;
259 
264  bool get_IsCube() const;
265 
270  bool get_IsBintable() const;
271 
278  FitsExtension* get_FitsExtensionInfo(const int extension_number);
279 
285 
290  std::vector<int> get_invalid_image_hdus() const;
291 
292  protected:
297 
298  private:
302  void Initialize();
303 
307  bool SetImageProperties();
308 
312  bool RetrieveImageProperties(const cpl_propertylist* const property_list);
313 
317  void RetrieveExtensionInfo();
318 
322  bool OpenFileExtension(const int position);
323 
327  bool OpenPrimaryHDU();
328 
332  std::string file_name;
333 
337  int file_position;
338 
342  int number_axis;
343 
347  int number_planes;
348 
352  int number_extensions;
353 
357  int image_width;
358 
362  int image_height;
363 
367  bool is_vector;
368 
372  bool is_image;
373 
377  bool is_cube;
378 
382  bool is_bintable;
383 
387  FitsExtension primary_hdu;
388 
392  std::vector<FitsExtension> extensions;
393 
398  std::vector<int> invalid_image_hdus;
399 };
400 
401 } // namespace ddt
402 
403 #endif /* DATAFILE_HPP */
404 
Definition: dataFile.hpp:78
cpl_table * LoadBinaryTable(const int extension_number)
Definition: dataFile.cpp:429
bool get_IsBintable() const
Definition: dataFile.cpp:624
int get_NumberAxis() const
Definition: dataFile.cpp:563
std::vector< int > get_invalid_image_hdus() const
Definition: dataFile.cpp:547
cpl_image * LoadImageExtensionsAsOne(const int plane_number=0)
Definition: dataFile.cpp:460
int get_NumberExtensions() const
Definition: dataFile.cpp:575
cpl_propertylist * LoadPropertyList()
Definition: dataFile.cpp:439
cpl_image * OpenAndLoadImage(const std::string &file_name, const int position=0)
Definition: dataFile.cpp:352
ddt::DdtLogger * logger
Definition: dataFile.hpp:296
int get_ImageHeight() const
Definition: dataFile.cpp:600
int get_FilePosition() const
Definition: dataFile.cpp:555
int get_NumberPlanes() const
Definition: dataFile.cpp:569
bool get_IsVector() const
Definition: dataFile.cpp:606
int get_ImageWidth() const
Definition: dataFile.cpp:594
FitsExtension * get_FitsExtensionInfo(const int extension_number)
Definition: dataFile.cpp:577
FitsExtension get_PrimaryHDUInfo() const
Definition: dataFile.cpp:588
std::string get_FileName() const
Definition: dataFile.cpp:557
virtual ~DataFile()
bool OpenFile(const std::string &filename, const int position=0)
Definition: dataFile.cpp:165
DataFile()
Definition: dataFile.cpp:30
cpl_image * LoadImage(const int plane_number=0)
Definition: dataFile.cpp:405
bool get_IsCube() const
Definition: dataFile.cpp:618
cpl_vector * LoadVector()
Definition: dataFile.cpp:401
cpl_wcs * LoadWCS()
Definition: dataFile.cpp:444
cpl_image * OpenAndLoadCube(const std::string &file_name, const int plane_number=0, const int position=0)
Definition: dataFile.cpp:376
bool get_IsImage() const
Definition: dataFile.cpp:612
void set_logger(ddt::DdtLogger *logger)
Definition: dataFile.cpp:35
cpl_vector * OpenAndLoadVector(const std::string &file_name, const int position=0)
Definition: dataFile.cpp:328
Definition: ddtLogger.hpp:51
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
Image error handling function declaration. This file is part of the DDT Image Handling Library and pr...
Image IO function declaration. This file is part of the DDT Image Handling Library and provides funct...
Definition: ddtClient.hpp:39
struct ddt::FitsExtension FitsExtension
Definition: dataFile.hpp:39
int image_width
Definition: dataFile.hpp:47
std::string extension_name
Definition: dataFile.hpp:62
cpl_propertylist * extension_headers
Definition: dataFile.hpp:67
int image_height
Definition: dataFile.hpp:52
int number_axis
Definition: dataFile.hpp:43
std::string extension
Definition: dataFile.hpp:57