Blob Blame Raw


#ifndef TFXDEF_INCLUDED
#define TFXDEF_INCLUDED

#include "traster.h"

#undef DVAPI
#undef DVVAR
#ifdef TNZCORE_DLL
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif

//----------------------------------------------------------

class TRasterFx;
class TRasterFxPort;
class ITFxNode;
class TParam;

//----------------------------------------------------------

//
//  Fx Arguments
//
class DVAPI ITFxArguments
{
public:
	ITFxArguments(){};
	virtual ~ITFxArguments(){};

	virtual void add(TParam *) = 0;
	virtual void add(TRasterFxPort *) = 0;
};

//----------------------------------------------------------

//
//  RasterPort
//
class DVAPI TRasterFxPort
{
	TRasterFx *m_fx;
	string m_name;

public:
	TRasterFxPort(ITFxArguments *args, string name)
		: m_name(name), m_fx(0) { args->add(this); };
	~TRasterFxPort(){};

	string getName() const { return m_name; };
	TRasterFx *operator->() const
	{
		assert(m_fx != 0);
		return m_fx;
	};
	bool isConnected() const { return m_fx != 0; };

	void setRasterFx(TRasterFx *fx) { m_fx = fx; };

private:
	// not implemented
	TRasterFxPort(const TRasterFxPort &);
	TRasterFxPort &operator=(const TRasterFxPort &);
};

//----------------------------------------------------------

//
// RasterFx
//
class DVAPI TRasterFx
{
public:
	TRasterFx(){};
	virtual ~TRasterFx(){};

	virtual bool getBBox(
		double frame,
		TRectD &bBox, // n.b Input/Output
		TPixel32 &bgColor) = 0;

	virtual string getName() const = 0;

	virtual TRect getInvalidRect(const TRect &max) = 0;

	virtual void compute(
		double frame,
		const TTile &tile) = 0;

	virtual void allocateAndCompute(
		double frame,
		const TDimension size, const TPointD &pos,
		TTile &tile);

private:
	TRasterFx(const TRasterFx &);
	TRasterFx &operator=(const TRasterFx &);
};

//----------------------------------------------------------

#endif