BALL
1.4.2
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
BALL
VIEW
RENDERING
renderWindow.h
Go to the documentation of this file.
1
// -*- Mode: C++; tab-width: 2; -*-
2
// vi: set ts=2:
3
//
4
5
#ifndef BALL_VIEW_RENDERING_RENDERINGWINDOW_H
6
#define BALL_VIEW_RENDERING_RENDERINGWINDOW_H
7
8
#include <
BALL/COMMON/global.h
>
9
#include <
BALL/VIEW/RENDERING/renderTarget.h
>
10
11
#include <boost/static_assert.hpp>
12
#include <boost/type_traits/is_same.hpp>
13
15
#define BALLVIEW_IS_SAME_TYPE(aTypeA, aTypeB) (boost::is_same<aTypeA, aTypeB>::value)
16
18
#define BALLVIEW_STATIC_ASSERT_TYPE_IS_INT_OR_FLOAT(aType) \
19
BOOST_STATIC_ASSERT(BALLVIEW_IS_SAME_TYPE(aType, int) || BALLVIEW_IS_SAME_TYPE(aType, float))
20
21
namespace
BALL
22
{
23
namespace
VIEW
24
{
30
template
<
typename
taPixelDatatype>
31
class
BALL_VIEW_EXPORT
RenderWindow
:
public
RenderTarget
32
{
33
// only int or floats are allowed as template parameters
34
BALLVIEW_STATIC_ASSERT_TYPE_IS_INT_OR_FLOAT
(taPixelDatatype);
35
36
// type of the pixel buffer pointer
37
typedef
boost::shared_array<taPixelDatatype>
t_PixelPtr
;
38
39
public
:
40
41
RenderWindow
();
42
43
virtual
~
RenderWindow
();
44
45
/* Initialize window internals. After that call, window is ready to receive \link resize \endlink call
46
* returns false if the initialization fails
47
*/
48
virtual
bool
init();
49
56
virtual
bool
resize(
const
unsigned
int
width,
const
unsigned
int
height);
57
66
virtual
void
refresh();
67
68
69
/* =====================
70
* RenderTarget methods
71
* ===================== */
72
73
/*
74
* See \link RenderTarget \endlink for general description.
75
* In addition there is a precondition that \link init \endlink must be called before
76
* getBuffer. If not, \link NoBufferAvailable \endlink exception is thrown.
77
*/
78
virtual
FrameBufferPtr
getBuffer() throw(BALL::Exception::NoBufferAvailable);
79
80
/*
81
* See \link RenderTarget \endlink for description.
82
*/
83
virtual
FrameBufferFormat
getFormat() const;
84
85
/*
86
* See \link RenderTarget \endlink for description.
87
*/
88
virtual
void
releaseBuffer(
FrameBufferPtr
buffer);
89
90
/* Prepare the window for rendering, e.g., make it current if necessary.
91
*/
92
virtual
void
prepareRendering() {};
93
94
protected
:
95
t_PixelPtr m_pixels;
// raw pixel buffer
96
FrameBufferPtr
m_framebuffer
;
// frame buffer given out to the wild by getBuffer method
97
FrameBufferFormat
m_fmt
;
// description of the buffer format
98
const
PixelFormat
m_pfm
;
// pixel format of the window
99
bool
m_bufferLocked
;
// pixel buffer is being accessed by another object?
100
const
unsigned
int
m_minimalWidth
;
// minimum with the window can have
101
const
unsigned
int
m_minimalHeight
;
// minimum height the window can have
102
};
103
104
typedef
RenderWindow<float>
t_RenderWindow
;
105
106
}
// namespace VIEW
107
108
}
// namespace BALL
109
110
#endif // BALL_VIEW_RENDERING_RENDERINGWINDOW_H
Generated by
1.8.3.1