czi_parser.h 1.42 KiB
#pragma once
#include "czi_file.h"
#include "stream/binary_file_stream.h"
#include "stream/buffered_binary_stream.h"
#include "utilities/xml_parser.h"
class CziParser
{
private:
bool parseMetadata;
SegmentHeader parse_segment_header(BinaryFileStream &cziStream);
FileHeaderSegment parse_file_header(BinaryFileStream &cziStream);
MetadataSegment parse_metadata(BinaryFileStream &cziStream, const long position);
SubBlockDirectorySegment parse_subblock_directory(BinaryFileStream &cziStream, const long position);
AttachmentDirectorySegment parse_attachment_directory(BinaryFileStream &cziStream, const long position);
DirectoryEntryDV parse_subblock_directory_entry(BinaryFileStream &cziStream);
AttachmentEntryA1 parse_attachment_entry(BinaryFileStream &cziStream);
DimensionEntryDV1 parse_dimension_entry(BinaryFileStream &cziStream);
SubBlockSegment parse_subblock(BinaryFileStream &cziStream, const long position, const int entryIndex, const int entrySize);
AttachmentSegment parse_attachment_segment(BinaryFileStream &cziStream, const long position, const int entryIndex);
PixelType to_pixel_type(const int value);
PyramidType to_pyramid_type(const byte value);
CompressionType to_compression_type(const int value);
Dimension to_dimension_type(const ByteArray &bytes);
public:
CziParser(bool parseMetadata = true);
~CziParser();
CziFile parse_czi_file(const std::string &file);
};
#include "czi_parser.cpp"