#pragma once #ifndef TTZPIMAGEFX_H #define TTZPIMAGEFX_H // TnzCore includes #include "tpalette.h" #include "trastercm.h" // TnzBase includes #include "trasterfxrenderdata.h" // STD includes #include #include #include #undef DVAPI #undef DVVAR #ifdef TFX_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif //********************************************************************************************** // ExternalPaletteFxRenderData declaration //********************************************************************************************** class DVAPI ExternalPaletteFxRenderData final : public TRasterFxRenderData { public: TPaletteP m_palette; std::string m_name; public: ExternalPaletteFxRenderData(TPaletteP palette, const std::string &name); float typeIndex() const override { return 0.0f; } bool operator==(const TRasterFxRenderData &data) const override; std::string toString() const override; }; //********************************************************************************************** // PaletteFilterFxRenderData declaration //********************************************************************************************** enum FilterType { eApplyToInksAndPaints = 0, eApplyToInksKeepingAllPaints, eApplyToPaintsKeepingAllInks, eApplyToInksAndPaints_NoGap, eApplyToInksDeletingAllPaints, eApplyToPaintsDeletingAllInks }; //------------------------------------------------------------------------------ class DVAPI PaletteFilterFxRenderData final : public TRasterFxRenderData { public: bool m_keep; FilterType m_type; std::set m_colors; public: PaletteFilterFxRenderData(); float typeIndex() const override { return (m_type == eApplyToInksAndPaints) ? 0.5f : 1.0f; } bool operator==(const TRasterFxRenderData &data) const override; std::string toString() const override; }; //------------------------------------------------------------------------------ void DVAPI insertIndexes(std::vector items, PaletteFilterFxRenderData *t); void DVAPI parseIndexes(std::string indexes, std::vector &items); //********************************************************************************************** // SandorFxRenderData (possible) parameters //********************************************************************************************** enum Type { BlendTz, Calligraphic, ArtAtContour, OutBorder }; //------------------------------------------------------------------------------ class DVAPI BlendTzParams { public: std::wstring m_colorIndex; bool m_noBlending; double m_amount; double m_smoothness; int m_superSampling; public: BlendTzParams() : m_colorIndex(L"") , m_noBlending(false) , m_amount(0.0) , m_smoothness(0.0) , m_superSampling(0) {} }; //------------------------------------------------------------------------------ class DVAPI CalligraphicParams { public: std::wstring m_colorIndex; double m_thickness; double m_horizontal; double m_vertical; double m_upWDiagonal; double m_doWDiagonal; double m_accuracy; double m_noise; public: CalligraphicParams() : m_thickness(0.0) , m_horizontal(0.0) , m_vertical(0.0) , m_upWDiagonal(0.0) , m_doWDiagonal(0.0) , m_accuracy(0.0) , m_noise(0.0) , m_colorIndex(L"") {} }; //------------------------------------------------------------------------------ class DVAPI ArtAtContourParams { public: double m_maxSize; double m_minSize; double m_maxOrientation; double m_minOrientation; bool m_randomness; double m_maxDistance; double m_minDistance; double m_density; bool m_keepLine; bool m_keepColor; bool m_includeAlpha; std::wstring m_colorIndex; public: ArtAtContourParams() : m_maxSize(0.0) , m_minSize(0.0) , m_maxOrientation(0.0) , m_minOrientation(0.0) , m_randomness(false) , m_maxDistance(0.0) , m_minDistance(0.0) , m_density(0.0) , m_keepLine(false) , m_keepColor(false) , m_includeAlpha(true) , m_colorIndex(L"") {} }; //********************************************************************************************** // SandorFxRenderData declaration //********************************************************************************************** class DVAPI SandorFxRenderData final : public TRasterFxRenderData { public: Type m_type; BlendTzParams m_blendParams; CalligraphicParams m_callParams; ArtAtContourParams m_contourParams; int m_border, m_shrink; int m_argc; const char *m_argv[12]; TRectD m_controllerBBox; TRasterP m_controller; std::string m_controllerAlias; public: SandorFxRenderData(Type type, int argc, const char *argv[], int border, int shrink, const TRectD &controllerBBox = TRectD(), const TRasterP &controller = TRasterP()); float typeIndex() const override { return (m_type == BlendTz) ? 2.0f : 3.0f; } bool operator==(const TRasterFxRenderData &data) const override; std::string toString() const override; TRectD getBBoxEnlargement(const TRectD &bbox) override; }; #endif