Path: blob/master/bdk/libs/lvgl/lv_themes/lv_theme_hekate.c
1476 views
/*1* Copyright (c) 2018-2022 CTCaer2*3* This program is free software; you can redistribute it and/or modify it4* under the terms and conditions of the GNU General Public License,5* version 2, as published by the Free Software Foundation.6*7* This program is distributed in the hope it will be useful, but WITHOUT8* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or9* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for10* more details.11*12* You should have received a copy of the GNU General Public License13* along with this program. If not, see <http://www.gnu.org/licenses/>.14*/1516/*********************17* INCLUDES18*********************/19#include "lv_theme.h"2021#if USE_LV_THEME_HEKATE2223/*********************24* DEFINES25*********************/26#define DEF_RADIUS 427#define COLOR_SHADOW_LIGHT LV_COLOR_HEX(0xAAAAAA)28#define COLOR_SHADOW_DARK LV_COLOR_HEX(0x1F1F1F)29#define COLOR_HOS_TURQUOISE (lv_color_hsv_to_rgb(_hue, 100, 100)) // 0x00FFC930#define COLOR_HOS_TEAL_LIGHTER (lv_color_hsv_to_rgb(_hue, 100, 93)) // 0x00EDBA31#define COLOR_HOS_TEAL_LIGHT (lv_color_hsv_to_rgb(_hue, 100, 72)) // 0x00B78F32#define COLOR_HOS_TEAL (lv_color_hsv_to_rgb(_hue, 100, 64)) // 0x00A27333#define COLOR_HOS_ORANGE LV_COLOR_HEX(0xFF5500)34#define COLOR_HOS_TXT_WHITE LV_COLOR_HEX(0xFBFBFB)3536#define COLOR_BG_DARKER LV_COLOR_HEX(theme_bg_color ? (theme_bg_color - 0x121212) : 0x0B0B0B) // 0x1B1B1B.37#define COLOR_BG_DARK LV_COLOR_HEX(theme_bg_color ? (theme_bg_color - 0x0B0B0B) : 0x121212) // 0x222222.38#define COLOR_BG LV_COLOR_HEX(theme_bg_color) // 0x2D2D2D.39#define COLOR_BG_LIGHT LV_COLOR_HEX(theme_bg_color ? (theme_bg_color + 0x101010) : 0x2D2D2D) // 0x3D3D3D.40#define COLOR_BG_LIGHTER LV_COLOR_HEX(theme_bg_color ? (theme_bg_color + 0x191919) : 0x363636) // 0x464646.41#define COLOR_LIGHT_BORDER LV_COLOR_HEX(theme_bg_color ? (theme_bg_color + 0x202020) : 0x3D3D3D) // 0x4D4D4D.424344/**********************45* TYPEDEFS46**********************/4748/**********************49* STATIC PROTOTYPES50**********************/5152/**********************53* STATIC VARIABLES54**********************/55static lv_theme_t theme;56static lv_style_t def;5758/*Static style definitions*/59static lv_style_t sb;6061/*Saved input parameters*/62static uint16_t _hue;63static lv_font_t * _font;64uint32_t theme_bg_color;6566/**********************67* MACROS68**********************/6970/**********************71* STATIC FUNCTIONS72**********************/7374static void basic_init(void)75{76static lv_style_t bg, panel;7778lv_style_copy(&def, &lv_style_plain); // Initialize the default style.79def.text.font = _font;80def.body.radius = DEF_RADIUS;81def.text.color = COLOR_HOS_TXT_WHITE;82//def.image.color = COLOR_HOS_TXT_WHITE; //Needed if symbol image.83//def.image.opa = LV_OPA_COVER;8485lv_style_copy(&bg, &def);86bg.body.main_color = COLOR_BG;87bg.body.grad_color = bg.body.main_color;88bg.body.radius = 0;89bg.body.empty = 1;9091lv_style_copy(&panel, &def);92panel.body.radius = DEF_RADIUS;93panel.body.main_color = COLOR_BG;94panel.body.grad_color = COLOR_BG;95panel.body.border.width = 1;96panel.body.border.color = COLOR_LIGHT_BORDER;97panel.body.border.opa = LV_OPA_COVER;98panel.body.shadow.color = COLOR_SHADOW_LIGHT;99panel.body.shadow.type = LV_SHADOW_BOTTOM;100panel.body.shadow.width = 4;101panel.body.padding.hor = LV_DPI / 8;102panel.body.padding.ver = LV_DPI / 8;103panel.body.padding.inner = LV_DPI / 12;104//panel.text.color = COLOR_HOS_TXT_WHITE;105106lv_style_copy(&sb, &def);107sb.body.main_color = LV_COLOR_BLACK;108sb.body.grad_color = LV_COLOR_BLACK;109sb.body.opa = LV_OPA_40;110sb.body.padding.hor = LV_DPI / 25;111112theme.bg = &bg;113theme.panel = &panel;114}115116static void cont_init(void)117{118#if USE_LV_CONT != 0119static lv_style_t cont;120lv_style_copy(&cont, theme.panel);121cont.body.shadow.width = 0;122cont.body.border.width = 0;123124theme.cont = &cont;125#endif126}127128static void btn_init(void)129{130#if USE_LV_BTN != 0131static lv_style_t rel, pr, tgl_rel, tgl_pr, ina;132133lv_style_copy(&rel, &def);134rel.body.main_color = COLOR_BG_LIGHT;135rel.body.grad_color = rel.body.main_color;136rel.body.radius = 6;137rel.body.padding.hor = LV_DPI / 3;138rel.body.padding.ver = LV_DPI / 6;139rel.body.padding.inner = LV_DPI / 10;140rel.body.shadow.color = COLOR_SHADOW_DARK;141rel.body.shadow.type = LV_SHADOW_BOTTOM;142rel.body.shadow.width = 6;143rel.body.border.width = 0;144rel.body.border.color = COLOR_BG_LIGHT;145rel.body.border.part = LV_BORDER_FULL;146//rel.text.color = COLOR_HOS_TXT_WHITE;147148lv_style_copy(&pr, &rel);149pr.body.main_color = LV_COLOR_HEX(0x505050);150pr.body.grad_color = pr.body.main_color;151pr.body.shadow.width = 0;152pr.body.border.color = COLOR_HOS_TEAL_LIGHTER;153pr.text.color = COLOR_HOS_TURQUOISE;154pr.body.border.width = 4;155156lv_style_copy(&tgl_rel, &rel);157tgl_rel.body.border.color = COLOR_HOS_TEAL_LIGHTER;158tgl_rel.body.border.width = 4;159160lv_style_copy(&tgl_pr, &tgl_rel);161tgl_pr.body.main_color = LV_COLOR_HEX(0x505050);162tgl_pr.body.grad_color = tgl_pr.body.main_color;163tgl_pr.text.color = COLOR_HOS_TURQUOISE;164tgl_pr.body.shadow.width = 0;165166lv_style_copy(&ina, &rel);167ina.body.main_color = COLOR_BG_DARK;168ina.body.grad_color = ina.body.main_color;169//ina.body.shadow.width = 0;170ina.text.color = LV_COLOR_HEX(0x888888);171ina.body.border.width = 4;172173theme.btn.rel = &rel;174theme.btn.pr = ≺175theme.btn.tgl_rel = &tgl_rel;176theme.btn.tgl_pr = &tgl_pr;177theme.btn.ina = &ina;178#endif179}180181182static void label_init(void)183{184#if USE_LV_LABEL != 0185static lv_style_t prim, sec, hint;186187lv_style_copy(&prim, &def);188prim.text.font = _font;189prim.text.color = COLOR_HOS_TXT_WHITE;190191lv_style_copy(&sec, &prim);192sec.text.color = COLOR_HOS_ORANGE;193194lv_style_copy(&hint, &prim);195hint.text.color = LV_COLOR_HEX(0xCCCCCC);196197theme.label.prim = &prim;198theme.label.sec = &sec;199theme.label.hint = &hint;200#endif201}202203static void img_init(void)204{205#if USE_LV_IMG != 0206static lv_style_t img_light, img_dark;207lv_style_copy(&img_light, &def);208img_light.image.color = LV_COLOR_WHITE;209img_light.image.intense = LV_OPA_80;210211lv_style_copy(&img_dark, &def);212img_dark.image.color = COLOR_BG_DARKER;213img_dark.image.intense = LV_OPA_80;214215216theme.img.light = &def;217theme.img.dark = &def;218#endif219}220221static void line_init(void)222{223#if USE_LV_LINE != 0224static lv_style_t line;225lv_style_copy(&line, &def);226line.line.color = LV_COLOR_HEX(0x656565);227theme.line.decor = &line;228#endif229}230231static void led_init(void)232{233#if USE_LV_LED != 0234static lv_style_t led;235lv_style_copy(&led, &def);236led.body.shadow.width = LV_DPI / 10;237led.body.radius = LV_RADIUS_CIRCLE;238led.body.border.width = LV_DPI / 30;239led.body.border.opa = LV_OPA_30;240led.body.main_color = lv_color_hsv_to_rgb(_hue, 100, 100);241led.body.grad_color = lv_color_hsv_to_rgb(_hue, 100, 100);242led.body.border.color = lv_color_hsv_to_rgb(_hue, 60, 60);243led.body.shadow.color = lv_color_hsv_to_rgb(_hue, 100, 100);244245theme.led = &led;246#endif247}248249static void bar_init(void)250{251#if USE_LV_BAR252static lv_style_t bar_bg, bar_indic;253254lv_style_copy(&bar_bg, &def);255bar_bg.body.main_color = COLOR_LIGHT_BORDER;256bar_bg.body.grad_color = bar_bg.body.main_color;257bar_bg.body.radius = 3;258bar_bg.body.border.width = 0;259bar_bg.body.padding.hor = LV_DPI / 12;260bar_bg.body.padding.ver = LV_DPI / 12;261262lv_style_copy(&bar_indic, &bar_bg);263bar_indic.body.main_color = COLOR_HOS_TURQUOISE;264bar_indic.body.grad_color = bar_indic.body.main_color;265bar_indic.body.padding.hor = 0;266bar_indic.body.padding.ver = 0;267268theme.bar.bg = &bar_bg;269theme.bar.indic = &bar_indic;270#endif271}272273static void slider_init(void)274{275#if USE_LV_SLIDER != 0276static lv_style_t knob;277static lv_style_t slide_bar;278279lv_style_copy(&knob, &def);280knob.body.radius = LV_RADIUS_CIRCLE;281knob.body.border.width = 0;282knob.body.main_color = theme.bar.indic->body.main_color;283knob.body.grad_color = knob.body.main_color;284285lv_style_copy(&slide_bar, theme.bar.indic);286slide_bar.body.main_color = COLOR_HOS_TEAL_LIGHT;287slide_bar.body.grad_color = slide_bar.body.main_color;288289theme.slider.bg = theme.bar.bg;290theme.slider.indic = &slide_bar;291theme.slider.knob = &knob;292#endif293}294295static void sw_init(void)296{297#if USE_LV_SW != 0298static lv_style_t sw_bg, sw_indic, sw_knob_off, sw_knob_on;299lv_style_copy(&sw_bg, theme.slider.bg);300sw_bg.body.radius = LV_RADIUS_CIRCLE;301302lv_style_copy(&sw_indic, theme.slider.bg);303sw_indic.body.radius = LV_RADIUS_CIRCLE;304305lv_style_copy(&sw_knob_on, theme.slider.knob);306307lv_style_copy(&sw_knob_off, &sw_knob_on);308sw_knob_off.body.main_color = LV_COLOR_HEX(0xDADADA);309sw_knob_off.body.grad_color = sw_knob_off.body.main_color;310sw_knob_off.body.border.width = 1;311sw_knob_off.body.border.color = LV_COLOR_HEX(0x999999);312sw_knob_off.body.border.opa = LV_OPA_COVER;313314theme.sw.bg = &sw_bg;315theme.sw.indic = &sw_indic;316theme.sw.knob_off = &sw_knob_off;317theme.sw.knob_on = &sw_knob_on;318#endif319}320321322static void lmeter_init(void)323{324#if USE_LV_LMETER != 0325static lv_style_t lmeter;326lv_style_copy(&lmeter, &def);327lmeter.body.main_color = lv_color_hsv_to_rgb(_hue, 75, 90);328lmeter.body.grad_color = lmeter.body.main_color;329lmeter.body.padding.hor = LV_DPI / 10; // Scale line length.330lmeter.line.color = LV_COLOR_HEX(0x999999);331lmeter.line.width = 2;332333theme.lmeter = &lmeter;334#endif335}336337static void gauge_init(void)338{339#if USE_LV_GAUGE != 0340341static lv_style_t gauge;342lv_style_copy(&gauge, &def);343gauge.body.main_color = lv_color_hsv_to_rgb(_hue, 10, 60);344gauge.body.grad_color = gauge.body.main_color;345gauge.body.padding.hor = LV_DPI / 16; // Scale line length.346gauge.body.padding.inner = LV_DPI / 8;347gauge.body.border.color = LV_COLOR_HEX(0x999999);348gauge.text.color = LV_COLOR_HEX(0xDDDDDD);349gauge.line.width = 3;350gauge.line.color = lv_color_hsv_to_rgb(_hue, 95, 70);351352theme.gauge = &gauge;353#endif354}355356static void arc_init(void)357{358#if USE_LV_ARC != 0359360static lv_style_t arc;361lv_style_copy(&arc, &def);362arc.line.width = 10;363arc.line.color = lv_color_hsv_to_rgb(_hue, 90, 90);364365/*For prelaoder*/366arc.body.border.width = 10;367arc.body.border.color = lv_color_hsv_to_rgb(_hue, 30, 90);368arc.body.padding.hor = 0;369arc.body.padding.ver = 0;370371theme.arc = &arc;372#endif373}374375static void preload_init(void)376{377#if USE_LV_PRELOAD != 0378379theme.preload = theme.arc;380#endif381}382383static void chart_init(void)384{385#if USE_LV_CHART386theme.chart = theme.panel;387#endif388}389390static void calendar_init(void)391{392#if USE_LV_CALENDAR393static lv_style_t ina_days;394lv_style_copy(&ina_days, &def);395ina_days.text.color = lv_color_hsv_to_rgb(_hue, 0, 70);396397static lv_style_t high_days;398lv_style_copy(&high_days, &def);399high_days.text.color = lv_color_hsv_to_rgb(_hue, 80, 90);400401static lv_style_t week_box;402lv_style_copy(&week_box, &def);403week_box.body.main_color = lv_color_hsv_to_rgb(_hue, 40, 100);404week_box.body.grad_color = lv_color_hsv_to_rgb(_hue, 40, 100);405week_box.body.padding.ver = LV_DPI / 20;406week_box.body.padding.hor = theme.panel->body.padding.hor;407week_box.body.border.color = theme.panel->body.border.color;408week_box.body.border.width = theme.panel->body.border.width;409week_box.body.border.part = LV_BORDER_LEFT | LV_BORDER_RIGHT;410week_box.body.radius = 0;411412static lv_style_t today_box;413lv_style_copy(&today_box, &def);414today_box.body.main_color = LV_COLOR_WHITE;415today_box.body.grad_color = LV_COLOR_WHITE;416today_box.body.padding.ver = LV_DPI / 20;417today_box.body.radius = 0;418419theme.calendar.bg = theme.panel;420theme.calendar.header = &lv_style_transp;421theme.calendar.inactive_days = &ina_days;422theme.calendar.highlighted_days = &high_days;423theme.calendar.week_box = &week_box;424theme.calendar.today_box = &today_box;425#endif426}427428static void cb_init(void)429{430#if USE_LV_CB != 0431static lv_style_t rel, pr, tgl_rel, tgl_pr, ina;432lv_style_copy(&rel, theme.panel);433rel.body.shadow.type = LV_SHADOW_FULL;434rel.body.shadow.width = 3;435436lv_style_copy(&pr, &rel);437pr.body.main_color = LV_COLOR_HEX(0xCCCCCC);438pr.body.grad_color = pr.body.main_color;439pr.body.shadow.width = 3;440441lv_style_copy(&tgl_rel, &rel);442tgl_rel.body.main_color = lv_color_hsv_to_rgb(_hue, 75, 85);443tgl_rel.body.grad_color = tgl_rel.body.main_color;444tgl_rel.body.shadow.width = 0;445446lv_style_copy(&tgl_pr, &tgl_rel);447tgl_pr.body.main_color = lv_color_hsv_to_rgb(_hue, 75, 65);448tgl_pr.body.grad_color = tgl_pr.body.main_color;449450lv_style_copy(&ina, theme.btn.ina);451452theme.cb.bg = &lv_style_transp;453theme.cb.box.rel = &rel;454theme.cb.box.pr = ≺455theme.cb.box.tgl_rel = &tgl_rel;456theme.cb.box.tgl_pr = &tgl_pr;457theme.cb.box.ina = &ina;458#endif459}460461462static void btnm_init(void)463{464#if USE_LV_BTNM465static lv_style_t bg, rel, pr, tgl_rel, tgl_pr, ina;466467lv_style_copy(&bg, theme.panel);468bg.body.padding.hor = 0;469bg.body.padding.ver = 0;470bg.body.padding.inner = 0;471bg.text.color = LV_COLOR_HEX(0x555555);472473lv_style_copy(&rel, theme.panel);474rel.body.border.part = LV_BORDER_FULL | LV_BORDER_INTERNAL;475rel.body.border.width = 1;476rel.body.border.color = LV_COLOR_HEX(0xBBBBBB);477rel.body.empty = 1;478rel.body.shadow.width = 0;479480lv_style_copy(&pr, &rel);481pr.glass = 0;482pr.body.main_color = LV_COLOR_HEX(0xDDDDDD);483pr.body.grad_color = pr.body.main_color;484pr.body.border.width = 0;485pr.body.empty = 0;486487lv_style_copy(&tgl_rel, &pr);488tgl_rel.body.main_color = lv_color_hsv_to_rgb(_hue, 90, 70);489tgl_rel.body.grad_color = tgl_rel.body.main_color;490tgl_rel.text.color = lv_color_hsv_to_rgb(_hue, 5, 95);491492lv_style_copy(&tgl_pr, &tgl_rel);493tgl_pr.body.main_color = lv_color_hsv_to_rgb(_hue, 95, 65);494tgl_pr.body.grad_color = tgl_pr.body.main_color;495tgl_pr.body.border.width = 0;496497lv_style_copy(&ina, theme.btn.ina);498499theme.btnm.bg = &bg;500theme.btnm.btn.rel = &rel;501theme.btnm.btn.pr = ≺502theme.btnm.btn.tgl_rel = &tgl_rel;503theme.btnm.btn.tgl_pr = &tgl_pr;504theme.btnm.btn.ina = &ina;505#endif506}507508static void kb_init(void)509{510#if USE_LV_KB511512static lv_style_t bg, rel;513514lv_style_copy(&bg, theme.btnm.bg);515bg.text.color = LV_COLOR_HEX(0xCCCCCC);516bg.body.border.width = 0;517bg.body.radius = 0;518bg.body.shadow.color = COLOR_SHADOW_DARK;519bg.body.shadow.type = LV_SHADOW_BOTTOM;520bg.body.shadow.width = 4;521522lv_style_copy(&rel, &lv_style_transp);523rel.text.font = _font;524525theme.kb.bg = &bg;526theme.kb.btn.rel = &rel;527theme.kb.btn.pr = theme.btnm.btn.pr;528theme.kb.btn.tgl_rel = theme.btnm.btn.tgl_rel;529theme.kb.btn.tgl_pr = theme.btnm.btn.tgl_pr;530theme.kb.btn.ina = theme.btnm.btn.ina;531#endif532533}534535static void mbox_init(void)536{537#if USE_LV_MBOX538static lv_style_t bg;539540lv_style_copy(&bg, theme.panel);541bg.body.main_color = COLOR_BG_LIGHTER;542bg.body.grad_color = bg.body.main_color;543bg.body.shadow.color = COLOR_BG;544bg.body.shadow.type = LV_SHADOW_FULL;545bg.body.shadow.width = 8;546547bg.body.padding.hor = LV_DPI * 3 / 6;548bg.body.padding.ver = LV_DPI / 4;549bg.body.padding.inner = LV_DPI / 3;550551theme.mbox.bg = &bg;552theme.mbox.btn.bg = &lv_style_transp;553theme.mbox.btn.rel = theme.btn.rel;554theme.mbox.btn.pr = theme.btn.pr;555#endif556}557558static void page_init(void)559{560#if USE_LV_PAGE561theme.page.bg = theme.panel;562theme.page.scrl = &lv_style_transp;563theme.page.sb = &sb;564#endif565}566567static void ta_init(void)568{569#if USE_LV_TA570static lv_style_t panel, oneline;571572lv_style_copy(&panel, theme.panel);573panel.body.border.width = 0;574panel.body.shadow.color = COLOR_SHADOW_DARK;575panel.body.shadow.type = LV_SHADOW_FULL;576panel.body.shadow.width = 3;577578lv_style_copy(&oneline, &def);579oneline.body.empty = 1;580oneline.body.radius = 0;581oneline.body.border.part = LV_BORDER_BOTTOM;582oneline.body.border.width = 3;583oneline.body.border.color = LV_COLOR_HEX(0x555555);584oneline.body.border.opa = LV_OPA_COVER;585oneline.text.color = LV_COLOR_HEX(0x888888);586587theme.ta.area = &panel;588theme.ta.oneline = &oneline;589theme.ta.cursor = NULL; // Let library to calculate the cursor's style.590theme.ta.sb = &sb;591#endif592}593594static void spinbox_init(void)595{596#if USE_LV_SPINBOX597theme.spinbox.bg= theme.panel;598theme.spinbox.cursor = theme.ta.cursor;599theme.spinbox.sb = theme.ta.sb;600#endif601}602603static void list_init(void)604{605#if USE_LV_LIST != 0606607static lv_style_t list_bg, rel, pr, tgl_rel, tgl_pr, ina;608609lv_style_copy(&list_bg, theme.panel);610list_bg.body.padding.hor = 0;611list_bg.body.padding.ver = 0;612list_bg.body.padding.inner = 0;613list_bg.body.shadow.width = 0;614615lv_style_copy(&rel, &lv_style_transp);616rel.body.padding.hor = LV_DPI / 8;617rel.body.padding.ver = LV_DPI / 6;618rel.body.radius = 0;619rel.body.border.color = LV_COLOR_HEX(0x444444);620rel.body.border.width = 1;621rel.body.border.part = LV_BORDER_BOTTOM;622623lv_style_copy(&pr, &rel);624pr.glass = 0;625pr.body.main_color = LV_COLOR_HEX(0x505050);626pr.body.grad_color = pr.body.main_color;627//pr.body.border.width = 1;628pr.body.empty = 0;629//pr.body.radius = 0;630// pr.text.font = _font;631632lv_style_copy(&tgl_rel, &pr);633tgl_rel.body.main_color = COLOR_BG_LIGHT;634tgl_rel.body.grad_color = tgl_rel.body.main_color;635//tgl_rel.text.color = lv_color_hsv_to_rgb(_hue, 5, 95);636tgl_rel.text.color = COLOR_HOS_TEAL_LIGHTER;637638lv_style_copy(&tgl_pr, &tgl_rel);639tgl_pr.body.main_color = LV_COLOR_HEX(0x505050);640tgl_pr.body.grad_color = tgl_pr.body.main_color;641tgl_pr.body.border.width = 0;642643lv_style_copy(&ina, &pr);644ina.body.main_color = COLOR_BG_DARK;645ina.body.grad_color = ina.body.main_color;646647theme.list.sb = &sb;648theme.list.bg = &list_bg;649theme.list.scrl = &lv_style_transp_tight;650theme.list.btn.rel = &rel;651theme.list.btn.pr = ≺652theme.list.btn.tgl_rel = &tgl_rel;653theme.list.btn.tgl_pr = &tgl_pr;654theme.list.btn.ina = &ina;655#endif656}657658static void ddlist_init(void)659{660#if USE_LV_DDLIST != 0661static lv_style_t bg, sel;662lv_style_copy(&bg, theme.panel);663bg.body.padding.hor = LV_DPI / 6;664//bg.body.padding.ver = LV_DPI / 6;665bg.body.radius = 0;666bg.body.shadow.width = 0;667bg.body.border.width = 0;668bg.text.line_space = LV_DPI / 8;669bg.text.color = COLOR_HOS_TURQUOISE;670671lv_style_copy(&sel, &bg);672sel.body.main_color = COLOR_BG_LIGHT;673sel.body.grad_color = sel.body.main_color;674675theme.ddlist.bg = &bg;676theme.ddlist.bgo = &bg;677theme.ddlist.pr = &sel;678theme.ddlist.sel = &sel;679theme.ddlist.sb = &sb;680#endif681}682683static void roller_init(void)684{685#if USE_LV_ROLLER != 0686static lv_style_t roller_bg, roller_sel;687688lv_style_copy(&roller_bg, &lv_style_transp);689roller_bg.body.padding.hor = LV_DPI / 6;690roller_bg.body.padding.ver = LV_DPI / 6;691roller_bg.text.line_space = LV_DPI / 8;692roller_bg.text.font = _font;693roller_bg.glass = 0;694roller_bg.text.color = LV_COLOR_HEX(0x444444);695696lv_style_copy(&roller_sel, &roller_bg);697roller_sel.text.color = COLOR_HOS_TURQUOISE;698699theme.roller.bg = &roller_bg;700theme.roller.sel = &roller_sel;701#endif702}703704static void tabview_init(void)705{706#if USE_LV_TABVIEW != 0707static lv_style_t indic, btn_bg, rel, pr, tgl_rel, tgl_pr;708709lv_style_copy(&indic, &def);710indic.body.main_color = COLOR_HOS_TURQUOISE;711indic.body.grad_color = indic.body.main_color;712indic.body.radius = 0;713indic.body.border.width = 0;714indic.body.padding.inner = LV_DPI / 20;715indic.body.opa = LV_OPA_0;716717lv_style_copy(&btn_bg, &def);718btn_bg.body.main_color = COLOR_BG;719btn_bg.body.grad_color = btn_bg.body.main_color;720btn_bg.body.radius = 0;721btn_bg.body.empty = 1;722btn_bg.body.border.width = 0;723btn_bg.body.border.color = LV_COLOR_HEX(0xDDDDDD);724btn_bg.body.border.part = LV_BORDER_BOTTOM;725btn_bg.body.border.opa = LV_OPA_COVER;726btn_bg.body.shadow.width = 0;727btn_bg.body.shadow.color = COLOR_SHADOW_LIGHT;728btn_bg.body.shadow.type = LV_SHADOW_BOTTOM;729btn_bg.body.padding.inner = 0;730btn_bg.body.padding.hor = 0;731btn_bg.body.padding.ver = 0;732btn_bg.text.color = COLOR_HOS_TXT_WHITE;733734lv_style_copy(&rel, &lv_style_transp);735rel.body.padding.ver = LV_DPI * 4 / 23;736rel.text.font = _font;737738lv_style_copy(&pr, &def);739pr.body.main_color = COLOR_BG_LIGHT;740pr.body.grad_color = pr.body.main_color;741pr.body.border.width = 0;742pr.body.empty = 0;743pr.body.radius = 0;744pr.body.border.color = LV_COLOR_HEX(0x888888);745pr.body.border.part = LV_BORDER_BOTTOM;746pr.body.border.opa = LV_OPA_COVER;747pr.text.color = COLOR_HOS_TURQUOISE;748749lv_style_copy(&tgl_rel, &lv_style_transp);750tgl_rel.glass = 0;751tgl_rel.text.font = _font;752tgl_rel.text.color = COLOR_HOS_TURQUOISE;753754lv_style_copy(&tgl_pr, &def);755tgl_pr.body.main_color = COLOR_BG_LIGHT;756tgl_pr.body.grad_color = tgl_pr.body.main_color;757tgl_pr.body.border.width = 0;758tgl_pr.body.empty = 0;759tgl_pr.body.radius = 0;760tgl_pr.text.color = COLOR_HOS_TURQUOISE;761762theme.tabview.bg = theme.bg;763theme.tabview.indic = &indic;764theme.tabview.btn.bg = &btn_bg;765theme.tabview.btn.rel = &rel;766theme.tabview.btn.pr = ≺767theme.tabview.btn.tgl_rel = &tgl_rel;768theme.tabview.btn.tgl_pr = &tgl_pr;769#endif770}771772static void tileview_init(void)773{774#if USE_LV_TILEVIEW != 0775theme.tileview.bg = &lv_style_transp_tight;776theme.tileview.scrl = &lv_style_transp_tight;777theme.tileview.sb = theme.page.sb;778#endif779}780781static void table_init(void)782{783#if USE_LV_TABLE != 0784static lv_style_t cell;785lv_style_copy(&cell, theme.panel);786cell.body.radius = 0;787cell.body.border.width = 1;788cell.body.padding.hor = LV_DPI / 12;789cell.body.padding.ver = LV_DPI / 12;790791theme.table.bg = &lv_style_transp_tight;792theme.table.cell = &cell;793#endif794}795796static void win_init(void)797{798#if USE_LV_WIN != 0799static lv_style_t header, rel, pr;800801lv_style_copy(&header, &def);802header.body.main_color = COLOR_BG;803header.body.grad_color = header.body.main_color;804header.body.radius = 0;805header.body.border.width = 0;806header.body.border.color = LV_COLOR_HEX(0xDDDDDD);807header.body.border.part = LV_BORDER_BOTTOM;808header.body.border.opa = LV_OPA_COVER;809header.body.shadow.width = 0;810header.body.shadow.color = COLOR_SHADOW_LIGHT;811header.body.shadow.type = LV_SHADOW_BOTTOM;812header.body.padding.inner = 0;813header.body.padding.hor = 8;814header.body.padding.ver = 0;815//header.text.color = COLOR_HOS_TXT_WHITE;816817lv_style_copy(&rel, theme.btn.rel);818rel.body.radius = 0;819rel.body.opa = LV_OPA_0;820rel.body.border.width = 0;821822lv_style_copy(&pr, theme.btn.pr);823pr.body.radius = 0;824pr.body.border.width = 0;825826theme.win.bg = theme.panel;827theme.win.sb = &sb;828theme.win.header = &header;829theme.win.content.bg = &lv_style_transp;830theme.win.content.scrl = &lv_style_transp;831theme.win.btn.rel = &rel;832theme.win.btn.pr = ≺833#endif834}835836/**********************837* GLOBAL FUNCTIONS838**********************/839840841842/**843* Initialize the hekate theme844* @param hue [0..360] hue value from HSV color space to define the theme's base color845* @param font pointer to a font (NULL to use the default)846* @return pointer to the initialized theme847*/848lv_theme_t * lv_theme_hekate_init(uint32_t bg_color, uint16_t hue, lv_font_t * font)849{850if(font == NULL) font = LV_FONT_DEFAULT;851852theme_bg_color = bg_color;853_hue = hue;854_font = font;855856/*For backward compatibility initialize all theme elements with a default style */857uint16_t i;858lv_style_t ** style_p = (lv_style_t **) &theme;859for(i = 0; i < sizeof(lv_theme_t) / sizeof(lv_style_t *); i++) {860*style_p = &def;861style_p++;862}863864basic_init();865cont_init();866btn_init();867label_init();868img_init();869line_init();870led_init();871bar_init();872slider_init();873sw_init();874lmeter_init();875gauge_init();876chart_init();877arc_init();878preload_init();879calendar_init();880cb_init();881btnm_init();882kb_init();883mbox_init();884page_init();885ta_init();886spinbox_init();887list_init();888ddlist_init();889roller_init();890tabview_init();891tileview_init();892table_init();893win_init();894895return &theme;896}897898/**899* Get a pointer to the theme900* @return pointer to the theme901*/902lv_theme_t * lv_theme_get_hekate(void)903{904return &theme;905}906907/**********************908* STATIC FUNCTIONS909**********************/910911#endif912913914915