VideoTexture module.
[blender-staging.git] / source / gameengine / VideoTexture / ImageRender.h
1 /* $Id$
2 -----------------------------------------------------------------------------
3 This source file is part of VideoTexture library
4
5 Copyright (c) 2007 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 #if !defined IMAGERENDER_H
24 #define IMAGERENDER_H
25
26
27 #include "Common.h"
28
29 #include <KX_Scene.h>
30 #include <KX_Camera.h>
31 #include <DNA_screen_types.h>
32 #include <RAS_ICanvas.h>
33 #include <RAS_IRasterizer.h>
34 #include <RAS_IRenderTools.h>
35
36 #include "ImageViewport.h"
37
38
39 /// class for render 3d scene
40 class ImageRender : public ImageViewport
41 {
42 public:
43         /// constructor
44         ImageRender (KX_Scene * scene, KX_Camera * camera);
45
46         /// destructor
47         virtual ~ImageRender (void);
48
49         /// get background color
50         unsigned char * getBackground (void) { return m_background; }
51         /// set background color
52         void setBackground (unsigned char red, unsigned char green, unsigned char blue);
53
54 protected:
55         /// rendered scene
56         KX_Scene * m_scene;
57         /// camera for render
58         KX_Camera * m_camera;
59
60         /// screen area for rendering
61         ScrArea m_area;
62         /// rendering device
63         RAS_ICanvas * m_canvas;
64         /// rasterizer
65         RAS_IRasterizer * m_rasterizer;
66         /// render tools
67         RAS_IRenderTools * m_rendertools;
68
69         /// background colour
70         unsigned char m_background[3];
71
72
73         /// render 3d scene to image
74         virtual void calcImage (unsigned int texId);
75
76         /// refresh lights
77         void refreshLights (void);
78         /// methods from KX_KetsjiEngine
79         bool BeginFrame();
80         void EndFrame();
81         void Render();
82         void SetupRenderFrame(KX_Scene *scene, KX_Camera* cam);
83         void RenderFrame(KX_Scene* scene, KX_Camera* cam);
84         void SetBackGround(KX_WorldInfo* wi);
85         void SetWorldSettings(KX_WorldInfo* wi);
86 };
87
88
89 #endif
90