text: //
  // Created by Grant on 9/26/19.
  //
  #pragma once
  
  #ifndef __MASON_GL_CORE_H
  #define __MASON_GL_CORE_H
  
  #include "mason/log.h"
  
  #define GLEW_STATIC
  #include "GL/glew.h"
  #include "GLFW/glfw3.h"
  
  /*
   * # CMakeLists.txt
  #
  # Copyright (C) 2013-2019 by
  # David Turner, Robert Wilhelm, and Werner Lemberg.
  #
  # Written originally by John Cary <cary@txcorp.com>
  #
  # This file is part of the FreeType project, and may only be used, modified,
  # and distributed under the terms of the FreeType project license,
  # LICENSE.TXT.  By continuing to use, modify, or distribute this file you
  # indicate that you have read the license and understand and accept it
  # fully.
  #
  #
  # The following will 1. create a build directory and 2. change into it and
  # call cmake to configure the build with default parameters as a static
  # library.
  #
  #   cmake -E make_directory build
  #   cmake -E chdir build cmake ..
  #
  # For a dynamic library, use
  #
  #   cmake -E chdir build cmake -D BUILD_SHARED_LIBS:BOOL=true ..
  #
  # For a framework on OS X, use
  #
  #   cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true ..
  #
  # For an iOS static library, use
  #
  #   cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS ..
  #
  # or
  #
  #   cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR ..
  #
  # or
  #
  #   cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 ..
  #
  # Finally, build the project with:
  #
  #   cmake --build build
  #
  # Install it with
  #
  #   (sudo) cmake --build build --target install
  #
  # A binary distribution can be made with
  #
  #   cmake --build build --config Release --target package
  #
  # Please refer to the cmake manual for further options, in particular, how
  # to modify compilation and linking parameters.
  #
  # Some notes.
  #
  
   */
  
  #ifdef MASON_ENABLE_IMGUI
  
  #define IMGUI_IMPL_OPENGL_LOADER_GLEW
  
  #include "imgui/imgui.h"
  #include "imgui/imgui_impl_opengl3.h"
  #include "imgui/imgui_impl_glfw.h"
  
  #endif
  
  namespace mason::gl {
      void init_glfw();
  
      void init_glew(bool use_expiremental = true);
  
      void handle_single_error(const std::string &msg = "Unknown Error");
  
      void flush_errors(const std::string &msg = "Unknown Error");
  
      extern void (*quit)();
  
      void quit_imgui();
  }
  
  #endif //__MASON_GL_CORE_H
  