Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TFXDEF_INCLUDED
Toshihiro Shimizu 890ddd
#define TFXDEF_INCLUDED
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "traster.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TNZCORE_DLL
Toshihiro Shimizu 890ddd
#define DVAPI DV_EXPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_EXPORT_VAR
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
#define DVAPI DV_IMPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_IMPORT_VAR
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//----------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TRasterFx;
Toshihiro Shimizu 890ddd
class TRasterFxPort;
Toshihiro Shimizu 890ddd
class ITFxNode;
Toshihiro Shimizu 890ddd
class TParam;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//----------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//  Fx Arguments
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
class DVAPI ITFxArguments
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	ITFxArguments(){};
Toshihiro Shimizu 890ddd
	virtual ~ITFxArguments(){};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	virtual void add(TParam *) = 0;
Toshihiro Shimizu 890ddd
	virtual void add(TRasterFxPort *) = 0;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//----------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
//  RasterPort
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
class DVAPI TRasterFxPort
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	TRasterFx *m_fx;
Toshihiro Shimizu 890ddd
	string m_name;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	TRasterFxPort(ITFxArguments *args, string name)
Toshihiro Shimizu 890ddd
		: m_name(name), m_fx(0) { args->add(this); };
Toshihiro Shimizu 890ddd
	~TRasterFxPort(){};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	string getName() const { return m_name; };
Toshihiro Shimizu 890ddd
	TRasterFx *operator->() const
Toshihiro Shimizu 890ddd
	{
Toshihiro Shimizu 890ddd
		assert(m_fx != 0);
Toshihiro Shimizu 890ddd
		return m_fx;
Toshihiro Shimizu 890ddd
	};
Toshihiro Shimizu 890ddd
	bool isConnected() const { return m_fx != 0; };
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	void setRasterFx(TRasterFx *fx) { m_fx = fx; };
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	// not implemented
Toshihiro Shimizu 890ddd
	TRasterFxPort(const TRasterFxPort &);
Toshihiro Shimizu 890ddd
	TRasterFxPort &operator=(const TRasterFxPort &);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//----------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
// RasterFx
Toshihiro Shimizu 890ddd
//
Toshihiro Shimizu 890ddd
class DVAPI TRasterFx
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	TRasterFx(){};
Toshihiro Shimizu 890ddd
	virtual ~TRasterFx(){};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	virtual bool getBBox(
Toshihiro Shimizu 890ddd
		double frame,
Toshihiro Shimizu 890ddd
		TRectD &bBox, // n.b Input/Output
Toshihiro Shimizu 890ddd
		TPixel32 &bgColor) = 0;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	virtual string getName() const = 0;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	virtual TRect getInvalidRect(const TRect &max) = 0;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	virtual void compute(
Toshihiro Shimizu 890ddd
		double frame,
Toshihiro Shimizu 890ddd
		const TTile &tile) = 0;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	virtual void allocateAndCompute(
Toshihiro Shimizu 890ddd
		double frame,
Toshihiro Shimizu 890ddd
		const TDimension size, const TPointD &pos,
Toshihiro Shimizu 890ddd
		TTile &tile);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	TRasterFx(const TRasterFx &);
Toshihiro Shimizu 890ddd
	TRasterFx &operator=(const TRasterFx &);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//----------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif