Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/freestyle/intern/stroke/AdvancedFunctions1D.h')
-rw-r--r--source/blender/freestyle/intern/stroke/AdvancedFunctions1D.h554
1 files changed, 280 insertions, 274 deletions
diff --git a/source/blender/freestyle/intern/stroke/AdvancedFunctions1D.h b/source/blender/freestyle/intern/stroke/AdvancedFunctions1D.h
index ab963c68034..35f516cd781 100644
--- a/source/blender/freestyle/intern/stroke/AdvancedFunctions1D.h
+++ b/source/blender/freestyle/intern/stroke/AdvancedFunctions1D.h
@@ -1,38 +1,44 @@
-//
-// Filename : AdvancedFunctions1D.h
-// Author(s) : Stephane Grabli, Emmanuel Turquin
-// Purpose : Functions taking 1D input
-// Date of creation : 01/07/2003
-//
-///////////////////////////////////////////////////////////////////////////////
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program 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 program 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2010 Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#ifndef __FREESTYLE_ADVANCED_FUNCTIONS_1D_H__
+#define __FREESTYLE_ADVANCED_FUNCTIONS_1D_H__
-//
-// Copyright (C) : Please refer to the COPYRIGHT file distributed
-// with this source distribution.
-//
-// This program 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 program 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.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-///////////////////////////////////////////////////////////////////////////////
+/** \file blender/freestyle/intern/stroke/AdvancedFunctions1D.h
+ * \ingroup freestyle
+ * \brief Functions taking 1D input
+ * \author Stephane Grabli
+ * \author Emmanuel Turquin
+ * \date 01/07/2003
+ */
-#ifndef ADVANCED_FUNCTIONS1D_HPP
-# define ADVANCED_FUNCTIONS1D_HPP
+#include "AdvancedFunctions0D.h"
-
-# include "../view_map/Functions1D.h"
-# include "AdvancedFunctions0D.h"
+#include "../view_map/Functions1D.h"
//
// Functions definitions
@@ -41,248 +47,248 @@
namespace Functions1D {
- // DensityF1D
- /*! Returns the density evaluated for an Interface1D.
- * The density is evaluated for a set of points along
- * the Interface1D (using the DensityF0D functor)
- * with a user-defined sampling and
- * then integrated into a single value using
- * a user-defined integration method.
- */
- class DensityF1D : public UnaryFunction1D<double>
- {
- private:
- float _sampling;
- public:
- /*! Builds the functor.
- * \param sigma
- * Thesigma used in DensityF0D and determining
- * the window size used in each density query.
- * \param iType
- * The integration method used to compute
- * a single value from a set of values.
- * \param sampling
- * The resolution used to sample the chain: the corresponding 0D function
- * is evaluated at each sample point and the result is obtained by
- * combining the resulting values into a single one, following the
- * method specified by iType.
- */
- DensityF1D(double sigma = 2, IntegrationType iType = MEAN, float sampling=2.f) : UnaryFunction1D<double>(iType), _fun(sigma) {
- _sampling = sampling;
- }
- /*! Destructor */
- virtual ~DensityF1D(){}
-
- /*! Returns the string "DensityF1D"*/
- string getName() const {
- return "DensityF1D";
- }
- /*! the () operator.*/
- int operator()(Interface1D& inter) {
- result = integrate(_fun, inter.pointsBegin(_sampling), inter.pointsEnd(_sampling), _integration);
- return 0;
- }
- private:
- Functions0D::DensityF0D _fun;
- };
-
- // LocalAverageDepthF1D
- /*! Returns the average depth evaluated for an Interface1D.
- * The average depth is evaluated for a set of points along
- * the Interface1D (using the LocalAverageDepthF0D functor)
- * with a user-defined sampling and
- * then integrated into a single value using
- * a user-defined integration method.
- */
- class LocalAverageDepthF1D : public UnaryFunction1D<double>
- {
- public:
- /*! Builds the functor.
- * \param sigma
- * The sigma used in DensityF0D and determining
- * the window size used in each density query.
- * \param iType
- * The integration method used to compute
- * a single value from a set of values.
- */
- LocalAverageDepthF1D(real sigma, IntegrationType iType = MEAN)
- : UnaryFunction1D<double>(iType), _fun(sigma){
- }
- /*! Returns the string "LocalAverageDepthF1D"*/
- string getName() const {
- return "LocalAverageDepthF1D";
- }
- /*! the () operator.*/
- int operator()(Interface1D& inter) {
- result = integrate(_fun, inter.verticesBegin(), inter.verticesEnd(), _integration);
- return 0;
- }
- private:
- Functions0D::LocalAverageDepthF0D _fun;
- };
-
- // GetCompleteViewMapDensity
- /*! Returns the density evaluated for an Interface1D in the
- * complete viewmap image.
- * The density is evaluated for a set of points along
- * the Interface1D (using the ReadCompleteViewMapPixelF0D functor)
- * and then integrated into a single value using
- * a user-defined integration method.
- */
- class LIB_STROKE_EXPORT GetCompleteViewMapDensityF1D : public UnaryFunction1D<double>
- {
- public:
- /*! Builds the functor.
- * \param level
- * The level of the pyramid from which
- * the pixel must be read.
- * \param iType
- * The integration method used to compute
- * a single value from a set of values.
- * \param sampling
- * The resolution used to sample the chain: the corresponding 0D function
- * is evaluated at each sample point and the result is obtained by
- * combining the resulting values into a single one, following the
- * method specified by iType.
- */
- GetCompleteViewMapDensityF1D(unsigned level, IntegrationType iType = MEAN, float sampling=2.f)
- : UnaryFunction1D<double>(iType), _fun(level){_sampling = sampling;}
- /*! Returns the string "GetCompleteViewMapDensityF1D"*/
- string getName() const {
- return "GetCompleteViewMapDensityF1D";
- }
- /*! the () operator.*/
- int operator()(Interface1D& inter);
-
- private:
- Functions0D::ReadCompleteViewMapPixelF0D _fun;
- float _sampling;
- };
-
- // GetDirectionalViewMapDensity
- /*! Returns the density evaluated for an Interface1D in of the
- * steerable viewmaps image.
- * The direction telling which Directional map to choose
- * is explicitely specified by the user.
- * The density is evaluated for a set of points along
- * the Interface1D (using the ReadSteerableViewMapPixelF0D functor)
- * and then integrated into a single value using
- * a user-defined integration method.
- */
- class LIB_STROKE_EXPORT GetDirectionalViewMapDensityF1D : public UnaryFunction1D<double>
- {
- public:
- /*! Builds the functor.
- * \param iOrientation
- * The number of the directional map
- * we must work with.
- * \param level
- * The level of the pyramid from which
- * the pixel must be read.
- * \param iType
- * The integration method used to compute
- * a single value from a set of values.
- * \param sampling
- * The resolution used to sample the chain: the corresponding 0D function
- * is evaluated at each sample point and the result is obtained by
- * combining the resulting values into a single one, following the
- * method specified by iType.
- */
- GetDirectionalViewMapDensityF1D(unsigned iOrientation, unsigned level, IntegrationType iType = MEAN, float sampling=2.f)
- : UnaryFunction1D<double>(iType), _fun(iOrientation,level){_sampling = sampling;}
- /*! Returns the string "GetDirectionalViewMapDensityF1D"*/
- string getName() const {
- return "GetDirectionalViewMapDensityF1D";
- }
- /*! the () operator.*/
- int operator()(Interface1D& inter);
-
- private:
- Functions0D::ReadSteerableViewMapPixelF0D _fun;
- float _sampling;
- };
-
- // GetSteerableViewMapDensityF1D
- /*! Returns the density of the viewmap
- * for a given Interface1D. The density of each
- * FEdge is evaluated in the proper steerable
- * ViewMap depending on its oorientation.
- */
- class LIB_STROKE_EXPORT GetSteerableViewMapDensityF1D : public UnaryFunction1D<real>
- {
- private:
- int _level;
- float _sampling;
- public:
- /*! Builds the functor from the level
- * of the pyramid from which the pixel must be read.
- * \param level
- * The level of the pyramid from which
- * the pixel must be read.
- * \param iType
- * The integration method used to compute
- * a single value from a set of values.
- * \param sampling
- * The resolution used to sample the chain: the corresponding 0D function
- * is evaluated at each sample point and the result is obtained by
- * combining the resulting values into a single one, following the
- * method specified by iType.
- */
- GetSteerableViewMapDensityF1D(int level,IntegrationType iType = MEAN, float sampling=2.f) : UnaryFunction1D<real>(iType) {
- _level = level;
- _sampling = sampling;
- }
- /*! Destructor */
- virtual ~GetSteerableViewMapDensityF1D(){}
-
- /*! Returns the string "GetSteerableViewMapDensityF1D"*/
- string getName() const {
- return "GetSteerableViewMapDensityF1D";
- }
- /*! the () operator.*/
- int operator()(Interface1D& inter);
- };
-
- // GetViewMapGradientNormF1D
- /*! Returns the density of the viewmap
- * for a given Interface1D. The density of each
- * FEdge is evaluated in the proper steerable
- * ViewMap depending on its oorientation.
- */
- class LIB_STROKE_EXPORT GetViewMapGradientNormF1D : public UnaryFunction1D<real>
- {
- private:
- int _level;
- float _sampling;
- Functions0D::GetViewMapGradientNormF0D _func;
- public:
- /*! Builds the functor from the level
- * of the pyramid from which the pixel must be read.
- * \param level
- * The level of the pyramid from which
- * the pixel must be read.
- * \param iType
- * The integration method used to compute
- * a single value from a set of values.
- * \param sampling
- * The resolution used to sample the chain: the corresponding 0D function
- * is evaluated at each sample point and the result is obtained by
- * combining the resulting values into a single one, following the
- * method specified by iType.
- */
- GetViewMapGradientNormF1D(int level,IntegrationType iType = MEAN, float sampling=2.f)
- : UnaryFunction1D<real>(iType), _func(level) {
- _level = level;
- _sampling = sampling;
- }
-
- /*! Returns the string "GetSteerableViewMapDensityF1D"*/
- string getName() const {
- return "GetViewMapGradientNormF1D";
- }
- /*! the () operator.*/
- int operator()(Interface1D& inter);
- };
+// DensityF1D
+/*! Returns the density evaluated for an Interface1D.
+ * The density is evaluated for a set of points along the Interface1D (using the DensityF0D functor) with a
+ * user-defined sampling and then integrated into a single value using a user-defined integration method.
+ */
+class DensityF1D : public UnaryFunction1D<double>
+{
+private:
+ float _sampling;
+
+public:
+ /*! Builds the functor.
+ * \param sigma
+ * Thesigma used in DensityF0D and determining the window size used in each density query.
+ * \param iType
+ * The integration method used to compute a single value from a set of values.
+ * \param sampling
+ * The resolution used to sample the chain: the corresponding 0D function is evaluated at each sample point and the
+ * result is obtained by combining the resulting values into a single one, following the method specified by iType.
+ */
+ DensityF1D(double sigma = 2, IntegrationType iType = MEAN, float sampling = 2.0f)
+ : UnaryFunction1D<double>(iType), _fun(sigma)
+ {
+ _sampling = sampling;
+ }
+
+ /*! Destructor */
+ virtual ~DensityF1D() {}
+
+ /*! Returns the string "DensityF1D"*/
+ string getName() const
+ {
+ return "DensityF1D";
+ }
+
+ /*! the () operator.*/
+ int operator()(Interface1D& inter)
+ {
+ result = integrate(_fun, inter.pointsBegin(_sampling), inter.pointsEnd(_sampling), _integration);
+ return 0;
+ }
+
+private:
+ Functions0D::DensityF0D _fun;
+};
+
+// LocalAverageDepthF1D
+/*! Returns the average depth evaluated for an Interface1D.
+ * The average depth is evaluated for a set of points along the Interface1D (using the LocalAverageDepthF0D functor)
+ * with a user-defined sampling and then integrated into a single value using a user-defined integration method.
+ */
+class LocalAverageDepthF1D : public UnaryFunction1D<double>
+{
+public:
+ /*! Builds the functor.
+ * \param sigma
+ * The sigma used in DensityF0D and determining the window size used in each density query.
+ * \param iType
+ * The integration method used to compute a single value from a set of values.
+ */
+ LocalAverageDepthF1D(real sigma, IntegrationType iType = MEAN)
+ : UnaryFunction1D<double>(iType), _fun(sigma)
+ {
+ }
+
+ /*! Returns the string "LocalAverageDepthF1D" */
+ string getName() const
+ {
+ return "LocalAverageDepthF1D";
+ }
+
+ /*! the () operator. */
+ int operator()(Interface1D& inter)
+ {
+ result = integrate(_fun, inter.verticesBegin(), inter.verticesEnd(), _integration);
+ return 0;
+ }
+
+private:
+ Functions0D::LocalAverageDepthF0D _fun;
+};
+
+// GetCompleteViewMapDensity
+/*! Returns the density evaluated for an Interface1D in the complete viewmap image.
+ * The density is evaluated for a set of points along the Interface1D (using the ReadCompleteViewMapPixelF0D functor)
+ * and then integrated into a single value using a user-defined integration method.
+ */
+class LIB_STROKE_EXPORT GetCompleteViewMapDensityF1D : public UnaryFunction1D<double>
+{
+public:
+ /*! Builds the functor.
+ * \param level
+ * The level of the pyramid from which
+ * the pixel must be read.
+ * \param iType
+ * The integration method used to compute
+ * a single value from a set of values.
+ * \param sampling
+ * The resolution used to sample the chain: the corresponding 0D function
+ * is evaluated at each sample point and the result is obtained by
+ * combining the resulting values into a single one, following the
+ * method specified by iType.
+ */
+ GetCompleteViewMapDensityF1D(unsigned level, IntegrationType iType = MEAN, float sampling = 2.0f)
+ : UnaryFunction1D<double>(iType), _fun(level)
+ {
+ _sampling = sampling;
+ }
+
+ /*! Returns the string "GetCompleteViewMapDensityF1D" */
+ string getName() const
+ {
+ return "GetCompleteViewMapDensityF1D";
+ }
+
+ /*! the () operator. */
+ int operator()(Interface1D& inter);
+
+private:
+ Functions0D::ReadCompleteViewMapPixelF0D _fun;
+ float _sampling;
+};
+
+// GetDirectionalViewMapDensity
+/*! Returns the density evaluated for an Interface1D in of the steerable viewmaps image.
+ * The direction telling which Directional map to choose is explicitely specified by the user.
+ * The density is evaluated for a set of points along the Interface1D (using the ReadSteerableViewMapPixelF0D functor)
+ * and then integrated into a single value using a user-defined integration method.
+ */
+class LIB_STROKE_EXPORT GetDirectionalViewMapDensityF1D : public UnaryFunction1D<double>
+{
+public:
+ /*! Builds the functor.
+ * \param iOrientation
+ * The number of the directional map we must work with.
+ * \param level
+ * The level of the pyramid from which the pixel must be read.
+ * \param iType
+ * The integration method used to compute a single value from a set of values.
+ * \param sampling
+ * The resolution used to sample the chain: the corresponding 0D function is evaluated at each sample point and the
+ * result is obtained by combining the resulting values into a single one, following the method specified by iType.
+ */
+ GetDirectionalViewMapDensityF1D(unsigned iOrientation, unsigned level, IntegrationType iType = MEAN,
+ float sampling = 2.0f)
+ : UnaryFunction1D<double>(iType), _fun(iOrientation, level)
+ {
+ _sampling = sampling;
+ }
+
+ /*! Returns the string "GetDirectionalViewMapDensityF1D" */
+ string getName() const
+ {
+ return "GetDirectionalViewMapDensityF1D";
+ }
+
+ /*! the () operator. */
+ int operator()(Interface1D& inter);
+
+private:
+ Functions0D::ReadSteerableViewMapPixelF0D _fun;
+ float _sampling;
+};
+
+// GetSteerableViewMapDensityF1D
+/*! Returns the density of the viewmap for a given Interface1D. The density of each FEdge is evaluated
+ * in the proper steerable ViewMap depending on its oorientation.
+ */
+class LIB_STROKE_EXPORT GetSteerableViewMapDensityF1D : public UnaryFunction1D<real>
+{
+private:
+ int _level;
+ float _sampling;
+
+public:
+ /*! Builds the functor from the level of the pyramid from which the pixel must be read.
+ * \param level
+ * The level of the pyramid from which the pixel must be read.
+ * \param iType
+ * The integration method used to compute a single value from a set of values.
+ * \param sampling
+ * The resolution used to sample the chain: the corresponding 0D function is evaluated at each sample point and the
+ * result is obtained by combining the resulting values into a single one, following the method specified by iType.
+ */
+ GetSteerableViewMapDensityF1D(int level,IntegrationType iType = MEAN, float sampling = 2.0f)
+ : UnaryFunction1D<real>(iType)
+ {
+ _level = level;
+ _sampling = sampling;
+ }
+
+ /*! Destructor */
+ virtual ~GetSteerableViewMapDensityF1D() {}
+
+ /*! Returns the string "GetSteerableViewMapDensityF1D" */
+ string getName() const
+ {
+ return "GetSteerableViewMapDensityF1D";
+ }
+
+ /*! the () operator. */
+ int operator()(Interface1D& inter);
+};
+
+// GetViewMapGradientNormF1D
+/*! Returns the density of the viewmap for a given Interface1D. The density of each FEdge is evaluated in
+ * the proper steerable ViewMap depending on its oorientation.
+ */
+class LIB_STROKE_EXPORT GetViewMapGradientNormF1D : public UnaryFunction1D<real>
+{
+private:
+ int _level;
+ float _sampling;
+ Functions0D::GetViewMapGradientNormF0D _func;
+
+public:
+ /*! Builds the functor from the level of the pyramid from which the pixel must be read.
+ * \param level
+ * The level of the pyramid from which the pixel must be read.
+ * \param iType
+ * The integration method used to compute a single value from a set of values.
+ * \param sampling
+ * The resolution used to sample the chain: the corresponding 0D function is evaluated at each sample point and the
+ * result is obtained by combining the resulting values into a single one, following the method specified by iType.
+ */
+ GetViewMapGradientNormF1D(int level,IntegrationType iType = MEAN, float sampling = 2.0f)
+ : UnaryFunction1D<real>(iType), _func(level)
+ {
+ _level = level;
+ _sampling = sampling;
+ }
+
+ /*! Returns the string "GetSteerableViewMapDensityF1D" */
+ string getName() const
+ {
+ return "GetViewMapGradientNormF1D";
+ }
+
+ /*! the () operator. */
+ int operator()(Interface1D& inter);
+};
+
} // end of namespace Functions1D
-#endif // ADVANCED_FUNCTIONS1D_HPP
+#endif // __FREESTYLE_ADVANCED_FUNCTIONS_1D_H__