diff options
Diffstat (limited to 'source/blender/freestyle/intern/stroke/StrokeRenderer.h')
-rw-r--r-- | source/blender/freestyle/intern/stroke/StrokeRenderer.h | 219 |
1 files changed, 116 insertions, 103 deletions
diff --git a/source/blender/freestyle/intern/stroke/StrokeRenderer.h b/source/blender/freestyle/intern/stroke/StrokeRenderer.h index c7c6df635d5..ab451a14496 100644 --- a/source/blender/freestyle/intern/stroke/StrokeRenderer.h +++ b/source/blender/freestyle/intern/stroke/StrokeRenderer.h @@ -1,43 +1,49 @@ -// -// Filename : StrokeRenderer.h -// Author(s) : Fredo Durand -// Purpose : Classes to render a stroke with OpenGL -// Date of creation : 09/09/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 STROKE_RENDERER_H -# define STROKE_RENDERER_H - -# include "Stroke.h" -# include <vector> -# include <map> -# include <utility> -# include "../system/FreestyleConfig.h" -# include "StrokeRep.h" -# include <string.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_STROKE_RENDERER_H__ +#define __FREESTYLE_STROKE_RENDERER_H__ + +/** \file blender/freestyle/intern/stroke/StrokeRenderer.h + * \ingroup freestyle + * \brief Classes to render a stroke with OpenGL + * \author Fredo Durand + * \date 09/09/2002 + */ +#include <map> +#include <string.h> +#include <utility> +#include <vector> + +#include "Stroke.h" +#include "StrokeRep.h" + +#include "../system/FreestyleConfig.h" /**********************************/ /* */ @@ -48,53 +54,64 @@ /**********************************/ -/*! Class to load textures - */ +/*! Class to load textures */ class LIB_STROKE_EXPORT TextureManager { public: - - TextureManager (); - virtual ~TextureManager (); - static TextureManager * getInstance() {return _pInstance;} - void load () ; - unsigned getBrushTextureIndex(string name, Stroke::MediumType iType = Stroke::OPAQUE_MEDIUM) ; - - inline bool hasLoaded() const {return _hasLoadedTextures;} - inline unsigned int getDefaultTextureId() const {return _defaultTextureId;} - - struct LIB_STROKE_EXPORT Options - { - - static void setPatternsPath(const string& path); - static string getPatternsPath(); - - static void setBrushesPath(const string& path); - static string getBrushesPath(); - }; - - protected: - virtual void loadStandardBrushes() = 0; - virtual unsigned loadBrush(string fileName, Stroke::MediumType = Stroke::OPAQUE_MEDIUM) = 0; - - typedef std::pair<string,Stroke::MediumType> BrushTexture; - struct cmpBrushTexture{ - bool operator()(const BrushTexture& bt1, const BrushTexture& bt2) const{ - int r = strcmp(bt1.first.c_str(), bt2.first.c_str()); - if(r != 0) - return (r<0); - else - return (bt1.second < bt2.second); - } - }; - typedef std::map<BrushTexture, unsigned, cmpBrushTexture> brushesMap; - - static TextureManager * _pInstance; - bool _hasLoadedTextures; - brushesMap _brushesMap; - static string _patterns_path; - static string _brushes_path; - unsigned int _defaultTextureId; + TextureManager (); + virtual ~TextureManager (); + + static TextureManager *getInstance() + { + return _pInstance; + } + + void load(); + unsigned getBrushTextureIndex(string name, Stroke::MediumType iType = Stroke::OPAQUE_MEDIUM); + + inline bool hasLoaded() const + { + return _hasLoadedTextures; + } + + inline unsigned int getDefaultTextureId() const + { + return _defaultTextureId; + } + + struct LIB_STROKE_EXPORT Options + { + static void setPatternsPath(const string& path); + static string getPatternsPath(); + + static void setBrushesPath(const string& path); + static string getBrushesPath(); + }; + +protected: + virtual void loadStandardBrushes() = 0; + virtual unsigned loadBrush(string fileName, Stroke::MediumType = Stroke::OPAQUE_MEDIUM) = 0; + + typedef std::pair<string,Stroke::MediumType> BrushTexture; + struct cmpBrushTexture + { + bool operator()(const BrushTexture& bt1, const BrushTexture& bt2) const + { + int r = strcmp(bt1.first.c_str(), bt2.first.c_str()); + if (r != 0) + return (r < 0); + else + return (bt1.second < bt2.second); + } + }; + typedef std::map<BrushTexture, unsigned, cmpBrushTexture> brushesMap; + + static TextureManager *_pInstance; + bool _hasLoadedTextures; + brushesMap _brushesMap; + static string _patterns_path; + static string _brushes_path; + unsigned int _defaultTextureId; }; @@ -106,27 +123,23 @@ public: /* */ /**********************************/ -/*! Class to render a stroke. - Creates a triangle strip and stores it - strip is lazily created at the first rendering -*/ +/*! Class to render a stroke. Creates a triangle strip and stores it strip is lazily created at the first rendering */ class LIB_STROKE_EXPORT StrokeRenderer { - public: - StrokeRenderer(); - virtual ~StrokeRenderer (); - - /*! Renders a stroke rep */ - virtual void RenderStrokeRep(StrokeRep *iStrokeRep) const = 0; - virtual void RenderStrokeRepBasic(StrokeRep *iStrokeRep) const = 0; - - // initializes the texture manager - // lazy, checks if it has already been done - static bool loadTextures() ; - - //static unsigned int getTextureIndex(unsigned int index) ; - static TextureManager *_textureManager; -}; +public: + StrokeRenderer(); + virtual ~StrokeRenderer(); + /*! Renders a stroke rep */ + virtual void RenderStrokeRep(StrokeRep *iStrokeRep) const = 0; + virtual void RenderStrokeRepBasic(StrokeRep *iStrokeRep) const = 0; + + // initializes the texture manager + // lazy, checks if it has already been done + static bool loadTextures(); + + //static unsigned int getTextureIndex(unsigned int index); + static TextureManager *_textureManager; +}; -#endif // STROKE_RENDERER_H +#endif // __FREESTYLE_STROKE_RENDERER_H__ |