15#pragma warning( disable: 4251 )
26#ifdef __cpp_lib_variant
32#include <CArcFitsFileDllMain.h>
33#include <CArcStringList.h>
55 #ifdef __cpp_lib_variant
56 using keywordValue_t = std::variant<std::uint32_t, std::int32_t, std::uint64_t, std::int64_t, double, std::string>;
58 using keywordValue_t = std::tuple<std::uint32_t, std::int32_t, std::uint64_t, std::int64_t, double, std::string>;
69 enum class e_ReadMode : std::int32_t
72 READWRITEMODE = READWRITE
95 enum class e_Type : std::int32_t
97 FITS_INVALID_KEY = -1,
124 std::uint32_t getCols(
void )
noexcept;
129 std::uint32_t getRows(
void )
noexcept;
134 std::uint32_t getFrames(
void )
noexcept;
139 std::uint32_t getNAxis(
void )
noexcept;
144 std::uint32_t getBpp(
void )
noexcept;
180 template <
typename T>
183 void operator()( T* p )
const
199 using Point = std::pair<long, long>;
206 constexpr auto MAKE_POINT( std::uint32_t uiColumn, std::uint32_t uiRow ) {
return std::make_pair( uiColumn, uiRow ); }
215 template <
typename T = arc::gen3::fits::BPP_16>
232 static const std::string version(
void )
noexcept;
237 static const std::string cfitsioVersion(
void )
noexcept;
242 std::string getType(
void )
noexcept;
251 void create(
const std::filesystem::path& tFileName,
const std::uint32_t uiCols,
const std::uint32_t uiRows );
260 void create3D(
const std::filesystem::path& tFileName,
const std::uint32_t uiCols,
const std::uint32_t uiRows );
269 void open(
const std::filesystem::path& tFileName, arc::gen3::fits::e_ReadMode eMode = arc::gen3::fits::e_ReadMode::READMODE );
273 void close(
void )
noexcept;
281 std::unique_ptr<arc::gen3::CArcStringList> getHeader(
void );
287 const std::string getFileName(
void );
313 void writeKeyword(
const std::string& sKey,
void* pValue, arc::gen3::fits::e_Type eType,
const std::string& sComment =
"" );
330 void updateKeyword(
const std::string& sKey,
void* pValue, arc::gen3::fits::e_Type eType,
const std::string& sComment =
"" );
336 std::unique_ptr<arc::gen3::fits::CParam> getParameters(
void );
342 std::uint32_t getNumberOfFrames(
void );
348 std::uint32_t getRows(
void );
354 std::uint32_t getCols(
void );
360 std::uint32_t getNAxis(
void );
366 std::uint32_t getBitsPerPixel(
void );
372 void generateTestData(
void );
395 void reSize(
const std::uint32_t uiCols,
const std::uint32_t uiRows );
402 void write( T* pBuf );
412 void write( T* pBuf,
const std::int64_t i64Bytes,
const std::int64_t i64Pixel = 1 );
437 std::unique_ptr<T[], arc::gen3::fits::ArrayDeleter<T>> read(
void );
447 void read( T* pBuf,
const std::uint32_t uiCols,
const std::uint32_t uiRows );
454 void write3D( T* pBuf );
463 void reWrite3D( T* pBuf,
const std::uint32_t uiImageNumber );
471 std::unique_ptr<T[], arc::gen3::fits::ArrayDeleter<T>> read3D(
const std::uint32_t uiImageNumber );
481 std::uint32_t maxTVal(
void );
488 constexpr void verifyFileHandle(
void );
493 void throwFitsError(
const std::int32_t iStatus );
496 static const std::string m_sVersion;
499 std::int64_t m_i64Pixel;
502 std::int32_t m_iFrame;
521 class GEN3_CARCFITSFILE_API default_delete< arc::gen3::fits::CParam >
std::uint16_t BPP_16
Definition: CArcFitsFile.h:48
std::uint32_t BPP_32
Definition: CArcFitsFile.h:51
std::pair< long, long > Point
Definition: CArcFitsFile.h:199
constexpr auto MAKE_POINT(std::uint32_t uiColumn, std::uint32_t uiRow)
Definition: CArcFitsFile.h:206
std::tuple< std::uint32_t, std::int32_t, std::uint64_t, std::int64_t, double, std::string > keywordValue_t
Definition: CArcFitsFile.h:58
Definition: CArcBase.h:67
Definition: CArcFitsFile.h:217
Definition: CArcFitsFile.h:118
long * m_plRows
Definition: CArcFitsFile.h:162
int m_iBpp
Definition: CArcFitsFile.h:171
long * m_plFrames
Definition: CArcFitsFile.h:165
int m_iNAxis
Definition: CArcFitsFile.h:168
long * m_plCols
Definition: CArcFitsFile.h:159
Definition: CArcFitsFile.h:182