Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a675e97e0b | |||
| 6028354c61 | |||
| 467af80cb3 | |||
| 76ee3f361c | |||
| cde2fc9a17 | |||
| 0ddff094ef | |||
| 5dcc383090 |
+7
-1
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.14)
|
cmake_minimum_required(VERSION 3.14)
|
||||||
|
|
||||||
project(libXISF VERSION 0.2.5 LANGUAGES CXX C
|
project(libXISF VERSION 0.2.8 LANGUAGES CXX C
|
||||||
HOMEPAGE_URL https://gitea.nouspiro.space/nou/libXISF
|
HOMEPAGE_URL https://gitea.nouspiro.space/nou/libXISF
|
||||||
DESCRIPTION "LibXISF is C++ library that can read and write XISF files produced by PixInsight.")
|
DESCRIPTION "LibXISF is C++ library that can read and write XISF files produced by PixInsight.")
|
||||||
|
|
||||||
@@ -108,6 +108,12 @@ install(FILES ${XISF_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
|||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxisf.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxisf.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
install(TARGETS XISF LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(TARGETS XISF LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
|
list(JOIN PC_LIBS_REQUIRE ", " PC_REQUIRE_STR2)
|
||||||
|
if(NOT PC_REQUIRE_STR2 STREQUAL "")
|
||||||
|
string(REPLACE "lz4" "liblz4" PC_REQUIRE_STR ${PC_REQUIRE_STR2})
|
||||||
|
endif()
|
||||||
|
list(TRANSFORM PC_LIBS_REQUIRE PREPEND "-l")
|
||||||
|
list(JOIN PC_LIBS_REQUIRE " " PC_LIBS_STR)
|
||||||
configure_file(libxisf.pc.in libxisf.pc @ONLY)
|
configure_file(libxisf.pc.in libxisf.pc @ONLY)
|
||||||
|
|
||||||
#testing
|
#testing
|
||||||
|
|||||||
+16
-14
@@ -541,6 +541,7 @@ private:
|
|||||||
FITSKeyword parseFITSKeyword(const pugi::xml_node &node);
|
FITSKeyword parseFITSKeyword(const pugi::xml_node &node);
|
||||||
ColorFilterArray parseCFA(const pugi::xml_node &node);
|
ColorFilterArray parseCFA(const pugi::xml_node &node);
|
||||||
Image parseImage(const pugi::xml_node &node);
|
Image parseImage(const pugi::xml_node &node);
|
||||||
|
void readAttachment(DataBlock &dataBlock);
|
||||||
|
|
||||||
std::unique_ptr<std::istream> _io;
|
std::unique_ptr<std::istream> _io;
|
||||||
std::unique_ptr<StreamBuffer> _buffer;
|
std::unique_ptr<StreamBuffer> _buffer;
|
||||||
@@ -595,10 +596,7 @@ const Image& XISFReaderPrivate::getImage(uint32_t n, bool readPixels)
|
|||||||
Image &img = _images[n];
|
Image &img = _images[n];
|
||||||
if(img._dataBlock.attachmentPos && readPixels)
|
if(img._dataBlock.attachmentPos && readPixels)
|
||||||
{
|
{
|
||||||
_io->seekg(img._dataBlock.attachmentPos);
|
readAttachment(img._dataBlock);
|
||||||
ByteArray data(img._dataBlock.attachmentSize);
|
|
||||||
_io->read(data.data(), data.size());
|
|
||||||
img._dataBlock.decompress(data);
|
|
||||||
}
|
}
|
||||||
return img;
|
return img;
|
||||||
}
|
}
|
||||||
@@ -734,16 +732,9 @@ Property XISFReaderPrivate::parseProperty(const pugi::xml_node &node)
|
|||||||
{
|
{
|
||||||
DataBlock dataBlock = parseDataBlock(node);
|
DataBlock dataBlock = parseDataBlock(node);
|
||||||
if(dataBlock.attachmentPos)
|
if(dataBlock.attachmentPos)
|
||||||
{
|
readAttachment(dataBlock);
|
||||||
data.resize(dataBlock.attachmentSize);
|
|
||||||
_io->seekg(dataBlock.attachmentPos);
|
data = dataBlock.data;
|
||||||
_io->read(data.data(), dataBlock.attachmentSize);
|
|
||||||
dataBlock.decompress(data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
data = dataBlock.data;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deserializeVariant(node, property.value, data);
|
deserializeVariant(node, property.value, data);
|
||||||
@@ -812,6 +803,9 @@ Image XISFReaderPrivate::parseImage(const pugi::xml_node &node)
|
|||||||
if(node.child("ICCProfile"))
|
if(node.child("ICCProfile"))
|
||||||
{
|
{
|
||||||
DataBlock icc = parseDataBlock(node.child("ICCProfile"));
|
DataBlock icc = parseDataBlock(node.child("ICCProfile"));
|
||||||
|
if(icc.attachmentPos)
|
||||||
|
readAttachment(icc);
|
||||||
|
|
||||||
image._iccProfile = icc.data;
|
image._iccProfile = icc.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -821,6 +815,14 @@ Image XISFReaderPrivate::parseImage(const pugi::xml_node &node)
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void XISFReaderPrivate::readAttachment(DataBlock &dataBlock)
|
||||||
|
{
|
||||||
|
ByteArray data(dataBlock.attachmentSize);
|
||||||
|
_io->seekg(dataBlock.attachmentPos);
|
||||||
|
_io->read(data.data(), dataBlock.attachmentSize);
|
||||||
|
dataBlock.decompress(data);
|
||||||
|
}
|
||||||
|
|
||||||
class XISFWriterPrivate
|
class XISFWriterPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
+1
-2
@@ -7,7 +7,6 @@ Name: @PROJECT_NAME@
|
|||||||
Description: @CMAKE_PROJECT_DESCRIPTION@
|
Description: @CMAKE_PROJECT_DESCRIPTION@
|
||||||
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
|
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
|
||||||
Version: @PROJECT_VERSION@
|
Version: @PROJECT_VERSION@
|
||||||
Requires.private: @PC_LIBS_REQUIRE@
|
Requires.private: @PC_REQUIRE_STR@
|
||||||
Cflags: -I"${includedir}"
|
Cflags: -I"${includedir}"
|
||||||
Libs: -L"${libdir}" -lXISF
|
Libs: -L"${libdir}" -lXISF
|
||||||
Libs.private: -L"${libdir}" @PC_LIBS_REQUIRE@
|
|
||||||
|
|||||||
Reference in New Issue
Block a user