InfiniTime/src/displayapp/LittleVgl.h

118 lines
3.6 KiB
C
Raw Normal View History

2020-02-10 20:05:33 +00:00
#pragma once
2020-11-15 15:49:36 +00:00
#include <lvgl/lvgl.h>
2020-02-10 20:05:33 +00:00
namespace Pinetime {
2020-11-15 15:49:36 +00:00
namespace Drivers {
class Cst816S;
class St7789;
}
2020-02-10 20:05:33 +00:00
namespace Components {
class LittleVgl {
public:
enum class FullRefreshDirections { None, Up, Down };
LittleVgl(Pinetime::Drivers::St7789& lcd, Pinetime::Drivers::Cst816S& touchPanel);
2020-02-10 20:05:33 +00:00
LittleVgl(const LittleVgl&) = delete;
LittleVgl& operator=(const LittleVgl&) = delete;
LittleVgl(LittleVgl&&) = delete;
LittleVgl& operator=(LittleVgl&&) = delete;
2020-02-10 20:05:33 +00:00
void FlushDisplay(const lv_area_t * area, lv_color_t * color_p);
bool GetTouchPadInfo(lv_indev_data_t *ptr);
void SetFullRefresh(FullRefreshDirections direction);
void SetNewTapEvent(uint16_t x, uint16_t y);
2020-02-10 20:05:33 +00:00
private:
void InitDisplay();
void InitTouchpad();
void InitTheme();
void InitBaseTheme();
void InitThemeContainer();
void InitThemeButton();
void InitThemeLabel();
void InitThemeLine();
void InitThemeLed();
void InitThemeImage();
void InitThemeBar();
void InitThemeSlider();
void InitThemeSwitch();
void InitThemeMeter();
void InitThemeGauge();
void InitThemeArc();
void InitThemePreload();
void InitThemeChart();
void InitThemeCalendar();
void InitThemeCheckBox();
void InitThemeButtonMatrix();
void InitThemeKnob();
void InitThemeMessageBox();
void InitThemePage();
void InitThemeTextArea();
void InitThemeSpinBox();
void InitThemeList();
void InitThemeDropDownList();
void InitThemeRoller();
void InitThemeTabView();
void InitThemeTileView();
void InitThemeTable();
void InitThemeWindow();
2020-02-10 20:05:33 +00:00
Pinetime::Drivers::St7789& lcd;
Pinetime::Drivers::Cst816S& touchPanel;
2020-02-10 20:05:33 +00:00
lv_disp_buf_t disp_buf_2;
lv_color_t buf2_1[LV_HOR_RES_MAX * 4];
lv_color_t buf2_2[LV_HOR_RES_MAX * 4];
2020-02-10 20:05:33 +00:00
lv_disp_drv_t disp_drv;
lv_point_t previousClick;
lv_style_t def;
lv_style_t scr, bg, sb, panel;
lv_font_t * font = nullptr;
uint16_t hue = 10;
lv_theme_t theme;
lv_style_t btn_rel, btn_pr, btn_tgl_rel, btn_tgl_pr, btn_ina;
lv_style_t labelBigStyle;
lv_style_t prim, sec, hint;
lv_style_t led;
lv_style_t bar_bg, bar_indic;
lv_style_t slider_knob;
lv_style_t arc;
lv_style_t cal_bg;
lv_style_t cal_header;
lv_style_t week_box;
lv_style_t today_box;
lv_style_t highlighted_days;
lv_style_t ina_days;
lv_style_t rel, pr, tgl_rel, tgl_pr, ina;
lv_style_t btnm_bg, btnm_rel, btnm_pr, btnm_tgl_rel, btnm_tgl_pr, btnm_ina;
lv_style_t mbox_bg;
lv_style_t page_scrl;
lv_style_t list_bg, list_btn_rel, list_btn_pr, list_btn_tgl_rel, list_btn_tgl_pr;
lv_style_t ddlist_bg, ddlist_sel;
lv_style_t cell;
lv_style_t win_bg;
lv_style_t win_header;
lv_style_t win_btn_pr;
bool firstTouch = true;
static constexpr uint8_t nbWriteLines = 4;
static constexpr uint16_t totalNbLines = 320;
static constexpr uint16_t visibleNbLines = 240;
static constexpr uint8_t MaxScrollOffset() { return LV_VER_RES_MAX - nbWriteLines; }
FullRefreshDirections scrollDirection = FullRefreshDirections::None;
uint16_t writeOffset = 0;
uint16_t scrollOffset = 0;
uint16_t tap_x = 0;
uint16_t tap_y = 0;
bool tapped = false;
2020-02-10 20:05:33 +00:00
};
}
}