15 #pragma warning( disable: 4251 )
33#include <CArcFitsFileDllMain.h>
34#include <CArcStringList.h>
39using namespace std::string_literals;
61 using keywordValue_t = std::variant<std::uint32_t, std::int32_t, std::uint64_t, std::int64_t, double, std::string>;
63 using keywordValue_t = std::tuple<std::uint32_t, std::int32_t, std::uint64_t, std::int64_t, double, std::string>;
128 template <
typename T>
159 constexpr auto MAKE_POINT( std::uint32_t uiColumn, std::uint32_t uiRow ) {
return std::make_pair( uiColumn, uiRow ); }
168 template <
typename T = arc::gen4::fits::BPP_16>
185 static const std::string
version(
void )
noexcept;
195 const std::string
getType(
void )
const noexcept;
205 void create(
const std::filesystem::path& tFileName, std::uint32_t uiCols, std::uint32_t uiRows );
215 void create3D(
const std::filesystem::path& tFileName, std::uint32_t uiCols, std::uint32_t uiRows );
236 std::unique_ptr<arc::gen4::CArcStringList>
getHeader(
void )
const;
292 std::unique_ptr<arc::gen4::fits::fitsParameter_t>
getParameters(
void )
const;
353 void reSize(
const std::uint32_t uiCols,
const std::uint32_t uiRows );
370 void write(
const T* pBuf,
const std::int64_t i64Bytes,
const std::int64_t i64Pixel = 1 )
const;
395 std::unique_ptr<T[], arc::gen4::fits::ArrayDeleter<T>>
read(
void )
const;
405 void read( T* pBuf,
const std::uint32_t uiCols,
const std::uint32_t uiRows )
const;
421 void reWrite3D(
const T* pBuf,
const std::uint32_t uiImageNumber )
const;
429 std::unique_ptr<T[], arc::gen4::fits::ArrayDeleter<T>>
read3D( std::uint32_t uiImageNumber )
const;
446 inline void verifyFileHandle(
void )
const;
451 void throwFitsError(
throwFormat_t<> tFormat,
const std::int32_t iStatus )
const
453 char szFitsMsg[ 100 ];
455 fits_get_errstatus( iStatus, szFitsMsg );
457 #ifdef __cpp_lib_format
471 static const std::string m_sVersion;
474 mutable std::int64_t m_i64Pixel;
477 mutable std::int32_t m_iFrame;
489#ifndef DOXYGEN_SHOULD_SKIP_THIS
498 class GEN4_CARCFITSFILE_API default_delete<
arc::gen4::fits::fitsParameter_t >
std::uint32_t maxTVal(void) const
static const std::string version(void) noexcept
bool compare(CArcFitsFile< T > &cFitsFile) const
void open(const std::filesystem::path &tFileName, arc::gen4::fits::fitsMode_e eMode=arc::gen4::fits::fitsMode_e::READMODE)
fitsfile * getBaseFile(void) const
void write(const T *pBuf) const
std::unique_ptr< T[], arc::gen4::fits::ArrayDeleter< T > > read(void) const
std::uint32_t getBitsPerPixel(void) const
void write(const T *pBuf, const std::int64_t i64Bytes, const std::int64_t i64Pixel=1) const
void reWrite3D(const T *pBuf, const std::uint32_t uiImageNumber) const
void write3D(const T *pBuf) const
static const std::string cfitsioVersion(void) noexcept
arc::gen4::fits::keywordValue_t readKeyword(const std::string &sKey, arc::gen4::fits::fitsKeyType_e eType) const
std::unique_ptr< T[], arc::gen4::fits::ArrayDeleter< T > > readSubImage(arc::gen4::fits::point_t lowerLeftPoint, arc::gen4::fits::point_t upperRightPoint) const
void create(const std::filesystem::path &tFileName, std::uint32_t uiCols, std::uint32_t uiRows)
void close(void) noexcept
std::unique_ptr< arc::gen4::fits::fitsParameter_t > getParameters(void) const
std::uint32_t getRows(void) const
void create3D(const std::filesystem::path &tFileName, std::uint32_t uiCols, std::uint32_t uiRows)
void writeSubImage(const T *pBuf, const arc::gen4::fits::point_t lowerLeftPoint, const arc::gen4::fits::point_t upperRightPoint) const
virtual ~CArcFitsFile(void)
const std::filesystem::path getFileName(void) const
void reSize(const std::uint32_t uiCols, const std::uint32_t uiRows)
std::uint32_t getNAxis(void) const
void generateTestData(void) const
std::uint32_t getNumberOfFrames(void) const
const std::string getType(void) const noexcept
void read(T *pBuf, const std::uint32_t uiCols, const std::uint32_t uiRows) const
std::unique_ptr< T[], arc::gen4::fits::ArrayDeleter< T > > read3D(std::uint32_t uiImageNumber) const
void updateKeyword(const std::string &sKey, void *pValue, arc::gen4::fits::fitsKeyType_e eType, const std::string &sComment=""s) const
std::uint32_t getCols(void) const
void writeKeyword(const std::string &sKey, void *pValue, arc::gen4::fits::fitsKeyType_e eType, const std::string &sComment=""s) const
std::unique_ptr< arc::gen4::CArcStringList > getHeader(void) const
const std::string toString(const fitsParameter_t &tParam)
std::pair< long, long > point_t
std::tuple< std::uint32_t, std::int32_t, std::uint64_t, std::int64_t, double, std::string > keywordValue_t
constexpr auto MAKE_POINT(std::uint32_t uiColumn, std::uint32_t uiRow)
void throwArcGen4Error(const throwFormat_t<> tFormat, Args &&... args)
void operator()(T *p) const