soc-2008-mxcurioni: merged changes to revision 14798, compilation works for rendering...
[blender.git] / source / blender / freestyle / intern / scene_graph / DrawingStyle.h
1 //
2 //  Filename         : DrawingStyle.h
3 //  Author(s)        : Stephane Grabli
4 //  Purpose          : Class to define the drawing style of a node
5 //  Date of creation : 10/10/2002
6 //
7 ///////////////////////////////////////////////////////////////////////////////
8
9
10 //
11 //  Copyright (C) : Please refer to the COPYRIGHT file distributed 
12 //   with this source distribution. 
13 //
14 //  This program is free software; you can redistribute it and/or
15 //  modify it under the terms of the GNU General Public License
16 //  as published by the Free Software Foundation; either version 2
17 //  of the License, or (at your option) any later version.
18 //
19 //  This program is distributed in the hope that it will be useful,
20 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
21 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 //  GNU General Public License for more details.
23 //
24 //  You should have received a copy of the GNU General Public License
25 //  along with this program; if not, write to the Free Software
26 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
27 //
28 ///////////////////////////////////////////////////////////////////////////////
29
30 #ifndef  DRAWINGSTYLE_H
31 # define DRAWINGSTYLE_H
32
33 class DrawingStyle
34 {
35 public:
36   enum STYLE
37   {FILLED, LINES, POINTS, INVISIBLE};
38   
39   inline DrawingStyle() {Style = FILLED; LineWidth = 2.f; PointSize = 2.f; LightingEnabled = true;}
40   inline explicit DrawingStyle(const DrawingStyle& iBrother);
41   
42   virtual ~DrawingStyle() {}
43
44   /*! operators */
45   inline DrawingStyle& operator=(const DrawingStyle& ds);
46   
47   inline void SetStyle(const STYLE iStyle) {Style = iStyle;}
48   inline void SetLineWidth(const float iLineWidth) {LineWidth = iLineWidth;}
49   inline void SetPointSize(const float iPointSize) {PointSize = iPointSize;}
50   inline void SetLightingEnabled(const bool on) {LightingEnabled = on;}
51
52   inline STYLE style() const {return Style;}
53   inline float lineWidth() const {return LineWidth;}
54   inline float pointSize() const {return PointSize;}
55   inline bool lightingEnabled() const {return LightingEnabled;}
56
57 private:
58   STYLE Style;
59   float LineWidth;
60   float PointSize;
61   bool LightingEnabled;
62 };
63
64 DrawingStyle::DrawingStyle(const DrawingStyle& iBrother)
65 {
66   Style           = iBrother.Style;
67   LineWidth       = iBrother.LineWidth;
68   PointSize       = iBrother.PointSize;
69   LightingEnabled = iBrother.LightingEnabled;
70 }
71
72 DrawingStyle& DrawingStyle::operator=(const DrawingStyle& ds)
73 {
74   Style           = ds.Style;
75   LineWidth       = ds.LineWidth;
76   PointSize       = ds.PointSize;
77   LightingEnabled = ds.LightingEnabled;
78
79   return *this;
80 }
81
82 #endif // DRAWINGSTYLE_H