| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #ifndef _MENU_H
- #define _MENU_H
- #include "u8g2.h"
- //#define D12832
- #define D12864
- #ifdef D12832
- #define MENU_SMALL_FONT u8g2_font_baby_tr
- #define MENU_NORMAL_FONT u8g2_font_ncenR08_tf
- #define MENU_LARGE_FONT u8g2_font_ncenR08_tf
- #define MENU_BIG_NUM u8g2_font_ncenR18_tn
- #define MENU_BIG_NUM_FOCUS_XO 0
- #define MENU_BIG_NUM_FOCUS_EXTRAX 0
- #endif
- #ifdef D12864
- #define MENU_SMALL_FONT u8g2_font_baby_tr
- #define MENU_NORMAL_FONT u8g2_font_ncenR08_tf
- #define MENU_LARGE_FONT u8g2_font_ncenR10_tf
- #define MENU_BIG_NUM u8g2_font_ncenR24_tn
- #define MENU_BIG_NUM_FOCUS_XO 0
- #define MENU_BIG_NUM_FOCUS_EXTRAX 1
- #endif
- typedef struct _menu_struct menu_t;
- typedef struct _me_struct me_t;
- typedef int (*me_cb)(menu_t *menu, const me_t *me, uint8_t msg);
- struct _me_struct
- {
- me_cb cb;
- void *val;
- void *arg;
- u8g2_uint_t x;
- u8g2_uint_t y;
- };
- /* return 1, if this element can have focus */
- #define ME_MSG_IS_FOCUS 1
- /* draw focus graphics for the element */
- #define ME_MSG_DRAW_FOCUS 2
- /* user has pressed the select key */
- #define ME_MSG_SELECT 3
- /* advice for drawing */
- #define ME_MSG_DRAW 4
- struct _menu_struct
- {
- u8g2_t *u8g2;
-
- volatile uint16_t current_index; /* element which is processed right now */
- uint16_t focus_index; /* element which has the focus at the moment */
- uint16_t radio_index; /* if elements for a radio selection, then this is set by the cb */
- uint16_t me_count; /* total number of elements in the list */
-
- /* pointer to the list of menu elements */
- const me_t *me_list;
-
- };
- void menu_SetEdgePixel(menu_t *menu, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h) U8G2_NOINLINE;
- void menu_ClearEdgePixel(menu_t *menu, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h) U8G2_NOINLINE;
- void menu_DrawBoxFocus(menu_t *menu, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h) U8G2_NOINLINE;
- void menu_DrawFrameFocus(menu_t *menu, u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h) U8G2_NOINLINE;
- void menu_Init(menu_t *menu, u8g2_t *u8g2);
- void menu_SetMEList(menu_t *menu, const me_t *me_list, uint16_t initial_focus);
- void menu_Draw(menu_t *menu);
- void menu_NextFocus(menu_t *menu);
- void menu_Select(menu_t *menu);
- int me_cb_null(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_big_toggle(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_wd_toggle(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_0_5(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_0_9(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_0_9_ro(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_0_23(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_0_23_ro(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_0_9_small_ro(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_0_55(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_1_12(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_1_31(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_num_label(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_button_full_line(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_button_half_line(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_button_empty(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_scale_1_7(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_label(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_inv_label(menu_t *menu, const me_t *me, uint8_t msg);
- int me_cb_16x16_bitmap_button(menu_t *menu, const me_t *me, uint8_t msg);
- #endif
|