acid-drop

- Hacking the planet from a LilyGo T-Deck using custom firmware
git clone git://git.acid.vegas/acid-drop.git
Log | Files | Refs | Archive | README | LICENSE

lv_grid.h (7185B)

      1 /**
      2  * @file lv_grid.h
      3  *
      4  */
      5 
      6 #ifndef LV_GRID_H
      7 #define LV_GRID_H
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13 /*********************
     14  *      INCLUDES
     15  *********************/
     16 #include "../../../core/lv_obj.h"
     17 #if LV_USE_GRID
     18 
     19 /*********************
     20  *      DEFINES
     21  *********************/
     22 /**
     23  * Can be used track size to make the track fill the free space.
     24  * @param x how much space to take proportionally to other FR tracks
     25  * @return a special track size
     26  */
     27 #define LV_GRID_FR(x)          (LV_COORD_MAX - 100 + x)
     28 
     29 #define LV_GRID_CONTENT        (LV_COORD_MAX - 101)
     30 LV_EXPORT_CONST_INT(LV_GRID_CONTENT);
     31 
     32 #define LV_GRID_TEMPLATE_LAST  (LV_COORD_MAX)
     33 LV_EXPORT_CONST_INT(LV_GRID_TEMPLATE_LAST);
     34 
     35 /**********************
     36  *      TYPEDEFS
     37  **********************/
     38 
     39 /*Can't include lv_obj.h because it includes this header file*/
     40 struct _lv_obj_t;
     41 
     42 typedef enum {
     43     LV_GRID_ALIGN_START,
     44     LV_GRID_ALIGN_CENTER,
     45     LV_GRID_ALIGN_END,
     46     LV_GRID_ALIGN_STRETCH,
     47     LV_GRID_ALIGN_SPACE_EVENLY,
     48     LV_GRID_ALIGN_SPACE_AROUND,
     49     LV_GRID_ALIGN_SPACE_BETWEEN,
     50 } lv_grid_align_t;
     51 
     52 /**********************
     53  * GLOBAL VARIABLES
     54  **********************/
     55 
     56 extern uint16_t LV_LAYOUT_GRID;
     57 extern lv_style_prop_t LV_STYLE_GRID_COLUMN_DSC_ARRAY;
     58 extern lv_style_prop_t LV_STYLE_GRID_COLUMN_ALIGN;
     59 extern lv_style_prop_t LV_STYLE_GRID_ROW_DSC_ARRAY;
     60 extern lv_style_prop_t LV_STYLE_GRID_ROW_ALIGN;
     61 extern lv_style_prop_t LV_STYLE_GRID_CELL_COLUMN_POS;
     62 extern lv_style_prop_t LV_STYLE_GRID_CELL_COLUMN_SPAN;
     63 extern lv_style_prop_t LV_STYLE_GRID_CELL_X_ALIGN;
     64 extern lv_style_prop_t LV_STYLE_GRID_CELL_ROW_POS;
     65 extern lv_style_prop_t LV_STYLE_GRID_CELL_ROW_SPAN;
     66 extern lv_style_prop_t LV_STYLE_GRID_CELL_Y_ALIGN;
     67 
     68 /**********************
     69  * GLOBAL PROTOTYPES
     70  **********************/
     71 
     72 void lv_grid_init(void);
     73 
     74 void lv_obj_set_grid_dsc_array(lv_obj_t * obj, const lv_coord_t col_dsc[], const lv_coord_t row_dsc[]);
     75 
     76 void lv_obj_set_grid_align(lv_obj_t * obj, lv_grid_align_t column_align, lv_grid_align_t row_align);
     77 
     78 /**
     79  * Set the cell of an object. The object's parent needs to have grid layout, else nothing will happen
     80  * @param obj pointer to an object
     81  * @param column_align the vertical alignment in the cell. `LV_GRID_START/END/CENTER/STRETCH`
     82  * @param col_pos column ID
     83  * @param col_span number of columns to take (>= 1)
     84  * @param row_align the horizontal alignment in the cell. `LV_GRID_START/END/CENTER/STRETCH`
     85  * @param row_pos row ID
     86  * @param row_span number of rows to take (>= 1)
     87  */
     88 void lv_obj_set_grid_cell(lv_obj_t * obj, lv_grid_align_t column_align, uint8_t col_pos, uint8_t col_span,
     89                           lv_grid_align_t row_align, uint8_t row_pos, uint8_t row_span);
     90 
     91 /**
     92  * Just a wrapper to `LV_GRID_FR` for bindings.
     93  */
     94 static inline lv_coord_t lv_grid_fr(uint8_t x)
     95 {
     96     return LV_GRID_FR(x);
     97 }
     98 
     99 void lv_style_set_grid_row_dsc_array(lv_style_t * style, const lv_coord_t value[]);
    100 void lv_style_set_grid_column_dsc_array(lv_style_t * style, const lv_coord_t value[]);
    101 void lv_style_set_grid_row_align(lv_style_t * style, lv_grid_align_t value);
    102 void lv_style_set_grid_column_align(lv_style_t * style, lv_grid_align_t value);
    103 void lv_style_set_grid_cell_column_pos(lv_style_t * style, lv_coord_t value);
    104 void lv_style_set_grid_cell_column_span(lv_style_t * style, lv_coord_t value);
    105 void lv_style_set_grid_cell_row_pos(lv_style_t * style, lv_coord_t value);
    106 void lv_style_set_grid_cell_row_span(lv_style_t * style, lv_coord_t value);
    107 void lv_style_set_grid_cell_x_align(lv_style_t * style, lv_coord_t value);
    108 void lv_style_set_grid_cell_y_align(lv_style_t * style, lv_coord_t value);
    109 
    110 void lv_obj_set_style_grid_row_dsc_array(lv_obj_t * obj, const lv_coord_t value[], lv_style_selector_t selector);
    111 void lv_obj_set_style_grid_column_dsc_array(lv_obj_t * obj, const lv_coord_t value[], lv_style_selector_t selector);
    112 void lv_obj_set_style_grid_row_align(lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
    113 void lv_obj_set_style_grid_column_align(lv_obj_t * obj, lv_grid_align_t value, lv_style_selector_t selector);
    114 void lv_obj_set_style_grid_cell_column_pos(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
    115 void lv_obj_set_style_grid_cell_column_span(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
    116 void lv_obj_set_style_grid_cell_row_pos(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
    117 void lv_obj_set_style_grid_cell_row_span(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
    118 void lv_obj_set_style_grid_cell_x_align(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
    119 void lv_obj_set_style_grid_cell_y_align(lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector);
    120 
    121 static inline const lv_coord_t * lv_obj_get_style_grid_row_dsc_array(const lv_obj_t * obj, uint32_t part)
    122 {
    123     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_ROW_DSC_ARRAY);
    124     return (const lv_coord_t *)v.ptr;
    125 }
    126 
    127 static inline const lv_coord_t * lv_obj_get_style_grid_column_dsc_array(const lv_obj_t * obj, uint32_t part)
    128 {
    129     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_COLUMN_DSC_ARRAY);
    130     return (const lv_coord_t *)v.ptr;
    131 }
    132 
    133 static inline lv_grid_align_t lv_obj_get_style_grid_row_align(const lv_obj_t * obj, uint32_t part)
    134 {
    135     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_ROW_ALIGN);
    136     return (lv_grid_align_t)v.num;
    137 }
    138 
    139 static inline lv_grid_align_t lv_obj_get_style_grid_column_align(const lv_obj_t * obj, uint32_t part)
    140 {
    141     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_COLUMN_ALIGN);
    142     return (lv_grid_align_t)v.num;
    143 }
    144 
    145 static inline lv_coord_t lv_obj_get_style_grid_cell_column_pos(const lv_obj_t * obj, uint32_t part)
    146 {
    147     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_COLUMN_POS);
    148     return (lv_coord_t)v.num;
    149 }
    150 
    151 static inline lv_coord_t lv_obj_get_style_grid_cell_column_span(const lv_obj_t * obj, uint32_t part)
    152 {
    153     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_COLUMN_SPAN);
    154     return (lv_coord_t)v.num;
    155 }
    156 
    157 static inline lv_coord_t lv_obj_get_style_grid_cell_row_pos(const lv_obj_t * obj, uint32_t part)
    158 {
    159     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_ROW_POS);
    160     return (lv_coord_t)v.num;
    161 }
    162 
    163 static inline lv_coord_t lv_obj_get_style_grid_cell_row_span(const lv_obj_t * obj, uint32_t part)
    164 {
    165     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_ROW_SPAN);
    166     return (lv_coord_t)v.num;
    167 }
    168 
    169 static inline lv_coord_t lv_obj_get_style_grid_cell_x_align(const lv_obj_t * obj, uint32_t part)
    170 {
    171     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_X_ALIGN);
    172     return (lv_coord_t)v.num;
    173 }
    174 
    175 static inline lv_coord_t lv_obj_get_style_grid_cell_y_align(const lv_obj_t * obj, uint32_t part)
    176 {
    177     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_GRID_CELL_Y_ALIGN);
    178     return (lv_coord_t)v.num;
    179 }
    180 
    181 /**********************
    182  * GLOBAL VARIABLES
    183  **********************/
    184 
    185 /**********************
    186  *      MACROS
    187  **********************/
    188 #endif /*LV_USE_GRID*/
    189 
    190 #ifdef __cplusplus
    191 } /*extern "C"*/
    192 #endif
    193 
    194 #endif /*LV_GRID_H*/