gfx/layers/opengl/GLManager.h
author Phil Ringnalda <philringnalda@gmail.com>
Sun, 08 Dec 2013 18:43:45 -0800
changeset 174184 45193a6d79940ecb744556386d47aa8a7fbc37f1
parent 174182 498152aec5b1eadb68ad76e9d9b9f95cef5e97f5
child 175658 c105bff9ee1d26bfc260ab20db6405a69102128a
permissions -rw-r--r--
Backed out 7 changesets (bug 946958, bug 865033) Backed out changeset 6dd0a6cb9ab3 (bug 946958) Backed out changeset 498152aec5b1 (bug 946958) Backed out changeset 7d035322f51d (bug 946958) Backed out changeset 99f8ad7561ef (bug 946958) Backed out changeset 4639c5abea80 (bug 946958) Backed out changeset 9d1a4d83eccf (bug 865033) Backed out changeset 41839e4026bc (bug 865033)

/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef MOZILLA_GFX_GLMANAGER_H
#define MOZILLA_GFX_GLMANAGER_H

#include "mozilla/gfx/Types.h"          // for SurfaceFormat
#include "OGLShaderProgram.h"

namespace mozilla {
namespace gl {
class GLContext;
}

namespace layers {

class LayerManager;

/**
 * Minimal interface to allow widgets to draw using OpenGL. Abstracts
 * CompositorOGL. Call CreateGLManager with a LayerManagerComposite
 * backed by a CompositorOGL.
 */
class GLManager
{
public:
  static GLManager* CreateGLManager(LayerManager* aManager);

  virtual ~GLManager() {}

  virtual gl::GLContext* gl() const = 0;
  virtual ShaderProgramOGL* GetProgram(ShaderProgramType aType) = 0;
  virtual void BindAndDrawQuad(ShaderProgramOGL *aProg) = 0;

  ShaderProgramOGL* GetProgram(gfx::SurfaceFormat aFormat) {
    return GetProgram(ShaderProgramFromSurfaceFormat(aFormat));
  }
};

}
}
#endif