/*
   3_Basic_partial_update example for e-radionica Inkplate 6
   For this example you will need only USB cable and Inkplate 6
   Select "Inkplate 6(ESP32)" from Tools -> Board menu.
   Don't have "Inkplate 6(ESP32)" option? Follow our tutorial and add it: 
   https://e-radionica.com/en/blog/add-inkplate-6-to-arduino-ide/

   In this example we will show  how to use partial update functionality of Inkplate 6 e-paper display.
   It will scroll text that is saved in char array
   NOTE: Partial update is only available on 1 Bit mode (Monochrome) and it is not recommended to use it on first refresh after power up.
   It is recommended to do a full refresh every 5-10 partial refresh to maintain good picture quality.

   Want to learn more about Inkplate? Visit www.inkplate.io
   Looking to get support? Write on our forums: http://forum.e-radionica.com/en/
   15 July 2020 by e-radionica.com
*/

#include "Inkplate.h"               //Include Inkplate library to the sketch
Inkplate display(INKPLATE_1BIT);    //Create an object on Inkplate library and also set library into 1-bit mode (Monochrome)

//Char array where you can store your text that will be scrolled.
const char text[] = "This is partial update on Inkplate 6 e-paper display! :)";

//This variable is used for moving the text (scrolling)
int offset = 800;

//Variable that keeps count on how much screen has been partially updated
int n = 0;
void setup() {
  display.begin();                      //Init Inkplate library (you should call this function ONLY ONCE)
  display.clearDisplay();               //Clear frame buffer of display
  display.display();                    //Put clear image on display
  display.setTextColor(BLACK, WHITE);   //Set text color to be black and background color to be white
  display.setTextSize(4);               //Set text to be 4 times bigger than classic 5x7 px text
  display.setTextWrap(false);           //Disable text wraping
}

void loop() {
  display.clearDisplay();             //Clear content in frame buffer
  display.setCursor(offset, 300);     //Set new position for text
  display.print(text);                //Write text at new position
  if(n>9) {                           //Check if you need to do full refresh or you can do partial update
    display.display();                //Do a full refresh
    n = 0;
  }else{
    display.partialUpdate();          //Do partial update
    n++;                              //Keep track on how many times screen has been partially updated
  }
  offset-=20;                         //Move text into new position
  if(offset<0) offset = 800;          //Text is scrolled till the end of the screen? Get it back on the start!
  delay(500);                         //Delay between refreshes.
}