X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fblur.h;fp=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fblur.h;h=e8c9dbdae9e6a0714fc2663588e8bf31e91cf44d;hb=e3acc0b267b14fda5db3c7bbb2f218b993ef84b3;hp=0000000000000000000000000000000000000000;hpb=ced68168d8518aac837f20e73bcd1e84a6bd6178;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/blur.h b/synfig-core/trunk/src/synfig/blur.h new file mode 100644 index 0000000..e8c9dbd --- /dev/null +++ b/synfig-core/trunk/src/synfig/blur.h @@ -0,0 +1,87 @@ +/* === S I N F G =========================================================== */ +/*! \file blur.h +** \brief Blur Helper Header file +** +** $Id: blur.h,v 1.1.1.1 2005/01/04 01:23:14 darco Exp $ +** +** \legal +** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** +** This software and associated documentation +** are CONFIDENTIAL and PROPRIETARY property of +** the above-mentioned copyright holder. +** +** You may not copy, print, publish, or in any +** other way distribute this software without +** a prior written agreement with +** the copyright holder. +** \endlegal +*/ +/* ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __SINFG_BLUR_HELPER_H +#define __SINFG_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 ======================================= */ +class sinfg::ProgressCallback; + +class Blur +{ +public: + enum Type + { + BOX =0, + FASTGAUSSIAN =1, + CROSS =2, + GAUSSIAN =3, + DISC =4, + + FORCE_DWORD = 0x8fffffff + }; + +private: + sinfg::Point size; + int type; + + sinfg::ProgressCallback *cb; + +public: + sinfg::Point & set_size(const sinfg::Point &v) { return (size = v); } + const sinfg::Point & get_size() const { return size; } + sinfg::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 sinfg::Point &s, int t, sinfg::ProgressCallback *callb=0):size(s), type(t), cb(callb) {} + Blur(sinfg::Real sx, sinfg::Real sy, int t, sinfg::ProgressCallback *callb = 0): size(sx,sy), type(t), cb(callb) {} + + //Parametric Blur + sinfg::Point operator ()(const sinfg::Point &p) const; + sinfg::Point operator ()(sinfg::Real x, sinfg::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 sinfg::Surface &surface, const sinfg::Vector &resolution, sinfg::Surface &out) const; + + bool operator ()(const etl::surface &surface, const sinfg::Vector &resolution, etl::surface &out) const; + //bool operator ()(const etl::surface &surface, const sinfg::Vector &resolution, etl::surface &out) const; +}; + +/* === E N D =============================================================== */ + +#endif