#include "fps_counter.h" #include FPS_Counter::FPS_Counter(SDL_Renderer* renderer) // TODO: cleanup fucking hardcode everywhere : renderer{renderer} , numbers{renderer, "numbers.bmp", 24} { } void FPS_Counter::draw() { fps_cur++; double dt = std::chrono::duration(Clock::now() - timestamp).count(); // update current FPS reading every 300 ms // TODO: rewrite with type safety if (dt >= .3) { fps_prev = fps_cur / dt; fps_cur = 0; timestamp = Clock::now(); } // first character will be drawn here SDL_Rect dst = {4, 16, numbers.width, numbers.height}; // extract individual digits of fps_prev for (const char c : std::to_string(fps_prev)) { // crude conversion of numeric characters to int: '7'-'0'=7 SDL_Rect src = numbers.rect(c - '0'); // draw current digit SDL_RenderCopy(renderer, numbers.texture, &src, &dst); // draw characters left-to-right, +4 for letter spacing // TODO: add padding directly to the .bmp file dst.x += numbers.width + 4; } }