11#ifndef IMAGEBUFFER_HPP
12#define IMAGEBUFFER_HPP
72 bool LoadFile(
const std::string& file_name,
const int position = 0);
82 template <
typename TPOINTER>
83 bool LoadPointer(TPOINTER* new_image_data,
int nx,
int ny);
93 bool LoadFilePlane(
const std::string& file_name,
const int position = 0,
230 int*
const is_rejected);
263 double*
const value)
const;
273 const double y)
const;
321 const std::shared_ptr<DdtEncDec> enc_dec);
336 static constexpr size_t InternalBufferImageCount = 2;
341 void RotateBufferIndexes();
346 void ResetBufferIndexes();
363 bool LoadFileDataVector();
371 bool LoadFileDataImage(
const int plane_number);
389 bool LoadPropertyList();
391 bool LoadWCSFromMetadata(
const std::shared_ptr<DdtEncDecImage2D> enc_dec_2d);
393 bool LoadWCSFromMetadata(
const std::shared_ptr<DdtEncDecImage3D> enc_dec_3d);
395 bool LoadWCSFromMetadata(
const std::shared_ptr<DdtEncDecBinaryxD> enc_dec_xd);
397 bool AssignPropListAndWcs(cpl_propertylist*
const prop_list);
402 boost::signals2::connection connect(
const SignalT::slot_type& event_listener);
407 void DataAvailable();
416 void CheckByteOrder(
const int topic_id,
ddt::DataSample*
const data_sample,
417 const std::vector<uint8_t> tmp_data);
432 const int bytes_per_pixel,
433 const uint32_t data_type)
const;
466 const std::string config_map_name,
467 const std::string dimension,
const uint32_t data_type);
473 void DeleteCplImage(cpl_image**
const image,
const bool only_unwrap)
const;
483 const cpl_image*
const config_map,
484 const uint32_t data_type,
const int data_dim);
492 std::list<std::string> get_TextInformationForValue(
const double value)
const;
501 void CreateAndInitNewImage(
const uint32_t complete_pixels_x,
502 const uint32_t complete_pixels_y,
503 const uint32_t data_type);
514 cpl_image* CreateNewImageFromDataSample(
ddt::DataSample*
const data_sample,
515 const int bytes_per_pixel,
516 const int number_pixels_x,
517 const int number_pixels_y,
518 const uint32_t data_type,
519 bool*
const only_unwrap);
526 cpl_image* CreateNewImageFromLastImage(
const int number_pixels_x,
527 const int number_pixels_y);
536 void CopySegmentToImage(
const cpl_image*
const tmp_image,
537 const uint32_t first_pixel_x,
538 const uint32_t first_pixel_y);
549 void FreeAndCreateNew(
const uint32_t complete_pixels_x,
550 const uint32_t complete_pixels_y,
551 const uint32_t data_type,
const uint32_t image_id,
552 const bool complete_flag);
554 void LogMetaDataBase(
const std::shared_ptr<DdtEncDec> enc_dec);
559 void LogMetaDataImage2D(
const std::shared_ptr<DdtEncDecImage2D> enc_dec_2d);
564 void LogMetaDataImage3D(
const std::shared_ptr<DdtEncDecImage3D> enc_dec_3d);
569 void LogMetaDataBinaryxD(
const std::shared_ptr<DdtEncDecBinaryxD> enc_dec_xd);
574 std::unique_ptr<ddt::DataAcquisition> data_acquisition;
579 std::unique_ptr<ddt::DataFile> data_file;
585 std::unique_ptr<ddt::ConfigurationMaps> configuration_maps;
590 std::unique_ptr<ddt::InformationMaps> information_maps;
595 boost::signals2::connection connection;
606 cpl_image* internal_image[InternalBufferImageCount];
607 size_t current_index;
613 cpl_vector* internal_vector;
618 cpl_table* internal_binary_table;
623 int actual_plane[InternalBufferImageCount];
628 cpl_wcs* wcs[InternalBufferImageCount];
633 int number_axis[InternalBufferImageCount];
638 int number_planes[InternalBufferImageCount];
648 int number_extensions[InternalBufferImageCount];
653 int image_width[InternalBufferImageCount];
658 int image_height[InternalBufferImageCount];
660 bool unwrap_only[InternalBufferImageCount];
665 std::list<std::string> config_maps;
670 cpl_image* actual_configuration_map;
675 std::string actual_configuration;
680 boost::property_tree::ptree* actual_information_map;
685 std::string actual_configuration_map_source;
690 std::string actual_information_map_source;
700 std::string last_timestamp;
716 bool first_segment_received;
721 bool new_image_cycle;
727 bool copy_last_segment;
732 uint32_t last_first_pixel_x;
737 uint32_t last_first_pixel_y;
742 cpl_propertylist* property_list[InternalBufferImageCount];
747 std::shared_ptr<DdtEncDec> encdec_image_data;
boost::signals2::signal< void(ddt::DdtDataTransferLib::ConnectionState)> ConnectionStateSignalT
Definition dataAcquisition.hpp:50
Definition ddtLogger.hpp:43
DataAcquisition::ConnectionStateSignalT * ConnectionStateSignal()
Definition imageBuffer.cpp:1748
static int32_t BitsPerPixelFromDataType(const uint32_t data_type)
Definition imageBuffer.cpp:1673
cpl_apertures * get_CircularObjects(const double sigma)
Definition imageBuffer.cpp:1262
cpl_propertylist * get_PropertyList()
Definition imageBuffer.cpp:1257
int get_ImageWidth() const
Definition imageBuffer.cpp:1868
void AttachDataStream(const std::string data_stream_id)
Definition imageBuffer.cpp:1753
bool LoadFile(const std::string &file_name, const int position=0)
Definition imageBuffer.cpp:990
bool LoadInformationMaps(const std::string information_map_source)
Definition imageBuffer.cpp:966
ddt::DdtLogger * logger
Definition imageBuffer.hpp:330
void set_logger(ddt::DdtLogger *const in_logger)
Definition imageBuffer.cpp:88
double get_PixelValue(const int x_image, const int y_image, int *const is_rejected)
Definition imageBuffer.cpp:1277
void set_CurrentPlane(const int plane)
Definition imageBuffer.cpp:1882
bool LoadConfigurationMaps(const std::string configuration_map_source)
Definition imageBuffer.cpp:951
FitsExtension * get_FitsExtensionInfo(const int extension_number)
Definition imageBuffer.cpp:1190
int get_NumberExtensions()
Definition imageBuffer.cpp:1885
SignalT * ImageDataAvailableSignal()
Definition imageBuffer.cpp:1744
int get_CurrentPlane() const
Definition imageBuffer.cpp:1879
ddt::DdtStatistics * get_DataStatistics()
Definition imageBuffer.cpp:1794
bool LoadImageExtensionsAsOne(const std::string &file_name)
Definition imageBuffer.cpp:1132
bool get_LastSegment() const
Definition imageBuffer.cpp:1894
std::shared_ptr< DdtEncDec > get_MetadataSample()
Definition imageBuffer.cpp:1859
void FreeResources()
Definition imageBuffer.cpp:898
bool LoadFilePlane(const std::string &file_name, const int position=0, const int plane=0)
Definition imageBuffer.cpp:982
ImageBuffer()
Definition imageBuffer.cpp:70
bool get_ConfigurationMap_Value(const double x, const double y, double *const value) const
Definition imageBuffer.cpp:1297
bool LoadCPLImage(cpl_image *const image)
Definition imageBuffer.cpp:1199
cpl_wcs * get_Wcs()
Definition imageBuffer.cpp:1254
bool LoadPointer(TPOINTER *new_image_data, int nx, int ny)
Definition imageBuffer.cpp:1067
int get_NumberAxis() const
Definition imageBuffer.cpp:1891
static void AddWCSItemsToPropList(cpl_propertylist *const prop_list, const std::shared_ptr< DdtEncDec > enc_dec)
Definition imageBuffer.cpp:1643
std::string LastTimestampFromBuffer() const
Definition imageBuffer.cpp:431
int get_NumberPlanes() const
Definition imageBuffer.cpp:1874
virtual ~ImageBuffer()
Definition imageBuffer.cpp:72
bool LoadActualConfigurationMap(const std::string configuration_map_name)
Definition imageBuffer.cpp:927
std::vector< int > get_invalid_image_hdus() const
Definition imageBuffer.cpp:1378
cpl_image * get_Image()
Definition imageBuffer.cpp:1862
FitsExtension get_PrimaryHDUInfo() const
Definition imageBuffer.cpp:1194
cpl_table * get_BinaryTable()
Definition imageBuffer.cpp:1865
bool get_AttachedToStream() const
Definition imageBuffer.cpp:1788
std::list< std::string > get_TextInformation(const double x, const double y) const
Definition imageBuffer.cpp:1316
int get_ImageHeight() const
Definition imageBuffer.cpp:1871
void DetachDataStream(const std::string data_stream_id)
Definition imageBuffer.cpp:1782
bool get_FirstSegmentReceived() const
Definition imageBuffer.cpp:1897
void set_RetrieveStatsFlag(bool value)
Definition imageBuffer.cpp:1799
Configuration Maps class, offers an interface to configuration map access classes....
Data acquisition class, offers access to data stream acquisition functions. This file is part of the ...
Data file class, offers access to FITS file functions. This file is part of the DDT Image Handling Li...
DDT EncDecMultiDim. Class to encode / decode multi-dimensional array data samples....
DDT EncDecImage2D. Class to encode / decode 2-dimensional data samples containing image data....
DDT EncDecMultiLayer. Class to encode / decode multi-layer image data samples. Class to encode / deco...
Class to wrap the usage of log4cplus as logging utility. This file provides a wrapper class for the u...
boost::signals2::signal< void()> SignalT
Definition ddtMemoryAccessor.hpp:73
Image Color class, offers access to color map related functions. This file is part of the DDT Image H...
Image Handling class, offers access to coordinate conversion functions. This file is part of the DDT ...
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...
Image processing function declaration. This file is part of the DDT Image Handling Library and provid...
Image analysis and statistic function declaration. This file is part of the DDT Image Handling Librar...
Definition ddtClient.hpp:32
Definition ddtMemoryAccessor.hpp:175
Definition ddtStatistics.hpp:18
Definition dataFile.hpp:30