#include <TFT_eSPI.h>
#include <SPI.h>

#define TFT_CS 15
#define TFT_DC 2

TFT_eSPI tft = TFT_eSPI();

const int cornerRadius = 2;
const int cornerRadiusBesar = 5;

/*const int ukurankotakOutlineX = 320;
const int ukurankotakOutlineY = 240;
const int posisikotakOutlineX = 0;
const int posisikotakOutlineY = 0;*/

//GEAR
const int ukurankotakGearX = 55;
const int ukurankotakGearY = 21;
const int posisikotakGearX = 132;
const int posisikotakGearY = 55;
const int ukurankotakdalamGearX = 100;
const int ukurankotakdalamGearY = 105;
const int kotakGearX = 110;
const int kotakGearY = 66;
const int posisiTextGearX = 137;
const int posisiTextGearY = 59;
const int ukuranTextGear = 2;
int WarnaTulisanGear = TFT_WHITE;
int WarnaOutlineGear = TFT_WHITE;
int WarnaBGOutlineGear = TFT_BLACK;

//Lap
const int ukurankotakLapX = 47;
const int ukurankotakLapY = 21;
const int posisikotakLapX = 30;
const int posisikotakLapY = 56;
const int ukurankotakdalamLapX = 100;
const int ukurankotakdalamLapY = 45;
const int kotakLapX = 3;
const int kotakLapY = 66;
const int posisiTextLapX = 38;
const int posisiTextLapY = 59;
const int ukuranTextLap = 2;
int WarnaTulisanLap = TFT_WHITE;
int WarnaOutlineLap = TFT_WHITE;
int WarnaBGOutlineLap = TFT_BLACK;

//POS
const int ukurankotakPosX = 47;
const int ukurankotakPosY = 21;
const int posisikotakPosX = 243;
const int posisikotakPosY = 56;
const int ukurankotakdalamPosX = 100;
const int ukurankotakdalamPosY = 45;
const int kotakPosX = 217;
const int kotakPosY = 66;
const int posisiTextPosX = 250;
const int posisiTextPosY = 59;
const int ukuranTextPos = 2;
int WarnaTulisanPos = TFT_WHITE;
int WarnaOutlinePos = TFT_WHITE;
int WarnaBGOutlinePos = TFT_BLACK;

//CurrentLap
const int ukurankotakCurrentLapX = 47;
const int ukurankotakCurrentLapY = 21;
const int posisikotakCurrentLapX = 30;
const int posisikotakCurrentLapY = 116;
const int ukurankotakdalamCurrentLapX = 100;
const int ukurankotakdalamCurrentLapY = 45;
const int kotakCurrentLapX = 3;
const int kotakCurrentLapY = 126;
const int posisiTextCurrentLapX = 37;
const int posisiTextCurrentLapY = 120;
const int ukuranTextCurrentLap = 2;
int WarnaTulisanCurrentLap = TFT_WHITE;
int WarnaOutlineCurrentLap = TFT_WHITE;
int WarnaBGOutlineCurrentLap = TFT_BLACK;

//Fuel
const int ukurankotakFuelX = 47;
const int ukurankotakFuelY = 21;
const int posisikotakFuelX = 243;
const int posisikotakFuelY = 116;
const int ukurankotakdalamFuelX = 100;
const int ukurankotakdalamFuelY = 45;
const int kotakFuelX = 217;
const int kotakFuelY = 126;
const int posisiTextFuelX = 250;
const int posisiTextFuelY = 120;
const int ukuranTextFuel = 2;
int WarnaTulisanFuel = TFT_WHITE;
int WarnaOutlineFuel = TFT_WHITE;
int WarnaBGOutlineFuel = TFT_BLACK;

//LastLap
const int ukurankotakLastLapX = 47;
const int ukurankotakLastLapY = 21;
const int posisikotakLastLapX = 30;
const int posisikotakLastLapY = 176;
const int ukurankotakdalamLastLapX = 100;
const int ukurankotakdalamLastLapY = 45;
const int kotakLastLapX = 3;
const int kotakLastLapY = 186;
const int posisiTextLastLapX = 37;
const int posisiTextLastLapY = 180;
const int ukuranTextLastLap = 2;
int WarnaTulisanLastLap = TFT_WHITE;
int WarnaOutlineLastLap = TFT_WHITE;
int WarnaBGOutlineLastLap = TFT_BLACK;

//SPEED
const int ukurankotakSpeedX = 47;
const int ukurankotakSpeedY = 21;
const int posisikotakSpeedX = 136;
const int posisikotakSpeedY = 176;
const int ukurankotakdalamSpeedX = 100;
const int ukurankotakdalamSpeedY = 45;
const int kotakSpeedX = 110;
const int kotakSpeedY = 186;
const int posisiTextSpeedX = 144;
const int posisiTextSpeedY = 180;
const int ukuranTextSpeed = 2;
int WarnaTulisanSpeed = TFT_WHITE;
int WarnaOutlineSpeed = TFT_WHITE;
int WarnaBGOutlineSpeed = TFT_BLACK;

//LAPTOGO
const int ukurankotakTogoX = 47;
const int ukurankotakTogoY = 21;
const int posisikotakTogoX = 243;
const int posisikotakTogoY = 176;
const int ukurankotakdalamTogoX = 100;
const int ukurankotakdalamTogoY = 45;
const int kotakTogoX = 217;
const int kotakTogoY = 186;
const int posisiTextTogoX = 250;
const int posisiTextTogoY = 180;
const int ukuranTextTogo = 2;
int WarnaTulisanTogo = TFT_WHITE;
int WarnaOutlineTogo = TFT_WHITE;
int WarnaBGOutlineTogo = TFT_BLACK;

void setup(void) {
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);

  //tft.drawRoundRect(posisikotakOutlineX, posisikotakOutlineY, ukurankotakOutlineX, ukurankotakOutlineY, cornerRadius, TFT_WHITE);

//GEAR
  tft.drawRoundRect(kotakGearX, kotakGearY, ukurankotakdalamGearX, ukurankotakdalamGearY, cornerRadiusBesar, WarnaOutlineGear);
  tft.fillRoundRect(posisikotakGearX, posisikotakGearY, ukurankotakGearX, ukurankotakGearY, cornerRadius, WarnaBGOutlineGear);
  tft.drawRoundRect(posisikotakGearX, posisikotakGearY, ukurankotakGearX, ukurankotakGearY, cornerRadius, WarnaOutlineGear);
  tft.setTextColor(WarnaTulisanGear); // Set text color
  tft.setTextSize(ukuranTextGear); // Set text size
  tft.setCursor(posisiTextGearX, posisiTextGearY); // Set text position (x, y)
  tft.println("GEAR"); // Print your text

//LAP
  tft.drawRoundRect(kotakLapX, kotakLapY, ukurankotakdalamLapX, ukurankotakdalamLapY, cornerRadiusBesar, WarnaOutlineLap);
  tft.fillRoundRect(posisikotakLapX, posisikotakLapY, ukurankotakLapX, ukurankotakLapY, cornerRadius, WarnaBGOutlineLap);
  tft.drawRoundRect(posisikotakLapX, posisikotakLapY, ukurankotakLapX, ukurankotakLapY, cornerRadius, WarnaOutlineLap);
  tft.setTextColor(WarnaTulisanLap); // Set text color
  tft.setTextSize(ukuranTextLap); // Set text size
  tft.setCursor(posisiTextLapX, posisiTextLapY); // Set text position (x, y)
  tft.println("LAP"); // Print your text

//POS
  tft.drawRoundRect(kotakPosX, kotakPosY, ukurankotakdalamPosX, ukurankotakdalamPosY, cornerRadiusBesar, WarnaOutlinePos);
  tft.fillRoundRect(posisikotakPosX, posisikotakPosY, ukurankotakPosX, ukurankotakPosY, cornerRadius, WarnaBGOutlinePos);
  tft.drawRoundRect(posisikotakPosX, posisikotakPosY, ukurankotakPosX, ukurankotakPosY, cornerRadius, WarnaOutlinePos);
  tft.setTextColor(WarnaTulisanPos); // Set text color
  tft.setTextSize(ukuranTextPos); // Set text size
  tft.setCursor(posisiTextPosX, posisiTextPosY); // Set text position (x, y)
  tft.println("POS"); // Print your text

//CurrentLAP
  tft.drawRoundRect(kotakCurrentLapX, kotakCurrentLapY, ukurankotakdalamCurrentLapX, ukurankotakdalamCurrentLapY, cornerRadiusBesar, WarnaOutlineCurrentLap);
  tft.fillRoundRect(posisikotakCurrentLapX, posisikotakCurrentLapY, ukurankotakCurrentLapX, ukurankotakCurrentLapY, cornerRadius, WarnaBGOutlineCurrentLap);
  tft.drawRoundRect(posisikotakCurrentLapX, posisikotakCurrentLapY, ukurankotakCurrentLapX, ukurankotakCurrentLapY, cornerRadius, WarnaOutlineCurrentLap);
  tft.setTextColor(WarnaTulisanCurrentLap); // Set text color
  tft.setTextSize(ukuranTextCurrentLap); // Set text size
  tft.setCursor(posisiTextCurrentLapX, posisiTextCurrentLapY); // Set text position (x, y)
  tft.println("CUR"); // Print your text

  //Fuel
  tft.drawRoundRect(kotakFuelX, kotakFuelY, ukurankotakdalamFuelX, ukurankotakdalamFuelY, cornerRadiusBesar, WarnaOutlineFuel);
  tft.fillRoundRect(posisikotakFuelX, posisikotakFuelY, ukurankotakFuelX, ukurankotakFuelY, cornerRadius, WarnaBGOutlineFuel);
  tft.drawRoundRect(posisikotakFuelX, posisikotakFuelY, ukurankotakFuelX, ukurankotakFuelY, cornerRadius, WarnaOutlineFuel);
  tft.setTextColor(WarnaTulisanFuel); // Set text color
  tft.setTextSize(ukuranTextFuel); // Set text size
  tft.setCursor(posisiTextFuelX, posisiTextFuelY); // Set text position (x, y)
  tft.println("FUE"); // Print your text

  //LastLAp
  tft.drawRoundRect(kotakLastLapX, kotakLastLapY, ukurankotakdalamLastLapX, ukurankotakdalamLastLapY, cornerRadiusBesar, WarnaOutlineLastLap);
  tft.fillRoundRect(posisikotakLastLapX, posisikotakLastLapY, ukurankotakLastLapX, ukurankotakLastLapY, cornerRadius, WarnaBGOutlineLastLap);
  tft.drawRoundRect(posisikotakLastLapX, posisikotakLastLapY, ukurankotakLastLapX, ukurankotakLastLapY, cornerRadius, WarnaOutlineLastLap);
  tft.setTextColor(WarnaTulisanLastLap); // Set text color
  tft.setTextSize(ukuranTextLastLap); // Set text size
  tft.setCursor(posisiTextLastLapX, posisiTextLastLapY); // Set text position (x, y)
  tft.println("LAS"); // Print your text

  //Speed
  tft.drawRoundRect(kotakSpeedX, kotakSpeedY, ukurankotakdalamSpeedX, ukurankotakdalamSpeedY, cornerRadiusBesar, WarnaOutlineSpeed);
  tft.fillRoundRect(posisikotakSpeedX, posisikotakSpeedY, ukurankotakSpeedX, ukurankotakSpeedY, cornerRadius, WarnaBGOutlineSpeed);
  tft.drawRoundRect(posisikotakSpeedX, posisikotakSpeedY, ukurankotakSpeedX, ukurankotakSpeedY, cornerRadius, WarnaOutlineSpeed);
  tft.setTextColor(WarnaTulisanSpeed); // Set text color
  tft.setTextSize(ukuranTextSpeed); // Set text size
  tft.setCursor(posisiTextSpeedX, posisiTextSpeedY); // Set text position (x, y)
  tft.println("SPD"); // Print your text

  //LapToGo
  tft.drawRoundRect(kotakTogoX, kotakTogoY, ukurankotakdalamTogoX, ukurankotakdalamTogoY, cornerRadiusBesar, WarnaOutlineTogo);
  tft.fillRoundRect(posisikotakTogoX, posisikotakTogoY, ukurankotakTogoX, ukurankotakTogoY, cornerRadius, WarnaBGOutlineTogo);
  tft.drawRoundRect(posisikotakTogoX, posisikotakTogoY, ukurankotakTogoX, ukurankotakTogoY, cornerRadius, WarnaOutlineTogo);
  tft.setTextColor(WarnaTulisanTogo); // Set text color
  tft.setTextSize(ukuranTextTogo); // Set text size
  tft.setCursor(posisiTextTogoX, posisiTextTogoY); // Set text position (x, y)
  tft.println("TOG"); // Print your text
}

void loop() {

}