Skip to content
Snippets Groups Projects
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"