use const for readonly strings and set some functions to static
[blender.git] / source / gameengine / VideoTexture / Texture.h
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of VideoTexture library
4
5 Copyright (c) 2006 The Zdeno Ash Miklas
6
7 This program is free software; you can redistribute it and/or modify it under
8 the terms of the GNU Lesser General Public License as published by the Free Software
9 Foundation; either version 2 of the License, or (at your option) any later
10 version.
11
12 This program is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License along with
17 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
19 http://www.gnu.org/copyleft/lesser.txt.
20 -----------------------------------------------------------------------------
21 */
22
23 /** \file VideoTexture/Texture.h
24  *  \ingroup bgevideotex
25  */
26  
27 #if !defined TEXTURE_H
28 #define TEXTURE_H
29
30 #include <PyObjectPlus.h>
31 #include <structmember.h>
32
33 #include <DNA_image_types.h>
34 #include <BL_Texture.h>
35 #include <KX_BlenderMaterial.h>
36
37 #include "ImageBase.h"
38 #include "BlendType.h"
39 #include "Exception.h"
40
41
42 // type Texture declaration
43 struct Texture
44 {
45         PyObject_HEAD
46
47         // texture is using blender material
48         bool m_useMatTexture;
49
50         // video texture bind code
51         unsigned int m_actTex;
52         // original texture bind code
53         unsigned int m_orgTex;
54         // original texture saved
55         bool m_orgSaved;
56
57         // texture image for game materials
58         Image * m_imgTexture;
59         // texture for blender materials
60         BL_Texture * m_matTexture;
61
62         // use mipmapping
63         bool m_mipmap;
64
65         // scaled image buffer
66         unsigned int * m_scaledImg;
67         // scaled image buffer size
68         unsigned int m_scaledImgSize;
69         // last refresh
70         double m_lastClock;
71
72         // image source
73         PyImage * m_source;
74 };
75
76
77 // Texture type description
78 extern PyTypeObject TextureType;
79
80 // load texture
81 void loadTexture (unsigned int texId, unsigned int * texture, short * size,
82                                   bool mipmap = false);
83
84 // get material
85 RAS_IPolyMaterial * getMaterial (PyObject *obj, short matID);
86
87 // get material ID
88 short getMaterialID (PyObject * obj, const char *name);
89
90 // Exceptions
91 extern ExceptionID MaterialNotAvail;
92
93 // object type
94 extern BlendType<KX_GameObject> gameObjectType;
95
96 #endif