multi_disp: add dynamic hor/ver res

This commit is contained in:
Gabor Kiss-Vamosi
2019-02-07 19:17:10 +01:00
parent 2692100bb1
commit e2e6479fb0
17 changed files with 118 additions and 21 deletions

54
lv_core/lv_disp.c Normal file
View File

@@ -0,0 +1,54 @@
/**
* @file lv_disp.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_disp.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
lv_coord_t lv_disp_get_hor_res(lv_disp_t * disp)
{
if(disp == NULL) disp = lv_disp_get_active();
if(disp == NULL) return LV_HOR_RES_MAX;
else return disp->driver.hor_res;
}
lv_coord_t lv_disp_get_ver_res(lv_disp_t * disp)
{
if(disp == NULL) disp = lv_disp_get_active();
if(disp == NULL) return LV_VER_RES_MAX;
else return disp->driver.ver_res;
}
/**********************
* STATIC FUNCTIONS
**********************/

42
lv_core/lv_disp.h Normal file
View File

@@ -0,0 +1,42 @@
/**
* @file lv_disp.h
*
*/
#ifndef LV_DISP_H
#define LV_DISP_H
#ifdef __cplusplus
extern "C" {
#endif
/*********************
* INCLUDES
*********************/
#include "../lv_hal/lv_hal_disp.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
lv_coord_t lv_disp_get_hor_res(lv_disp_t * disp);
lv_coord_t lv_disp_get_ver_res(lv_disp_t * disp);
/**********************
* MACROS
**********************/
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /*LV_TEMPL_H*/

View File

@@ -144,8 +144,8 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
/*Set coordinates to full screen size*/
new_obj->coords.x1 = 0;
new_obj->coords.y1 = 0;
new_obj->coords.x2 = LV_HOR_RES - 1;
new_obj->coords.y2 = LV_VER_RES - 1;
new_obj->coords.x2 = lv_disp_get_hor_res(NULL) - 1;
new_obj->coords.y2 = lv_disp_get_ver_res(NULL) - 1;
new_obj->ext_size = 0;
/*Init realign*/

View File

@@ -33,7 +33,7 @@ extern "C" {
*********************/
/*Error check of lv_conf.h*/
#if LV_HOR_RES == 0 || LV_VER_RES == 0
#if LV_HOR_RES_MAX == 0 || LV_VER_RES_MAX == 0
#error "LittlevGL: LV_HOR_RES and LV_VER_RES must be greater than 0"
#endif

View File

@@ -102,8 +102,8 @@ void lv_inv_area(const lv_area_t * area_p)
lv_area_t scr_area;
scr_area.x1 = 0;
scr_area.y1 = 0;
scr_area.x2 = LV_HOR_RES - 1;
scr_area.y2 = LV_VER_RES - 1;
scr_area.x2 = LV_HOR_RES_MAX - 1;
scr_area.y2 = LV_VER_RES_MAX - 1;
lv_area_t com_area;
bool suc;
@@ -346,7 +346,7 @@ static void lv_refr_area_with_vdb(const lv_area_t * area_p)
/*Calculate the max row num*/
lv_coord_t w = lv_area_get_width(area_p);
lv_coord_t h = lv_area_get_height(area_p);
lv_coord_t y2 = area_p->y2 >= LV_VER_RES ? y2 = LV_VER_RES - 1 : area_p->y2;
lv_coord_t y2 = area_p->y2 >= lv_disp_get_ver_res(NULL) ? y2 = lv_disp_get_ver_res(NULL) - 1 : area_p->y2;
int32_t max_row = (uint32_t) LV_VDB_SIZE / w;