diff options
Diffstat (limited to 'source/blender/freestyle/intern/stroke/StrokeRep.h')
-rw-r--r-- | source/blender/freestyle/intern/stroke/StrokeRep.h | 305 |
1 files changed, 192 insertions, 113 deletions
diff --git a/source/blender/freestyle/intern/stroke/StrokeRep.h b/source/blender/freestyle/intern/stroke/StrokeRep.h index d8a8dc2d609..c8d84cb237a 100644 --- a/source/blender/freestyle/intern/stroke/StrokeRep.h +++ b/source/blender/freestyle/intern/stroke/StrokeRep.h @@ -1,138 +1,217 @@ -// -// Filename : StrokeRep.h -// Author(s) : Stephane Grabli -// Purpose : Class to define the representation of a stroke -// (for display purpose) -// Date of creation : 05/03/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 STROKEREP_H -# define STROKEREP_H - -# include "../geometry/Geom.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_REP_H__ +#define __FREESTYLE_STROKE_REP_H__ + +/** \file blender/freestyle/intern/stroke/StrokeRep.h + * \ingroup freestyle + * \brief Class to define the representation of a stroke (for display purpose) + * \author Stephane Grabli + * \date 05/03/2003 + */ + +#include "Stroke.h" + +#include "../geometry/Geom.h" + using namespace Geometry; +#if 0 //symbolic constant to call the appropriate renderers and textures -// # define NO_TEXTURE_WITH_BLEND_STROKE -2 -// # define NO_TEXTURE_STROKE -1 -// # define PSEUDO_CHARCOAL_STROKE 0 -// # define WASH_BRUSH_STROKE 1 -// # define OIL_STROKE 2 -// # define NO_BLEND_STROKE 3 -// # define CHARCOAL_MIN_STROKE 4 -// # define BRUSH_MIN_STROKE 5 -// # define OPAQUE_DRY_STROKE 6 -// # define OPAQUE_STROKE 7 -// -// # define DEFAULT_STROKE 0 -// -// # define NUMBER_STROKE_RENDERER 8 +#define NO_TEXTURE_WITH_BLEND_STROKE -2 +#define NO_TEXTURE_STROKE -1 +#define PSEUDO_CHARCOAL_STROKE 0 +#define WASH_BRUSH_STROKE 1 +#define OIL_STROKE 2 +#define NO_BLEND_STROKE 3 +#define CHARCOAL_MIN_STROKE 4 +#define BRUSH_MIN_STROKE 5 +#define OPAQUE_DRY_STROKE 6 +#define OPAQUE_STROKE 7 -#include "Stroke.h" +#define DEFAULT_STROKE 0 + +#define NUMBER_STROKE_RENDERER 8 + +#endif -class StrokeVertexRep{ +class StrokeVertexRep +{ public: - StrokeVertexRep(){} - StrokeVertexRep(const Vec2r& iPoint2d){_point2d=iPoint2d;} - StrokeVertexRep(const StrokeVertexRep& iBrother); - virtual ~StrokeVertexRep(){} - - inline Vec2r& point2d() {return _point2d;} - inline Vec2r& texCoord() {return _texCoord;} - inline Vec3r& color() {return _color;} - inline float alpha() {return _alpha;} - - inline void setPoint2d(const Vec2r& p){_point2d = p;} - inline void setTexCoord(const Vec2r& p){_texCoord = p;} - inline void setColor(const Vec3r& p){_color = p;} - inline void setAlpha(float a){_alpha = a;} + StrokeVertexRep(){} + + StrokeVertexRep(const Vec2r& iPoint2d) + { + _point2d = iPoint2d; + } + + StrokeVertexRep(const StrokeVertexRep& iBrother); + + virtual ~StrokeVertexRep(){} + + inline Vec2r& point2d() + { + return _point2d; + } + + inline Vec2r& texCoord() + { + return _texCoord; + } + + inline Vec3r& color() + { + return _color; + } + + inline float alpha() + { + return _alpha; + } + + inline void setPoint2d(const Vec2r& p) + { + _point2d = p; + } + + inline void setTexCoord(const Vec2r& p) + { + _texCoord = p; + } + + inline void setColor(const Vec3r& p) + { + _color = p; + } + + inline void setAlpha(float a) + { + _alpha = a; + } + protected: - Vec2r _point2d; - Vec2r _texCoord; - Vec3r _color; - float _alpha; + Vec2r _point2d; + Vec2r _texCoord; + Vec3r _color; + float _alpha; }; -class Strip{ -public: - typedef std::vector<StrokeVertexRep*> vertex_container; -protected: - vertex_container _vertices; - float _averageThickness; +class Strip +{ +public: + typedef std::vector<StrokeVertexRep*> vertex_container; +protected: + vertex_container _vertices; + float _averageThickness; public: - Strip(const std::vector<StrokeVertex*>& iStrokeVertices, bool hasTips=false, bool tipBegin=false, bool tipEnd=false) ; - Strip(const Strip& iBrother); - virtual ~Strip() ; + Strip(const std::vector<StrokeVertex*>& iStrokeVertices, bool hasTips = false, + bool tipBegin = false, bool tipEnd = false); + Strip(const Strip& iBrother); + virtual ~Strip(); protected: - void createStrip(const std::vector<StrokeVertex*>& iStrokeVertices); - void cleanUpSingularities(const std::vector<StrokeVertex*>& iStrokeVertices); - void computeTexCoord (const std::vector<StrokeVertex*>& iStrokeVertices); - void computeTexCoordWithTips (const std::vector<StrokeVertex*>& iStrokeVertices, bool tipBegin, bool tipEnd); + void createStrip(const std::vector<StrokeVertex*>& iStrokeVertices); + void cleanUpSingularities(const std::vector<StrokeVertex*>& iStrokeVertices); + void computeTexCoord (const std::vector<StrokeVertex*>& iStrokeVertices); + void computeTexCoordWithTips (const std::vector<StrokeVertex*>& iStrokeVertices, bool tipBegin, bool tipEnd); + public: - inline int sizeStrip() const {return _vertices.size();} - inline vertex_container& vertices() {return _vertices;} + inline int sizeStrip() const + { + return _vertices.size(); + } + + inline vertex_container& vertices() + { + return _vertices; + } }; class StrokeRep { protected: - Stroke *_stroke; - vector<Strip*> _strips; - Stroke::MediumType _strokeType; - unsigned int _textureId; + Stroke *_stroke; + vector<Strip*> _strips; + Stroke::MediumType _strokeType; + unsigned int _textureId; - // float _averageTextureAlpha; - + // float _averageTextureAlpha; public: - StrokeRep(); - StrokeRep(const StrokeRep&); - StrokeRep(Stroke *iStroke); - virtual ~StrokeRep(); - - /*! Creates the strips */ - virtual void create() ; - - /*! Renders the stroke using a Renderer */ - virtual void Render(const StrokeRenderer *iRenderer) ; - - /*! accessors */ - inline Stroke::MediumType getMediumType() const {return _strokeType;} - inline unsigned getTextureId() const {return _textureId;} - inline vector<Strip*>& getStrips() {return _strips;} - inline unsigned int getNumberOfStrips() const {return _strips.size();} - inline Stroke * getStroke() {return _stroke;} - - /*! modifiers */ - inline void setMediumType(Stroke::MediumType itype) {_strokeType=itype;} - inline void setTextureId(unsigned textureId) {_textureId = textureId;} - - + StrokeRep(); + StrokeRep(const StrokeRep&); + StrokeRep(Stroke *iStroke); + virtual ~StrokeRep(); + + /*! Creates the strips */ + virtual void create(); + + /*! Renders the stroke using a Renderer */ + virtual void Render(const StrokeRenderer *iRenderer); + + /*! accessors */ + inline Stroke::MediumType getMediumType() const + { + return _strokeType; + } + + inline unsigned getTextureId() const + { + return _textureId; + } + + inline vector<Strip*>& getStrips() + { + return _strips; + } + + inline unsigned int getNumberOfStrips() const + { + return _strips.size(); + } + + inline Stroke * getStroke() + { + return _stroke; + } + + /*! modifiers */ + inline void setMediumType(Stroke::MediumType itype) + { + _strokeType = itype; + } + + inline void setTextureId(unsigned textureId) + { + _textureId = textureId; + } }; -#endif // STROKEREP_H +#endif // __FREESTYLE_STROKE_REP_H__ |