Program Listing for File libCZIApi.h#
↰ Return to documentation for file (inc/libCZIApi.h
)
"scenePyramidStatistics": {
"<sceneIndex>": [
{
"layerInfo": {
"minificationFactor": <number>,
"pyramidLayerNo" : <number>
},
"count" : <number>
}
]}
}
"allow_duplicate_subblocks" : true
}
"file_guid" : "123e4567-e89b-12d3-a456-426614174000",
"reserved_size_attachments_directory" : 4096,
"reserved_size_metadata_segment" : 50000,
"minimum_m_index" : 0,
"maximum_m_index" : 100
}
// SPDX-FileCopyrightText: 2025 Carl Zeiss Microscopy GmbH
//
// SPDX-License-Identifier: MIT
#pragma once
#include "importexport.h"
#include "errorcodes.h"
#include "ObjectHandles.h"
#include "versioninfo_structs.h"
#include "inputstream_class_info_struct.h"
#include "external_input_stream_struct.h"
#include "external_output_stream_struct.h"
#include "reader_open_info_struct.h"
#include "subblock_statistics_struct.h"
#include "MetadataAsXml_struct.h"
#include "bitmap_structs.h"
#include "subblock_info_interop.h"
#include "attachment_info_interop.h"
#include "fileheader_info_interop.h"
#include "add_subblock_info_interop.h"
#include "add_attachment_info_interop.h"
#include "write_metadata_info_interop.h"
#include "accessor_options_interop.h"
#include "composition_channel_info_interop.h"
#include "scaling_info_interop.h"
#include <cstdint>
EXTERNALLIBCZIAPI_API(void) libCZI_Free(void* data);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_GetLibCZIVersionInfo(LibCZIVersionInfoInterop* version_info);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_GetLibCZIBuildInformation(LibCZIBuildInformationInterop* build_info);
// ****************************************************************************************************
// CZI-reader functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateReader(CziReaderObjectHandle* reader_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderOpen(CziReaderObjectHandle reader_object, const ReaderOpenInfoInterop* open_info);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderGetFileHeaderInfo(CziReaderObjectHandle reader_object, FileHeaderInfoInterop* file_header_info_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderReadSubBlock(CziReaderObjectHandle reader_object, std::int32_t index, SubBlockObjectHandle* sub_block_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderGetStatisticsSimple(CziReaderObjectHandle reader_object, SubBlockStatisticsInterop* statistics);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderGetStatisticsEx(CziReaderObjectHandle reader_object, SubBlockStatisticsInteropEx* statistics, std::int32_t* number_of_per_channel_bounding_boxes);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderGetPyramidStatistics(CziReaderObjectHandle reader_object, char** pyramid_statistics_as_json);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderGetMetadataSegment(CziReaderObjectHandle reader_object, MetadataSegmentObjectHandle* metadata_segment_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderGetAttachmentCount(CziReaderObjectHandle reader_object, std::int32_t* count);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderGetAttachmentInfoFromDirectory(CziReaderObjectHandle reader_object, std::int32_t index, AttachmentInfoInterop* attachment_info_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReaderReadAttachment(CziReaderObjectHandle reader_object, std::int32_t index, AttachmentObjectHandle* attachment_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseReader(CziReaderObjectHandle reader_object);
// CZI-reader functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// Stream functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_GetStreamClassesCount(std::int32_t* count);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_GetStreamClassInfo(std::int32_t index, InputStreamClassInfoInterop* input_stream_class_info);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateInputStream(const char* stream_class_name, const char* creation_property_bag, const char* stream_identifier, InputStreamObjectHandle* stream_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateInputStreamFromFileWide(const wchar_t* filename, InputStreamObjectHandle* stream_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateInputStreamFromFileUTF8(const char* filename, InputStreamObjectHandle* stream_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateInputStreamFromExternal(const ExternalInputStreamStructInterop* external_input_stream_struct, InputStreamObjectHandle* stream_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseInputStream(InputStreamObjectHandle stream_object);
// Stream functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// sub-block functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_SubBlockCreateBitmap(SubBlockObjectHandle sub_block_object, BitmapObjectHandle* bitmap_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_SubBlockGetInfo(SubBlockObjectHandle sub_block_object, SubBlockInfoInterop* sub_block_info);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_SubBlockGetRawData(SubBlockObjectHandle sub_block_object, std::int32_t type, std::uint64_t* size, void* data);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseSubBlock(SubBlockObjectHandle sub_block_object);
// sub-block functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// attachment functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_AttachmentGetInfo(AttachmentObjectHandle attachment_object, AttachmentInfoInterop* attachment_info);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_AttachmentGetRawData(AttachmentObjectHandle attachment_object, std::uint64_t* size, void* data);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseAttachment(AttachmentObjectHandle attachment_object);
// attachment functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// bitmap functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_BitmapGetInfo(BitmapObjectHandle bitmap_object, BitmapInfoInterop* bitmap_info);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_BitmapLock(BitmapObjectHandle bitmap_object, BitmapLockInfoInterop* lockInfo);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_BitmapUnlock(BitmapObjectHandle bitmap_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_BitmapCopyTo(BitmapObjectHandle bitmap_object, std::uint32_t width, std::uint32_t height, std::int32_t pixel_type, std::uint32_t stride, void* ptr);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseBitmap(BitmapObjectHandle bitmap_object);
// bitmap functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// MetadataSegment functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_MetadataSegmentGetMetadataAsXml(MetadataSegmentObjectHandle metadata_segment_object, MetadataAsXmlInterop* metadata_as_xml_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_MetadataSegmentGetCziDocumentInfo(MetadataSegmentObjectHandle metadata_segment_object, CziDocumentInfoHandle* czi_document_info);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseMetadataSegment(MetadataSegmentObjectHandle metadata_segment_object);
// MetadataSegment functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// CziDocumentInfo functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CziDocumentInfoGetGeneralDocumentInfo(CziDocumentInfoHandle czi_document_info, void** general_document_info_json);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CziDocumentInfoGetScalingInfo(CziDocumentInfoHandle czi_document_info, ScalingInfoInterop* scaling_info_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CziDocumentInfoGetAvailableDimension(CziDocumentInfoHandle czi_document_info, std::uint32_t available_dimensions_count, std::uint32_t* available_dimensions);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CziDocumentInfoGetDisplaySettings(CziDocumentInfoHandle czi_document_info, DisplaySettingsHandle* display_settings_handle);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CziDocumentInfoGetDimensionInfo(CziDocumentInfoHandle czi_document_info, std::uint32_t dimension_index, void** dimension_info_json);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseCziDocumentInfo(CziDocumentInfoHandle czi_document_info);
// CziDocumentInfo functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// Outputstream functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateOutputStreamForFileWide(const wchar_t* filename, bool overwrite, OutputStreamObjectHandle* output_stream_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateOutputStreamForFileUTF8(const char* filename, bool overwrite, OutputStreamObjectHandle* output_stream_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseOutputStream(OutputStreamObjectHandle output_stream_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateOutputStreamFromExternal(const ExternalOutputStreamStructInterop* external_output_stream_struct, OutputStreamObjectHandle* output_stream_object);
// Outputstream functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// CziWriter functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateWriter(CziWriterObjectHandle* writer_object, const char* options);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_WriterCreate(CziWriterObjectHandle writer_object, OutputStreamObjectHandle output_stream_object, const char* parameters);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_WriterAddSubBlock(CziWriterObjectHandle writer_object, const AddSubBlockInfoInterop* add_sub_block_info_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_WriterAddAttachment(CziWriterObjectHandle writer_object, const AddAttachmentInfoInterop* add_attachment_info_interop);
// TODO(JBL): EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_WriterGetPreparedMetadata(CziWriterObjectHandle writer_object, CziMetadataBuilderHandle* metadata_builder, const PrepareMetadataInfoInterop* prepare_metadata_info_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_WriterWriteMetadata(CziWriterObjectHandle writer_object, const WriteMetadataInfoInterop* write_metadata_info_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_WriterClose(CziWriterObjectHandle writer_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseWriter(CziWriterObjectHandle writer_object);
// CziWriter functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// SingleChannelScalingTileAccessor functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CreateSingleChannelTileAccessor(CziReaderObjectHandle reader_object, SingleChannelScalingTileAccessorObjectHandle* accessor_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_SingleChannelTileAccessorCalcSize(SingleChannelScalingTileAccessorObjectHandle accessor_object, const IntRectInterop* roi, float zoom, IntSizeInterop* size);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_SingleChannelTileAccessorGet(SingleChannelScalingTileAccessorObjectHandle accessor_object, const CoordinateInterop* coordinate, const IntRectInterop* roi, float zoom, const AccessorOptionsInterop* options, BitmapObjectHandle* bitmap_object);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseCreateSingleChannelTileAccessor(SingleChannelScalingTileAccessorObjectHandle accessor_object);
// SingleChannelScalingTileAccessor functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// Compositor functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CompositorFillOutCompositionChannelInfoInterop(
DisplaySettingsHandle display_settings_handle,
int channel_index,
bool sixteen_or_eight_bits_lut,
CompositionChannelInfoInterop* composition_channel_info_interop);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_CompositorDoMultiChannelComposition(
std::int32_t channelCount,
const BitmapObjectHandle* source_bitmaps,
const CompositionChannelInfoInterop* channel_info,
BitmapObjectHandle* bitmap_object);
// Compositor functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// DisplaySettings functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_DisplaySettingsGetChannelDisplaySettings(DisplaySettingsHandle display_settings_handle, int channel_id, ChannelDisplaySettingsHandle* channel_display_setting);
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseDisplaySettings(DisplaySettingsHandle display_settings_handle);
// DisplaySettings functions end here
// ****************************************************************************************************
// ****************************************************************************************************
// ChannelDisplaySettings functions begin here
EXTERNALLIBCZIAPI_API(LibCZIApiErrorCode) libCZI_ReleaseChannelDisplaySettings(ChannelDisplaySettingsHandle channel_display_settings_handle);
// ChannelDisplaySettings functions end here
// // ****************************************************************************************************