Files
myink/myink.ino
2020-05-14 20:06:50 +02:00

78 lines
2.6 KiB
C++

#include <DEV_Config.h>
#include <EPD.h>
#include <fonts.h>
#include <GUI_Paint.h>
#include <Debug.h>
#include "StackPanel.hpp"
#include "TextBlock.hpp"
PAINT_TIME show_time = {2020, 04, 27, 22, 42, 5};
UBYTE *BlackImage;
sFONT * font = &Font8;
PositionalProperties draw_label(const char * title, const char * value, const PositionalProperties & p, const sFONT & f)
{
DrawItemCallBack draw_items[] = {
[&f, &title](const PositionalProperties & p) -> PositionalProperties {
return TextBlock(title, {WHITE, BLACK, f}).draw(p);
},
[&value, &f](const PositionalProperties & p) -> PositionalProperties {
return TextBlock(value, {WHITE, BLACK, f}).draw(p);
},
};
DrawItemCallBackList draw_list = {2, draw_items};
StackPanelStyleProperties style = {WHITE, 0, BLACK, 0, 1};
auto date_stack = StackPanel(style, draw_list, StackPanel::move_right);
return date_stack.draw(p);
}
PositionalProperties draw_meeting(const char * date, const char * subject, const char * location, const PositionalProperties & p, const sFONT & f)
{
DrawItemCallBack meetings_draw_items[] = {
[&date, &f](const PositionalProperties & p) -> PositionalProperties {
return draw_label("date: ", date, p, f);
},
[&subject, &f](const PositionalProperties & p) -> PositionalProperties {
return draw_label("subject: ", subject, p, f);
},
[&location, &f](const PositionalProperties & p) -> PositionalProperties {
return draw_label("location: ", location, p, f);
}
};
DrawItemCallBackList meeting_draw_list = {3, meetings_draw_items};
StackPanelStyleProperties meeting_style = {WHITE, 1, BLACK, 1, 2};
auto meeting_stack = StackPanel(meeting_style, meeting_draw_list, StackPanel::move_down);
return meeting_stack.draw(p);
}
void setup() {
// put your setup code here, to run once:
DEV_Module_Init();
EPD_7IN5_V2_Init();
/* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */
UWORD Imagesize = ((EPD_7IN5_V2_WIDTH % 8 == 0) ? (EPD_7IN5_V2_WIDTH / 8 ) : (EPD_7IN5_V2_WIDTH / 8 + 1)) * EPD_7IN5_V2_HEIGHT;
if ((BlackImage = (UBYTE *)malloc(Imagesize / 2)) == NULL) {
printf("Failed to apply for black memory...\r\n");
while (1);
}
Paint_NewImage(BlackImage, EPD_7IN5_V2_WIDTH , EPD_7IN5_V2_HEIGHT / 2, 90, WHITE);
Paint_SelectImage(BlackImage);
Paint_Clear(WHITE);
draw_meeting("Monday", "boring meeting\nbooring", "home", {0, 0 , 300, 300}, Font12);
EPD_7IN5_V2_SendHalfImage(0, BlackImage);
EPD_7IN5_V2_SendHalfImage(1, BlackImage);
EPD_7IN5_V2_TurnOnDisplay();
}
void loop() {
EPD_7IN5_V2_Sleep();
}