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_obj_class.h (2554B)

      1 /**
      2  * @file lv_obj_class.h
      3  *
      4  */
      5 
      6 #ifndef LV_OBJ_CLASS_H
      7 #define LV_OBJ_CLASS_H
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13 /*********************
     14  *      INCLUDES
     15  *********************/
     16 #include <stdint.h>
     17 #include <stdbool.h>
     18 
     19 /*********************
     20  *      DEFINES
     21  *********************/
     22 
     23 
     24 /**********************
     25  *      TYPEDEFS
     26  **********************/
     27 
     28 struct _lv_obj_t;
     29 struct _lv_obj_class_t;
     30 struct _lv_event_t;
     31 
     32 typedef enum {
     33     LV_OBJ_CLASS_EDITABLE_INHERIT,      /**< Check the base class. Must have 0 value to let zero initialized class inherit*/
     34     LV_OBJ_CLASS_EDITABLE_TRUE,
     35     LV_OBJ_CLASS_EDITABLE_FALSE,
     36 } lv_obj_class_editable_t;
     37 
     38 typedef enum {
     39     LV_OBJ_CLASS_GROUP_DEF_INHERIT,      /**< Check the base class. Must have 0 value to let zero initialized class inherit*/
     40     LV_OBJ_CLASS_GROUP_DEF_TRUE,
     41     LV_OBJ_CLASS_GROUP_DEF_FALSE,
     42 } lv_obj_class_group_def_t;
     43 
     44 typedef void (*lv_obj_class_event_cb_t)(struct _lv_obj_class_t * class_p, struct _lv_event_t * e);
     45 /**
     46  * Describe the common methods of every object.
     47  * Similar to a C++ class.
     48  */
     49 typedef struct _lv_obj_class_t {
     50     const struct _lv_obj_class_t * base_class;
     51     void (*constructor_cb)(const struct _lv_obj_class_t * class_p, struct _lv_obj_t * obj);
     52     void (*destructor_cb)(const struct _lv_obj_class_t * class_p, struct _lv_obj_t * obj);
     53 #if LV_USE_USER_DATA
     54     void * user_data;
     55 #endif
     56     void (*event_cb)(const struct _lv_obj_class_t * class_p,
     57                      struct _lv_event_t * e);  /**< Widget type specific event function*/
     58     lv_coord_t width_def;
     59     lv_coord_t height_def;
     60     uint32_t editable : 2;             /**< Value from ::lv_obj_class_editable_t*/
     61     uint32_t group_def : 2;            /**< Value from ::lv_obj_class_group_def_t*/
     62     uint32_t instance_size : 16;
     63 } lv_obj_class_t;
     64 
     65 /**********************
     66  * GLOBAL PROTOTYPES
     67  **********************/
     68 
     69 /**
     70  * Create an object form a class descriptor
     71  * @param class_p   pointer to a class
     72  * @param parent    pointer to an object where the new object should be created
     73  * @return          pointer to the created object
     74  */
     75 struct _lv_obj_t * lv_obj_class_create_obj(const struct _lv_obj_class_t * class_p, struct _lv_obj_t * parent);
     76 
     77 void lv_obj_class_init_obj(struct _lv_obj_t * obj);
     78 
     79 void _lv_obj_destruct(struct _lv_obj_t * obj);
     80 
     81 bool lv_obj_is_editable(struct _lv_obj_t * obj);
     82 
     83 bool lv_obj_is_group_def(struct _lv_obj_t * obj);
     84 
     85 /**********************
     86  *      MACROS
     87  **********************/
     88 
     89 
     90 #ifdef __cplusplus
     91 } /*extern "C"*/
     92 #endif
     93 
     94 #endif /*LV_OBJ_CLASS_H*/