#pragma once #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