soc-2008-mxcurioni: merged changes to revision 14967
[blender.git] / source / blender / freestyle / intern / rendering / GLStrokeRenderer.h
1 //
2 //  Filename         : GLStrokeRenderer.h
3 //  Author(s)        : Stephane Grabli
4 //  Purpose          : Class to define the GL stroke renderer.
5 //  Date of creation : 05/03/2003
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  GLSTROKERENDERER_H
31 # define GLSTROKERENDERER_H
32
33 # include "../system/FreestyleConfig.h"
34 # include "../stroke/StrokeRenderer.h"
35 # include "../stroke/StrokeRep.h"
36
37
38 # ifdef WIN32
39 #  include <windows.h>
40 # endif
41 # ifdef __MACH__
42 #  include <OpenGL/gl.h>
43 # else
44 #  include <GL/gl.h>
45 # endif
46
47 /**********************************/
48 /*                                */
49 /*                                */
50 /*         GLTextureManager       */
51 /*                                */
52 /*                                */
53 /**********************************/
54
55 /*! Class to load textures
56  */
57 class LIB_RENDERING_EXPORT GLTextureManager : public TextureManager
58 {
59  public:
60   GLTextureManager ();
61   virtual ~GLTextureManager ();
62 protected:
63   virtual unsigned loadBrush(string fileName, Stroke::MediumType = Stroke::OPAQUE_MEDIUM);
64   
65  protected:
66   virtual void loadPapers();
67   virtual void loadStandardBrushes();
68   bool prepareTextureAlpha (string name, GLuint itexname);
69   bool prepareTextureLuminance (string name, GLuint itexname);
70   bool prepareTextureLuminanceAndAlpha (string name, GLuint itexname);
71   bool preparePaper (const char *name, GLuint itexname);
72 };
73
74
75
76 /**********************************/
77 /*                                */
78 /*                                */
79 /*         GLStrokeRenderer       */
80 /*                                */
81 /*                                */
82 /**********************************/
83
84 class LIB_RENDERING_EXPORT GLStrokeRenderer : public StrokeRenderer
85 {
86 public:
87   GLStrokeRenderer();
88   virtual ~GLStrokeRenderer();
89
90   /*! Renders a stroke rep */
91   virtual void RenderStrokeRep(StrokeRep *iStrokeRep) const;
92   virtual void RenderStrokeRepBasic(StrokeRep *iStrokeRep) const;
93
94 protected:
95   //void renderNoTexture(StrokeRep *iStrokeRep) const;
96 };
97
98 #endif // GLSTROKERENDERER_H