X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftags%2Fstable%2Fsrc%2Fsynfig%2Fblur.h;fp=synfig-core%2Ftags%2Fstable%2Fsrc%2Fsynfig%2Fblur.h;h=5d1c8011d480f9d39543b5f79101f3bda1340964;hb=391f6a3be479646721d8cc78b5ee673db17bd540;hp=0000000000000000000000000000000000000000;hpb=ce9ddb9d0e877117ef8648f901f0c7db9eca3d79;p=synfig.git diff --git a/synfig-core/tags/stable/src/synfig/blur.h b/synfig-core/tags/stable/src/synfig/blur.h new file mode 100644 index 0000000..5d1c801 --- /dev/null +++ b/synfig-core/tags/stable/src/synfig/blur.h @@ -0,0 +1,90 @@ +/* === S Y N F I G ========================================================= */ +/*! \file synfig/blur.h +** \brief Blur Helper Header file +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. +** +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. +** \endlegal +*/ +/* ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __SYNFIG_BLUR_HELPER_H +#define __SYNFIG_BLUR_HELPER_H + +/* === H E A D E R S ======================================================= */ +#include +#include +#include + +/* === M A C R O S ========================================================= */ + +/* === T Y P E D E F S ===================================================== */ + +/* === C L A S S E S & S T R U C T S ======================================= */ +namespace synfig { + class ProgressCallback; +} + +class Blur +{ +public: + enum Type + { + BOX =0, + FASTGAUSSIAN =1, + CROSS =2, + GAUSSIAN =3, + DISC =4, + + FORCE_DWORD = 0x8fffffff + }; + +private: + synfig::Point size; + int type; + + synfig::ProgressCallback *cb; + +public: + synfig::Point & set_size(const synfig::Point &v) { return (size = v); } + const synfig::Point & get_size() const { return size; } + synfig::Point & get_size() { return size; } + + int & set_type(const int &t) { return (type = t); } + const int & get_type() const { return type; } + int & get_type() { return type; } + + Blur() {} + Blur(const synfig::Point &s, int t, synfig::ProgressCallback *callb=0):size(s), type(t), cb(callb) {} + Blur(synfig::Real sx, synfig::Real sy, int t, synfig::ProgressCallback *callb = 0): size(sx,sy), type(t), cb(callb) {} + + //Parametric Blur + synfig::Point operator()(const synfig::Point &p) const; + synfig::Point operator()(synfig::Real x, synfig::Real y) const; + + //Surface based blur + // input surface can be the same as output surface, + // though both have to be the same size + bool operator()(const synfig::Surface &surface, const synfig::Vector &resolution, synfig::Surface &out) const; + + bool operator()(const etl::surface &surface, const synfig::Vector &resolution, etl::surface &out) const; + //bool operator()(const etl::surface &surface, const synfig::Vector &resolution, etl::surface &out) const; +}; + +/* === E N D =============================================================== */ + +#endif