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/AdvancedStrokeShaders.h')
-rw-r--r--source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h340
1 files changed, 172 insertions, 168 deletions
diff --git a/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h b/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h
index f2e56222cc0..a957a3f7155 100644
--- a/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h
+++ b/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h
@@ -1,70 +1,73 @@
-//
-// Filename : AdvancedStrokeShaders.h
-// Author : Fredo Durand
-// Purpose : Fredo's stroke shaders
-// Date of creation : 17/12/2002
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-//
-// 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.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef ADVANCEDSTROKESHADERS_H
-# define ADVANCEDSTROKESHADERS_H
-
-# include "BasicStrokeShaders.h"
+/*
+ * ***** 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_STROKE_SHADERS_H__
+#define __FREESTYLE_ADVANCED_STROKE_SHADERS_H__
+
+/** \file blender/freestyle/intern/stroke/AdvancedStrokeShaders.h
+ * \ingroup freestyle
+ * \brief Fredo's stroke shaders
+ * \author Fredo Durand
+ * \date 17/12/2002
+ */
+
+#include "BasicStrokeShaders.h"
/*! [ Thickness Shader ].
- * Assigns thicknesses to the stroke vertices
- * so that the stroke looks like made with a calligraphic tool.
- * i.e. The stroke will be the thickest in a main direction,
- * the thinest in the direction perpendicular to this one,
+ * Assigns thicknesses to the stroke vertices so that the stroke looks like made with a calligraphic tool.
+ * i.e. The stroke will be the thickest in a main direction, the thinest in the direction perpendicular to this one,
* and an interpolation inbetween.
*/
-class LIB_STROKE_EXPORT CalligraphicShader : public StrokeShader
+class LIB_STROKE_EXPORT CalligraphicShader : public StrokeShader
{
-
public:
- /*! Builds the shader.
- * \param iMinThickness
- * The minimum thickness in the direction perpandicular
- * to the main direction.
- * \param iMaxThickness
- * The maximum thickness in the main direction.
- * \param iOrientation
- * The 2D vector giving the main direction.
- * \param clamp
- * Tells ???
- */
- CalligraphicShader (real iMinThickness, real iMaxThickness,
- const Vec2f &iOrientation, bool clamp);
- /*! Destructor. */
- virtual ~CalligraphicShader () {}
- /*! The shading method */
- virtual int shade(Stroke &ioStroke) const;
+ /*! Builds the shader.
+ * \param iMinThickness
+ * The minimum thickness in the direction perpandicular to the main direction.
+ * \param iMaxThickness
+ * The maximum thickness in the main direction.
+ * \param iOrientation
+ * The 2D vector giving the main direction.
+ * \param clamp
+ * Tells ???
+ */
+ CalligraphicShader(real iMinThickness, real iMaxThickness, const Vec2f &iOrientation, bool clamp);
+
+ /*! Destructor. */
+ virtual ~CalligraphicShader() {}
+
+ /*! The shading method */
+ virtual int shade(Stroke &ioStroke) const;
+
protected:
- real _maxThickness;
- real _minThickness;
- Vec2f _orientation;
- bool _clamp;
+ real _maxThickness;
+ real _minThickness;
+ Vec2f _orientation;
+ bool _clamp;
};
/*! [ Geometry Shader ].
@@ -72,151 +75,152 @@ protected:
* Moves the vertices to make the stroke more noisy.
* @see \htmlonly <a href=noise/noise.html>noise/noise.html</a> \endhtmlonly
*/
-class LIB_STROKE_EXPORT SpatialNoiseShader : public StrokeShader
+class LIB_STROKE_EXPORT SpatialNoiseShader : public StrokeShader
{
public:
- /*! Builds the shader.
- * \param iAmount
- * The amplitude of the noise.
- * \param ixScale
- * The noise frequency
- * \param nbOctave
- * The number of octaves
- * \param smooth
- * If you want the noise to be smooth
- * \param pureRandom
- * If you don't want any coherence
- */
- SpatialNoiseShader (float iAmount, float ixScale, int nbOctave, bool smooth, bool pureRandom);
- /*! Destructor. */
- virtual ~SpatialNoiseShader () {}
- /*! The shading method. */
- virtual int shade(Stroke &ioStroke) const;
+ /*! Builds the shader.
+ * \param iAmount
+ * The amplitude of the noise.
+ * \param ixScale
+ * The noise frequency
+ * \param nbOctave
+ * The number of octaves
+ * \param smooth
+ * If you want the noise to be smooth
+ * \param pureRandom
+ * If you don't want any coherence
+ */
+ SpatialNoiseShader(float iAmount, float ixScale, int nbOctave, bool smooth, bool pureRandom);
+
+ /*! Destructor. */
+ virtual ~SpatialNoiseShader() {}
+
+ /*! The shading method. */
+ virtual int shade(Stroke &ioStroke) const;
protected:
-
- float _amount;
- float _xScale;
- int _nbOctave;
- bool _smooth;
- bool _pureRandom;
+ float _amount;
+ float _xScale;
+ int _nbOctave;
+ bool _smooth;
+ bool _pureRandom;
};
/*! [ Geometry Shader ].
* Smoothes the stroke.
* (Moves the vertices to make the stroke smoother).
- * Uses curvature flow to converge towards a curve of constant
- * curvature. The diffusion method we use is anisotropic
+ * Uses curvature flow to converge towards a curve of constant curvature. The diffusion method we use is anisotropic
* to prevent the diffusion accross corners.
* @see \htmlonly <a href=/smoothing/smoothing.html>smoothing/smoothing.html</a> endhtmlonly
*/
-class LIB_STROKE_EXPORT SmoothingShader : public StrokeShader
+class LIB_STROKE_EXPORT SmoothingShader : public StrokeShader
{
public:
- /*! Builds the shader.
- * \param iNbIteration
- * The number of iterations. (400)
- * \param iFactorPoint
- * 0
- * \param ifactorCurvature
- * 0
- * \param iFactorCurvatureDifference
- * 0.2
- * \param iAnisoPoint
- * 0
- * \param iAnisNormal
- * 0
- * \param iAnisoCurvature
- * 0
- * \param icarricatureFactor
- * 1
- */
- SmoothingShader (int iNbIteration, real iFactorPoint, real ifactorCurvature, real iFactorCurvatureDifference,
- real iAnisoPoint, real iAnisoNormal, real iAnisoCurvature, real icarricatureFactor);
- /*! Destructor. */
- virtual ~SmoothingShader () {}
-
- /*! The shading method. */
- virtual int shade(Stroke &ioStroke) const;
+ /*! Builds the shader.
+ * \param iNbIteration
+ * The number of iterations. (400)
+ * \param iFactorPoint
+ * 0
+ * \param ifactorCurvature
+ * 0
+ * \param iFactorCurvatureDifference
+ * 0.2
+ * \param iAnisoPoint
+ * 0
+ * \param iAnisNormal
+ * 0
+ * \param iAnisoCurvature
+ * 0
+ * \param icarricatureFactor
+ * 1
+ */
+ SmoothingShader(int iNbIteration, real iFactorPoint, real ifactorCurvature, real iFactorCurvatureDifference,
+ real iAnisoPoint, real iAnisoNormal, real iAnisoCurvature, real icarricatureFactor);
+
+ /*! Destructor. */
+ virtual ~SmoothingShader() {}
+
+ /*! The shading method. */
+ virtual int shade(Stroke &ioStroke) const;
protected:
-
- int _nbIterations;
- real _factorPoint;
- real _factorCurvature;
- real _factorCurvatureDifference;
- real _anisoPoint;
- real _anisoNormal;
- real _anisoCurvature;
- real _carricatureFactor;
+ int _nbIterations;
+ real _factorPoint;
+ real _factorCurvature;
+ real _factorCurvatureDifference;
+ real _anisoPoint;
+ real _anisoNormal;
+ real _anisoCurvature;
+ real _carricatureFactor;
};
class LIB_STROKE_EXPORT Smoother
{
public:
- Smoother (Stroke &ioStroke);
-
- virtual ~Smoother () {}
+ Smoother(Stroke &ioStroke);
+
+ virtual ~Smoother() {}
- void smooth (int nbIterations, real iFactorPoint, real ifactorCurvature, real iFactorCurvatureDifference,
- real iAnisoPoint, real iAnisoNormal, real iAnisoCurvature, real icarricatureFactor);
- void computeCurvature ();
+ void smooth(int nbIterations, real iFactorPoint, real ifactorCurvature, real iFactorCurvatureDifference,
+ real iAnisoPoint, real iAnisoNormal, real iAnisoCurvature, real icarricatureFactor);
+
+ void computeCurvature();
protected:
- real _factorPoint;
- real _factorCurvature;
- real _factorCurvatureDifference;
- real _anisoPoint;
- real _anisoNormal;
- real _anisoCurvature;
- real _carricatureFactor;
-
- void iteration();
- void copyVertices ();
-
- Stroke *_stroke;
- int _nbVertices;
- Vec2r *_vertex;
- Vec2r *_normal;
- real *_curvature;
- bool *_isFixedVertex;
-
- bool _isClosedCurve;
- bool _safeTest;
+ real _factorPoint;
+ real _factorCurvature;
+ real _factorCurvatureDifference;
+ real _anisoPoint;
+ real _anisoNormal;
+ real _anisoCurvature;
+ real _carricatureFactor;
+
+ void iteration();
+ void copyVertices ();
+
+ Stroke *_stroke;
+ int _nbVertices;
+ Vec2r *_vertex;
+ Vec2r *_normal;
+ real *_curvature;
+ bool *_isFixedVertex;
+
+ bool _isClosedCurve;
+ bool _safeTest;
};
-class LIB_STROKE_EXPORT Omitter : public Smoother
+class LIB_STROKE_EXPORT Omitter : public Smoother
{
public:
- Omitter (Stroke &ioStroke);
- virtual ~Omitter () {}
+ Omitter(Stroke &ioStroke);
+
+ virtual ~Omitter() {}
+
+ void omit(real sizeWindow, real thrVari, real thrFlat, real lFlat);
- void omit (real sizeWindow, real thrVari, real thrFlat, real lFlat);
protected:
- real *_u;
+ real *_u;
- real _sizeWindow;
- real _thresholdVariation;
- real _thresholdFlat;
- real _lengthFlat;
+ real _sizeWindow;
+ real _thresholdVariation;
+ real _thresholdFlat;
+ real _lengthFlat;
};
-/*! Omission shader
- */
-class LIB_STROKE_EXPORT OmissionShader : public StrokeShader
+/*! Omission shader */
+class LIB_STROKE_EXPORT OmissionShader : public StrokeShader
{
public:
- OmissionShader (real sizeWindow, real thrVari, real thrFlat, real lFlat);
- virtual ~OmissionShader () {}
+ OmissionShader(real sizeWindow, real thrVari, real thrFlat, real lFlat);
+ virtual ~OmissionShader() {}
- virtual int shade(Stroke &ioStroke) const;
+ virtual int shade(Stroke &ioStroke) const;
protected:
-
- real _sizeWindow;
- real _thresholdVariation;
- real _thresholdFlat;
- real _lengthFlat;
+ real _sizeWindow;
+ real _thresholdVariation;
+ real _thresholdFlat;
+ real _lengthFlat;
};
-#endif // ADVANCEDSTROKESHADERS_H
+#endif // __FREESTYLE_ADVANCED_STROKE_SHADERS_H__