This structure contains the information about an attachment.
Note that performance reasons we use a fixed-size array for the name. In the rare case that the name is too long to fit into the
fixed-size array, the ‘overflow’ field is set to true. In this case, the name is truncated and the ‘overflow’ field is set to true.
In addition, the field ‘name_in_case_of_overflow’ then contains the full text, allocated with ‘libCZI_AllocateString’ (and responsibility
for releasing the memory is with the caller).
This structure gives the coordinates (of a sub-block) for a set of dimension.
The bit at position i in dimensions_valid indicates whether the coordinate for dimension i+1 is valid. So, bit 0
is corresponding to dimension 1 (=Z), bit 1 to dimension 2 (=C), and so on.
In the fixed-sized array value, the coordinate for the dimensions is stored. The element at
position 0 corresponds to the first valid dimension, the element at position 1 to the second valid dimension, and so on.
An example would be: dimensions_valid = 0b00000011, value = { 0, 2 }. This would mean that the
dimension ‘Z’ is valid, and the coordinate for ‘Z’ is 0, and the dimension ‘C’ is valid, and the coordinate for ‘C’ is 2.
This structure gives the bounds for a set of dimensions.
The bit at position i in dimensions_valid indicates whether the interval for dimension i+1 is valid. So, bit 0
is corresponding to dimension 1 (=Z), bit 1 to dimension 2 (=C), and so on.
In the fixed-sized arrays start and size, the start and size values for the dimensions are stored. The elements at
position 0 corresponds to the first valid dimension, the element at position 1 to the second valid dimension, and so on.
An example would be: dimensions_valid = 0b00000011, start = { 0, 2 }, size = { 5, 6 }. This would mean that the
dimension ‘Z’ is valid, and the interval is [0, 5], and the dimension ‘C’ is valid, and the interval is [2, 8].
This structure contains information about externally provided functions for reading data from an input stream,
and it is used to construct a stream-object to be used with libCZI.
Note on lifetime: The function pointers must remain valid until the function ‘close_function’ is called. The lifetime
may extend beyond calling the ‘libCZI_ReleaseInputStream’ function for the corresponding stream-object.
This structure contains information about externally provided functions for writing data to an output stream,
and it is used to construct a stream-object to be used with libCZI.
Note on lifetime: The function pointers must remain valid until the function ‘close_function’ is called. The lifetime
may extend beyond calling the ‘libCZI_ReleaseOutputStream’ function for the corresponding stream-object.
This struct contains the version information of the libCZIApi-library. For versioning libCZI, SemVer2 (https://semver.org/) is used.
Note that the value of the tweak version number does not have a meaning (as far as SemVer2 is concerned).
memory allocation object - which is a pointer to a memory block, which must be
freed with ‘libCZI_Free’.
TODO(JBL): this is not really used so far, should be removed I guess.
Perform a multi-channel-composition operation. The source bitmaps are provided in the ‘source_bitmaps’ array, and the
array of ‘CompositionChannelInfoInterop’ structures provide the information needed for the composition. The resulting bitmap
is then put into the ‘bitmap_object’ handle.