Program Listing for File libCZIApi.h

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
// // ****************************************************************************************************