[email protected] | ad7bbbd6 | 2011-04-22 23:04:37 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be | ||||
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #ifndef UI_GFX_GL_GL_SURFACE_OSMESA_H_ | ||||
6 | #define UI_GFX_GL_GL_SURFACE_OSMESA_H_ | ||||
7 | #pragma once | ||||
8 | |||||
9 | #include "base/memory/scoped_ptr.h" | ||||
10 | #include "ui/gfx/gl/gl_surface.h" | ||||
11 | #include "ui/gfx/size.h" | ||||
12 | |||||
13 | namespace gfx { | ||||
14 | |||||
15 | // A surface that the Mesa software renderer draws to. This is actually just a | ||||
16 | // buffer in system memory. GetHandle returns a pointer to the buffer. These | ||||
17 | // surfaces can be resized and resizing preserves the contents. | ||||
[email protected] | 3de33af | 2011-09-16 16:39:34 | [diff] [blame^] | 18 | class GL_EXPORT GLSurfaceOSMesa : public GLSurface { |
[email protected] | ad7bbbd6 | 2011-04-22 23:04:37 | [diff] [blame] | 19 | public: |
[email protected] | e7e3803 | 2011-07-26 17:25:25 | [diff] [blame] | 20 | GLSurfaceOSMesa(unsigned format, const gfx::Size& size); |
[email protected] | ad7bbbd6 | 2011-04-22 23:04:37 | [diff] [blame] | 21 | virtual ~GLSurfaceOSMesa(); |
22 | |||||
23 | // Resize the back buffer, preserving the old content. Does nothing if the | ||||
24 | // size is unchanged. | ||||
25 | void Resize(const gfx::Size& new_size); | ||||
26 | |||||
27 | // Implement GLSurface. | ||||
[email protected] | cfcf148 | 2011-05-04 18:15:57 | [diff] [blame] | 28 | virtual bool Initialize(); |
[email protected] | ad7bbbd6 | 2011-04-22 23:04:37 | [diff] [blame] | 29 | virtual void Destroy(); |
30 | virtual bool IsOffscreen(); | ||||
31 | virtual bool SwapBuffers(); | ||||
32 | virtual gfx::Size GetSize(); | ||||
33 | virtual void* GetHandle(); | ||||
34 | |||||
[email protected] | f62a5ab | 2011-05-23 20:34:15 | [diff] [blame] | 35 | // Get the surface's format. |
36 | unsigned GetFormat(); | ||||
37 | |||||
[email protected] | ad7bbbd6 | 2011-04-22 23:04:37 | [diff] [blame] | 38 | private: |
[email protected] | ffae402 | 2011-05-12 22:54:29 | [diff] [blame] | 39 | void AllocateBuffer(const Size& size); |
40 | |||||
[email protected] | f62a5ab | 2011-05-23 20:34:15 | [diff] [blame] | 41 | unsigned format_; |
[email protected] | ad7bbbd6 | 2011-04-22 23:04:37 | [diff] [blame] | 42 | gfx::Size size_; |
43 | scoped_array<int32> buffer_; | ||||
44 | |||||
45 | DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesa); | ||||
46 | }; | ||||
47 | |||||
48 | } // namespace gfx | ||||
49 | |||||
50 | #endif // UI_GFX_GL_GL_SURFACE_OSMESA_H_ |