146 lines
3.7 KiB
C
146 lines
3.7 KiB
C
/**
|
|
* @file lv_ime_pinyin.h
|
|
*
|
|
*/
|
|
#ifndef LV_IME_PINYIN_H
|
|
#define LV_IME_PINYIN_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
#include "liblvgl/lvgl.h"
|
|
|
|
#if LV_USE_IME_PINYIN != 0
|
|
|
|
/*********************
|
|
* DEFINES
|
|
*********************/
|
|
#define LV_IME_PINYIN_K9_MAX_INPUT 7
|
|
|
|
/**********************
|
|
* TYPEDEFS
|
|
**********************/
|
|
|
|
typedef enum {
|
|
LV_IME_PINYIN_MODE_K26,
|
|
LV_IME_PINYIN_MODE_K9,
|
|
} lv_ime_pinyin_mode_t;
|
|
|
|
/*Data of pinyin_dict*/
|
|
typedef struct {
|
|
const char * const py;
|
|
const char * const py_mb;
|
|
} lv_pinyin_dict_t;
|
|
|
|
/*Data of 9-key input(k9) mode*/
|
|
typedef struct {
|
|
char py_str[7];
|
|
} ime_pinyin_k9_py_str_t;
|
|
|
|
/*Data of lv_ime_pinyin*/
|
|
typedef struct {
|
|
lv_obj_t obj;
|
|
lv_obj_t * kb;
|
|
lv_obj_t * cand_panel;
|
|
lv_pinyin_dict_t * dict;
|
|
lv_ll_t k9_legal_py_ll;
|
|
char * cand_str; /* Candidate string */
|
|
char input_char[16]; /* Input box character */
|
|
#if LV_IME_PINYIN_USE_K9_MODE
|
|
char k9_input_str[LV_IME_PINYIN_K9_MAX_INPUT]; /* 9-key input(k9) mode input string */
|
|
uint16_t k9_py_ll_pos; /* Current pinyin map pages(k9) */
|
|
uint16_t k9_legal_py_count; /* Count of legal Pinyin numbers(k9) */
|
|
uint16_t k9_input_str_len; /* 9-key input(k9) mode input string max len */
|
|
#endif
|
|
uint16_t ta_count; /* The number of characters entered in the text box this time */
|
|
uint16_t cand_num; /* Number of candidates */
|
|
uint16_t py_page; /* Current pinyin map pages(k26) */
|
|
uint16_t py_num[26]; /* Number and length of Pinyin */
|
|
uint16_t py_pos[26]; /* Pinyin position */
|
|
uint8_t mode : 1; /* Set mode, 1: 26-key input(k26), 0: 9-key input(k9). Default: 1. */
|
|
} lv_ime_pinyin_t;
|
|
|
|
/***********************
|
|
* GLOBAL VARIABLES
|
|
***********************/
|
|
|
|
/**********************
|
|
* GLOBAL PROTOTYPES
|
|
**********************/
|
|
lv_obj_t * lv_ime_pinyin_create(lv_obj_t * parent);
|
|
|
|
/*=====================
|
|
* Setter functions
|
|
*====================*/
|
|
|
|
/**
|
|
* Set the keyboard of Pinyin input method.
|
|
* @param obj pointer to a Pinyin input method object
|
|
* @param dict pointer to a Pinyin input method keyboard
|
|
*/
|
|
void lv_ime_pinyin_set_keyboard(lv_obj_t * obj, lv_obj_t * kb);
|
|
|
|
/**
|
|
* Set the dictionary of Pinyin input method.
|
|
* @param obj pointer to a Pinyin input method object
|
|
* @param dict pointer to a Pinyin input method dictionary
|
|
*/
|
|
void lv_ime_pinyin_set_dict(lv_obj_t * obj, lv_pinyin_dict_t * dict);
|
|
|
|
/**
|
|
* Set mode, 26-key input(k26) or 9-key input(k9).
|
|
* @param obj pointer to a Pinyin input method object
|
|
* @param mode the mode from 'lv_ime_pinyin_mode_t'
|
|
*/
|
|
void lv_ime_pinyin_set_mode(lv_obj_t * obj, lv_ime_pinyin_mode_t mode);
|
|
|
|
|
|
/*=====================
|
|
* Getter functions
|
|
*====================*/
|
|
|
|
/**
|
|
* Set the dictionary of Pinyin input method.
|
|
* @param obj pointer to a Pinyin IME object
|
|
* @return pointer to the Pinyin IME keyboard
|
|
*/
|
|
lv_obj_t * lv_ime_pinyin_get_kb(lv_obj_t * obj);
|
|
|
|
|
|
/**
|
|
* Set the dictionary of Pinyin input method.
|
|
* @param obj pointer to a Pinyin input method object
|
|
* @return pointer to the Pinyin input method candidate panel
|
|
*/
|
|
lv_obj_t * lv_ime_pinyin_get_cand_panel(lv_obj_t * obj);
|
|
|
|
|
|
/**
|
|
* Set the dictionary of Pinyin input method.
|
|
* @param obj pointer to a Pinyin input method object
|
|
* @return pointer to the Pinyin input method dictionary
|
|
*/
|
|
lv_pinyin_dict_t * lv_ime_pinyin_get_dict(lv_obj_t * obj);
|
|
|
|
/*=====================
|
|
* Other functions
|
|
*====================*/
|
|
|
|
/**********************
|
|
* MACROS
|
|
**********************/
|
|
|
|
#endif /*LV_IME_PINYIN*/
|
|
|
|
#ifdef __cplusplus
|
|
} /*extern "C"*/
|
|
#endif
|
|
|
|
#endif /*LV_USE_IME_PINYIN*/
|
|
|
|
|