4#ifndef OPENVDB_POINTS_POINT_DATA_IO_HAS_BEEN_INCLUDED
5#define OPENVDB_POINTS_POINT_DATA_IO_HAS_BEEN_INCLUDED
33 const bool seek = destBuf ==
nullptr;
36 const size_t maximumBytes = std::numeric_limits<uint16_t>::max();
37 if (destBytes >= maximumBytes) {
39 maximumBytes <<
" bytes in voxel values.")
49 bytes16 =
static_cast<uint16_t
>(meta->pass());
51 is.seekg(
sizeof(uint16_t), std::ios_base::cur);
55 is.read(
reinterpret_cast<char*
>(&bytes16),
sizeof(uint16_t));
58 if (bytes16 == std::numeric_limits<uint16_t>::max()) {
61 is.seekg(destBytes, std::ios_base::cur);
64 is.read(
reinterpret_cast<char*
>(destBuf), destBytes);
70 is.seekg(
int(bytes16), std::ios_base::cur);
74 std::unique_ptr<char[]> bloscBuffer(
new char[
int(bytes16)]);
75 is.read(bloscBuffer.get(), bytes16);
76 std::unique_ptr<char[]> buffer = bloscDecompress( bloscBuffer.get(),
79 std::memcpy(destBuf, buffer.get(), destBytes);
96 const size_t maximumBytes = std::numeric_limits<uint16_t>::max();
97 if (srcBytes >= maximumBytes) {
99 maximumBytes <<
" bytes in voxel values.")
102 const char* charBuffer =
reinterpret_cast<const char*
>(srcBuf);
104 size_t compressedBytes;
105 std::unique_ptr<char[]> buffer = bloscCompress( charBuffer, srcBytes,
106 compressedBytes,
false);
108 if (compressedBytes > 0) {
109 auto bytes16 =
static_cast<uint16_t
>(compressedBytes);
110 os.write(
reinterpret_cast<const char*
>(&bytes16),
sizeof(uint16_t));
111 os.write(
reinterpret_cast<const char*
>(buffer.get()), compressedBytes);
114 auto bytes16 =
static_cast<uint16_t
>(maximumBytes);
115 os.write(
reinterpret_cast<const char*
>(&bytes16),
sizeof(uint16_t));
116 os.write(
reinterpret_cast<const char*
>(srcBuf), srcBytes);
126 const size_t srcBytes = srcCount*
sizeof(T);
127 const size_t maximumBytes = std::numeric_limits<uint16_t>::max();
128 if (srcBytes >= maximumBytes) {
130 maximumBytes <<
" bytes in voxel values.")
133 const char* charBuffer =
reinterpret_cast<const char*
>(srcBuf);
136 size_t compressedBytes = bloscCompressedSize(charBuffer, srcBytes);
138 if (compressedBytes > 0) {
139 auto bytes16 =
static_cast<uint16_t
>(compressedBytes);
140 os.write(
reinterpret_cast<const char*
>(&bytes16),
sizeof(uint16_t));
143 auto bytes16 =
static_cast<uint16_t
>(maximumBytes);
144 os.write(
reinterpret_cast<const char*
>(&bytes16),
sizeof(uint16_t));
Convenience wrappers to using Blosc and reading and writing of Paged data.
Definition Exceptions.h:58
Bit mask for the internal and leaf nodes of VDB. This is a 64-bit implementation.
Definition NodeMasks.h:309
size_t bloscCompressedSize(const char *buffer, const size_t uncompressedBytes)
Convenience wrapper to retrieve the compressed size of buffer when compressed.
void bloscCompress(char *compressedBuffer, size_t &compressedBytes, const size_t bufferBytes, const char *uncompressedBuffer, const size_t uncompressedBytes)
Compress into the supplied buffer.
void bloscDecompress(char *uncompressedBuffer, const size_t expectedBytes, const size_t bufferBytes, const char *compressedBuffer)
Decompress into the supplied buffer. Will throw if decompression fails or uncompressed buffer has ins...
void writeCompressedValues(std::ostream &os, const ValueT *srcBuf, Index srcCount, const MaskT &valueMask, const MaskT &childMask, bool toHalf, const ValueT *background=nullptr)
Definition Compression.h:626
void readCompressedValues(std::istream &is, ValueT *destBuf, Index destCount, const MaskT &valueMask, bool fromHalf, const ValueT *background=nullptr)
Definition Compression.h:454
SharedPtr< StreamMetadata > getStreamMetadataPtr(std::ios_base &)
Return a shared pointer to an object that stores metadata (file format, compression scheme,...
size_t writeCompressedValuesSize(ValueT *srcBuf, Index srcCount, const MaskT &valueMask, uint8_t maskMetadata, bool toHalf, uint32_t compress)
Definition Compression.h:571
Index32 Index
Definition Types.h:34
PointIndex< Index32, 1 > PointDataIndex32
Definition Types.h:162
Definition Exceptions.h:13
#define OPENVDB_THROW(exception, message)
Definition Exceptions.h:74
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:286