EGLplus (0.52.0) a C++ wrapper for EGL

configs.hpp
Go to the documentation of this file.
1 
12 #pragma once
13 #ifndef EGLPLUS_CONFIGS_1303292057_HPP
14 #define EGLPLUS_CONFIGS_1303292057_HPP
15 
16 #include <eglplus/bitfield.hpp>
23 #include <eglplus/attrib_list.hpp>
24 #include <eglplus/display.hpp>
25 
26 #include <cassert>
27 
28 namespace eglplus {
29 
30 class Config;
31 ::EGLConfig GetEGLHandle(const Config&);
32 
34 class Config
35 {
36 private:
37  Display _display;
38  ::EGLConfig _handle;
39 
40  friend ::EGLConfig GetEGLHandle(const Config&);
41 public:
42  Config(const Display& display, ::EGLConfig handle)
43  : _display(display)
44  , _handle(handle)
45  { }
46 
48 
52  EGLint GetAttrib(ConfigAttrib attrib) const
53  {
54  EGLint result = 0;
55  EGLPLUS_EGLFUNC(GetConfigAttrib)(
56  GetEGLHandle(_display),
57  this->_handle,
58  EGLint(EGLenum(attrib)),
59  &result
60  );
61  EGLPLUS_VERIFY_SIMPLE(GetConfigAttrib);
62  return result;
63  }
64 
66 
71  EGLint ConfigId(void) const
72  {
74  }
75 
77 
83  EGLint Id(void) const
84  {
85  return ConfigId();
86  }
87 
89 
94  EGLint BufferSize(void) const
95  {
97  }
98 
100 
105  EGLint RedSize(void) const
106  {
108  }
109 
111 
116  EGLint GreenSize(void) const
117  {
119  }
120 
122 
127  EGLint BlueSize(void) const
128  {
130  }
131 
133 
138  EGLint LuminanceSize(void) const
139  {
141  }
142 
144 
149  EGLint AlphaSize(void) const
150  {
152  }
153 
155 
160  EGLint DepthSize(void) const
161  {
163  }
164 
166 
171  EGLint StencilSize(void) const
172  {
174  }
175 
177 
182  EGLint MaxPbufferWidth(void) const
183  {
185  }
186 
188 
193  EGLint MaxPbufferHeight(void) const
194  {
196  }
197 
199 
204  EGLint MaxPbufferPixels(void) const
205  {
207  }
208 
210 
215  EGLint MinSwapInterval(void) const
216  {
218  }
219 
221 
226  EGLint MaxSwapInterval(void) const
227  {
229  }
230 
232 
237  EGLint NativeRenderable(void) const
238  {
240  }
241 
243 
249  {
250  return eglplus::ConfigCaveat(
252  );
253  }
254 
256 
263  {
264  return this->ConfigCaveat();
265  }
266 
268 
274  {
277  );
278  }
279 
281 
287  {
290  );
291  }
292 
294 
299  Bitfield<eglplus::RenderableTypeBit> RenderableTypes(void) const
300  {
301  return Bitfield<eglplus::RenderableTypeBit>(
303  );
304  }
305 
307 
313  {
315  EGLenum b = EGLenum(type);
316  return (a & b) == b;
317  }
318 
320 
325  Bitfield<eglplus::SurfaceTypeBit> SurfaceTypes(void) const
326  {
327  return Bitfield<eglplus::SurfaceTypeBit>(
329  );
330  }
331 
333 
339  {
341  EGLenum b = EGLenum(type);
342  return (a & b) == b;
343  }
344 
346 
351  Bitfield<eglplus::RenderableTypeBit> Conformant(void) const
352  {
353  return Bitfield<eglplus::RenderableTypeBit>(
355  );
356  }
357 
359 
365  {
366  EGLenum a = GetAttrib(ConfigAttrib::Conformant);
367  EGLenum b = EGLenum(type);
368  return (a & b) == b;
369  }
370 };
371 
372 inline ::EGLConfig GetEGLHandle(const Config& config)
373 {
374  return config._handle;
375 }
376 
377 struct ConfigValueTypeToConfigAttrib
378 {
379  static ColorBufferType
380  ValueType(std::integral_constant<int, 0>);
381  ConfigAttrib operator()(ColorBufferType) const
382  {
384  }
385 
386  static ConfigCaveat
387  ValueType(std::integral_constant<int, 1>);
388  ConfigAttrib operator()(ConfigCaveat) const
389  {
391  }
392 
393  static RenderableTypeBit
394  ValueType(std::integral_constant<int, 2>);
395  ConfigAttrib operator()(RenderableTypeBit) const
396  {
398  }
399 
400  static SurfaceTypeBit
401  ValueType(std::integral_constant<int, 3>);
402  ConfigAttrib operator()(SurfaceTypeBit) const
403  {
405  }
406 
407  static TransparentType
408  ValueType(std::integral_constant<int, 4>);
409  ConfigAttrib operator()(TransparentType) const
410  {
412  }
413 
414  static std::integral_constant<int, 4> MaxValueType(void);
415 };
416 
418 typedef AttributeList<
419  ConfigAttrib,
420  ConfigValueTypeToConfigAttrib,
421  AttributeListTraits
423 
425 typedef FinishedAttributeList<
426  ConfigAttrib,
427  AttributeListTraits
429 
431 class Configs
432 {
433 private:
434  Display _display;
435  std::vector<EGLConfig> _configs;
436 
437  struct _config_range_conv
438  {
439  Display _display;
440 
441  _config_range_conv(const Display& display)
442  : _display(display)
443  { }
444 
445  Config operator()(EGLConfig handle) const
446  {
447  return Config(_display, handle);
448  }
449  };
450 
451  void _get_all(void);
452  void _choose(const FinishedConfigAttribs& attribs);
453 public:
455  Configs(const Display& display)
456  : _display(display)
457  {
458  _get_all();
459  }
460 
462  Configs(const Display& display, const FinishedConfigAttribs& attribs)
463  : _display(display)
464  {
465  _choose(attribs);
466  }
467 
468  typedef aux::ConvIterRange<
469  std::vector<EGLConfig>::const_iterator,
470  Config,
471  _config_range_conv
472  > ConfigRange;
473 
475  ConfigRange All(void) const
476  {
477  return ConfigRange(
478  _config_range_conv(_display),
479  _configs.begin(),
480  _configs.end()
481  );
482  }
483 
485  bool Empty(void) const
486  {
487  return _configs.empty();
488  }
489 
491 
494  Config First(void) const
495  {
496  assert(!Empty());
497  return Config(_display, _configs.front());
498  }
499 };
500 
501 } // namespace eglplus
502 
503 #if !EGLPLUS_LINK_LIBRARY || defined(EGLPLUS_IMPLEMENTING_LIBRARY)
504 #include <eglplus/configs.ipp>
505 #endif
506 
507 #endif // include guard
EGL bitfield-related helpers.
RenderableTypeBit
EGL renderable type bits enumeration.
Definition: renderable_type_bit.hpp:25
AttributeList< ConfigAttrib, ConfigValueTypeToConfigAttrib, AttributeListTraits > ConfigAttribs
Attribute list for configuration attributes.
Definition: configs.hpp:422
EGL color buffer type enumeration.
Bitfield< eglplus::SurfaceTypeBit > SurfaceTypes(void) const
Returns the surface type bits.
Definition: configs.hpp:325
A provides access to all configurations of a Display.
Definition: configs.hpp:431
ConfigAttrib
EGL configuration attribute enumeration.
Definition: config_attrib.hpp:24
EGL surface type enumeration.
bool HasSurfaceType(eglplus::SurfaceTypeBit type) const
Returns true if a specified surface type is supported.
Definition: configs.hpp:338
EGLint GetAttrib(ConfigAttrib attrib) const
Get the value of a specified attribute.
Definition: configs.hpp:52
eglplus::ConfigCaveat ConfigCaveat(void) const
Returns the caveat for this config.
Definition: configs.hpp:248
EGLint MaxSwapInterval(void) const
Returns the maximum swap interval.
Definition: configs.hpp:226
Template for EGL surface and configuration attribute list.
EGLint MinSwapInterval(void) const
Returns the minimum swap interval.
Definition: configs.hpp:215
ConfigCaveat
EGL config caveat enumeration.
Definition: config_caveat.hpp:24
eglplus::TransparentType TransparentType(void) const
Returns the transparency type.
Definition: configs.hpp:286
EGLint BlueSize(void) const
Returns the number of bits of the blue color component.
Definition: configs.hpp:127
ConfigRange All(void) const
Returns a range of all supported configurations.
Definition: configs.hpp:475
Bitfield< eglplus::RenderableTypeBit > RenderableTypes(void) const
Returns the renderable type bits.
Definition: configs.hpp:299
ColorBufferType
EGL color_buffer_type enumeration.
Definition: color_buffer_type.hpp:24
EGLint MaxPbufferPixels(void) const
Returns the maximum size (number of pixels) of Pbuffers.
Definition: configs.hpp:204
EGLint MaxPbufferHeight(void) const
Returns the maximum height of Pbuffers in pixels.
Definition: configs.hpp:193
EGL config attribute type enumeration.
Bitfield< eglplus::RenderableTypeBit > Conformant(void) const
Returns the conformant bits for this config.
Definition: configs.hpp:351
Wrapper around EGLDisplay.
Definition: display.hpp:27
Declares and implements wrapper for EGLDisplay.
EGLint MaxPbufferWidth(void) const
Returns the maximum width of Pbuffers in pixels.
Definition: configs.hpp:182
bool IsConformantTo(eglplus::RenderableTypeBit type) const
Returns true if the config is conformant to a renderable type.
Definition: configs.hpp:364
EGLint StencilSize(void) const
Returns the number of bits of the stencil buffer.
Definition: configs.hpp:171
EGLint RedSize(void) const
Returns the number of bits of the red color component.
Definition: configs.hpp:105
SurfaceTypeBit
EGL surface type bits enumeration.
Definition: surface_type_bit.hpp:25
EGLint GreenSize(void) const
Returns the number of bits of the green color component.
Definition: configs.hpp:116
eglplus::ConfigCaveat Caveat(void) const
Returns the caveat for this config.
Definition: configs.hpp:262
eglplus::ColorBufferType ColorBufferType(void) const
Returns the color buffer type.
Definition: configs.hpp:273
FinishedAttributeList< ConfigAttrib, AttributeListTraits > FinishedConfigAttribs
Finished list of configuration attribute values.
Definition: configs.hpp:428
EGL renderable type enumeration.
TransparentType
EGL transparent type enumeration.
Definition: transparent_type.hpp:24
EGLint LuminanceSize(void) const
Returns the number of bits of the luminance component.
Definition: configs.hpp:138
EGLint NativeRenderable(void) const
Returns true if native rendering API can render to surface.
Definition: configs.hpp:237
Configs(const Display &display, const FinishedConfigAttribs &attribs)
Gets configurations matching the specified attribute values.
Definition: configs.hpp:462
bool Empty(void) const
Returns true if there are no matching configs.
Definition: configs.hpp:485
EGLint DepthSize(void) const
Returns the number of bits of the depth buffer.
Definition: configs.hpp:160
EGL transparent type enumeration.
EGLint BufferSize(void) const
Return the total component bits of the color buffer.
Definition: configs.hpp:94
EGLint ConfigId(void) const
Get the unique configuration identifier.
Definition: configs.hpp:71
EGLint Id(void) const
Get the unique configuration identifier.
Definition: configs.hpp:83
EGLint AlphaSize(void) const
Returns the number of bits of the alpha component.
Definition: configs.hpp:149
A wrapper for EGL configuration.
Definition: configs.hpp:34
bool HasRenderableType(eglplus::RenderableTypeBit type) const
Returns true if a specified renderable type is supported.
Definition: configs.hpp:312
EGL config caveat type enumeration.
Configs(const Display &display)
Gets the configurations for the specified display.
Definition: configs.hpp:455
Config First(void) const
Returns the first config in this set of configurations.
Definition: configs.hpp:494

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).