diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-12-22 22:25:01 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-12-22 22:25:01 +0400 |
commit | fa0211df269a3398dd70467982f9e129c79e501b (patch) | |
tree | 404ee267890602b49470cb640986b50d2c2055c1 /source/blender/freestyle/intern/image/ImagePyramid.h | |
parent | 8b57a67f3eb57366c2b3abcb8f3b04403d339e1a (diff) |
Another "insanely" big code clean-up patch by Bastien Montagne, many thanks!
Diffstat (limited to 'source/blender/freestyle/intern/image/ImagePyramid.h')
-rw-r--r-- | source/blender/freestyle/intern/image/ImagePyramid.h | 182 |
1 files changed, 103 insertions, 79 deletions
diff --git a/source/blender/freestyle/intern/image/ImagePyramid.h b/source/blender/freestyle/intern/image/ImagePyramid.h index 9e326757f02..4bab663318e 100644 --- a/source/blender/freestyle/intern/image/ImagePyramid.h +++ b/source/blender/freestyle/intern/image/ImagePyramid.h @@ -1,92 +1,116 @@ -// -// Filename : ImagePyramid.h -// Author(s) : Stephane Grabli -// Purpose : Class to represent a pyramid of images -// Date of creation : 25/12/2003 -// -/////////////////////////////////////////////////////////////////////////////// - - -// -// 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 IMAGEPYRAMID_H -# define IMAGEPYRAMID_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 __IMAGEPYRAMID_H__ +#define __IMAGEPYRAMID_H__ + +/** \file blender/freestyle/intern/image/ImagePyramid.h + * \ingroup freestyle + * \brief Class to represent a pyramid of images + * \author Stephane Grabli + * \date 25/12/2003 + */ -#include "../system/FreestyleConfig.h" #include <vector> +#include "../system/FreestyleConfig.h" + class GrayImage; -class LIB_IMAGE_EXPORT ImagePyramid{ + +class LIB_IMAGE_EXPORT ImagePyramid +{ protected: - std::vector<GrayImage*> _levels; - + std::vector<GrayImage*> _levels; + public: - ImagePyramid(){} - ImagePyramid(const ImagePyramid& iBrother); - //ImagePyramid(const GrayImage& level0, unsigned nbLevels); - virtual ~ImagePyramid(); - - /*! Builds the pyramid. - * must be overloaded by inherited classes. - * if nbLevels==0, the complete pyramid is built - */ - virtual void BuildPyramid(const GrayImage& level0, unsigned nbLevels) = 0; - - /*! Builds a pyramid without copying the base level */ - virtual void BuildPyramid(GrayImage* level0, unsigned nbLevels) = 0; - - virtual GrayImage * getLevel(int l); - /*! Returns the pixel x,y using bilinear interpolation. - * \param x - * the abscissa specified in the finest level coordinate system - * \param y - * the ordinate specified in the finest level coordinate system - * \param level - * the level from which we want the pixel to be evaluated - */ - virtual float pixel(int x, int y, int level=0); - /*! Returns the width of the level-th level image */ - virtual int width(int level=0); - /*! Returns the height of the level-th level image */ - virtual int height(int level=0); - /*! Returns the number of levels in the pyramid */ - inline int getNumberOfLevels() const { return _levels.size();} -}; + ImagePyramid(){} + ImagePyramid(const ImagePyramid& iBrother); + //ImagePyramid(const GrayImage& level0, unsigned nbLevels); + virtual ~ImagePyramid(); + + /*! Builds the pyramid. + * must be overloaded by inherited classes. + * if nbLevels==0, the complete pyramid is built + */ + virtual void BuildPyramid(const GrayImage& level0, unsigned nbLevels) = 0; + + /*! Builds a pyramid without copying the base level */ + virtual void BuildPyramid(GrayImage* level0, unsigned nbLevels) = 0; + + virtual GrayImage * getLevel(int l); + /*! Returns the pixel x,y using bilinear interpolation. + * \param x + * the abscissa specified in the finest level coordinate system + * \param y + * the ordinate specified in the finest level coordinate system + * \param level + * the level from which we want the pixel to be evaluated + */ + virtual float pixel(int x, int y, int level=0); + + /*! Returns the width of the level-th level image */ + virtual int width(int level=0); + + /*! Returns the height of the level-th level image */ + virtual int height(int level=0); + + /*! Returns the number of levels in the pyramid */ + inline int getNumberOfLevels() const + { + return _levels.size(); + } +}; class LIB_IMAGE_EXPORT GaussianPyramid : public ImagePyramid { protected: - float _sigma; + float _sigma; + public: - GaussianPyramid(float iSigma=1.f) : ImagePyramid() {_sigma=iSigma;} - GaussianPyramid(const GrayImage& level0, unsigned nbLevels, float iSigma=1.f); - GaussianPyramid(GrayImage* level0, unsigned nbLevels, float iSigma=1.f); - GaussianPyramid(const GaussianPyramid& iBrother); - virtual ~GaussianPyramid(){} - - virtual void BuildPyramid(const GrayImage& level0, unsigned nbLevels); - virtual void BuildPyramid(GrayImage* level0, unsigned nbLevels); - /* accessors */ - inline float getSigma() const {return _sigma;} - /* modifiers */ + GaussianPyramid(float iSigma=1.f) : ImagePyramid() + { + _sigma = iSigma; + } + + GaussianPyramid(const GrayImage& level0, unsigned nbLevels, float iSigma=1.0f); + GaussianPyramid(GrayImage* level0, unsigned nbLevels, float iSigma=1.0f); + GaussianPyramid(const GaussianPyramid& iBrother); + virtual ~GaussianPyramid() {} + + virtual void BuildPyramid(const GrayImage& level0, unsigned nbLevels); + virtual void BuildPyramid(GrayImage* level0, unsigned nbLevels); + /* accessors */ + inline float getSigma() const + { + return _sigma; + } + + /* modifiers */ }; -#endif // IMAGEPYRAMID_H + +#endif // __IMAGEPYRAMID_H__ |