123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package vendor_openexr
- when ODIN_OS == .Windows {
- foreign import lib "OpenEXRCore-3_1.lib"
- } else {
- foreign import lib "system:OpenEXRCore-3_1"
- }
- import "core:c"
- /**
- * Struct describing raw data information about a chunk.
- *
- * A chunk is the generic term for a pixel data block in an EXR file,
- * as described in the OpenEXR File Layout documentation. This is
- * common between all different forms of data that can be stored.
- */
- chunk_info_t :: struct {
- idx: i32,
- /** For tiles, this is the tilex; for scans it is the x. */
- start_x: i32,
- /** For tiles, this is the tiley; for scans it is the scanline y. */
- start_y: i32,
- height: i32, /**< For this chunk. */
- width: i32, /**< For this chunk. */
- level_x: u8, /**< For tiled files. */
- level_y: u8, /**< For tiled files. */
- type: u8,
- compression: u8,
- data_offset: u64,
- packed_size: u64,
- unpacked_size: u64,
- sample_count_data_offset: u64,
- sample_count_table_size: u64,
- }
- @(link_prefix="exr_", default_calling_convention="c")
- foreign lib {
- read_scanline_chunk_info :: proc(ctxt: const_context_t, part_index: c.int, y: c.int, cinfo: ^chunk_info_t) -> result_t ---
- read_tile_chunk_info :: proc(
- ctxt: const_context_t,
- part_index: c.int,
- tilex: c.int,
- tiley: c.int,
- levelx: c.int,
- levely: c.int,
- cinfo: ^chunk_info_t) -> result_t ---
- /** Read the packed data block for a chunk.
- *
- * This assumes that the buffer pointed to by @p packed_data is
- * large enough to hold the chunk block info packed_size bytes.
- */
- read_chunk :: proc(
- ctxt: const_context_t,
- part_index: c.int,
- cinfo: ^chunk_info_t,
- packed_data: rawptr) -> result_t ---
- /**
- * Read chunk for deep data.
- *
- * This allows one to read the packed data, the sample count data, or both.
- * \c exr_read_chunk also works to read deep data packed data,
- * but this is a routine to get the sample count table and the packed
- * data in one go, or if you want to pre-read the sample count data,
- * you can get just that buffer.
- */
- read_deep_chunk :: proc(
- ctxt: const_context_t,
- part_index: c.int,
- cinfo: ^chunk_info_t,
- packed_data: rawptr,
- sample_data: rawptr) -> result_t ---
- /**************************************/
- /** Initialize a \c chunk_info_t structure when encoding scanline
- * data (similar to read but does not do anything with a chunk
- * table).
- */
- write_scanline_chunk_info :: proc(ctxt: context_t, part_index: c.int, y: c.int, cinfo: ^chunk_info_t) -> result_t ---
- /** Initialize a \c chunk_info_t structure when encoding tiled data
- * (similar to read but does not do anything with a chunk table).
- */
- write_tile_chunk_info :: proc(
- ctxt: context_t,
- part_index: c.int,
- tilex: c.int,
- tiley: c.int,
- levelx: c.int,
- levely: c.int,
- cinfo: ^chunk_info_t) -> result_t ---
- /**
- * @p y must the appropriate starting y for the specified chunk.
- */
- write_scanline_chunk :: proc(
- ctxt: context_t,
- part_index: int,
- y: int,
- packed_data: rawptr,
- packed_size: u64) -> result_t ---
- /**
- * @p y must the appropriate starting y for the specified chunk.
- */
- write_deep_scanline_chunk :: proc(
- ctxt: context_t,
- part_index: c.int,
- y: c.int,
- packed_data: rawptr,
- packed_size: u64,
- unpacked_size: u64,
- sample_data: rawptr,
- sample_data_size: u64) -> result_t ---
- write_tile_chunk :: proc(
- ctxt: context_t,
- part_index: c.int,
- tilex: c.int,
- tiley: c.int,
- levelx: c.int,
- levely: c.int,
- packed_data: rawptr,
- packed_size: u64) -> result_t ---
- write_deep_tile_chunk :: proc(
- ctxt: context_t,
- part_index: c.int,
- tilex: c.int,
- tiley: c.int,
- levelx: c.int,
- levely: c.int,
- packed_data: rawptr,
- packed_size: u64,
- unpacked_size: u64,
- sample_data: rawptr,
- sample_data_size: u64) -> result_t ---
- }
|