Initial commit
This commit is contained in:
177
src/frame/frame_compare.cpp
Normal file
177
src/frame/frame_compare.cpp
Normal file
@@ -0,0 +1,177 @@
|
||||
#include "frame_compare.h"
|
||||
|
||||
void UpdateCompareCanvasDraw(uint8_t mode, M5EPD_Canvas *update_canvas)
|
||||
{
|
||||
update_canvas->fillCanvas(0);
|
||||
for(int i = 0; i < 16; i++)
|
||||
{
|
||||
update_canvas->fillRect(i * 27, 0, 27, 50, i);
|
||||
}
|
||||
switch(mode)
|
||||
{
|
||||
case UPDATE_MODE_INIT :
|
||||
{
|
||||
update_canvas->drawString("Display initialization", 8, 60);
|
||||
break;
|
||||
}
|
||||
case UPDATE_MODE_DU :
|
||||
{
|
||||
update_canvas->drawString("Monochrome menu, text input ", 8, 60);
|
||||
break;
|
||||
}
|
||||
case UPDATE_MODE_GC16 :
|
||||
{
|
||||
update_canvas->drawString("High quality images", 8, 60);
|
||||
break;
|
||||
}
|
||||
case UPDATE_MODE_GL16 :
|
||||
{
|
||||
update_canvas->drawString("Text with white background", 8, 60);
|
||||
break;
|
||||
}
|
||||
case UPDATE_MODE_GLR16:
|
||||
{
|
||||
update_canvas->drawString("Text with white background", 8, 60);
|
||||
break;
|
||||
}
|
||||
case UPDATE_MODE_GLD16:
|
||||
{
|
||||
update_canvas->drawString("Graphics with white background", 8, 60);
|
||||
break;
|
||||
}
|
||||
case UPDATE_MODE_DU4 :
|
||||
{
|
||||
update_canvas->drawString("Fast page flipping", 8, 60);
|
||||
break;
|
||||
}
|
||||
case UPDATE_MODE_A2 :
|
||||
{
|
||||
update_canvas->drawString("Anti-aliased text in menus", 8, 60);
|
||||
break;
|
||||
}
|
||||
}
|
||||
update_canvas->drawRect(0, 0, 432, 100, 15);
|
||||
}
|
||||
|
||||
void key_update_mode_cb(epdgui_args_vector_t &args)
|
||||
{
|
||||
EPDGUI_Button *btn = (EPDGUI_Button*)(args[0]);
|
||||
M5EPD_Canvas *canvas = (M5EPD_Canvas*)(args[1]);
|
||||
M5EPD_Canvas *canvas_time = (M5EPD_Canvas*)(args[2]);
|
||||
int mode = btn->GetCustomString().toInt();
|
||||
UpdateCompareCanvasDraw(mode, canvas);
|
||||
canvas_time->fillCanvas(0);
|
||||
uint32_t time = millis();
|
||||
canvas->pushCanvas(104, 168 + (mode-1) * 108, (m5epd_update_mode_t)mode);
|
||||
M5.EPD.CheckAFSR();
|
||||
char buf[30];
|
||||
sprintf(buf, "%lu ms", millis() - time);
|
||||
canvas_time->drawString(buf, 200, 15);
|
||||
canvas_time->pushCanvas(330, 925, UPDATE_MODE_GL16);
|
||||
}
|
||||
|
||||
void key_update_reset_cb(epdgui_args_vector_t &args)
|
||||
{
|
||||
M5.EPD.FillPartGram4bpp(104, 168, 432, 748, 0xFFFF);
|
||||
M5.EPD.UpdateArea(104, 168, 432, 748, UPDATE_MODE_INIT);
|
||||
}
|
||||
|
||||
Frame_Compare::Frame_Compare(void)
|
||||
{
|
||||
_frame_name = "Frame_Compare";
|
||||
|
||||
_canvas_time = new M5EPD_Canvas(&M5.EPD);
|
||||
_canvas = new M5EPD_Canvas(&M5.EPD);
|
||||
_canvas->createCanvas(432, 100);
|
||||
_canvas_time->createCanvas(200, 30);
|
||||
_canvas->setTextSize(26);
|
||||
_canvas_time->setTextSize(26);
|
||||
_canvas_time->setTextDatum(CR_DATUM);
|
||||
|
||||
uint8_t language = GetLanguage();
|
||||
if(language == LANGUAGE_JA)
|
||||
{
|
||||
exitbtn("ホーム");
|
||||
_canvas_title->drawString("比較", 270, 34);
|
||||
_key_updatemode[UPDATE_MODE_INIT] = new EPDGUI_Button("リセット", 4, 88, 532, 60);
|
||||
}
|
||||
else if(language == LANGUAGE_ZH)
|
||||
{
|
||||
exitbtn("主页");
|
||||
_canvas_title->drawString("比较", 270, 34);
|
||||
_key_updatemode[UPDATE_MODE_INIT] = new EPDGUI_Button("全部重置", 4, 88, 532, 60);
|
||||
}
|
||||
else
|
||||
{
|
||||
exitbtn("Home");
|
||||
_canvas_title->drawString("Compare", 270, 34);
|
||||
_key_updatemode[UPDATE_MODE_INIT] = new EPDGUI_Button("Reset all", 4, 88, 532, 60);
|
||||
}
|
||||
|
||||
_key_updatemode[UPDATE_MODE_INIT]->Bind(EPDGUI_Button::EVENT_RELEASED, key_update_reset_cb);
|
||||
|
||||
for(int i = 1; i < 8; i++)
|
||||
{
|
||||
_key_updatemode[i] = new EPDGUI_Button(0, 168 + (i-1) * 108, 100, 100);
|
||||
char buf[10];
|
||||
sprintf(buf, "%d", i);
|
||||
_key_updatemode[i]->SetCustomString(buf);
|
||||
_key_updatemode[i]->AddArgs(EPDGUI_Button::EVENT_RELEASED, 0, _key_updatemode[i]);
|
||||
_key_updatemode[i]->AddArgs(EPDGUI_Button::EVENT_RELEASED, 1, _canvas);
|
||||
_key_updatemode[i]->AddArgs(EPDGUI_Button::EVENT_RELEASED, 2, _canvas_time);
|
||||
_key_updatemode[i]->Bind(EPDGUI_Button::EVENT_RELEASED, key_update_mode_cb);
|
||||
}
|
||||
|
||||
_key_updatemode[UPDATE_MODE_DU ]->setLabel("DU");
|
||||
_key_updatemode[UPDATE_MODE_GC16 ]->setLabel("GC16");
|
||||
_key_updatemode[UPDATE_MODE_GL16 ]->setLabel("GL16");
|
||||
_key_updatemode[UPDATE_MODE_GLR16]->setLabel("GLR16");
|
||||
_key_updatemode[UPDATE_MODE_GLD16]->setLabel("GLD16");
|
||||
_key_updatemode[UPDATE_MODE_DU4 ]->setLabel("DU4");
|
||||
_key_updatemode[UPDATE_MODE_A2 ]->setLabel("A2");
|
||||
|
||||
_key_exit->AddArgs(EPDGUI_Button::EVENT_RELEASED, 0, (void*)(&_is_run));
|
||||
_key_exit->Bind(EPDGUI_Button::EVENT_RELEASED, &Frame_Base::exit_cb);
|
||||
}
|
||||
|
||||
Frame_Compare::~Frame_Compare(void)
|
||||
{
|
||||
for(int i = 0; i < 8; i++)
|
||||
{
|
||||
delete _key_updatemode[i];
|
||||
}
|
||||
delete _canvas;
|
||||
}
|
||||
|
||||
int Frame_Compare::run()
|
||||
{
|
||||
switch(_update_flag)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
_update_flag = 0;
|
||||
for(int i = 1; i < 8; i++)
|
||||
{
|
||||
UpdateCompareCanvasDraw(i, _canvas);
|
||||
_canvas->pushCanvas(104, 168 + (i-1) * 108, (m5epd_update_mode_t)i);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Frame_Compare::init(epdgui_args_vector_t &args)
|
||||
{
|
||||
_is_run = 1;
|
||||
_update_flag = 1;
|
||||
M5.EPD.Clear();
|
||||
_canvas_title->pushCanvas(0, 8, UPDATE_MODE_NONE);
|
||||
EPDGUI_AddObject(_key_exit);
|
||||
for(int i = 0; i < 8; i++)
|
||||
{
|
||||
EPDGUI_AddObject(_key_updatemode[i]);
|
||||
}
|
||||
EPDGUI_SetAutoUpdate(false);
|
||||
return 3;
|
||||
}
|
||||
Reference in New Issue
Block a user