soc-2008-mxcurioni: first version of lib3ds code. It does NOT work yet and has to...
[blender.git] / source / blender / freestyle / intern / stroke / StrokeTesselator.h
1 //
2 //  Filename         : StrokeTesselator.h
3 //  Author(s)        : Stephane Grabli
4 //  Purpose          : Class to build a Node Tree designed to be displayed 
5 //                     from a set of strokes structure.
6 //  Date of creation : 26/03/2002
7 //
8 ///////////////////////////////////////////////////////////////////////////////
9
10
11 //
12 //  Copyright (C) : Please refer to the COPYRIGHT file distributed 
13 //   with this source distribution. 
14 //
15 //  This program is free software; you can redistribute it and/or
16 //  modify it under the terms of the GNU General Public License
17 //  as published by the Free Software Foundation; either version 2
18 //  of the License, or (at your option) any later version.
19 //
20 //  This program is distributed in the hope that it will be useful,
21 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
22 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23 //  GNU General Public License for more details.
24 //
25 //  You should have received a copy of the GNU General Public License
26 //  along with this program; if not, write to the Free Software
27 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
28 //
29 ///////////////////////////////////////////////////////////////////////////////
30
31 #ifndef  STROKETESSELATOR_H
32 # define STROKETESSELATOR_H
33
34 # include "../scene_graph/LineRep.h"
35 # include "Stroke.h"
36
37 class StrokeTesselator
38 {
39 public:
40
41   inline StrokeTesselator() {_FrsMaterial.setDiffuse(0,0,0,1);_overloadFrsMaterial=false;}
42   virtual ~StrokeTesselator() {}
43
44   /*! Builds a line rep contained from a Stroke
45    */
46   LineRep* Tesselate(Stroke* iStroke) ;
47
48   /*! Builds a set of lines rep contained under a 
49    *  a NodeShape, itself contained under a NodeGroup from a 
50    *  set of strokes
51    */
52   template<class StrokeIterator>
53   NodeGroup* Tesselate(StrokeIterator begin, StrokeIterator end) ;
54
55   
56   
57   inline void setFrsMaterial(const FrsMaterial& iMaterial) {_FrsMaterial=iMaterial;_overloadFrsMaterial=true;}
58   inline const FrsMaterial& frs_material() const {return _FrsMaterial;}
59
60 private:
61
62   FrsMaterial _FrsMaterial;
63   bool _overloadFrsMaterial;
64 };
65
66 #endif // STROKETESSELATOR_H
67