//
//  OpenGLContext.hpp
//  AppLauncher
//
//  Created by John Ryland on 1/10/17.
//  Copyright © 2017 John Ryland. All rights reserved.
//

#pragma once

#ifndef OpenGLContext_h
#define OpenGLContext_h


#include "../Framework/Framework.h"


struct RenderContextState
{
  bool   m_clear;
  vec4f  m_clearColor;
};


class RenderContext
{
public:
  RenderContextState*  m_state;
};


class OpenGLContext
{
public:
  OpenGLContext();
  ~OpenGLContext();

  void setDemo(const char* a_demoStr);

  void prepare();
  void update();
  void draw();

  void onClose();
  void onResize(const vec2f& a_shape);
  void onMouseUp(const MouseEvent& a_event);
  void onMouseDown(const MouseEvent& a_event);
  void onMouseMove(const MouseEvent& a_event);

private:
  DemoContext *m_currentDemo = nullptr;
};


#endif /* OpenGLContext_h */
