#pragma once #ifndef IWA_CORRIDORGRADIENTFX_H #define IWA_CORRIDORGRADIENTFX_H #include "tfxparam.h" #include "stdfx.h" #include "tparamset.h" struct double3 { double r, g, b; }; class Iwa_RainbowFx final : public TStandardZeraryFx { FX_PLUGIN_DECLARATION(Iwa_RainbowFx) TPointParamP m_center; TDoubleParamP m_intensity; TDoubleParamP m_radius; TDoubleParamP m_width_scale; TDoubleParamP m_inside; TDoubleParamP m_secondary_rainbow; TBoolParamP m_alpha_rendering; double getSizePixelAmount(const double val, const TAffine affine); void buildRanbowColorMap(double3 *core, double3 *wide, double intensity, double inside, double secondary); inline double3 angleToColor(double angle, double3 *core, double3 *wide); template void setOutputRaster(const RASTER ras, TDimensionI dim, double3 *outBuf_p); public: Iwa_RainbowFx(); bool canHandle(const TRenderSettings &info, double frame) override { return true; } bool doGetBBox(double frame, TRectD &bBox, const TRenderSettings &ri) override; void doCompute(TTile &tile, double frame, const TRenderSettings &ri) override; void getParamUIs(TParamUIConcept *&concepts, int &length) override; }; #endif