EGLplus (0.52.0) a C++ wrapper for EGL

initializer.hpp
Go to the documentation of this file.
1 
12 #pragma once
13 #ifndef EGLPLUS_INITIALIZER_1305291005_HPP
14 #define EGLPLUS_INITIALIZER_1305291005_HPP
15 
16 #include <eglplus/display.hpp>
17 #include <eglplus/eglfunc.hpp>
18 #include <eglplus/error/basic.hpp>
19 #include <eglplus/string_query.hpp>
20 
21 #include <eglplus/detail/sep_str_range.hpp>
22 
23 namespace eglplus {
24 
27 {
28 private:
29  Display _display;
30  EGLint _major, _minor;
31  bool _initialized;
32 
34 
35  bool _initialize(void)
36  {
37  bool result = EGLPLUS_EGLFUNC(Initialize)(
38  GetEGLHandle(_display),
39  &_major,
40  &_minor
41  ) == EGL_TRUE;
42  EGLPLUS_CHECK_SIMPLE(Initialize);
43  return result;
44  }
45 public:
47 
54  : _display()
55  , _initialized(_initialize())
56  { }
57 
59 
63  EGLInitializer(const Display& display)
64  : _display(display)
65  , _initialized(_initialize())
66  { }
67 
70  : _display(tmp._display)
71  , _major(tmp._major)
72  , _minor(tmp._minor)
73  , _initialized(tmp._initialized)
74  {
75  tmp._initialized = false;
76  }
77 
79 
84  {
85  if(_initialized)
86  {
87  EGLPLUS_EGLFUNC(Terminate)(GetEGLHandle(_display));
88  EGLPLUS_VERIFY_SIMPLE(Terminate);
89  }
90  }
91 
93  const Display& AssociatedDisplay(void) const
94  {
95  return _display;
96  }
97 
99  const Display& Disp(void) const
100  {
101  return _display;
102  }
103 
105 
109  EGLint VersionMajor(void) const
110  {
111  return _major;
112  }
113 
115 
119  EGLint VersionMinor(void) const
120  {
121  return _minor;
122  }
123 
125 
129  const char* QueryString(StringQuery query) const
130  {
131  assert(_initialized);
132  const char* result = EGLPLUS_EGLFUNC(QueryString)(
133  GetEGLHandle(_display),
134  EGLint(query)
135  );
136  EGLPLUS_VERIFY_SIMPLE(QueryString);
137  return result;
138  }
139 
141 
146  const char* Vendor(void) const
147  {
149  }
150 
152 
157  const char* Version(void) const
158  {
160  }
161 
162 #if EGLPLUS_DOCUMENTATION_ONLY
163 
169  Range<String> ClientAPIs(void) const;
170 #else
171  aux::SepStrRange ClientAPIs(void) const
172  {
173  return aux::SepStrRange(QueryString(StringQuery::ClientAPIs));
174  }
175 #endif
176 
177 #if EGLPLUS_DOCUMENTATION_ONLY
178 
184  Range<String> Extensions(void) const;
185 #else
186  aux::SepStrRange Extensions(void) const
187  {
188  return aux::SepStrRange(QueryString(StringQuery::Extensions));
189  }
190 #endif
191 
193 
198  static bool HasClientExtensions(void)
199  {
200  const char* ext_str = EGLPLUS_EGLFUNC(QueryString)(
201  EGL_NO_DISPLAY,
202  EGLint(EGL_EXTENSIONS)
203  );
204  EGLint err_c = EGLPLUS_EGLFUNC(GetError)();
205  return (err_c == EGL_SUCCESS) && (ext_str != nullptr);
206  }
207 
208 #if EGLPLUS_DOCUMENTATION_ONLY
209 
217  static Range<String> ClientExtensions(void);
218 #else
219  static aux::SepStrRange ClientExtensions(void)
220  {
221  const char* ext_str = EGLPLUS_EGLFUNC(QueryString)(
222  EGL_NO_DISPLAY,
223  EGLint(EGL_EXTENSIONS)
224  );
225  EGLPLUS_VERIFY_SIMPLE(QueryString);
226  return aux::SepStrRange(ext_str);
227  }
228 #endif
229 
231 
235  static bool ReleaseThread(void)
236  {
237  EGLBoolean result = EGLPLUS_EGLFUNC(ReleaseThread)();
238  EGLPLUS_CHECK_SIMPLE(ReleaseThread);
239  return result == EGL_TRUE;
240  }
241 };
242 
245 
246 } // namespace eglplus
247 
248 #endif // include guard
EGL string query enumeration.
static Range< String > ClientExtensions(void)
Returns a range of client extension strings.
EGLInitializer(const Display &display)
Initializes EGL on the specified display.
Definition: initializer.hpp:63
static bool ReleaseThread(void)
Releases the current thread state.
Definition: initializer.hpp:235
EGLInitializer LibEGL
Alternate name for EGLInitializer.
Definition: initializer.hpp:244
Helper macro expanding into EGL function name.
~EGLInitializer(void)
Terminates EGL on the associated display.
Definition: initializer.hpp:83
EGLInitializer(void)
Initializes EGL on the default display.
Definition: initializer.hpp:53
StringQuery
EGL string query enumeration.
Definition: string_query.hpp:24
EGLint VersionMajor(void) const
Returns the major version number.
Definition: initializer.hpp:109
Wrapper around EGLDisplay.
Definition: display.hpp:27
Declares and implements wrapper for EGLDisplay.
const Display & Disp(void) const
Returns a reference to the associated display.
Definition: initializer.hpp:99
Initializes and terminates the EGL library.
Definition: initializer.hpp:26
const char * Version(void) const
Returns the version string.
Definition: initializer.hpp:157
EGLInitializer(EGLInitializer &&tmp)
Initializer is move constructible.
Definition: initializer.hpp:69
const char * Vendor(void) const
Returns the vendor name.
Definition: initializer.hpp:146
Range< String > Extensions(void) const
Returns a range of extension strings.
EGLint VersionMinor(void) const
Returns the major version number.
Definition: initializer.hpp:119
static bool HasClientExtensions(void)
Returns true if the EGL implementation supports client extensions.
Definition: initializer.hpp:198
const char * QueryString(StringQuery query) const
EGL string queries.
Definition: initializer.hpp:129
Range< String > ClientAPIs(void) const
Returns a range of supported API name strings.
const Display & AssociatedDisplay(void) const
Returns a reference to the associated display.
Definition: initializer.hpp:93

Copyright © 2010-2014 Matúš Chochlík, University of Žilina, Žilina, Slovakia.
<matus.chochlik -at- fri.uniza.sk>
<chochlik -at -gmail.com>
Documentation generated on Mon Sep 22 2014 by Doxygen (version 1.8.6).