Google calendar draft

This commit is contained in:
nitko12 2020-07-31 15:29:55 +02:00
parent 0c5d9f8cce
commit 37449f27a0
3 changed files with 290 additions and 220 deletions

View File

@ -97,14 +97,14 @@ void Inkplate::begin(void)
//Draw function, used by Adafruit GFX.
void Inkplate::drawPixel(int16_t x0, int16_t y0, uint16_t color)
{
if (x0 > 799 || y0 > 599 || x0 < 0 || y0 < 0)
if (x0 > _width - 1 || y0 > _height - 1 || x0 < 0 || y0 < 0)
return;
switch (_rotation)
{
case 1:
_swap_int16_t(x0, y0);
x0 = _width - x0 - 1;
x0 = _height - x0 - 1;
break;
case 2:
x0 = _width - x0 - 1;
@ -273,7 +273,7 @@ void Inkplate::drawBitmap3Bit(int16_t _x, int16_t _y, const unsigned char *_p, i
void Inkplate::setRotation(uint8_t r)
{
_rotation = r % 4;
switch (rotation)
switch (_rotation)
{
case 0:
_width = E_INK_WIDTH;

View File

@ -122,25 +122,29 @@ const uint8_t logo[] = {
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void setup() {
void setup()
{
display.begin(); //Init library (you should call this function ONLY ONCE)
display.clearDisplay(); //Clear any data that may have been in (software) frame buffer.
//(NOTE! This does not clean image on screen, it only clears it in the frame buffer inside ESP32).
display.clean(); //Clear everything that has previously been on a screen
display.setCursor(150, 320); display.setTextSize(4); display.print("Welcome to Inkplate 6!"); display.display(); //Write hello message
display.setCursor(150, 320);
display.setTextSize(4);
display.print("Welcome to Inkplate 6!");
display.display(); //Write hello message
delay(5000); //Wait a little bit
}
void loop() {
void loop()
{
//Example will demostrate funcionality one by one. You always first set everything in the frame buffer and afterwards you show
//it on the screen using display.display().
//Let's start by drawing a pixel at x = 100 and y = 50 location
display.clearDisplay(); //Clear everytning that is inside frame buffer in ESP32
displayCurrentAction("Drawing a pixel");//Function which writes small text at bottom left indicating what's currently done
displayCurrentAction("Drawing a pixel"); //Function which writes small text at bottom left indicating what's currently done
//NOTE: you do not need displayCurrentAction function to use Inkplate!
display.drawPixel(100, 50, BLACK); //Draw one black pixel at X = 100, Y = 50 position in BLACK color (must be black since Inkplate is in monochrome mode)
display.display(); //Send image to display. You need to call this one each time you want to transfer frame buffer to the screen.
@ -148,7 +152,8 @@ void loop() {
//Now, let's draw some random pixels!
display.clearDisplay(); //Clear everything that is inside frame buffer in ESP32
for (int i = 0; i < 600; i++) { //Write 600 black pixels at random locations
for (int i = 0; i < 600; i++)
{ //Write 600 black pixels at random locations
display.drawPixel(random(0, 799), random(0, 599), BLACK);
}
displayCurrentAction("Drawing 600 random pixels");
@ -165,13 +170,24 @@ void loop() {
//And again, let's draw some random lines on screen!
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.drawLine(random(0, 799), random(0, 599), random(0, 799), random(0, 599), BLACK);
}
displayCurrentAction("Drawing 50 random lines");
display.display();
delay(DELAY_MS);
//Let's draw some random thick lines on screen!
display.clearDisplay();
for (int i = 0; i < 50; i++)
{
display.drawThickLine(random(0, 799), random(0, 599), random(0, 799), random(0, 599), BLACK, (float)random(1, 20));
}
displayCurrentAction("Drawing 50 random lines");
display.display();
delay(DELAY_MS);
//Now draw one horizontal...
display.clearDisplay();
display.drawFastHLine(100, 100, 600, BLACK); //Arguments are: starting X, starting Y, length, color
@ -188,10 +204,12 @@ void loop() {
//Now, let' make a grid using only horizontal and vertical lines
display.clearDisplay();
for (int i = 0; i < 800; i += 8) {
for (int i = 0; i < 800; i += 8)
{
display.drawFastVLine(i, 0, 600, BLACK);
}
for (int i = 0; i < 600; i += 4) {
for (int i = 0; i < 600; i += 4)
{
display.drawFastHLine(0, i, 800, BLACK);
}
displayCurrentAction("Drawing a grid using horizontal and vertical lines");
@ -207,7 +225,8 @@ void loop() {
//Draw rectangles on random location, size 100x150 pixels
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.drawRect(random(0, 799), random(0, 599), 100, 150, BLACK);
}
displayCurrentAction("Drawing many rectangles");
@ -223,7 +242,8 @@ void loop() {
//Draw filled black rectangles on random location, size of 30x30 pixels
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.fillRect(random(0, 799), random(0, 599), 30, 30, BLACK);
}
displayCurrentAction("Drawing many filled rectangles randomly");
@ -239,7 +259,8 @@ void loop() {
//Draw some circles at random location with radius of 25 pixels
display.clearDisplay();
for (int i = 0; i < 40; i++) {
for (int i = 0; i < 40; i++)
{
display.drawCircle(random(0, 799), random(0, 599), 25, BLACK);
}
displayCurrentAction("Drawing many circles randomly");
@ -255,7 +276,8 @@ void loop() {
//Draw some black filled circles at random location with radius of 15 pixels
display.clearDisplay();
for (int i = 0; i < 40; i++) {
for (int i = 0; i < 40; i++)
{
display.fillCircle(random(0, 799), random(0, 599), 15, BLACK);
}
displayCurrentAction("Drawing many filled circles randomly");
@ -271,7 +293,8 @@ void loop() {
//Draw rounded rectangles on random location, size 100x150 pixels, radius of 5 pixels
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.drawRoundRect(random(0, 799), random(0, 599), 100, 150, 5, BLACK);
}
displayCurrentAction("Drawing many rounded edges rectangles");
@ -287,7 +310,8 @@ void loop() {
//Draw filled black rects on random location, size of 30x30 pixels, radius of 3 pixels
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.fillRoundRect(random(0, 799), random(0, 599), 30, 30, 3, BLACK);
}
displayCurrentAction("Random rounded edge filled rectangles");
@ -316,7 +340,8 @@ void loop() {
//Write some text on screen with different sizes
display.clearDisplay();
for (int i = 0; i < 6; i++) {
for (int i = 0; i < 6; i++)
{
display.setTextSize(i + 1); //textSize parameter starts at 0 and goes up to 10 (larger won't fit Inkplate 6 screen)
display.setCursor(200, (i * i * 8)); //setCursor works as same as on LCD displays - sets "the cursor" at the place you want to write someting next
display.print("INKPLATE 6!"); //The actual text you want to show on e-paper as String
@ -327,7 +352,8 @@ void loop() {
//Write same text on different location, but now invert colors (text is white, text background is black), without cleaning the previous text
display.setTextColor(WHITE, BLACK); //First argument is text color, while second argument is background color. In monochrome, there are
for (int i = 0; i < 6; i++) { //only two options: BLACK & WHITE
for (int i = 0; i < 6; i++)
{ //only two options: BLACK & WHITE
display.setTextSize(i + 1);
display.setCursor(200, 300 + (i * i * 8));
display.print("INKPLATE 6!");
@ -339,7 +365,8 @@ void loop() {
int r = 0;
display.setTextSize(8);
display.setTextColor(WHITE, BLACK);
while (true) {
while (true)
{
display.setCursor(100, 100);
display.clearDisplay();
display.setRotation(r); //Set rotation will sent rotation for the entire display, so you can use it sideways or upside-down
@ -351,7 +378,8 @@ void loop() {
}
//Small function that will write on the screen what function is currently in demonstration.
void displayCurrentAction(String text) {
void displayCurrentAction(String text)
{
display.setTextSize(2);
display.setCursor(2, 580);
display.print(text);

View File

@ -21,33 +21,40 @@
Inkplate display(INKPLATE_3BIT); //Create object on Inkplate library and set library to work in grayscale mode (3-bit)
//Other option is monochrome mode, which is demonstrated in next example "2-Inkplate_basic_monochrome"
#define DELAY_MS 5000 //Delay in milliseconds between screen refresh. Refreshing e-paper screens more often than 5s is not recommended
#define DELAY_MS 5000 //Delay in milliseconds between screen refresh. Refreshing e-paper screens more often than 5s is not recommended \
//Want to refresh faster? Use partial update! Find example in "3-Inkplate-basic_partial_update"
void setup() {
void setup()
{
display.begin(); //Init library (you should call this function ONLY ONCE)
display.clearDisplay(); //Clear any data that may have been in (software) frame buffer.
//(NOTE! This does not clean image on screen, it only clears it in the frame buffer inside ESP32).
display.clean(); //Clear everything that has previously been on a screen
display.setTextColor(0,7); display.setCursor(150, 320); display.setTextSize(4); display.print("Welcome to Inkplate 6!"); display.display(); //Write hello message
display.setTextColor(0, 7);
display.setCursor(150, 320);
display.setTextSize(4);
display.print("Welcome to Inkplate 6!");
display.display(); //Write hello message
delay(5000); //Wait a little bit
}
void loop() {
void loop()
{
//Example will demostrate funcionality one by one. You always first set everything in the frame buffer and afterwards you show
//it on the screen using display.display().
//Let'sstart by drawing pixel at x = 100 and y = 50 location
display.clearDisplay(); //Clear everytning that is inside frame buffer in ESP32
display.drawPixel(100, 50, 0); //Draw one black pixel at X = 100, Y = 50 position in 0 (BLACK) color
displayCurrentAction("Drawing a pixel");//Function which writes small text at bottom left indicating what's currently done
displayCurrentAction("Drawing a pixel"); //Function which writes small text at bottom left indicating what's currently done
//NOTE: you do not need displayCurrentAction function to use Inkplate!
display.display(); //Send image to display. You need to call this one each time you want to transfer frame buffer to the screen.
delay(DELAY_MS); //Wait a little bit
//Now, let's draw some random pixels!
display.clearDisplay(); //Clear everything that is inside frame buffer in ESP32
for (int i = 0; i < 1000; i++) { //Write 1000 random colored pixels at random locations
for (int i = 0; i < 1000; i++)
{ //Write 1000 random colored pixels at random locations
display.drawPixel(random(0, 799), random(0, 599), random(0, 7)); //We are setting color of the pixels using numbers from 0 to 7,
} //where 0 mens black, 7 white and gray is in between
displayCurrentAction("Drawing 600 random pixels in random colors");
@ -64,13 +71,36 @@ void loop() {
//And again, let's draw some random lines on screen!
display.clearDisplay();
for (int i = 0; i < 100; i++) {
for (int i = 0; i < 100; i++)
{
display.drawLine(random(0, 799), random(0, 599), random(0, 799), random(0, 599), random(0, 7));
}
displayCurrentAction("Drawing 50 random lines in random colors");
display.display();
delay(DELAY_MS);
//Let's draw some random thick lines on screen!
display.clearDisplay();
for (int i = 0; i < 100; i++)
{
display.drawThickLine(random(0, 799), random(0, 599), random(0, 799), random(0, 599), random(0, 7), (float)random(1, 20));
}
displayCurrentAction("Drawing 50 random lines in random colors and thickness");
display.display();
delay(DELAY_MS);
//Let's draw some random gradient thick lines on screen!
display.clearDisplay();
for (int i = 0; i < 100; i++)
{
int startColor = random(0, 7);
int endColor = random(startColor, 7);
display.drawGradientLine(random(0, 799), random(0, 599), random(0, 799), random(0, 599), startColor, endColor, (float)random(1, 20));
}
displayCurrentAction("Drawing 50 random lines in random colors and thickness");
display.display();
delay(DELAY_MS);
//Now draw one horizontal...
display.clearDisplay();
display.drawFastHLine(100, 100, 600, 0); //Arguments are: starting X, starting Y, length, color
@ -87,11 +117,13 @@ void loop() {
//Now, let' make a grid using only horizontal and vertical lines in random colors!
display.clearDisplay();
for (int i = 0; i < 800; i += 8) {
display.drawFastVLine(i, 0, 600, (i/8)&0x0F);
for (int i = 0; i < 800; i += 8)
{
display.drawFastVLine(i, 0, 600, (i / 8) & 0x0F);
}
for (int i = 0; i < 600; i += 4) {
display.drawFastHLine(0, i, 800, (i/8)&0x0F);
for (int i = 0; i < 600; i += 4)
{
display.drawFastHLine(0, i, 800, (i / 8) & 0x0F);
}
displayCurrentAction("Drawing a grid using horizontal and vertical lines in different colors");
display.display();
@ -106,7 +138,8 @@ void loop() {
//Draw rectangles on random location, size 100x150 pixels in random color
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.drawRect(random(0, 799), random(0, 599), 100, 150, random(0, 7));
}
displayCurrentAction("Drawing many rectangles in random colors");
@ -122,7 +155,8 @@ void loop() {
//Draw filled random colored rectangles on random location, size of 30x30 pixels in radnom color
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.fillRect(random(0, 799), random(0, 599), 30, 30, random(0, 7));
}
displayCurrentAction("Drawing many filled rectangles randomly in random colors");
@ -138,7 +172,8 @@ void loop() {
//Draw some random colored circles at random location with radius of 25 pixels in random color
display.clearDisplay();
for (int i = 0; i < 40; i++) {
for (int i = 0; i < 40; i++)
{
display.drawCircle(random(0, 799), random(0, 599), 25, random(0, 7));
}
displayCurrentAction("Drawing many circles randomly in random colors");
@ -154,7 +189,8 @@ void loop() {
//Draw some random colored filled circles at random location with radius of 15 pixels
display.clearDisplay();
for (int i = 0; i < 40; i++) {
for (int i = 0; i < 40; i++)
{
display.fillCircle(random(0, 799), random(0, 599), 15, random(0, 7));
}
displayCurrentAction("Drawing many filled circles randomly in random colors");
@ -170,7 +206,8 @@ void loop() {
//Draw rounded rectangles on random location, size 100x150 pixels, radius of 5 pixels in radnom color
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.drawRoundRect(random(0, 799), random(0, 599), 100, 150, 5, random(0, 7));
}
displayCurrentAction("Drawing many rounded edges rectangles");
@ -186,7 +223,8 @@ void loop() {
//Draw filled random colored rectangle on random location, size of 30x30 pixels, radius of 3 pixels in radnom color
display.clearDisplay();
for (int i = 0; i < 50; i++) {
for (int i = 0; i < 50; i++)
{
display.fillRoundRect(random(0, 799), random(0, 599), 30, 30, 3, random(0, 7));
}
displayCurrentAction("Drawing many filled rectangle with rounded edges in random colors");
@ -215,7 +253,8 @@ void loop() {
//Write some text on screen with different sizes and color
display.clearDisplay();
for (int i = 0; i < 6; i++) {
for (int i = 0; i < 6; i++)
{
display.setTextColor(i);
display.setTextSize(i + 1); //textSize parameter starts at 0 and goes up to 10 (larger won't fit Inkplate 6 screen)
display.setCursor(200, (i * i * 8)); //setCursor works as same as on LCD displays - sets "the cursor" at the place you want to write someting next
@ -227,7 +266,8 @@ void loop() {
//Write same text on different location, but now invert colors (text is white, text background is black)
display.setTextColor(7, 0); //First argument is text color, while second argument is background color. In greyscale,
for (int i = 0; i < 6; i++) { //you are able to choose from 8 different colors (0-7)
for (int i = 0; i < 6; i++)
{ //you are able to choose from 8 different colors (0-7)
display.setTextSize(i + 1);
display.setCursor(200, 300 + (i * i * 8));
display.print("INKPLATE6!");
@ -239,7 +279,8 @@ void loop() {
int r = 0;
display.setTextSize(8);
display.setTextColor(7, 0);
while (true) {
while (true)
{
display.setCursor(100, 100);
display.clearDisplay();
display.setRotation(r); //Set rotation will sent rotation for the entire display, so you can use it sideways or upside-down
@ -254,7 +295,8 @@ void loop() {
}
//Small function that will write on the screen what function is currently in demonstration.
void displayCurrentAction(String text) {
void displayCurrentAction(String text)
{
display.setTextSize(2);
display.setCursor(2, 580);
display.print(text);