DYT/Tool/OpenSceneGraph-3.6.5/include/OpenEXR/ImfCRgbaFile.h

485 lines
10 KiB
C
Raw Permalink Normal View History

2024-12-24 23:49:36 +00:00
//
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) Contributors to the OpenEXR Project.
//
#ifndef INCLUDED_IMF_C_RGBA_FILE_H
#define INCLUDED_IMF_C_RGBA_FILE_H
#include "ImfExport.h"
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
** Interpreting unsigned shorts as 16-bit floating point numbers
*/
typedef unsigned short ImfHalf;
IMF_EXPORT
void ImfFloatToHalf (float f, ImfHalf* h);
IMF_EXPORT
void ImfFloatToHalfArray (int n, const float f[/*n*/], ImfHalf h[/*n*/]);
IMF_EXPORT
float ImfHalfToFloat (ImfHalf h);
IMF_EXPORT
void ImfHalfToFloatArray (int n, const ImfHalf h[/*n*/], float f[/*n*/]);
/*
** RGBA pixel; memory layout must be the same as struct Imf::Rgba.
*/
struct ImfRgba
{
ImfHalf r;
ImfHalf g;
ImfHalf b;
ImfHalf a;
};
typedef struct ImfRgba ImfRgba;
/*
** Magic number; this must be the same as Imf::MAGIC
*/
#define IMF_MAGIC 20000630
/*
** Version number; this must be the same as Imf::EXR_VERSION
*/
#define IMF_VERSION_NUMBER 2
/*
** Line order; values must be the same as in Imf::LineOrder.
*/
#define IMF_INCREASING_Y 0
#define IMF_DECREASING_Y 1
#define IMF_RANDOM_Y 2
/*
** Compression types; values must be the same as in Imf::Compression.
*/
#define IMF_NO_COMPRESSION 0
#define IMF_RLE_COMPRESSION 1
#define IMF_ZIPS_COMPRESSION 2
#define IMF_ZIP_COMPRESSION 3
#define IMF_PIZ_COMPRESSION 4
#define IMF_PXR24_COMPRESSION 5
#define IMF_B44_COMPRESSION 6
#define IMF_B44A_COMPRESSION 7
#define IMF_DWAA_COMPRESSION 8
#define IMF_DWAB_COMPRESSION 9
#define IMF_NUM_COMPRESSION_METHODS 10
/*
** Channels; values must be the same as in Imf::RgbaChannels.
*/
#define IMF_WRITE_R 0x01
#define IMF_WRITE_G 0x02
#define IMF_WRITE_B 0x04
#define IMF_WRITE_A 0x08
#define IMF_WRITE_Y 0x10
#define IMF_WRITE_C 0x20
#define IMF_WRITE_RGB 0x07
#define IMF_WRITE_RGBA 0x0f
#define IMF_WRITE_YC 0x30
#define IMF_WRITE_YA 0x18
#define IMF_WRITE_YCA 0x38
/*
** Level modes; values must be the same as in Imf::LevelMode
*/
#define IMF_ONE_LEVEL 0
#define IMF_MIPMAP_LEVELS 1
#define IMF_RIPMAP_LEVELS 2
/*
** Level rounding modes; values must be the same as in Imf::LevelRoundingMode
*/
#define IMF_ROUND_DOWN 0
#define IMF_ROUND_UP 1
/*
** RGBA file header
*/
struct ImfHeader;
typedef struct ImfHeader ImfHeader;
IMF_EXPORT
ImfHeader* ImfNewHeader (void);
IMF_EXPORT
void ImfDeleteHeader (ImfHeader* hdr);
IMF_EXPORT
ImfHeader* ImfCopyHeader (const ImfHeader* hdr);
IMF_EXPORT
void ImfHeaderSetDisplayWindow (
ImfHeader* hdr, int xMin, int yMin, int xMax, int yMax);
IMF_EXPORT
void ImfHeaderDisplayWindow (
const ImfHeader* hdr, int* xMin, int* yMin, int* xMax, int* yMax);
IMF_EXPORT
void
ImfHeaderSetDataWindow (ImfHeader* hdr, int xMin, int yMin, int xMax, int yMax);
IMF_EXPORT
void ImfHeaderDataWindow (
const ImfHeader* hdr, int* xMin, int* yMin, int* xMax, int* yMax);
IMF_EXPORT
void ImfHeaderSetPixelAspectRatio (ImfHeader* hdr, float pixelAspectRatio);
IMF_EXPORT
float ImfHeaderPixelAspectRatio (const ImfHeader* hdr);
IMF_EXPORT
void ImfHeaderSetScreenWindowCenter (ImfHeader* hdr, float x, float y);
IMF_EXPORT
void ImfHeaderScreenWindowCenter (const ImfHeader* hdr, float* x, float* y);
IMF_EXPORT
void ImfHeaderSetScreenWindowWidth (ImfHeader* hdr, float width);
IMF_EXPORT
float ImfHeaderScreenWindowWidth (const ImfHeader* hdr);
IMF_EXPORT
void ImfHeaderSetLineOrder (ImfHeader* hdr, int lineOrder);
IMF_EXPORT
int ImfHeaderLineOrder (const ImfHeader* hdr);
IMF_EXPORT
void ImfHeaderSetCompression (ImfHeader* hdr, int compression);
IMF_EXPORT
int ImfHeaderCompression (const ImfHeader* hdr);
IMF_EXPORT
int ImfHeaderSetIntAttribute (ImfHeader* hdr, const char name[], int value);
IMF_EXPORT
int ImfHeaderIntAttribute (const ImfHeader* hdr, const char name[], int* value);
IMF_EXPORT
int ImfHeaderSetFloatAttribute (ImfHeader* hdr, const char name[], float value);
IMF_EXPORT
int
ImfHeaderSetDoubleAttribute (ImfHeader* hdr, const char name[], double value);
IMF_EXPORT
int
ImfHeaderFloatAttribute (const ImfHeader* hdr, const char name[], float* value);
IMF_EXPORT
int ImfHeaderDoubleAttribute (
const ImfHeader* hdr, const char name[], double* value);
IMF_EXPORT
int ImfHeaderSetStringAttribute (
ImfHeader* hdr, const char name[], const char value[]);
IMF_EXPORT
int ImfHeaderStringAttribute (
const ImfHeader* hdr, const char name[], const char** value);
IMF_EXPORT
int ImfHeaderSetBox2iAttribute (
ImfHeader* hdr, const char name[], int xMin, int yMin, int xMax, int yMax);
IMF_EXPORT
int ImfHeaderBox2iAttribute (
const ImfHeader* hdr,
const char name[],
int* xMin,
int* yMin,
int* xMax,
int* yMax);
IMF_EXPORT
int ImfHeaderSetBox2fAttribute (
ImfHeader* hdr,
const char name[],
float xMin,
float yMin,
float xMax,
float yMax);
IMF_EXPORT
int ImfHeaderBox2fAttribute (
const ImfHeader* hdr,
const char name[],
float* xMin,
float* yMin,
float* xMax,
float* yMax);
IMF_EXPORT
int ImfHeaderSetV2iAttribute (ImfHeader* hdr, const char name[], int x, int y);
IMF_EXPORT
int
ImfHeaderV2iAttribute (const ImfHeader* hdr, const char name[], int* x, int* y);
IMF_EXPORT
int
ImfHeaderSetV2fAttribute (ImfHeader* hdr, const char name[], float x, float y);
IMF_EXPORT
int ImfHeaderV2fAttribute (
const ImfHeader* hdr, const char name[], float* x, float* y);
IMF_EXPORT
int ImfHeaderSetV3iAttribute (
ImfHeader* hdr, const char name[], int x, int y, int z);
IMF_EXPORT
int ImfHeaderV3iAttribute (
const ImfHeader* hdr, const char name[], int* x, int* y, int* z);
IMF_EXPORT
int ImfHeaderSetV3fAttribute (
ImfHeader* hdr, const char name[], float x, float y, float z);
IMF_EXPORT
int ImfHeaderV3fAttribute (
const ImfHeader* hdr, const char name[], float* x, float* y, float* z);
IMF_EXPORT
int ImfHeaderSetM33fAttribute (
ImfHeader* hdr, const char name[], const float m[3][3]);
IMF_EXPORT
int
ImfHeaderM33fAttribute (const ImfHeader* hdr, const char name[], float m[3][3]);
IMF_EXPORT
int ImfHeaderSetM44fAttribute (
ImfHeader* hdr, const char name[], const float m[4][4]);
IMF_EXPORT
int
ImfHeaderM44fAttribute (const ImfHeader* hdr, const char name[], float m[4][4]);
/*
** RGBA output file
*/
struct ImfOutputFile;
typedef struct ImfOutputFile ImfOutputFile;
IMF_EXPORT
ImfOutputFile*
ImfOpenOutputFile (const char name[], const ImfHeader* hdr, int channels);
IMF_EXPORT
int ImfCloseOutputFile (ImfOutputFile* out);
IMF_EXPORT
int ImfOutputSetFrameBuffer (
ImfOutputFile* out, const ImfRgba* base, size_t xStride, size_t yStride);
IMF_EXPORT
int ImfOutputWritePixels (ImfOutputFile* out, int numScanLines);
IMF_EXPORT
int ImfOutputCurrentScanLine (const ImfOutputFile* out);
IMF_EXPORT
const ImfHeader* ImfOutputHeader (const ImfOutputFile* out);
IMF_EXPORT
int ImfOutputChannels (const ImfOutputFile* out);
/*
** Tiled RGBA output file
*/
struct ImfTiledOutputFile;
typedef struct ImfTiledOutputFile ImfTiledOutputFile;
IMF_EXPORT
ImfTiledOutputFile* ImfOpenTiledOutputFile (
const char name[],
const ImfHeader* hdr,
int channels,
int xSize,
int ySize,
int mode,
int rmode);
IMF_EXPORT
int ImfCloseTiledOutputFile (ImfTiledOutputFile* out);
IMF_EXPORT
int ImfTiledOutputSetFrameBuffer (
ImfTiledOutputFile* out,
const ImfRgba* base,
size_t xStride,
size_t yStride);
IMF_EXPORT
int ImfTiledOutputWriteTile (
ImfTiledOutputFile* out, int dx, int dy, int lx, int ly);
IMF_EXPORT
int ImfTiledOutputWriteTiles (
ImfTiledOutputFile* out,
int dxMin,
int dxMax,
int dyMin,
int dyMax,
int lx,
int ly);
IMF_EXPORT
const ImfHeader* ImfTiledOutputHeader (const ImfTiledOutputFile* out);
IMF_EXPORT
int ImfTiledOutputChannels (const ImfTiledOutputFile* out);
IMF_EXPORT
int ImfTiledOutputTileXSize (const ImfTiledOutputFile* out);
IMF_EXPORT
int ImfTiledOutputTileYSize (const ImfTiledOutputFile* out);
IMF_EXPORT
int ImfTiledOutputLevelMode (const ImfTiledOutputFile* out);
IMF_EXPORT
int ImfTiledOutputLevelRoundingMode (const ImfTiledOutputFile* out);
/*
** RGBA input file
*/
struct ImfInputFile;
typedef struct ImfInputFile ImfInputFile;
IMF_EXPORT
ImfInputFile* ImfOpenInputFile (const char name[]);
IMF_EXPORT
int ImfCloseInputFile (ImfInputFile* in);
IMF_EXPORT
int ImfInputSetFrameBuffer (
ImfInputFile* in, ImfRgba* base, size_t xStride, size_t yStride);
IMF_EXPORT
int ImfInputReadPixels (ImfInputFile* in, int scanLine1, int scanLine2);
IMF_EXPORT
const ImfHeader* ImfInputHeader (const ImfInputFile* in);
IMF_EXPORT
int ImfInputChannels (const ImfInputFile* in);
IMF_EXPORT
const char* ImfInputFileName (const ImfInputFile* in);
/*
** Tiled RGBA input file
*/
struct ImfTiledInputFile;
typedef struct ImfTiledInputFile ImfTiledInputFile;
IMF_EXPORT
ImfTiledInputFile* ImfOpenTiledInputFile (const char name[]);
IMF_EXPORT
int ImfCloseTiledInputFile (ImfTiledInputFile* in);
IMF_EXPORT
int ImfTiledInputSetFrameBuffer (
ImfTiledInputFile* in, ImfRgba* base, size_t xStride, size_t yStride);
IMF_EXPORT
int
ImfTiledInputReadTile (ImfTiledInputFile* in, int dx, int dy, int lx, int ly);
IMF_EXPORT
int ImfTiledInputReadTiles (
ImfTiledInputFile* in,
int dxMin,
int dxMax,
int dyMin,
int dyMax,
int lx,
int ly);
IMF_EXPORT
const ImfHeader* ImfTiledInputHeader (const ImfTiledInputFile* in);
IMF_EXPORT
int ImfTiledInputChannels (const ImfTiledInputFile* in);
IMF_EXPORT
const char* ImfTiledInputFileName (const ImfTiledInputFile* in);
IMF_EXPORT
int ImfTiledInputTileXSize (const ImfTiledInputFile* in);
IMF_EXPORT
int ImfTiledInputTileYSize (const ImfTiledInputFile* in);
IMF_EXPORT
int ImfTiledInputLevelMode (const ImfTiledInputFile* in);
IMF_EXPORT
int ImfTiledInputLevelRoundingMode (const ImfTiledInputFile* in);
/*
** Lookup tables
*/
struct ImfLut;
typedef struct ImfLut ImfLut;
IMF_EXPORT
ImfLut* ImfNewRound12logLut (int channels);
IMF_EXPORT
ImfLut* ImfNewRoundNBitLut (unsigned int n, int channels);
IMF_EXPORT
void ImfDeleteLut (ImfLut* lut);
IMF_EXPORT
void ImfApplyLut (ImfLut* lut, ImfRgba* data, int nData, int stride);
/*
** Most recent error message
*/
IMF_EXPORT
const char* ImfErrorMessage (void);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif