Select Git revision
Platform.hpp
-
Claudio Hoffmann authoredClaudio Hoffmann authored
Platform.hpp 890 B
// Cross-platform rendering and input interface.
#ifndef PLATFORM_HPP
#define PLATFORM_HPP
#include <chrono>
#include <functional>
#include <unordered_set>
#include "PixelBuffer.hpp"
using FloatSeconds = std::chrono::duration<float>;
class Platform {
protected:
FloatSeconds frame_time_prev = FloatSeconds(0.0f);
public:
static constexpr FloatSeconds FRAME_TIME_TARGET = FloatSeconds(1.0f / 60.0f);
// Runs [func], then sleeps until one frame has elapsed. The default
// implementation uses C++ standard library facilities.
virtual void frame(std::function<void(FloatSeconds const &)> func);
// Returns any keys currently pressed.
virtual std::unordered_set<char> get_input(void) = 0;
virtual void render(PixelBuffer const &buffer) = 0;
virtual void set_title(std::string const &title);
// More reliable than destructors.
virtual void exit();
};
#endif // PLATFORM_HPP