fps_counter.hpp 890 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. //
  2. // fps_counter.hpp
  3. // engine
  4. //
  5. // Created by Sam Jaffe on 5/24/19.
  6. // Copyright © 2019 Sam Jaffe. All rights reserved.
  7. //
  8. #pragma once
  9. #include <vector>
  10. #include "game/graphics/graphics_fwd.h"
  11. #include "game/util/time.hpp"
  12. namespace engine {
  13. class text_engine;
  14. class fps_counter {
  15. public:
  16. fps_counter(std::shared_ptr<text_engine> text_engine,
  17. std::size_t precision = 3);
  18. ~fps_counter();
  19. void set_frame_step(env::clock::duration const & since);
  20. void render(graphics::renderer & renderer) const;
  21. std::vector<graphics::object> const & glyphs() const { return glyphs_; }
  22. private:
  23. std::string fps(env::clock::duration const & since) const;
  24. int counter_{0}, change_after_{10};
  25. std::size_t digits_;
  26. std::size_t magnitude_;
  27. std::shared_ptr<text_engine> text_engine_;
  28. std::vector<graphics::object> glyphs_;
  29. };
  30. }