ref: 0.13.0
src/displayapp/LittleVgl.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
#pragma once #include <lvgl/lvgl.h> namespace Pinetime { namespace Drivers { class Cst816S; class St7789; } namespace Components { class LittleVgl { public: enum class FullRefreshDirections { None, Up, Down }; LittleVgl(Pinetime::Drivers::St7789& lcd, Pinetime::Drivers::Cst816S& touchPanel); LittleVgl(const LittleVgl&) = delete; LittleVgl& operator=(const LittleVgl&) = delete; LittleVgl(LittleVgl&&) = delete; LittleVgl& operator=(LittleVgl&&) = delete; 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); 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(); Pinetime::Drivers::St7789& lcd; Pinetime::Drivers::Cst816S& touchPanel; 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]; 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; }; } } |