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_indev.h (5189B)

      1 /**
      2  * @file lv_indev.h
      3  *
      4  */
      5 
      6 #ifndef LV_INDEV_H
      7 #define LV_INDEV_H
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13 /*********************
     14  *      INCLUDES
     15  *********************/
     16 #include "lv_obj.h"
     17 #include "../hal/lv_hal_indev.h"
     18 #include "lv_group.h"
     19 
     20 /*********************
     21  *      DEFINES
     22  *********************/
     23 
     24 /**********************
     25  *      TYPEDEFS
     26  **********************/
     27 
     28 /**********************
     29  * GLOBAL PROTOTYPES
     30  **********************/
     31 
     32 /**
     33  * Called periodically to read the input devices
     34  * @param timer pointer to a timer to read
     35  */
     36 void lv_indev_read_timer_cb(lv_timer_t * timer);
     37 
     38 /**
     39  * Enable or disable one or all input devices (default enabled)
     40  * @param indev pointer to an input device or NULL to enable/disable all of them
     41  * @param en true to enable, false to disable
     42  */
     43 void lv_indev_enable(lv_indev_t * indev, bool en);
     44 
     45 /**
     46  * Get the currently processed input device. Can be used in action functions too.
     47  * @return pointer to the currently processed input device or NULL if no input device processing
     48  * right now
     49  */
     50 lv_indev_t * lv_indev_get_act(void);
     51 
     52 /**
     53  * Get the type of an input device
     54  * @param indev pointer to an input device
     55  * @return the type of the input device from `lv_hal_indev_type_t` (`LV_INDEV_TYPE_...`)
     56  */
     57 lv_indev_type_t lv_indev_get_type(const lv_indev_t * indev);
     58 
     59 /**
     60  * Reset one or all input devices
     61  * @param indev pointer to an input device to reset or NULL to reset all of them
     62  * @param obj pointer to an object which triggers the reset.
     63  */
     64 void lv_indev_reset(lv_indev_t * indev, lv_obj_t * obj);
     65 
     66 /**
     67  * Reset the long press state of an input device
     68  * @param indev pointer to an input device
     69  */
     70 void lv_indev_reset_long_press(lv_indev_t * indev);
     71 
     72 /**
     73  * Set a cursor for a pointer input device (for LV_INPUT_TYPE_POINTER and LV_INPUT_TYPE_BUTTON)
     74  * @param indev pointer to an input device
     75  * @param cur_obj pointer to an object to be used as cursor
     76  */
     77 void lv_indev_set_cursor(lv_indev_t * indev, lv_obj_t * cur_obj);
     78 
     79 /**
     80  * Set a destination group for a keypad input device (for LV_INDEV_TYPE_KEYPAD)
     81  * @param indev pointer to an input device
     82  * @param group point to a group
     83  */
     84 void lv_indev_set_group(lv_indev_t * indev, lv_group_t * group);
     85 
     86 /**
     87  * Set the an array of points for LV_INDEV_TYPE_BUTTON.
     88  * These points will be assigned to the buttons to press a specific point on the screen
     89  * @param indev pointer to an input device
     90  * @param group point to a group
     91  */
     92 void lv_indev_set_button_points(lv_indev_t * indev, const lv_point_t points[]);
     93 
     94 /**
     95  * Get the last point of an input device (for LV_INDEV_TYPE_POINTER and LV_INDEV_TYPE_BUTTON)
     96  * @param indev pointer to an input device
     97  * @param point pointer to a point to store the result
     98  */
     99 void lv_indev_get_point(const lv_indev_t * indev, lv_point_t * point);
    100 
    101 /**
    102 * Get the current gesture direct
    103 * @param indev pointer to an input device
    104 * @return current gesture direct
    105 */
    106 lv_dir_t lv_indev_get_gesture_dir(const lv_indev_t * indev);
    107 
    108 /**
    109  * Get the last pressed key of an input device (for LV_INDEV_TYPE_KEYPAD)
    110  * @param indev pointer to an input device
    111  * @return the last pressed key (0 on error)
    112  */
    113 uint32_t lv_indev_get_key(const lv_indev_t * indev);
    114 
    115 /**
    116  * Check the current scroll direction of an input device (for LV_INDEV_TYPE_POINTER and
    117  * LV_INDEV_TYPE_BUTTON)
    118  * @param indev pointer to an input device
    119  * @return LV_DIR_NONE: no scrolling now
    120  *         LV_DIR_HOR/VER
    121  */
    122 lv_dir_t lv_indev_get_scroll_dir(const lv_indev_t * indev);
    123 
    124 /**
    125  * Get the currently scrolled object (for LV_INDEV_TYPE_POINTER and
    126  * LV_INDEV_TYPE_BUTTON)
    127  * @param indev pointer to an input device
    128  * @return pointer to the currently scrolled object or NULL if no scrolling by this indev
    129  */
    130 lv_obj_t * lv_indev_get_scroll_obj(const lv_indev_t * indev);
    131 
    132 /**
    133  * Get the movement vector of an input device (for LV_INDEV_TYPE_POINTER and
    134  * LV_INDEV_TYPE_BUTTON)
    135  * @param indev pointer to an input device
    136  * @param point pointer to a point to store the types.pointer.vector
    137  */
    138 void lv_indev_get_vect(const lv_indev_t * indev, lv_point_t * point);
    139 
    140 /**
    141  * Do nothing until the next release
    142  * @param indev pointer to an input device
    143  */
    144 void lv_indev_wait_release(lv_indev_t * indev);
    145 
    146 /**
    147  * Gets a pointer to the currently active object in the currently processed input device.
    148  * @return pointer to currently active object or NULL if no active object
    149  */
    150 lv_obj_t * lv_indev_get_obj_act(void);
    151 
    152 /**
    153  * Get a pointer to the indev read timer to
    154  * modify its parameters with `lv_timer_...` functions.
    155  * @param indev pointer to an input device
    156  * @return pointer to the indev read refresher timer. (NULL on error)
    157  */
    158 lv_timer_t * lv_indev_get_read_timer(lv_disp_t * indev);
    159 
    160 /**
    161  * Search the most top, clickable object by a point
    162  * @param obj pointer to a start object, typically the screen
    163  * @param point pointer to a point for searching the most top child
    164  * @return pointer to the found object or NULL if there was no suitable object
    165  */
    166 lv_obj_t * lv_indev_search_obj(lv_obj_t * obj, lv_point_t * point);
    167 
    168 /**********************
    169  *      MACROS
    170  **********************/
    171 
    172 #ifdef __cplusplus
    173 } /*extern "C"*/
    174 #endif
    175 
    176 #endif /*LV_INDEV_H*/