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_flex.h (5334B)

      1 /**
      2  * @file lv_flex.h
      3  *
      4  */
      5 
      6 #ifndef LV_FLEX_H
      7 #define LV_FLEX_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_FLEX
     18 
     19 /*********************
     20  *      DEFINES
     21  *********************/
     22 
     23 #define LV_OBJ_FLAG_FLEX_IN_NEW_TRACK   LV_OBJ_FLAG_LAYOUT_1
     24 LV_EXPORT_CONST_INT(LV_OBJ_FLAG_FLEX_IN_NEW_TRACK);
     25 
     26 #define _LV_FLEX_COLUMN        (1 << 0)
     27 #define _LV_FLEX_WRAP       (1 << 2)
     28 #define _LV_FLEX_REVERSE    (1 << 3)
     29 
     30 /**********************
     31  *      TYPEDEFS
     32  **********************/
     33 
     34 /*Can't include lv_obj.h because it includes this header file*/
     35 struct _lv_obj_t;
     36 
     37 typedef enum {
     38     LV_FLEX_ALIGN_START,
     39     LV_FLEX_ALIGN_END,
     40     LV_FLEX_ALIGN_CENTER,
     41     LV_FLEX_ALIGN_SPACE_EVENLY,
     42     LV_FLEX_ALIGN_SPACE_AROUND,
     43     LV_FLEX_ALIGN_SPACE_BETWEEN,
     44 } lv_flex_align_t;
     45 
     46 typedef enum {
     47     LV_FLEX_FLOW_ROW                 = 0x00,
     48     LV_FLEX_FLOW_COLUMN              = _LV_FLEX_COLUMN,
     49     LV_FLEX_FLOW_ROW_WRAP            = LV_FLEX_FLOW_ROW | _LV_FLEX_WRAP,
     50     LV_FLEX_FLOW_ROW_REVERSE         = LV_FLEX_FLOW_ROW | _LV_FLEX_REVERSE,
     51     LV_FLEX_FLOW_ROW_WRAP_REVERSE    = LV_FLEX_FLOW_ROW | _LV_FLEX_WRAP | _LV_FLEX_REVERSE,
     52     LV_FLEX_FLOW_COLUMN_WRAP         = LV_FLEX_FLOW_COLUMN | _LV_FLEX_WRAP,
     53     LV_FLEX_FLOW_COLUMN_REVERSE      = LV_FLEX_FLOW_COLUMN | _LV_FLEX_REVERSE,
     54     LV_FLEX_FLOW_COLUMN_WRAP_REVERSE = LV_FLEX_FLOW_COLUMN | _LV_FLEX_WRAP | _LV_FLEX_REVERSE,
     55 } lv_flex_flow_t;
     56 
     57 /**********************
     58  * GLOBAL VARIABLES
     59  **********************/
     60 extern uint16_t LV_LAYOUT_FLEX;
     61 extern lv_style_prop_t LV_STYLE_FLEX_FLOW;
     62 extern lv_style_prop_t LV_STYLE_FLEX_MAIN_PLACE;
     63 extern lv_style_prop_t LV_STYLE_FLEX_CROSS_PLACE;
     64 extern lv_style_prop_t LV_STYLE_FLEX_TRACK_PLACE;
     65 extern lv_style_prop_t LV_STYLE_FLEX_GROW;
     66 
     67 /**********************
     68  * GLOBAL PROTOTYPES
     69  **********************/
     70 
     71 /**
     72  * Initialize a flex layout the default values
     73  * @param flex pointer to a flex layout descriptor
     74  */
     75 void lv_flex_init(void);
     76 
     77 /**
     78  * Set hot the item should flow
     79  * @param flex pointer to a flex layout descriptor
     80  * @param flow an element of `lv_flex_flow_t`.
     81  */
     82 void lv_obj_set_flex_flow(lv_obj_t * obj, lv_flex_flow_t flow);
     83 
     84 /**
     85  * Set how to place (where to align) the items and tracks
     86  * @param flex pointer: to a flex layout descriptor
     87  * @param main_place where to place the items on main axis (in their track). Any value of `lv_flex_align_t`.
     88  * @param cross_place where to place the item in their track on the cross axis. `LV_FLEX_ALIGN_START/END/CENTER`
     89  * @param track_place where to place the tracks in the cross direction. Any value of `lv_flex_align_t`.
     90  */
     91 void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_align_t cross_place,
     92                            lv_flex_align_t track_cross_place);
     93 
     94 /**
     95  * Sets the width or height (on main axis) to grow the object in order fill the free space
     96  * @param obj pointer to an object. The parent must have flex layout else nothing will happen.
     97  * @param grow a value to set how much free space to take proportionally to other growing items.
     98  */
     99 void lv_obj_set_flex_grow(lv_obj_t * obj, uint8_t grow);
    100 
    101 void lv_style_set_flex_flow(lv_style_t * style, lv_flex_flow_t value);
    102 void lv_style_set_flex_main_place(lv_style_t * style, lv_flex_align_t value);
    103 void lv_style_set_flex_cross_place(lv_style_t * style, lv_flex_align_t value);
    104 void lv_style_set_flex_track_place(lv_style_t * style, lv_flex_align_t value);
    105 void lv_style_set_flex_grow(lv_style_t * style, uint8_t value);
    106 void lv_obj_set_style_flex_flow(lv_obj_t * obj, lv_flex_flow_t value, lv_style_selector_t selector);
    107 void lv_obj_set_style_flex_main_place(lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);
    108 void lv_obj_set_style_flex_cross_place(lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);
    109 void lv_obj_set_style_flex_track_place(lv_obj_t * obj, lv_flex_align_t value, lv_style_selector_t selector);
    110 void lv_obj_set_style_flex_grow(lv_obj_t * obj, uint8_t value, lv_style_selector_t selector);
    111 
    112 static inline lv_flex_flow_t lv_obj_get_style_flex_flow(const lv_obj_t * obj, uint32_t part)
    113 {
    114     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_FLOW);
    115     return (lv_flex_flow_t)v.num;
    116 }
    117 
    118 static inline lv_flex_align_t lv_obj_get_style_flex_main_place(const lv_obj_t * obj, uint32_t part)
    119 {
    120     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_MAIN_PLACE);
    121     return (lv_flex_align_t)v.num;
    122 }
    123 
    124 static inline lv_flex_align_t lv_obj_get_style_flex_cross_place(const lv_obj_t * obj, uint32_t part)
    125 {
    126     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_CROSS_PLACE);
    127     return (lv_flex_align_t)v.num;
    128 }
    129 
    130 static inline lv_flex_align_t lv_obj_get_style_flex_track_place(const lv_obj_t * obj, uint32_t part)
    131 {
    132     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_TRACK_PLACE);
    133     return (lv_flex_align_t)v.num;
    134 }
    135 
    136 static inline uint8_t lv_obj_get_style_flex_grow(const lv_obj_t * obj, uint32_t part)
    137 {
    138     lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_FLEX_GROW);
    139     return (uint8_t)v.num;
    140 }
    141 
    142 
    143 /**********************
    144  *      MACROS
    145  **********************/
    146 
    147 #endif  /*LV_USE_FLEX*/
    148 
    149 #ifdef __cplusplus
    150 } /*extern "C"*/
    151 #endif
    152 
    153 #endif /*LV_FLEX_H*/