Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
visual.h
Go to the documentation of this file.
1 
18 #ifndef ION_PORTGFX_VISUAL_H_
19 #define ION_PORTGFX_VISUAL_H_
20 
21 #include <memory>
22 
23 #include "base/integral_types.h"
24 #include "base/macros.h"
25 
26 namespace ion {
27 namespace portgfx {
28 
40 class ION_API Visual {
41  public:
43  virtual ~Visual();
44 
46  bool IsCurrent() const { return this == GetCurrent(); }
47 
51  virtual bool IsValid() const;
52 
54  size_t GetId() const { return id_; }
55 
58  int GetGlVersion() const;
59 
63  static void RefreshCurrentVisual();
64 
77  static const Visual* GetCurrent();
78 
81  static std::unique_ptr<Visual> CreateVisual();
82 
85  static std::unique_ptr<Visual> CreateVisualInCurrentShareGroup();
86 
90  static bool MakeCurrent(const Visual* new_current);
91 
96  static void DestroyWrappingVisual(const Visual* visual);
97 
101  static size_t GetCurrentId();
102 
103  protected:
105  Visual();
106 
109  virtual Visual* CreateVisualInShareGroup() const;
110 
114  virtual bool MakeCurrent() const;
115 
117  virtual void TeardownContextNew();
118 
121  virtual void TeardownContextShared();
122 
124  virtual void UpdateId();
125 
127  void SetId(size_t id) { id_ = id; }
128 
136  static void TeardownVisual(Visual* visual);
137 
140  static void RegisterVisual(Visual *visual);
141 
142  private:
144  enum Type {
146  kMock,
148  kNew,
151  kShare,
156  kCurrent
157  };
158 
164  explicit Visual(Type type);
165 
166  struct VisualInfo;
167  std::unique_ptr<VisualInfo> visual_;
168 
170  Type type_;
171 
173  size_t id_;
174 
175  friend class MockVisual;
176 
177  DISALLOW_COPY_AND_ASSIGN(Visual);
178 };
179 
180 } // namespace portgfx
181 } // namespace ion
182 
183 #endif // ION_PORTGFX_VISUAL_H_
bool IsCurrent() const
Return true if this is the current Visual on this thread.
Definition: visual.h:46
std::string type
Definition: printer.cc:353
uint32 id
size_t GetId() const
Returns the ID associated with this Visual.
Definition: visual.h:54
Opaque class that sets up an offscreen OpenGL context/surface/visual in a platform-specific way to al...
Definition: visual.h:40
void SetId(size_t id)
Sets the ID of this.
Definition: visual.h:127