198655c6ebf71d86b07cb4b981ca65360fb56d72
[blender.git] / source / gameengine / VideoTexture / ImageViewport.h
1 /*
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 /** \file ImageViewport.h
24  *  \ingroup bgevideotex
25  */
26  
27 #ifndef __IMAGEVIEWPORT_H__
28 #define __IMAGEVIEWPORT_H__
29
30
31 #include "Common.h"
32
33 #include "ImageBase.h"
34
35
36 /// class for viewport access
37 class ImageViewport : public ImageBase
38 {
39 public:
40         /// constructor
41         ImageViewport (void);
42
43         /// destructor
44         virtual ~ImageViewport (void);
45
46         /// is whole buffer used
47         bool getWhole (void) { return m_whole; }
48         /// set whole buffer use
49         void setWhole (bool whole);
50
51         /// is alpha channel used
52         bool getAlpha (void) { return m_alpha; }
53         /// set whole buffer use
54         void setAlpha (bool alpha) { m_alpha = alpha; }
55
56         /// get capture size in viewport
57         short * getCaptureSize (void) { return m_capSize; }
58         /// set capture size in viewport
59         void setCaptureSize (short * size = NULL);
60
61         /// get position in viewport
62         GLint * getPosition (void) { return m_position; }
63         /// set position in viewport
64         void setPosition (GLint * pos = NULL);
65
66 protected:
67         /// frame buffer rectangle
68         GLint m_viewport[4];
69
70         /// size of captured area
71         short m_capSize[2];
72         /// use whole viewport
73         bool m_whole;
74         /// use alpha channel
75         bool m_alpha;
76
77         /// position of capture rectangle in viewport
78         GLint m_position[2];
79         /// upper left point for capturing
80         GLint m_upLeft[2];
81
82         /// buffer to copy viewport
83         BYTE * m_viewportImage;
84         /// texture is initialized
85         bool m_texInit;
86
87         /// capture image from viewport
88         virtual void calcImage (unsigned int texId, double ts);
89
90         /// get viewport size
91         GLint * getViewportSize (void) { return m_viewport + 2; }
92 };
93
94 PyObject *ImageViewport_getCaptureSize (PyImage *self, void *closure);
95 int ImageViewport_setCaptureSize (PyImage *self, PyObject *value, void *closure);
96 PyObject *ImageViewport_getWhole (PyImage *self, void *closure);
97 int ImageViewport_setWhole (PyImage *self, PyObject *value, void *closure);
98 PyObject *ImageViewport_getAlpha (PyImage *self, void *closure);
99 int ImageViewport_setAlpha (PyImage *self, PyObject *value, void *closure);
100
101 #endif
102