/*
  Beispiel für 
  https://forum.arduino.cc/t/tft-input-placeholder/1107597

  2023-03-29
  ec2021

*/

#include "TFTCursor.h"
#include <Fonts/FreeSans12pt7b.h>
#include <Fonts/FreeSans24pt7b.h>

#define LEFT 20
#define TOP  100

CursorType myCursor;

void Print(String txt, int atX, int atY, int tSize, uint16_t col){
        tft.setCursor(atX, atY);
        tft.setTextColor(col);
        if (!myCursor.FixedFontInUse) tSize = 1;
        tft.setTextSize(tSize);   
        tft.println(txt);
        //myCursor.setAll(atX, atY,col, tSize, 0); // oder einzeln:
        myCursor.setCursor(atX, atY);
        myCursor.setTextColor(col);
        myCursor.setTextSize(tSize);   
        myCursor.setBlinkTime(500);
};

int Stelle   = 0;
int count    = 1;
int textSize = 1;
String txt = "12034";
unsigned long lastChange = 0;

void setup() {
  Serial.begin(115200);
  Serial.println("Start ...");
  tft.begin();
  tft.setRotation(0);
  tft.setFont(&FreeSans24pt7b);
  myCursor.FixedFontInUse = false;
  Print(txt,LEFT, TOP, textSize, ILI9341_RED);
}

void t(){
  int16_t  x1, y1;
  uint16_t w, h;
  tft.getTextBounds("0", LEFT, TOP, &x1, &y1, &w, &h);
  Serial.println("w = "+String(w)+" h = "+String(h));
// tft.fillRect(x1,y1,w,h,ILI9341_YELLOW);
   tft.drawRect(x1,y1,w,h,ILI9341_YELLOW);
}


/* 
  Blink(int Stelle, String txt)
  Anfang des Blinkstreifens über Stelle im txt 
  und den Befehl tft.getTextBounds(txt, 80, 80, &x1, &y1, &w, &h);
  ermitteln 


*/


void loop() {
   myCursor.Blink(Stelle);
   if (millis()-lastChange > 3000){
     lastChange = millis();
     Stelle++;
     if (Stelle == 2) Stelle++;  // Hier ist der Doppelpunkt 
     if (Stelle > 4)  Stelle = 0;
     count++;
     if (!(count % 5)) {
        Print("00:00",LEFT, TOP, textSize, ILI9341_BLACK);
        textSize++;
        if (textSize > 6) textSize = 1;
        Stelle = 0;
        count = 1;
        if (textSize < 3) Print(txt,LEFT, TOP, textSize, ILI9341_RED);
                     else Print(txt,LEFT, TOP, textSize, ILI9341_YELLOW);
     }
   }  

}