]> git.jsancho.org Git - c-irrlicht.git/blob - include/IVideoDriver.h
Use structs with casting, without classes replication
[c-irrlicht.git] / include / IVideoDriver.h
1 /* c-irrlicht --- C bindings for Irrlicht Engine
2
3    Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
4
5    This file is part of c-irrlicht.
6
7    c-irrlicht is free software; you can redistribute it and/or modify
8    it under the terms of the GNU Lesser General Public License as
9    published by the Free Software Foundation; either version 3 of the
10    License, or (at your option) any later version.
11
12    c-irrlicht is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16
17    You should have received a copy of the GNU Lesser General Public
18    License along with guile-irrlicht.  If not, see
19    <http://www.gnu.org/licenses/>.
20 */
21
22 #ifndef __C_I_VIDEO_DRIVER_H_INCLUDED__
23 #define __C_I_VIDEO_DRIVER_H_INCLUDED__
24
25 #include <inttypes.h>
26 #include <stdbool.h>
27
28 #include "EPrimitiveTypes.h"
29 #include "ITexture.h"
30 #include "matrix4.h"
31 #include "rect.h"
32 #include "S3DVertex.h"
33 #include "SColor.h"
34 #include "SExposedVideoData.h"
35 #include "SMaterial.h"
36 #include "SVertexIndex.h"
37
38 //! enumeration for geometry transformation states
39 typedef enum
40   {
41    //! View transformation
42    irr_video_ETS_VIEW = 0,
43    //! World transformation
44    irr_video_ETS_WORLD,
45    //! Projection transformation
46    irr_video_ETS_PROJECTION,
47    //! Texture transformation
48    irr_video_ETS_TEXTURE_0,
49    //! Texture transformation
50    irr_video_ETS_TEXTURE_1,
51    //! Texture transformation
52    irr_video_ETS_TEXTURE_2,
53    //! Texture transformation
54    irr_video_ETS_TEXTURE_3,
55 #if _C_IRR_MATERIAL_MAX_TEXTURES_>4
56    //! Texture transformation
57    irr_video_ETS_TEXTURE_4,
58 #if _C_IRR_MATERIAL_MAX_TEXTURES_>5
59    //! Texture transformation
60    irr_video_ETS_TEXTURE_5,
61 #if _C_IRR_MATERIAL_MAX_TEXTURES_>6
62    //! Texture transformation
63    irr_video_ETS_TEXTURE_6,
64 #if _C_IRR_MATERIAL_MAX_TEXTURES_>7
65    //! Texture transformation
66    irr_video_ETS_TEXTURE_7,
67 #endif
68 #endif
69 #endif
70 #endif
71    //! Not used
72    irr_video_ETS_COUNT
73   } irr_video_E_TRANSFORMATION_STATE;
74
75 // types
76 typedef void irr_video_IVideoDriver;
77
78 #ifdef __cplusplus
79 extern "C" {
80 #endif
81
82   int
83   irr_video_beginScene(irr_video_IVideoDriver* driver,
84                        bool backBuffer,
85                        bool zBuffer,
86                        const irr_video_SColor* color,
87                        irr_video_SExposedVideoData* videoData,
88                        const irr_core_rect_s32* sourceRect);
89
90   void
91   irr_video_drawVertexPrimitiveList(irr_video_IVideoDriver* driver,
92                                     const void* vertices,
93                                     uint32_t vertexCount,
94                                     const void* indexList,
95                                     uint32_t primCount,
96                                     irr_video_E_VERTEX_TYPE vType,
97                                     irr_scene_E_PRIMITIVE_TYPE pType,
98                                     irr_video_E_INDEX_TYPE iType);
99
100   int
101   irr_video_endScene(irr_video_IVideoDriver* driver);
102
103   int
104   irr_video_getFPS(irr_video_IVideoDriver* driver);
105
106   const char*
107   irr_video_getName(irr_video_IVideoDriver* driver);
108
109   irr_video_ITexture*
110   irr_video_getTexture(irr_video_IVideoDriver* driver,
111                        const char* filename);
112
113   void
114   irr_video_setMaterial(irr_video_IVideoDriver* driver,
115                         irr_video_SMaterial* material);
116
117   void
118   irr_video_setTransform(irr_video_IVideoDriver* driver,
119                          irr_video_E_TRANSFORMATION_STATE state,
120                          irr_core_matrix4* mat);
121
122 #ifdef __cplusplus
123 }
124 #endif
125
126 #endif