1 #pragma once 2 3 #ifndef TEXTERNFX_H 4 #define TEXTERNFX_H 5 6 #include "tbasefx.h" 7 #include "trasterfx.h" 8 9 #undef DVAPI 10 #undef DVVAR 11 #ifdef TFX_EXPORTS 12 #define DVAPI DV_EXPORT_API 13 #define DVVAR DV_EXPORT_VAR 14 #else 15 #define DVAPI DV_IMPORT_API 16 #define DVVAR DV_IMPORT_VAR 17 #endif 18 19 //--------------------------------------------------------- 20 21 class DVAPI TExternFx : public TBaseRasterFx { 22 public: TExternFx()23 TExternFx() { setName(L"ExternFx"); } 24 25 static TExternFx *create(std::string name); 26 void getNames(std::vector<std::string> &names); 27 }; 28 29 //--------------------------------------------------------- 30 31 class DVAPI TExternalProgramFx final : public TExternFx { FX_DECLARATION(TExternalProgramFx)32 FX_DECLARATION(TExternalProgramFx) 33 34 class Port { 35 public: 36 std::string m_name; 37 TRasterFxPort *m_port; // n.b. la porta di output ha m_port=0 38 std::string m_ext; // estensione del file in cui si legge/scrive l'immagine 39 Port() : m_name(), m_port(0), m_ext() {} 40 Port(std::string name, std::string ext, TRasterFxPort *port) 41 : m_name(name), m_port(port), m_ext(ext) {} 42 }; 43 44 std::map<std::string, Port> m_ports; 45 // std::map<std::string, TParamP> m_params; 46 std::vector<TParamP> m_params; 47 48 TFilePath m_executablePath; 49 std::string m_args; 50 std::string m_externFxName; 51 52 public: 53 TExternalProgramFx(std::string name); 54 TExternalProgramFx(); 55 ~TExternalProgramFx(); 56 57 void initialize(std::string name); 58 59 TFx *clone(bool recursive = true) const override; 60 61 bool doGetBBox(double frame, TRectD &bBox, 62 const TRenderSettings &info) override; 63 void doCompute(TTile &tile, double frame, const TRenderSettings &ri) override; 64 canHandle(const TRenderSettings & info,double frame)65 bool canHandle(const TRenderSettings &info, double frame) override { 66 return false; 67 } 68 setExecutable(TFilePath fp,std::string args)69 void setExecutable(TFilePath fp, std::string args) { 70 m_executablePath = fp; 71 m_args = args; 72 } 73 74 void addPort(std::string portName, std::string ext, bool isInput); 75 // void addParam(string paramName, const TParamP ¶m); 76 77 void loadData(TIStream &is) override; 78 void saveData(TOStream &os) override; 79 setExternFxName(std::string name)80 void setExternFxName(std::string name) { m_externFxName = name; } getExternFxName()81 std::string getExternFxName() const { return m_externFxName; }; 82 83 private: 84 // not implemented 85 TExternalProgramFx(const TExternalProgramFx &); 86 TExternalProgramFx &operator=(const TExternalProgramFx &); 87 }; 88 89 #endif 90