OSVR-Core
DisplayConfig.h
Go to the documentation of this file.
1 
11 // Copyright 2015 Sensics, Inc.
12 //
13 // Licensed under the Apache License, Version 2.0 (the "License");
14 // you may not use this file except in compliance with the License.
15 // You may obtain a copy of the License at
16 //
17 // http://www.apache.org/licenses/LICENSE-2.0
18 //
19 // Unless required by applicable law or agreed to in writing, software
20 // distributed under the License is distributed on an "AS IS" BASIS,
21 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 // See the License for the specific language governing permissions and
23 // limitations under the License.
24 
25 #ifndef INCLUDED_DisplayConfig_h_GUID_70A7B58A_338C_44A7_7BF9_6945EA2D3B30
26 #define INCLUDED_DisplayConfig_h_GUID_70A7B58A_338C_44A7_7BF9_6945EA2D3B30
27 
28 // Internal Includes
29 #include <osvr/Client/Export.h>
33 #include <osvr/Client/Viewer.h>
34 #include <osvr/Client/Viewers.h>
35 #include <osvr/Util/UniquePtr.h>
38 
39 // Library/third-party includes
40 // - none
41 
42 // Standard includes
43 #include <vector>
44 
45 namespace osvr {
46 namespace client {
47 
48  class DisplayConfig;
49  typedef unique_ptr<DisplayConfig> DisplayConfigPtr;
51  public:
52  OSVR_CLIENT_EXPORT static DisplayConfigPtr
54  };
55 
56  class DisplayConfig {
57  public:
58  DisplayConfig(DisplayConfig const &) = delete;
59  DisplayConfig &operator=(DisplayConfig const &) = delete;
60  OSVR_ViewerCount getNumViewers() const;
61  Viewer &getViewer(OSVR_ViewerCount viewer);
62  Viewer const &getViewer(OSVR_ViewerCount viewer) const;
63 
64  OSVR_EyeCount getNumViewerEyes(OSVR_ViewerCount viewer) const;
65  ViewerEye &getViewerEye(OSVR_ViewerCount viewer, OSVR_EyeCount eye);
66  ViewerEye const &getViewerEye(OSVR_ViewerCount viewer,
67  OSVR_EyeCount eye) const;
68 
69  OSVR_SurfaceCount getNumViewerEyeSurfaces(OSVR_ViewerCount viewer,
70  OSVR_EyeCount eye) const;
71  ViewerEye &getViewerEyeSurface(OSVR_ViewerCount viewer,
72  OSVR_EyeCount eye,
73  OSVR_SurfaceCount surface);
74  ViewerEye const &getViewerEyeSurface(OSVR_ViewerCount viewer,
75  OSVR_EyeCount eye,
76  OSVR_SurfaceCount surface) const;
77  OSVR_DisplayInputCount getNumDisplayInputs() const;
78  DisplayInput &getDisplayInput(OSVR_DisplayInputCount dispInputIdx);
79  const DisplayInput &
80  getDisplayInput(OSVR_DisplayInputCount dispInputIdx) const;
81 
82  OSVR_CLIENT_EXPORT bool isStartupComplete() const;
83 
84  private:
85  std::vector<DisplayInput> m_displayInputs;
86  Viewers m_viewers;
87  friend class DisplayConfigFactory;
88  DisplayConfig();
89  };
90 
91  //-- inline implementations --//
92  inline OSVR_ViewerCount DisplayConfig::getNumViewers() const {
93  return static_cast<OSVR_ViewerCount>(m_viewers.size());
94  }
95 
96  inline Viewer &DisplayConfig::getViewer(OSVR_ViewerCount viewer) {
97  return m_viewers[viewer];
98  }
99  inline Viewer const &
100  DisplayConfig::getViewer(OSVR_ViewerCount viewer) const {
101  return m_viewers[viewer];
102  }
103 
104  inline OSVR_EyeCount
105  DisplayConfig::getNumViewerEyes(OSVR_ViewerCount viewer) const {
106  return getViewer(viewer).size();
107  }
108 
109  inline ViewerEye &DisplayConfig::getViewerEye(OSVR_ViewerCount viewer,
110  OSVR_EyeCount eye) {
111  return getViewer(viewer)[eye];
112  }
113  inline ViewerEye const &
114  DisplayConfig::getViewerEye(OSVR_ViewerCount viewer,
115  OSVR_EyeCount eye) const {
116  return getViewer(viewer)[eye];
117  }
118  inline OSVR_SurfaceCount
119  DisplayConfig::getNumViewerEyeSurfaces(OSVR_ViewerCount viewer,
120  OSVR_EyeCount eye) const {
121  return getViewerEye(viewer, eye).size();
122  }
123  inline ViewerEye &
127  return getViewerEye(viewer, eye);
128  }
130  OSVR_ViewerCount viewer, OSVR_EyeCount eye, OSVR_SurfaceCount) const {
132  return getViewerEye(viewer, eye);
133  }
134  inline OSVR_DisplayInputCount DisplayConfig::getNumDisplayInputs() const {
135  return static_cast<OSVR_DisplayInputCount>(m_displayInputs.size());
136  }
137  inline DisplayInput &
138  DisplayConfig::getDisplayInput(OSVR_DisplayInputCount dispInputIdx) {
139  return m_displayInputs[dispInputIdx];
140  }
141  inline DisplayInput const &
142  DisplayConfig::getDisplayInput(OSVR_DisplayInputCount dispInputIdx) const {
143  return m_displayInputs[dispInputIdx];
144  }
145 
146 } // namespace client
147 } // namespace osvr
148 
149 #endif // INCLUDED_DisplayConfig_h_GUID_70A7B58A_338C_44A7_7BF9_6945EA2D3B30
Header.
uint32_t OSVR_SurfaceCount
The integer type specifying the number of surfaces seen by a viewer&#39;s eye.
Definition: RenderingTypesC.h:108
Definition: DisplayInput.h:41
Header declaring opaque types used by Client and ClientKit.
Header providing a class template suitable for inheritance that wraps an arbitrary STL-like container...
The main namespace for all C++ elements of the framework, internal and external.
Definition: namespace_osvr.dox:3
Header to bring unique_ptr into the osvr namespace.
Definition: Viewer.h:50
Definition: DisplayConfig.h:50
Header.
Definition: DisplayConfig.h:56
ViewerEye & getViewerEyeSurface(OSVR_ViewerCount viewer, OSVR_EyeCount eye, OSVR_SurfaceCount surface)
Definition: DisplayConfig.h:124
uint32_t OSVR_ViewerCount
The integer type specifying a number of viewers in a system.
Definition: RenderingTypesC.h:72
Definition: Viewers.h:52
Definition: ClientContext.h:50
static OSVR_CLIENT_EXPORT DisplayConfigPtr create(OSVR_ClientContext ctx)
Definition: DisplayConfig.cpp:85
Definition: ViewerEye.h:61
uint8_t OSVR_EyeCount
The integer type specifying the number of eyes (viewpoints) of a viewer.
Definition: RenderingTypesC.h:92
uint8_t OSVR_DisplayInputCount
A count or index for a display input in a display config.
Definition: RenderingTypesC.h:51