diff options
Diffstat (limited to 'source/blender/freestyle/intern/image/ImagePyramid.h')
-rw-r--r-- | source/blender/freestyle/intern/image/ImagePyramid.h | 144 |
1 files changed, 73 insertions, 71 deletions
diff --git a/source/blender/freestyle/intern/image/ImagePyramid.h b/source/blender/freestyle/intern/image/ImagePyramid.h index 023361a1d69..0e388fdf20c 100644 --- a/source/blender/freestyle/intern/image/ImagePyramid.h +++ b/source/blender/freestyle/intern/image/ImagePyramid.h @@ -27,89 +27,91 @@ #include "../system/FreestyleConfig.h" #ifdef WITH_CXX_GUARDEDALLOC -#include "MEM_guardedalloc.h" +# include "MEM_guardedalloc.h" #endif namespace Freestyle { class GrayImage; -class ImagePyramid -{ -protected: - 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(); - } +class ImagePyramid { + protected: + 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(); + } #ifdef WITH_CXX_GUARDEDALLOC - MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:ImagePyramid") + MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:ImagePyramid") #endif }; -class GaussianPyramid : public ImagePyramid -{ -protected: - float _sigma; - -public: - 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 */ +class GaussianPyramid : public ImagePyramid { + protected: + float _sigma; + + public: + 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 */ }; } /* namespace Freestyle */ -#endif // __IMAGEPYRAMID_H__ +#endif // __IMAGEPYRAMID_H__ |