demos(render): start render demo
This commit is contained in:
@@ -51,6 +51,10 @@ extern "C" {
|
|||||||
#include "multilang/lv_demo_multilang.h"
|
#include "multilang/lv_demo_multilang.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if LV_USE_DEMO_RENDER
|
||||||
|
#include "render/lv_demo_render.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*********************
|
/*********************
|
||||||
* DEFINES
|
* DEFINES
|
||||||
*********************/
|
*********************/
|
||||||
|
|||||||
48
demos/render/README.md
Normal file
48
demos/render/README.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Benchmark demo
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The benchmark demo tests the performance in various cases.
|
||||||
|
For example rectangle, border, shadow, text, image blending, image transformation, blending modes, etc.
|
||||||
|
All tests are repeated with 50% opacity.
|
||||||
|
|
||||||
|
The size and position of the objects during testing are set with a pseudo random number to make the benchmark repeatable.
|
||||||
|
|
||||||
|
On to top of the screen the title of the current test step, and the result of the previous step is displayed.
|
||||||
|
|
||||||
|
## Run the benchmark
|
||||||
|
- In `lv_conf.h` or equivalent places set `LV_USE_DEMO_BENCHMARK 1`
|
||||||
|
- After `lv_init()` and initializing the drivers and call `lv_demo_benchmark(mode)`
|
||||||
|
- If you only want to run a specific scene for any purpose (e.g. debug, performance optimization etc.), you can call `lv_demo_benchmark_run_scene(mode, scene_idx)` instead of `lv_demo_benchmark()`and pass the scene number.
|
||||||
|
- If you enabled trace output by setting macro `LV_USE_LOG` to `1` and trace level `LV_LOG_LEVEL` to `LV_LOG_LEVEL_USER` or higher, benchmark results are printed out in `csv` format.
|
||||||
|
|
||||||
|
|
||||||
|
## Modes
|
||||||
|
The `mode` should be passed to `lv_demo_benchmark(mode)` or `lv_demo_benchmark_run_scene(mode, scene_idx)`.
|
||||||
|
|
||||||
|
- `LV_DEMO_BENCHMARK_MODE_RENDER_AND_DRIVER` Render the scenes and show them on the display. Measure rendering time but it might contain extra time when LVGL waits for the driver. Run each scenes for a few seconds so the performance can be seen by eye too. As only the rendering time is measured and converted to FPS, really high values (e.g. 1000 FPS) are possible.
|
||||||
|
- `LV_DEMO_BENCHMARK_MODE_REAL` Similar to `RENDER_AND_DRIVER` but instead of measuring the rendering time only measure the real FPS of the system. E.g. even if a scene was rendered in 1 ms, but the screen is redrawn only in every 100 ms, the result will be 10 FPS.
|
||||||
|
- `LV_DEMO_BENCHMARK_MODE_RENDER_ONLY` Temporarily display the `flush_cb` so the pure rendering time will be measured. The display is not updated during the benchmark, only at the end when the summary table is shown. Renders a given number of frames from each scene and calculate the FPS from them.
|
||||||
|
|
||||||
|
|
||||||
|
## Result summary
|
||||||
|
In the end, a table is created to display measured FPS values.
|
||||||
|
|
||||||
|
On top of the summary screen, the "Weighted FPS" value is shown.
|
||||||
|
In this, the result of the more common cases are taken into account with a higher weight.
|
||||||
|
|
||||||
|
"Opa. speed" shows the speed of the measurements with opacity compared to full opacity.
|
||||||
|
E.g. "Opa. speed = 90%" means that rendering with opacity is 10% slower.
|
||||||
|
|
||||||
|
In the first section of the table, "Slow but common cases", those cases are displayed which are considered common but were slower than 20 FPS.
|
||||||
|
|
||||||
|
Below this in the "All cases section" all the results are shown. The < 10 FPS results are shown with red, the >= 10 but < 20 FPS values are displayed with orange.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**NOTE**: Compared to the past, the use of rotation and zoom(scaling) in GUI applications has become increasingly common. Therefore, starting from LVGL9, we have assigned a higher priority to zoom(scaling) and rotation operations.
|
||||||
280
demos/render/lv_demo_render.c
Normal file
280
demos/render/lv_demo_render.c
Normal file
@@ -0,0 +1,280 @@
|
|||||||
|
/**
|
||||||
|
* @file lv_demo_render.c
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*********************
|
||||||
|
* INCLUDES
|
||||||
|
*********************/
|
||||||
|
#include "lv_demo_render.h"
|
||||||
|
|
||||||
|
#if LV_USE_DEMO_RENDER
|
||||||
|
#include "../../src/display/lv_display_private.h"
|
||||||
|
#include "../../src/core/lv_global.h"
|
||||||
|
|
||||||
|
/*********************
|
||||||
|
* DEFINES
|
||||||
|
*********************/
|
||||||
|
|
||||||
|
#define COL_CNT 8
|
||||||
|
#define ROW_CNT 8
|
||||||
|
#define DEF_WIDTH 55
|
||||||
|
#define DEF_HEIGHT 30
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* TYPEDEFS
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
#define SCENE_TIME_DEF 2000
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
const char * name;
|
||||||
|
void (*create_cb)(lv_obj_t * parent);
|
||||||
|
} scene_dsc_t;
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* STATIC PROTOTYPES
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
static void add_to_cell(lv_obj_t * obj, lv_coord_t col, lv_coord_t row);
|
||||||
|
|
||||||
|
|
||||||
|
static lv_obj_t * fill_obj_create(lv_obj_t * parent, lv_coord_t col, lv_coord_t row)
|
||||||
|
{
|
||||||
|
lv_color_t colors[] = {lv_color_hex3(0x000),
|
||||||
|
lv_color_hex3(0xfff),
|
||||||
|
lv_color_hex3(0xf00),
|
||||||
|
lv_color_hex3(0x0f0),
|
||||||
|
lv_color_hex3(0x00f),
|
||||||
|
lv_color_hex3(0xff0),
|
||||||
|
lv_color_hex3(0x0ff),
|
||||||
|
lv_color_hex3(0xf0f),
|
||||||
|
};
|
||||||
|
|
||||||
|
lv_obj_t * obj = lv_obj_create(parent);
|
||||||
|
lv_obj_remove_style_all(obj);
|
||||||
|
lv_obj_set_style_bg_opa(obj, LV_OPA_COVER, 0);
|
||||||
|
lv_obj_set_style_bg_color(obj, colors[col], 0);
|
||||||
|
lv_obj_set_size(obj, DEF_WIDTH, DEF_HEIGHT);
|
||||||
|
add_to_cell(obj, col, row);
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void fill_cb(lv_obj_t * parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
uint32_t i;
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
fill_obj_create(parent, i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = fill_obj_create(parent, i, 1);
|
||||||
|
lv_obj_set_style_radius(obj, 10, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = fill_obj_create(parent, i, 2);
|
||||||
|
lv_obj_set_style_radius(obj, 100, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = fill_obj_create(parent, i, 3);
|
||||||
|
lv_obj_set_style_radius(obj, 10, 0);
|
||||||
|
lv_obj_set_style_bg_grad_dir(obj, LV_GRAD_DIR_HOR, 0);
|
||||||
|
lv_obj_set_style_bg_grad_color(obj, lv_color_hex3(0x888), 0);
|
||||||
|
lv_obj_set_style_bg_grad_stop(obj, 200, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = fill_obj_create(parent, i, 4);
|
||||||
|
lv_obj_set_style_radius(obj, 10, 0);
|
||||||
|
lv_obj_set_style_bg_grad_dir(obj, LV_GRAD_DIR_VER, 0);
|
||||||
|
lv_obj_set_style_bg_grad_color(obj, lv_color_hex3(0x888), 0);
|
||||||
|
lv_obj_set_style_bg_grad_stop(obj, 200, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
|
||||||
|
lv_obj_t * obj = fill_obj_create(parent, i, 5);
|
||||||
|
lv_obj_set_style_radius(obj, 10, 0);
|
||||||
|
lv_obj_set_style_bg_grad_dir(obj, LV_GRAD_DIR_HOR, 0);
|
||||||
|
lv_obj_set_style_bg_grad_color(obj, lv_color_hex3(0x888), 0);
|
||||||
|
lv_obj_set_style_bg_grad_opa(obj, LV_OPA_TRANSP, 0);
|
||||||
|
lv_obj_set_style_bg_grad_stop(obj, 200, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = fill_obj_create(parent, i, 6);
|
||||||
|
lv_obj_set_style_radius(obj, 10, 0);
|
||||||
|
lv_obj_set_style_bg_grad_dir(obj, LV_GRAD_DIR_VER, 0);
|
||||||
|
lv_obj_set_style_bg_grad_color(obj, lv_color_hex3(0x888), 0);
|
||||||
|
lv_obj_set_style_bg_grad_opa(obj, LV_OPA_TRANSP, 0);
|
||||||
|
lv_obj_set_style_bg_grad_stop(obj, 200, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static lv_obj_t * border_obj_create(lv_obj_t * parent, lv_coord_t col, lv_coord_t row)
|
||||||
|
{
|
||||||
|
|
||||||
|
lv_obj_t * obj = lv_obj_create(parent);
|
||||||
|
lv_obj_remove_style_all(obj);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0x000), 0);
|
||||||
|
lv_obj_set_style_border_width(obj, 3, 0);
|
||||||
|
lv_obj_set_size(obj, DEF_WIDTH, DEF_HEIGHT);
|
||||||
|
add_to_cell(obj, col, row);
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void border_cb(lv_obj_t * parent)
|
||||||
|
{
|
||||||
|
lv_border_side_t sides[] = {
|
||||||
|
LV_BORDER_SIDE_NONE,
|
||||||
|
LV_BORDER_SIDE_FULL,
|
||||||
|
LV_BORDER_SIDE_LEFT,
|
||||||
|
LV_BORDER_SIDE_RIGHT,
|
||||||
|
LV_BORDER_SIDE_TOP,
|
||||||
|
LV_BORDER_SIDE_BOTTOM,
|
||||||
|
LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_RIGHT,
|
||||||
|
LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_BOTTOM,
|
||||||
|
LV_BORDER_SIDE_LEFT| LV_BORDER_SIDE_BOTTOM,
|
||||||
|
LV_BORDER_SIDE_LEFT | LV_BORDER_SIDE_TOP,
|
||||||
|
LV_BORDER_SIDE_LEFT | LV_BORDER_SIDE_RIGHT,
|
||||||
|
LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM,
|
||||||
|
LV_BORDER_SIDE_LEFT | LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_BOTTOM,
|
||||||
|
LV_BORDER_SIDE_LEFT | LV_BORDER_SIDE_BOTTOM | LV_BORDER_SIDE_TOP,
|
||||||
|
LV_BORDER_SIDE_LEFT | LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_TOP,
|
||||||
|
LV_BORDER_SIDE_BOTTOM | LV_BORDER_SIDE_RIGHT | LV_BORDER_SIDE_TOP,
|
||||||
|
};
|
||||||
|
|
||||||
|
uint32_t i;
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 0);
|
||||||
|
lv_obj_set_style_radius(obj, 0, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0xf00), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 1);
|
||||||
|
lv_obj_set_style_radius(obj, 0, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i + 8], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0xf00), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 2);
|
||||||
|
lv_obj_set_style_radius(obj, 10, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0x0f0), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 3);
|
||||||
|
lv_obj_set_style_radius(obj, 10, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i + 8], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0x0f0), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 4);
|
||||||
|
lv_obj_set_style_radius(obj, 100, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0x00f), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 5);
|
||||||
|
lv_obj_set_style_radius(obj, 100, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i + 8], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0x00f), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 6);
|
||||||
|
lv_obj_set_style_radius(obj, 100, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0x888), 0);
|
||||||
|
lv_obj_set_style_border_width(obj, 10, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < COL_CNT; i++) {
|
||||||
|
lv_obj_t * obj = border_obj_create(parent, i, 7);
|
||||||
|
lv_obj_set_style_radius(obj, 100, 0);
|
||||||
|
lv_obj_set_style_border_side(obj, sides[i + 8], 0);
|
||||||
|
lv_obj_set_style_border_color(obj, lv_color_hex3(0x888), 0);
|
||||||
|
lv_obj_set_style_border_width(obj, 10, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* STATIC VARIABLES
|
||||||
|
**********************/
|
||||||
|
//fill (radius + gradient too)
|
||||||
|
//border (each sides + radius)
|
||||||
|
//outline (radius)
|
||||||
|
//box shadow (offset, size, spread)
|
||||||
|
//text (normal text + underline/strike through, placeholder)
|
||||||
|
//triangle (just some rectangles)
|
||||||
|
//image (various formats + transformation)
|
||||||
|
//line (various angles + line caps)
|
||||||
|
//arc (some arcs + caps)
|
||||||
|
//vector (later)
|
||||||
|
//layer (blend mode, transformation)
|
||||||
|
//mask bitmap (not implemented SW render yet)
|
||||||
|
//mask rectangle
|
||||||
|
|
||||||
|
static scene_dsc_t scenes[] = {
|
||||||
|
{.name = "Fill ", .create_cb = fill_cb},
|
||||||
|
{.name = "Border", .create_cb = border_cb},
|
||||||
|
|
||||||
|
{.name = "", .create_cb = NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* MACROS
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* GLOBAL FUNCTIONS
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
void lv_demo_render(uint32_t idx)
|
||||||
|
{
|
||||||
|
|
||||||
|
lv_obj_t * scr = lv_screen_active();
|
||||||
|
lv_obj_clean(scr);
|
||||||
|
lv_obj_remove_style_all(scr);
|
||||||
|
lv_obj_set_style_bg_opa(scr, LV_OPA_COVER, 0);
|
||||||
|
lv_obj_set_style_text_color(scr, lv_color_black(), 0);
|
||||||
|
lv_obj_set_style_bg_color(scr, lv_color_white(), 0);
|
||||||
|
|
||||||
|
lv_obj_t * main_parent = lv_obj_create(scr);
|
||||||
|
lv_obj_remove_style_all(main_parent);
|
||||||
|
lv_obj_set_style_bg_opa(main_parent, LV_OPA_COVER, 0);
|
||||||
|
lv_obj_set_style_bg_color(main_parent, lv_color_hex3(0xaaf), 0);
|
||||||
|
lv_obj_set_size(main_parent, 480, 272);
|
||||||
|
|
||||||
|
static const lv_coord_t grid_cols[] = {60, 60, 60, 60, 60, 60, 60, 60, LV_GRID_TEMPLATE_LAST};
|
||||||
|
static const lv_coord_t grid_rows[] = {34, 34, 34, 34, 34, 34, 34, 34, LV_GRID_TEMPLATE_LAST};
|
||||||
|
lv_obj_set_grid_dsc_array(main_parent, grid_cols, grid_rows);
|
||||||
|
|
||||||
|
|
||||||
|
if(scenes[idx].create_cb) scenes[idx].create_cb(main_parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* STATIC FUNCTIONS
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
static void add_to_cell(lv_obj_t * obj, lv_coord_t col, lv_coord_t row)
|
||||||
|
{
|
||||||
|
lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_CENTER, col, 1, LV_GRID_ALIGN_CENTER, row, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
48
demos/render/lv_demo_render.h
Normal file
48
demos/render/lv_demo_render.h
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
/**
|
||||||
|
* @file lv_demo_render.h
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LV_DEMO_RENDER_H
|
||||||
|
#define LV_DEMO_RENDER_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*********************
|
||||||
|
* INCLUDES
|
||||||
|
*********************/
|
||||||
|
#include "../lv_demos.h"
|
||||||
|
|
||||||
|
#if LV_USE_DEMO_RENDER
|
||||||
|
|
||||||
|
/*********************
|
||||||
|
* DEFINES
|
||||||
|
*********************/
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* TYPEDEFS
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* GLOBAL PROTOTYPES
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the render verification for a scenario
|
||||||
|
* @param idx index of the scenario to run
|
||||||
|
*/
|
||||||
|
void lv_demo_render(uint32_t idx);
|
||||||
|
|
||||||
|
/**********************
|
||||||
|
* MACROS
|
||||||
|
**********************/
|
||||||
|
|
||||||
|
#endif /*LV_USE_DEMO_RENDER*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /*LV_DEMO_RENDER_H*/
|
||||||
BIN
demos/render/screenshot1.png
Normal file
BIN
demos/render/screenshot1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
demos/render/screenshot2.png
Normal file
BIN
demos/render/screenshot2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@@ -318,19 +318,28 @@ Set the point from which the background's gradient color should start. 0 means t
|
|||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
### bg_grad
|
### bg_main_opa
|
||||||
Set the gradient definition. The pointed instance must exist while the object is alive. NULL to disable. It wraps `BG_GRAD_COLOR`, `BG_GRAD_DIR`, `BG_MAIN_STOP` and `BG_GRAD_STOP` into one descriptor and allows creating gradients with more colors too.
|
Set the opacity of the first gradient color
|
||||||
<ul>
|
<ul>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> `NULL`</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 255</li>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
### bg_dither_mode
|
### bg_grad_opa
|
||||||
Set the dithering mode of the gradient of the background. The possible values are `LV_DITHER_NONE/ORDERED/ERR_DIFF`.
|
Set the opacity of the second gradient color
|
||||||
<ul>
|
<ul>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> `LV_DITHER_NONE`</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 255</li>
|
||||||
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
|
||||||
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
|
||||||
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
### bg_grad
|
||||||
|
Set the gradient definition. The pointed instance must exist while the object is alive. NULL to disable. It wraps `BG_GRAD_COLOR`, `BG_GRAD_DIR`, `BG_MAIN_STOP` and `BG_GRAD_STOP` into one descriptor and allows creating gradients with more colors too. If it's set other gradient related properties will be ignored'
|
||||||
|
<ul>
|
||||||
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> `NULL`</li>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
|
||||||
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
|
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
|
||||||
|
|||||||
@@ -810,10 +810,9 @@
|
|||||||
|
|
||||||
/*Benchmark your system*/
|
/*Benchmark your system*/
|
||||||
#define LV_USE_DEMO_BENCHMARK 0
|
#define LV_USE_DEMO_BENCHMARK 0
|
||||||
#if LV_USE_DEMO_BENCHMARK
|
|
||||||
/*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/
|
/*Render test for each primitives. Requires at least 480x272 display*/
|
||||||
#define LV_DEMO_BENCHMARK_RGB565A8 0
|
#define LV_USE_DEMO_RENDER 0
|
||||||
#endif
|
|
||||||
|
|
||||||
/*Stress test for LVGL*/
|
/*Stress test for LVGL*/
|
||||||
#define LV_USE_DEMO_STRESS 0
|
#define LV_USE_DEMO_STRESS 0
|
||||||
|
|||||||
@@ -145,13 +145,17 @@ props = [
|
|||||||
'style_type': 'num', 'var_type': 'lv_coord_t', 'default':255, 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
'style_type': 'num', 'var_type': 'lv_coord_t', 'default':255, 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
||||||
'dsc': "Set the point from which the background's gradient color should start. 0 means to top/left side, 255 the bottom/right side, 128 the center, and so on"},
|
'dsc': "Set the point from which the background's gradient color should start. 0 means to top/left side, 255 the bottom/right side, 128 the center, and so on"},
|
||||||
|
|
||||||
|
{'name': 'BG_MAIN_OPA',
|
||||||
|
'style_type': 'num', 'var_type': 'lv_opa_t', 'default':255, 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
||||||
|
'dsc': "Set the opacity of the first gradient color"},
|
||||||
|
|
||||||
|
{'name': 'BG_GRAD_OPA',
|
||||||
|
'style_type': 'num', 'var_type': 'lv_opa_t', 'default':255, 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
||||||
|
'dsc': "Set the opacity of the second gradient color"},
|
||||||
|
|
||||||
{'name': 'BG_GRAD',
|
{'name': 'BG_GRAD',
|
||||||
'style_type': 'ptr', 'var_type': 'const lv_grad_dsc_t *', 'default':'`NULL`', 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
'style_type': 'ptr', 'var_type': 'const lv_grad_dsc_t *', 'default':'`NULL`', 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
||||||
'dsc': "Set the gradient definition. The pointed instance must exist while the object is alive. NULL to disable. It wraps `BG_GRAD_COLOR`, `BG_GRAD_DIR`, `BG_MAIN_STOP` and `BG_GRAD_STOP` into one descriptor and allows creating gradients with more colors too."},
|
'dsc': "Set the gradient definition. The pointed instance must exist while the object is alive. NULL to disable. It wraps `BG_GRAD_COLOR`, `BG_GRAD_DIR`, `BG_MAIN_STOP` and `BG_GRAD_STOP` into one descriptor and allows creating gradients with more colors too. If it's set other gradient related properties will be ignored'"},
|
||||||
|
|
||||||
{'name': 'BG_DITHER_MODE',
|
|
||||||
'style_type': 'num', 'var_type': 'lv_dither_mode_t', 'default':'`LV_DITHER_NONE`', 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
|
||||||
'dsc': "Set the dithering mode of the gradient of the background. The possible values are `LV_DITHER_NONE/ORDERED/ERR_DIFF`."},
|
|
||||||
|
|
||||||
{'name': 'BG_IMAGE_SRC',
|
{'name': 'BG_IMAGE_SRC',
|
||||||
'style_type': 'ptr', 'var_type': 'const void *', 'default':'`NULL`', 'inherited': 0, 'layout': 0, 'ext_draw': 1,
|
'style_type': 'ptr', 'var_type': 'const void *', 'default':'`NULL`', 'inherited': 0, 'layout': 0, 'ext_draw': 1,
|
||||||
|
|||||||
@@ -71,10 +71,9 @@ void lv_obj_init_draw_rect_dsc(lv_obj_t * obj, uint32_t part, lv_draw_rect_dsc_t
|
|||||||
draw_dsc->bg_grad.stops[1].color = lv_obj_get_style_bg_grad_color_filtered(obj, part);
|
draw_dsc->bg_grad.stops[1].color = lv_obj_get_style_bg_grad_color_filtered(obj, part);
|
||||||
draw_dsc->bg_grad.stops[0].frac = lv_obj_get_style_bg_main_stop(obj, part);
|
draw_dsc->bg_grad.stops[0].frac = lv_obj_get_style_bg_main_stop(obj, part);
|
||||||
draw_dsc->bg_grad.stops[1].frac = lv_obj_get_style_bg_grad_stop(obj, part);
|
draw_dsc->bg_grad.stops[1].frac = lv_obj_get_style_bg_grad_stop(obj, part);
|
||||||
draw_dsc->bg_grad.stops[0].opa = 0xFF;
|
draw_dsc->bg_grad.stops[0].opa = lv_obj_get_style_bg_main_opa(obj, part);
|
||||||
draw_dsc->bg_grad.stops[1].opa = 0xFF;
|
draw_dsc->bg_grad.stops[1].opa = lv_obj_get_style_bg_grad_opa(obj, part);
|
||||||
}
|
}
|
||||||
draw_dsc->bg_grad.dither = lv_obj_get_style_bg_dither_mode(obj, part);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -344,6 +344,8 @@ static inline lv_style_value_t lv_style_prop_get_default_inlined(lv_style_prop_t
|
|||||||
case LV_STYLE_BORDER_OPA:
|
case LV_STYLE_BORDER_OPA:
|
||||||
case LV_STYLE_TEXT_OPA:
|
case LV_STYLE_TEXT_OPA:
|
||||||
case LV_STYLE_IMAGE_OPA:
|
case LV_STYLE_IMAGE_OPA:
|
||||||
|
case LV_STYLE_BG_GRAD_OPA:
|
||||||
|
case LV_STYLE_BG_MAIN_OPA:
|
||||||
case LV_STYLE_BG_IMAGE_OPA:
|
case LV_STYLE_BG_IMAGE_OPA:
|
||||||
case LV_STYLE_OUTLINE_OPA:
|
case LV_STYLE_OUTLINE_OPA:
|
||||||
case LV_STYLE_SHADOW_OPA:
|
case LV_STYLE_SHADOW_OPA:
|
||||||
|
|||||||
@@ -282,6 +282,22 @@ void lv_obj_set_style_bg_grad_stop(struct _lv_obj_t * obj, lv_coord_t value, lv_
|
|||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_BG_GRAD_STOP, v, selector);
|
lv_obj_set_local_style_prop(obj, LV_STYLE_BG_GRAD_STOP, v, selector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lv_obj_set_style_bg_main_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_obj_set_local_style_prop(obj, LV_STYLE_BG_MAIN_OPA, v, selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lv_obj_set_style_bg_grad_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_obj_set_local_style_prop(obj, LV_STYLE_BG_GRAD_OPA, v, selector);
|
||||||
|
}
|
||||||
|
|
||||||
void lv_obj_set_style_bg_grad(struct _lv_obj_t * obj, const lv_grad_dsc_t * value, lv_style_selector_t selector)
|
void lv_obj_set_style_bg_grad(struct _lv_obj_t * obj, const lv_grad_dsc_t * value, lv_style_selector_t selector)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
@@ -290,14 +306,6 @@ void lv_obj_set_style_bg_grad(struct _lv_obj_t * obj, const lv_grad_dsc_t * valu
|
|||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_BG_GRAD, v, selector);
|
lv_obj_set_local_style_prop(obj, LV_STYLE_BG_GRAD, v, selector);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lv_obj_set_style_bg_dither_mode(struct _lv_obj_t * obj, lv_dither_mode_t value, lv_style_selector_t selector)
|
|
||||||
{
|
|
||||||
lv_style_value_t v = {
|
|
||||||
.num = (int32_t)value
|
|
||||||
};
|
|
||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_BG_DITHER_MODE, v, selector);
|
|
||||||
}
|
|
||||||
|
|
||||||
void lv_obj_set_style_bg_image_src(struct _lv_obj_t * obj, const void * value, lv_style_selector_t selector)
|
void lv_obj_set_style_bg_image_src(struct _lv_obj_t * obj, const void * value, lv_style_selector_t selector)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
@@ -658,8 +666,7 @@ void lv_obj_set_style_opa_layered(struct _lv_obj_t * obj, lv_opa_t value, lv_sty
|
|||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_OPA_LAYERED, v, selector);
|
lv_obj_set_local_style_prop(obj, LV_STYLE_OPA_LAYERED, v, selector);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lv_obj_set_style_color_filter_dsc(struct _lv_obj_t * obj, const lv_color_filter_dsc_t * value,
|
void lv_obj_set_style_color_filter_dsc(struct _lv_obj_t * obj, const lv_color_filter_dsc_t * value, lv_style_selector_t selector)
|
||||||
lv_style_selector_t selector)
|
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
.ptr = value
|
.ptr = value
|
||||||
@@ -699,8 +706,7 @@ void lv_obj_set_style_anim_speed(struct _lv_obj_t * obj, uint32_t value, lv_styl
|
|||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_ANIM_SPEED, v, selector);
|
lv_obj_set_local_style_prop(obj, LV_STYLE_ANIM_SPEED, v, selector);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lv_obj_set_style_transition(struct _lv_obj_t * obj, const lv_style_transition_dsc_t * value,
|
void lv_obj_set_style_transition(struct _lv_obj_t * obj, const lv_style_transition_dsc_t * value, lv_style_selector_t selector)
|
||||||
lv_style_selector_t selector)
|
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
.ptr = value
|
.ptr = value
|
||||||
@@ -772,8 +778,7 @@ void lv_obj_set_style_flex_grow(struct _lv_obj_t * obj, uint8_t value, lv_style_
|
|||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_FLEX_GROW, v, selector);
|
lv_obj_set_local_style_prop(obj, LV_STYLE_FLEX_GROW, v, selector);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lv_obj_set_style_grid_column_dsc_array(struct _lv_obj_t * obj, const lv_coord_t * value,
|
void lv_obj_set_style_grid_column_dsc_array(struct _lv_obj_t * obj, const lv_coord_t * value, lv_style_selector_t selector)
|
||||||
lv_style_selector_t selector)
|
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
.ptr = value
|
.ptr = value
|
||||||
|
|||||||
@@ -208,8 +208,7 @@ static inline lv_color_t lv_obj_get_style_bg_grad_color(const struct _lv_obj_t *
|
|||||||
|
|
||||||
static inline lv_color_t lv_obj_get_style_bg_grad_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_color_t lv_obj_get_style_bg_grad_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_COLOR));
|
||||||
LV_STYLE_BG_GRAD_COLOR));
|
|
||||||
return v.color;
|
return v.color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,18 +230,24 @@ static inline lv_coord_t lv_obj_get_style_bg_grad_stop(const struct _lv_obj_t *
|
|||||||
return (lv_coord_t)v.num;
|
return (lv_coord_t)v.num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline lv_opa_t lv_obj_get_style_bg_main_opa(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_MAIN_OPA);
|
||||||
|
return (lv_opa_t)v.num;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline lv_opa_t lv_obj_get_style_bg_grad_opa(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_OPA);
|
||||||
|
return (lv_opa_t)v.num;
|
||||||
|
}
|
||||||
|
|
||||||
static inline const lv_grad_dsc_t * lv_obj_get_style_bg_grad(const struct _lv_obj_t * obj, uint32_t part)
|
static inline const lv_grad_dsc_t * lv_obj_get_style_bg_grad(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD);
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD);
|
||||||
return (const lv_grad_dsc_t *)v.ptr;
|
return (const lv_grad_dsc_t *)v.ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline lv_dither_mode_t lv_obj_get_style_bg_dither_mode(const struct _lv_obj_t * obj, uint32_t part)
|
|
||||||
{
|
|
||||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_DITHER_MODE);
|
|
||||||
return (lv_dither_mode_t)v.num;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline const void * lv_obj_get_style_bg_image_src(const struct _lv_obj_t * obj, uint32_t part)
|
static inline const void * lv_obj_get_style_bg_image_src(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_SRC);
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_SRC);
|
||||||
@@ -263,8 +268,7 @@ static inline lv_color_t lv_obj_get_style_bg_image_recolor(const struct _lv_obj_
|
|||||||
|
|
||||||
static inline lv_color_t lv_obj_get_style_bg_image_recolor_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_color_t lv_obj_get_style_bg_image_recolor_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_RECOLOR));
|
||||||
LV_STYLE_BG_IMAGE_RECOLOR));
|
|
||||||
return v.color;
|
return v.color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,8 +292,7 @@ static inline lv_color_t lv_obj_get_style_border_color(const struct _lv_obj_t *
|
|||||||
|
|
||||||
static inline lv_color_t lv_obj_get_style_border_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_color_t lv_obj_get_style_border_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_COLOR));
|
||||||
LV_STYLE_BORDER_COLOR));
|
|
||||||
return v.color;
|
return v.color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,8 +334,7 @@ static inline lv_color_t lv_obj_get_style_outline_color(const struct _lv_obj_t *
|
|||||||
|
|
||||||
static inline lv_color_t lv_obj_get_style_outline_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_color_t lv_obj_get_style_outline_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_OUTLINE_COLOR));
|
||||||
LV_STYLE_OUTLINE_COLOR));
|
|
||||||
return v.color;
|
return v.color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -380,8 +382,7 @@ static inline lv_color_t lv_obj_get_style_shadow_color(const struct _lv_obj_t *
|
|||||||
|
|
||||||
static inline lv_color_t lv_obj_get_style_shadow_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_color_t lv_obj_get_style_shadow_color_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_COLOR));
|
||||||
LV_STYLE_SHADOW_COLOR));
|
|
||||||
return v.color;
|
return v.color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -405,8 +406,7 @@ static inline lv_color_t lv_obj_get_style_image_recolor(const struct _lv_obj_t *
|
|||||||
|
|
||||||
static inline lv_color_t lv_obj_get_style_image_recolor_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_color_t lv_obj_get_style_image_recolor_filtered(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_IMAGE_RECOLOR));
|
||||||
LV_STYLE_IMAGE_RECOLOR));
|
|
||||||
return v.color;
|
return v.color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -566,8 +566,7 @@ static inline lv_opa_t lv_obj_get_style_opa_layered(const struct _lv_obj_t * obj
|
|||||||
return (lv_opa_t)v.num;
|
return (lv_opa_t)v.num;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline const lv_color_filter_dsc_t * lv_obj_get_style_color_filter_dsc(const struct _lv_obj_t * obj,
|
static inline const lv_color_filter_dsc_t * lv_obj_get_style_color_filter_dsc(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
uint32_t part)
|
|
||||||
{
|
{
|
||||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_COLOR_FILTER_DSC);
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_COLOR_FILTER_DSC);
|
||||||
return (const lv_color_filter_dsc_t *)v.ptr;
|
return (const lv_color_filter_dsc_t *)v.ptr;
|
||||||
@@ -745,8 +744,9 @@ void lv_obj_set_style_bg_grad_color(struct _lv_obj_t * obj, lv_color_t value, lv
|
|||||||
void lv_obj_set_style_bg_grad_dir(struct _lv_obj_t * obj, lv_grad_dir_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_bg_grad_dir(struct _lv_obj_t * obj, lv_grad_dir_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_bg_main_stop(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_bg_main_stop(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_bg_grad_stop(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_bg_grad_stop(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||||
|
void lv_obj_set_style_bg_main_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||||
|
void lv_obj_set_style_bg_grad_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_bg_grad(struct _lv_obj_t * obj, const lv_grad_dsc_t * value, lv_style_selector_t selector);
|
void lv_obj_set_style_bg_grad(struct _lv_obj_t * obj, const lv_grad_dsc_t * value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_bg_dither_mode(struct _lv_obj_t * obj, lv_dither_mode_t value, lv_style_selector_t selector);
|
|
||||||
void lv_obj_set_style_bg_image_src(struct _lv_obj_t * obj, const void * value, lv_style_selector_t selector);
|
void lv_obj_set_style_bg_image_src(struct _lv_obj_t * obj, const void * value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_bg_image_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_bg_image_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_bg_image_recolor(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_bg_image_recolor(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector);
|
||||||
@@ -792,14 +792,12 @@ void lv_obj_set_style_radius(struct _lv_obj_t * obj, lv_coord_t value, lv_style_
|
|||||||
void lv_obj_set_style_clip_corner(struct _lv_obj_t * obj, bool value, lv_style_selector_t selector);
|
void lv_obj_set_style_clip_corner(struct _lv_obj_t * obj, bool value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_opa_layered(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_opa_layered(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_color_filter_dsc(struct _lv_obj_t * obj, const lv_color_filter_dsc_t * value,
|
void lv_obj_set_style_color_filter_dsc(struct _lv_obj_t * obj, const lv_color_filter_dsc_t * value, lv_style_selector_t selector);
|
||||||
lv_style_selector_t selector);
|
|
||||||
void lv_obj_set_style_color_filter_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_color_filter_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_anim(struct _lv_obj_t * obj, const lv_anim_t * value, lv_style_selector_t selector);
|
void lv_obj_set_style_anim(struct _lv_obj_t * obj, const lv_anim_t * value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_anim_time(struct _lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_anim_time(struct _lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_anim_speed(struct _lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_anim_speed(struct _lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_transition(struct _lv_obj_t * obj, const lv_style_transition_dsc_t * value,
|
void lv_obj_set_style_transition(struct _lv_obj_t * obj, const lv_style_transition_dsc_t * value, lv_style_selector_t selector);
|
||||||
lv_style_selector_t selector);
|
|
||||||
void lv_obj_set_style_blend_mode(struct _lv_obj_t * obj, lv_blend_mode_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_blend_mode(struct _lv_obj_t * obj, lv_blend_mode_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_layout(struct _lv_obj_t * obj, uint16_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_layout(struct _lv_obj_t * obj, uint16_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_base_dir(struct _lv_obj_t * obj, lv_base_dir_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_base_dir(struct _lv_obj_t * obj, lv_base_dir_t value, lv_style_selector_t selector);
|
||||||
@@ -808,11 +806,9 @@ void lv_obj_set_style_flex_main_place(struct _lv_obj_t * obj, lv_flex_align_t va
|
|||||||
void lv_obj_set_style_flex_cross_place(struct _lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_flex_cross_place(struct _lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_flex_track_place(struct _lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_flex_track_place(struct _lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_flex_grow(struct _lv_obj_t * obj, uint8_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_flex_grow(struct _lv_obj_t * obj, uint8_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_grid_column_dsc_array(struct _lv_obj_t * obj, const lv_coord_t * value,
|
void lv_obj_set_style_grid_column_dsc_array(struct _lv_obj_t * obj, const lv_coord_t * value, lv_style_selector_t selector);
|
||||||
lv_style_selector_t selector);
|
|
||||||
void lv_obj_set_style_grid_column_align(struct _lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_grid_column_align(struct _lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_grid_row_dsc_array(struct _lv_obj_t * obj, const lv_coord_t * value,
|
void lv_obj_set_style_grid_row_dsc_array(struct _lv_obj_t * obj, const lv_coord_t * value, lv_style_selector_t selector);
|
||||||
lv_style_selector_t selector);
|
|
||||||
void lv_obj_set_style_grid_row_align(struct _lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_grid_row_align(struct _lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_grid_cell_column_pos(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_grid_cell_column_pos(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
|
||||||
void lv_obj_set_style_grid_cell_x_align(struct _lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
|
void lv_obj_set_style_grid_cell_x_align(struct _lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
|
||||||
|
|||||||
@@ -2634,14 +2634,13 @@
|
|||||||
#define LV_USE_DEMO_BENCHMARK 0
|
#define LV_USE_DEMO_BENCHMARK 0
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if LV_USE_DEMO_BENCHMARK
|
|
||||||
/*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/
|
/*Render test for each primitives. Requires at least 480x272 display*/
|
||||||
#ifndef LV_DEMO_BENCHMARK_RGB565A8
|
#ifndef LV_USE_DEMO_RENDER
|
||||||
#ifdef CONFIG_LV_DEMO_BENCHMARK_RGB565A8
|
#ifdef CONFIG_LV_USE_DEMO_RENDER
|
||||||
#define LV_DEMO_BENCHMARK_RGB565A8 CONFIG_LV_DEMO_BENCHMARK_RGB565A8
|
#define LV_USE_DEMO_RENDER CONFIG_LV_USE_DEMO_RENDER
|
||||||
#else
|
#else
|
||||||
#define LV_DEMO_BENCHMARK_RGB565A8 0
|
#define LV_USE_DEMO_RENDER 0
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -69,8 +69,9 @@ const uint8_t _lv_style_builtin_prop_flag_lookup_table[_LV_STYLE_NUM_BUILT_IN_PR
|
|||||||
[LV_STYLE_BG_GRAD_DIR] = 0,
|
[LV_STYLE_BG_GRAD_DIR] = 0,
|
||||||
[LV_STYLE_BG_MAIN_STOP] = 0,
|
[LV_STYLE_BG_MAIN_STOP] = 0,
|
||||||
[LV_STYLE_BG_GRAD_STOP] = 0,
|
[LV_STYLE_BG_GRAD_STOP] = 0,
|
||||||
|
[LV_STYLE_BG_MAIN_OPA] = 0,
|
||||||
|
[LV_STYLE_BG_GRAD_OPA] = 0,
|
||||||
[LV_STYLE_BG_GRAD] = 0,
|
[LV_STYLE_BG_GRAD] = 0,
|
||||||
[LV_STYLE_BG_DITHER_MODE] = 0,
|
|
||||||
|
|
||||||
[LV_STYLE_BG_IMAGE_SRC] = LV_STYLE_PROP_FLAG_EXT_DRAW_UPDATE,
|
[LV_STYLE_BG_IMAGE_SRC] = LV_STYLE_PROP_FLAG_EXT_DRAW_UPDATE,
|
||||||
[LV_STYLE_BG_IMAGE_OPA] = 0,
|
[LV_STYLE_BG_IMAGE_OPA] = 0,
|
||||||
@@ -371,6 +372,8 @@ lv_style_value_t lv_style_prop_get_default(lv_style_prop_t prop)
|
|||||||
case LV_STYLE_BORDER_OPA:
|
case LV_STYLE_BORDER_OPA:
|
||||||
case LV_STYLE_TEXT_OPA:
|
case LV_STYLE_TEXT_OPA:
|
||||||
case LV_STYLE_IMAGE_OPA:
|
case LV_STYLE_IMAGE_OPA:
|
||||||
|
case LV_STYLE_BG_GRAD_OPA:
|
||||||
|
case LV_STYLE_BG_MAIN_OPA:
|
||||||
case LV_STYLE_BG_IMAGE_OPA:
|
case LV_STYLE_BG_IMAGE_OPA:
|
||||||
case LV_STYLE_OUTLINE_OPA:
|
case LV_STYLE_OUTLINE_OPA:
|
||||||
case LV_STYLE_SHADOW_OPA:
|
case LV_STYLE_SHADOW_OPA:
|
||||||
|
|||||||
@@ -146,22 +146,6 @@ typedef uint8_t lv_grad_dir_t;
|
|||||||
#endif /*DOXYGEN*/
|
#endif /*DOXYGEN*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The dithering algorithm for the gradient
|
|
||||||
*/
|
|
||||||
enum _lv_dither_mode_t {
|
|
||||||
LV_DITHER_NONE, /**< No dithering, colors are just quantized to the output resolution*/
|
|
||||||
LV_DITHER_ORDERED, /**< Ordered dithering. Faster to compute and use less memory but lower quality*/
|
|
||||||
LV_DITHER_ERR_DIFF, /**< Error diffusion mode. Slower to compute and use more memory but give highest dither quality*/
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef DOXYGEN
|
|
||||||
typedef _lv_dither_mode_t lv_dither_mode_t;
|
|
||||||
#else
|
|
||||||
typedef uint8_t lv_dither_mode_t;
|
|
||||||
#endif /*DOXYGEN*/
|
|
||||||
|
|
||||||
|
|
||||||
/** A gradient stop definition.
|
/** A gradient stop definition.
|
||||||
* This matches a color and a position in a virtual 0-255 scale.
|
* This matches a color and a position in a virtual 0-255 scale.
|
||||||
*/
|
*/
|
||||||
@@ -177,8 +161,6 @@ typedef struct {
|
|||||||
uint8_t stops_count; /**< The number of used stops in the array */
|
uint8_t stops_count; /**< The number of used stops in the array */
|
||||||
lv_grad_dir_t dir : 3; /**< The gradient direction.
|
lv_grad_dir_t dir : 3; /**< The gradient direction.
|
||||||
* Any of LV_GRAD_DIR_HOR, LV_GRAD_DIR_VER, LV_GRAD_DIR_NONE */
|
* Any of LV_GRAD_DIR_HOR, LV_GRAD_DIR_VER, LV_GRAD_DIR_NONE */
|
||||||
lv_dither_mode_t dither : 3; /**< Whether to dither the gradient or not.
|
|
||||||
* Any of LV_DITHER_NONE, LV_DITHER_ORDERED, LV_DITHER_ERR_DIFF */
|
|
||||||
} lv_grad_dsc_t;
|
} lv_grad_dsc_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -235,13 +217,14 @@ enum _lv_style_prop_t {
|
|||||||
|
|
||||||
|
|
||||||
LV_STYLE_BG_GRAD_DIR = 32,
|
LV_STYLE_BG_GRAD_DIR = 32,
|
||||||
LV_STYLE_BG_GRAD_COLOR = 33,
|
LV_STYLE_BG_MAIN_STOP = 33,
|
||||||
LV_STYLE_BG_MAIN_STOP = 34,
|
LV_STYLE_BG_GRAD_STOP = 34,
|
||||||
LV_STYLE_BG_GRAD_STOP = 35,
|
LV_STYLE_BG_GRAD_COLOR = 35,
|
||||||
|
|
||||||
LV_STYLE_BG_GRAD = 36,
|
LV_STYLE_BG_MAIN_OPA = 36,
|
||||||
LV_STYLE_BG_DITHER_MODE = 37,
|
LV_STYLE_BG_GRAD_OPA = 37,
|
||||||
LV_STYLE_BASE_DIR = 38,
|
LV_STYLE_BG_GRAD = 38,
|
||||||
|
LV_STYLE_BASE_DIR = 39,
|
||||||
|
|
||||||
LV_STYLE_BG_IMAGE_SRC = 40,
|
LV_STYLE_BG_IMAGE_SRC = 40,
|
||||||
LV_STYLE_BG_IMAGE_OPA = 41,
|
LV_STYLE_BG_IMAGE_OPA = 41,
|
||||||
|
|||||||
@@ -350,6 +350,26 @@ void lv_style_set_bg_grad_stop(lv_style_t * style, lv_coord_t value)
|
|||||||
|
|
||||||
const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD_STOP = LV_STYLE_BG_GRAD_STOP;
|
const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD_STOP = LV_STYLE_BG_GRAD_STOP;
|
||||||
|
|
||||||
|
void lv_style_set_bg_main_opa(lv_style_t * style, lv_opa_t value)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_style_set_prop(style, LV_STYLE_BG_MAIN_OPA, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
const lv_style_prop_t _lv_style_const_prop_id_BG_MAIN_OPA = LV_STYLE_BG_MAIN_OPA;
|
||||||
|
|
||||||
|
void lv_style_set_bg_grad_opa(lv_style_t * style, lv_opa_t value)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_style_set_prop(style, LV_STYLE_BG_GRAD_OPA, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD_OPA = LV_STYLE_BG_GRAD_OPA;
|
||||||
|
|
||||||
void lv_style_set_bg_grad(lv_style_t * style, const lv_grad_dsc_t * value)
|
void lv_style_set_bg_grad(lv_style_t * style, const lv_grad_dsc_t * value)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
@@ -360,16 +380,6 @@ void lv_style_set_bg_grad(lv_style_t * style, const lv_grad_dsc_t * value)
|
|||||||
|
|
||||||
const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD = LV_STYLE_BG_GRAD;
|
const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD = LV_STYLE_BG_GRAD;
|
||||||
|
|
||||||
void lv_style_set_bg_dither_mode(lv_style_t * style, lv_dither_mode_t value)
|
|
||||||
{
|
|
||||||
lv_style_value_t v = {
|
|
||||||
.num = (int32_t)value
|
|
||||||
};
|
|
||||||
lv_style_set_prop(style, LV_STYLE_BG_DITHER_MODE, v);
|
|
||||||
}
|
|
||||||
|
|
||||||
const lv_style_prop_t _lv_style_const_prop_id_BG_DITHER_MODE = LV_STYLE_BG_DITHER_MODE;
|
|
||||||
|
|
||||||
void lv_style_set_bg_image_src(lv_style_t * style, const void * value)
|
void lv_style_set_bg_image_src(lv_style_t * style, const void * value)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
|
|||||||
@@ -78,10 +78,12 @@ void lv_style_set_bg_main_stop(lv_style_t * style, lv_coord_t value);
|
|||||||
extern const lv_style_prop_t _lv_style_const_prop_id_BG_MAIN_STOP;
|
extern const lv_style_prop_t _lv_style_const_prop_id_BG_MAIN_STOP;
|
||||||
void lv_style_set_bg_grad_stop(lv_style_t * style, lv_coord_t value);
|
void lv_style_set_bg_grad_stop(lv_style_t * style, lv_coord_t value);
|
||||||
extern const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD_STOP;
|
extern const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD_STOP;
|
||||||
|
void lv_style_set_bg_main_opa(lv_style_t * style, lv_opa_t value);
|
||||||
|
extern const lv_style_prop_t _lv_style_const_prop_id_BG_MAIN_OPA;
|
||||||
|
void lv_style_set_bg_grad_opa(lv_style_t * style, lv_opa_t value);
|
||||||
|
extern const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD_OPA;
|
||||||
void lv_style_set_bg_grad(lv_style_t * style, const lv_grad_dsc_t * value);
|
void lv_style_set_bg_grad(lv_style_t * style, const lv_grad_dsc_t * value);
|
||||||
extern const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD;
|
extern const lv_style_prop_t _lv_style_const_prop_id_BG_GRAD;
|
||||||
void lv_style_set_bg_dither_mode(lv_style_t * style, lv_dither_mode_t value);
|
|
||||||
extern const lv_style_prop_t _lv_style_const_prop_id_BG_DITHER_MODE;
|
|
||||||
void lv_style_set_bg_image_src(lv_style_t * style, const void * value);
|
void lv_style_set_bg_image_src(lv_style_t * style, const void * value);
|
||||||
extern const lv_style_prop_t _lv_style_const_prop_id_BG_IMAGE_SRC;
|
extern const lv_style_prop_t _lv_style_const_prop_id_BG_IMAGE_SRC;
|
||||||
void lv_style_set_bg_image_opa(lv_style_t * style, lv_opa_t value);
|
void lv_style_set_bg_image_opa(lv_style_t * style, lv_opa_t value);
|
||||||
@@ -391,16 +393,21 @@ extern const lv_style_prop_t _lv_style_const_prop_id_GRID_CELL_ROW_SPAN;
|
|||||||
.prop_ptr = &_lv_style_const_prop_id_BG_GRAD_STOP, .value = { .num = (int32_t)val } \
|
.prop_ptr = &_lv_style_const_prop_id_BG_GRAD_STOP, .value = { .num = (int32_t)val } \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LV_STYLE_CONST_BG_MAIN_OPA(val) \
|
||||||
|
{ \
|
||||||
|
.prop_ptr = &_lv_style_const_prop_id_BG_MAIN_OPA, .value = { .num = (int32_t)val } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LV_STYLE_CONST_BG_GRAD_OPA(val) \
|
||||||
|
{ \
|
||||||
|
.prop_ptr = &_lv_style_const_prop_id_BG_GRAD_OPA, .value = { .num = (int32_t)val } \
|
||||||
|
}
|
||||||
|
|
||||||
#define LV_STYLE_CONST_BG_GRAD(val) \
|
#define LV_STYLE_CONST_BG_GRAD(val) \
|
||||||
{ \
|
{ \
|
||||||
.prop_ptr = &_lv_style_const_prop_id_BG_GRAD, .value = { .ptr = val } \
|
.prop_ptr = &_lv_style_const_prop_id_BG_GRAD, .value = { .ptr = val } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LV_STYLE_CONST_BG_DITHER_MODE(val) \
|
|
||||||
{ \
|
|
||||||
.prop_ptr = &_lv_style_const_prop_id_BG_DITHER_MODE, .value = { .num = (int32_t)val } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define LV_STYLE_CONST_BG_IMAGE_SRC(val) \
|
#define LV_STYLE_CONST_BG_IMAGE_SRC(val) \
|
||||||
{ \
|
{ \
|
||||||
.prop_ptr = &_lv_style_const_prop_id_BG_IMAGE_SRC, .value = { .ptr = val } \
|
.prop_ptr = &_lv_style_const_prop_id_BG_IMAGE_SRC, .value = { .ptr = val } \
|
||||||
|
|||||||
@@ -83,6 +83,7 @@
|
|||||||
#define LV_USE_DEMO_STRESS 1
|
#define LV_USE_DEMO_STRESS 1
|
||||||
#define LV_USE_DEMO_TRANSFORM 1
|
#define LV_USE_DEMO_TRANSFORM 1
|
||||||
#define LV_USE_DEMO_MULTILANG 1
|
#define LV_USE_DEMO_MULTILANG 1
|
||||||
|
#define LV_USE_DEMO_RENDER 1
|
||||||
#define LV_USE_DEMO_SCROLL 1
|
#define LV_USE_DEMO_SCROLL 1
|
||||||
|
|
||||||
#define LV_USE_OBJ_ID 1
|
#define LV_USE_OBJ_ID 1
|
||||||
|
|||||||
Reference in New Issue
Block a user