diff options
Diffstat (limited to 'ui/gl/gl_surface_osmesa.h')
-rw-r--r-- | ui/gl/gl_surface_osmesa.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/ui/gl/gl_surface_osmesa.h b/ui/gl/gl_surface_osmesa.h new file mode 100644 index 0000000..ab3feec --- /dev/null +++ b/ui/gl/gl_surface_osmesa.h @@ -0,0 +1,45 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_GL_GL_SURFACE_OSMESA_H_ +#define UI_GL_GL_SURFACE_OSMESA_H_ +#pragma once + +#include "base/memory/scoped_ptr.h" +#include "ui/gfx/size.h" +#include "ui/gl/gl_surface.h" + +namespace gfx { + +// A surface that the Mesa software renderer draws to. This is actually just a +// buffer in system memory. GetHandle returns a pointer to the buffer. These +// surfaces can be resized and resizing preserves the contents. +class GL_EXPORT GLSurfaceOSMesa : public GLSurface { + public: + GLSurfaceOSMesa(unsigned format, const gfx::Size& size); + + // Implement GLSurface. + virtual bool Initialize() OVERRIDE; + virtual void Destroy() OVERRIDE; + virtual bool Resize(const gfx::Size& new_size) OVERRIDE; + virtual bool IsOffscreen() OVERRIDE; + virtual bool SwapBuffers() OVERRIDE; + virtual gfx::Size GetSize() OVERRIDE; + virtual void* GetHandle() OVERRIDE; + virtual unsigned GetFormat() OVERRIDE; + + protected: + virtual ~GLSurfaceOSMesa(); + + private: + unsigned format_; + gfx::Size size_; + scoped_array<int32> buffer_; + + DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesa); +}; + +} // namespace gfx + +#endif // UI_GL_GL_SURFACE_OSMESA_H_ |