⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imfcrgbafile.cpp

📁 对gif
💻 CPP
📖 第 1 页 / 共 2 页
字号:
int
ImfHeaderSetV3iAttribute (ImfHeader *hdr,
			  const char name[],
			  int x, int y, int z)
{
    try
    {
	V3i v (x, y, z);

	if (header(hdr)->find(name) == header(hdr)->end())
	    header(hdr)->insert (name, Imf::V3iAttribute (v));
	else
	    header(hdr)->typedAttribute<Imf::V3iAttribute>(name).value() = v;

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfHeaderV3iAttribute (const ImfHeader *hdr,
		       const char name[],
		       int *x, int *y, int *z)
{
    try
    {
	const V3i &v =
	    header(hdr)->typedAttribute<Imf::V3iAttribute>(name).value();

	*x = v.x;
	*y = v.y;
	*z = v.z;

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfHeaderSetV3fAttribute (ImfHeader *hdr,
			  const char name[],
			  float x, float y, float z)
{
    try
    {
	V3f v (x, y, z);

	if (header(hdr)->find(name) == header(hdr)->end())
	    header(hdr)->insert (name, Imf::V3fAttribute (v));
	else
	    header(hdr)->typedAttribute<Imf::V3fAttribute>(name).value() = v;

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfHeaderV3fAttribute (const ImfHeader *hdr,
		       const char name[],
		       float *x, float *y, float *z)
{
    try
    {
	const V3f &v =
	    header(hdr)->typedAttribute<Imf::V3fAttribute>(name).value();

	*x = v.x;
	*y = v.y;
	*z = v.z;

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfHeaderSetM33fAttribute (ImfHeader *hdr,
			   const char name[],
			   const float m[3][3])
{
    try
    {
	M33f m3 (m);

	if (header(hdr)->find(name) == header(hdr)->end())
	    header(hdr)->insert (name, Imf::M33fAttribute (m3));
	else
	    header(hdr)->typedAttribute<Imf::M33fAttribute>(name).value() = m3;

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfHeaderM33fAttribute (const ImfHeader *hdr,
			const char name[],
			float m[3][3])
{
    try
    {
	const M33f &m3 =
	    header(hdr)->typedAttribute<Imf::M33fAttribute>(name).value();

	m[0][0] = m3[0][0];
	m[0][1] = m3[0][1];
	m[0][2] = m3[0][2];

	m[1][0] = m3[1][0];
	m[1][1] = m3[1][1];
	m[1][2] = m3[1][2];

	m[2][0] = m3[2][0];
	m[2][1] = m3[2][1];
	m[2][2] = m3[2][2];

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfHeaderSetM44fAttribute (ImfHeader *hdr,
			   const char name[],
			   const float m[4][4])
{
    try
    {
	M44f m4 (m);

	if (header(hdr)->find(name) == header(hdr)->end())
	    header(hdr)->insert (name, Imf::M44fAttribute (m4));
	else
	    header(hdr)->typedAttribute<Imf::M44fAttribute>(name).value() = m4;

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfHeaderM44fAttribute (const ImfHeader *hdr,
			const char name[],
			float m[4][4])
{
    try
    {
	const M44f &m4 =
	    header(hdr)->typedAttribute<Imf::M44fAttribute>(name).value();

	m[0][0] = m4[0][0];
	m[0][1] = m4[0][1];
	m[0][2] = m4[0][2];
	m[0][3] = m4[0][3];

	m[1][0] = m4[1][0];
	m[1][1] = m4[1][1];
	m[1][2] = m4[1][2];
	m[1][3] = m4[1][3];

	m[2][0] = m4[2][0];
	m[2][1] = m4[2][1];
	m[2][2] = m4[2][2];
	m[2][3] = m4[2][3];

	m[3][0] = m4[3][0];
	m[3][1] = m4[3][1];
	m[3][2] = m4[3][2];
	m[3][3] = m4[3][3];

	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


ImfOutputFile *	
ImfOpenOutputFile (const char name[], const ImfHeader *hdr, int channels)
{
    try
    {
	return (ImfOutputFile *) new Imf::RgbaOutputFile
	    (name, *header(hdr), Imf::RgbaChannels (channels));
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfCloseOutputFile (ImfOutputFile *out)
{
    try
    {
	delete outfile (out);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfOutputSetFrameBuffer (ImfOutputFile *out,
			 const ImfRgba *base,
			 size_t xStride,
			 size_t yStride)
{
    try
    {
	outfile(out)->setFrameBuffer ((Imf::Rgba *)base, xStride, yStride);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfOutputWritePixels (ImfOutputFile *out, int numScanLines)
{
    try
    {
	outfile(out)->writePixels (numScanLines);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfOutputCurrentScanLine (const ImfOutputFile *out)
{
    return outfile(out)->currentScanLine();
}


const ImfHeader *
ImfOutputHeader (const ImfOutputFile *out)
{
    return (const ImfHeader *) &outfile(out)->header();
}


int
ImfOutputChannels (const ImfOutputFile *out)
{
    return outfile(out)->channels();
}


ImfTiledOutputFile *	
ImfOpenTiledOutputFile (const char name[],
			const ImfHeader *hdr,
			int channels,
			int xSize, int ySize,
			int mode, int rmode)
{
    try
    {
	return (ImfTiledOutputFile *) new Imf::TiledRgbaOutputFile
		    (name, *header(hdr),
		     Imf::RgbaChannels (channels),
		     xSize, ySize,
		     Imf::LevelMode (mode),
		     Imf::LevelRoundingMode (rmode));
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfCloseTiledOutputFile (ImfTiledOutputFile *out)
{
    try
    {
	delete outfile (out);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfTiledOutputSetFrameBuffer (ImfTiledOutputFile *out,
			      const ImfRgba *base,
			      size_t xStride,
			      size_t yStride)
{
    try
    {
	outfile(out)->setFrameBuffer ((Imf::Rgba *)base, xStride, yStride);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfTiledOutputWriteTile (ImfTiledOutputFile *out,
			 int dx, int dy,
			 int lx, int ly)
{
    try
    {
	outfile(out)->writeTile (dx, dy, lx, ly);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfTiledOutputWriteTiles (ImfTiledOutputFile *out,
			  int dxMin, int dxMax,
                          int dyMin, int dyMax,
			  int lx, int ly)
{
    try
    {
	outfile(out)->writeTiles (dxMin, dxMax, dyMin, dyMax, lx, ly);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


const ImfHeader *
ImfTiledOutputHeader (const ImfTiledOutputFile *out)
{
    return (const ImfHeader *) &outfile(out)->header();
}


int
ImfTiledOutputChannels (const ImfTiledOutputFile *out)
{
    return outfile(out)->channels();
}


int
ImfTiledOutputTileXSize (const ImfTiledOutputFile *out)
{
    return outfile(out)->tileXSize();
}


int
ImfTiledOutputTileYSize (const ImfTiledOutputFile *out)
{
    return outfile(out)->tileYSize();
}


int
ImfTiledOutputLevelMode (const ImfTiledOutputFile *out)
{
    return outfile(out)->levelMode();
}


int
ImfTiledOutputLevelRoundingMode (const ImfTiledOutputFile *out)
{
    return outfile(out)->levelRoundingMode();
}


ImfInputFile *	
ImfOpenInputFile (const char name[])
{
    try
    {
	return (ImfInputFile *) new Imf::RgbaInputFile (name);
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfCloseInputFile (ImfInputFile *in)
{
    try
    {
	delete infile (in);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfInputSetFrameBuffer (ImfInputFile *in,
			ImfRgba *base,
			size_t xStride,
			size_t yStride)
{
    try
    {
	infile(in)->setFrameBuffer ((Imf::Rgba *) base, xStride, yStride);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfInputReadPixels (ImfInputFile *in, int scanLine1, int scanLine2)
{
    try
    {
	infile(in)->readPixels (scanLine1, scanLine2);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


const ImfHeader *
ImfInputHeader (const ImfInputFile *in)
{
    return (const ImfHeader *) &infile(in)->header();
}


int
ImfInputChannels (const ImfInputFile *in)
{
    return infile(in)->channels();
}


const char *
ImfInputFileName (const ImfInputFile *in)
{
    return infile(in)->fileName();
}


ImfTiledInputFile *	
ImfOpenTiledInputFile (const char name[])
{
    try
    {
	return (ImfTiledInputFile *) new Imf::TiledRgbaInputFile (name);
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfCloseTiledInputFile (ImfTiledInputFile *in)
{
    try
    {
	delete infile (in);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int		
ImfTiledInputSetFrameBuffer (ImfTiledInputFile *in,
			     ImfRgba *base,
			     size_t xStride,
			     size_t yStride)
{
    try
    {
	infile(in)->setFrameBuffer ((Imf::Rgba *) base, xStride, yStride);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfTiledInputReadTile (ImfTiledInputFile *in,
		       int dx, int dy,
		       int lx, int ly)
{
    try
    {
	infile(in)->readTile (dx, dy, lx, ly);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


int
ImfTiledInputReadTiles (ImfTiledInputFile *in,
		        int dxMin, int dxMax,
                        int dyMin, int dyMax,
		        int lx, int ly)
{
    try
    {
	infile(in)->readTiles (dxMin, dxMax, dyMin, dyMax, lx, ly);
	return 1;
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


const ImfHeader *
ImfTiledInputHeader (const ImfTiledInputFile *in)
{
    return (const ImfHeader *) &infile(in)->header();
}


int
ImfTiledInputChannels (const ImfTiledInputFile *in)
{
    return infile(in)->channels();
}


const char *
ImfTiledInputFileName (const ImfTiledInputFile *in)
{
    return infile(in)->fileName();
}


int
ImfTiledInputTileXSize (const ImfTiledInputFile *in)
{
    return infile(in)->tileXSize();
}


int
ImfTiledInputTileYSize (const ImfTiledInputFile *in)
{
    return infile(in)->tileYSize();
}


int
ImfTiledInputLevelMode (const ImfTiledInputFile *in)
{
    return infile(in)->levelMode();
}


int
ImfTiledInputLevelRoundingMode (const ImfTiledInputFile *in)
{
    return infile(in)->levelRoundingMode();
}


ImfLut *
ImfNewRound12logLut (int channels)
{
    try
    {
	return (ImfLut *) new Imf::RgbaLut
	    (Imf::round12log, Imf::RgbaChannels (channels));
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


ImfLut *
ImfNewRoundNBitLut (unsigned int n, int channels)
{
    try
    {
	return (ImfLut *) new Imf::RgbaLut
	    (Imf::roundNBit (n), Imf::RgbaChannels (channels));
    }
    catch (const std::exception &e)
    {
	setErrorMessage (e);
	return 0;
    }
}


void
ImfDeleteLut (ImfLut *lut)
{
    delete (Imf::RgbaLut *) lut;
}


void
ImfApplyLut (ImfLut *lut, ImfRgba *data, int nData, int stride)
{
    ((Imf::RgbaLut *)lut)->apply ((Imf::Rgba *)data, nData, stride);
}


const char *	
ImfErrorMessage ()
{
    return errorMessage;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -