#ifndef Display_H
#define Display_H

#include <Arduino.h>
#include <LinkedList.h>
#include <ChronoReading.h>
#include <ChronoReadingManager.h>
#include "TFT_eSPI.h"

class Display {
  public:

    // Constructor: Called when a Display object is created
    Display();

    static void init();
    static void updateShotCount(int count);
    static void updateFPE(int fpe);
    static void updateFPS(int fps);
    static void updateAverageFPS(int fps);
    static void updateLowFPS(int fps);
    static void updateHighFPS(int fps);
    static void updateProfile(ChronoProfile& profile);
    static void updateLastShots(LinkedList<ChronoReading> &chronoReadings);
    static void updateSpread(int spread);
    static void updateStandardDeviation(float sd);
    static void updateTime(String time);
    static void showChronographConnected();
    static void showChronographDisconnected();
    static void refreshDisplay();
    static void updateEntireDisplay();

  private:
    static EPaper _epaper;
    static void _drawScreenLayout();
    static void _drawShotCount();
    static void _drawFPE();
    static void _drawFPS();
    static void _drawAverageFPS();
    static void _drawLowFPS();
    static void _drawHighFPS();
    static void _drawProfile();
    static void _drawLastShots();
    static void _drawSpread();
    static void _drawStandardDeviation();

};

#endif