add character encoder interface issue #131
This commit is contained in:
@@ -650,7 +650,7 @@ static lv_res_t lv_ddlist_release_action(lv_obj_t * ddlist)
|
||||
uint32_t line_cnt = 0;
|
||||
uint32_t letter;
|
||||
for(line_cnt = 0; line_cnt < letter_i; line_cnt++) {
|
||||
letter = lv_txt_utf8_next(txt, &i);
|
||||
letter = lv_txt_encoded_next(txt, &i);
|
||||
if(letter == '\n') new_opt ++;
|
||||
}
|
||||
|
||||
|
||||
@@ -427,7 +427,7 @@ void lv_label_get_letter_pos(lv_obj_t * label, uint16_t index, lv_point_t * pos)
|
||||
max_w = LV_COORD_MAX;
|
||||
}
|
||||
|
||||
index = txt_utf8_get_byte_id(txt, index);
|
||||
index = txt_encoded_get_byte_id(txt, index);
|
||||
|
||||
/*Search the line of the index letter */;
|
||||
while(txt[new_line_start] != '\0') {
|
||||
@@ -451,8 +451,8 @@ void lv_label_get_letter_pos(lv_obj_t * label, uint16_t index, lv_point_t * pos)
|
||||
lv_txt_cmd_state_t cmd_state = LV_TXT_CMD_STATE_WAIT;
|
||||
uint32_t letter;
|
||||
while(cnt < index) {
|
||||
cnt += lv_txt_utf8_size(txt[i]);
|
||||
letter = lv_txt_utf8_next(txt, &i);
|
||||
cnt += lv_txt_encoded_size(&txt[i]);
|
||||
letter = lv_txt_encoded_next(txt, &i);
|
||||
/*Handle the recolor command*/
|
||||
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
|
||||
if(lv_txt_is_cmd(&cmd_state, txt[i]) != false) {
|
||||
@@ -531,7 +531,7 @@ uint16_t lv_label_get_letter_on(lv_obj_t * label, lv_point_t * pos)
|
||||
uint32_t i_current = i;
|
||||
uint32_t letter;
|
||||
while(i < new_line_start - 1) {
|
||||
letter = lv_txt_utf8_next(txt, &i); /*Be careful 'i' already points to the next character*/
|
||||
letter = lv_txt_encoded_next(txt, &i); /*Be careful 'i' already points to the next character*/
|
||||
/*Handle the recolor command*/
|
||||
if((flag & LV_TXT_FLAG_RECOLOR) != 0) {
|
||||
if(lv_txt_is_cmd(&cmd_state, txt[i]) != false) {
|
||||
@@ -548,7 +548,7 @@ uint16_t lv_label_get_letter_on(lv_obj_t * label, lv_point_t * pos)
|
||||
i_current = i;
|
||||
}
|
||||
|
||||
return lv_txt_utf8_get_char_id(txt, i);
|
||||
return lv_encoded_get_char_id(txt, i);
|
||||
}
|
||||
|
||||
|
||||
@@ -585,7 +585,7 @@ void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt)
|
||||
#if LV_TXT_UTF8 == 0
|
||||
pos = old_len;
|
||||
#else
|
||||
pos = lv_txt_get_length(ext->text);
|
||||
pos = lv_txt_get_encoded_length(ext->text);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -836,7 +836,7 @@ static void lv_label_refr_text(lv_obj_t * label)
|
||||
} else if(ext->long_mode == LV_LABEL_LONG_DOT) {
|
||||
if(size.y <= lv_obj_get_height(label)) { /*No dots are required, the text is short enough*/
|
||||
ext->dot_end = LV_LABEL_DOT_END_INV;
|
||||
} else if(lv_txt_get_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/
|
||||
} else if(lv_txt_get_encoded_length(ext->text) <= LV_LABEL_DOT_NUM) { /*Don't turn to dots all the characters*/
|
||||
ext->dot_end = LV_LABEL_DOT_END_INV;
|
||||
} else {
|
||||
lv_point_t p;
|
||||
@@ -862,12 +862,12 @@ static void lv_label_refr_text(lv_obj_t * label)
|
||||
#else
|
||||
/*Save letters under the dots and replace them with dots*/
|
||||
uint32_t i;
|
||||
uint32_t byte_id = txt_utf8_get_byte_id(ext->text, letter_id);
|
||||
uint32_t byte_id = txt_encoded_get_byte_id(ext->text, letter_id);
|
||||
uint32_t byte_id_ori = byte_id;
|
||||
uint8_t len = 0;
|
||||
for(i = 0; i <= LV_LABEL_DOT_NUM; i++) {
|
||||
len += lv_txt_utf8_size(ext->text[byte_id]);
|
||||
lv_txt_utf8_next(ext->text, &byte_id);
|
||||
len += lv_txt_encoded_size(&ext->text[byte_id]);
|
||||
lv_txt_encoded_next(ext->text, &byte_id);
|
||||
}
|
||||
|
||||
memcpy(ext->dot_tmp, &ext->text[byte_id_ori], len);
|
||||
@@ -904,7 +904,7 @@ static void lv_label_revert_dots(lv_obj_t * label)
|
||||
}
|
||||
#else
|
||||
uint32_t letter_i = ext->dot_end - LV_LABEL_DOT_NUM;
|
||||
uint32_t byte_i = txt_utf8_get_byte_id(ext->text, letter_i);
|
||||
uint32_t byte_i = txt_encoded_get_byte_id(ext->text, letter_i);
|
||||
|
||||
/*Restore the characters*/
|
||||
uint8_t i = 0;
|
||||
|
||||
@@ -269,7 +269,7 @@ void lv_ta_add_text(lv_obj_t * ta, const char * txt)
|
||||
}
|
||||
|
||||
/*Move the cursor after the new text*/
|
||||
lv_ta_set_cursor_pos(ta, lv_ta_get_cursor_pos(ta) + lv_txt_get_length(txt));
|
||||
lv_ta_set_cursor_pos(ta, lv_ta_get_cursor_pos(ta) + lv_txt_get_encoded_length(txt));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -299,8 +299,8 @@ void lv_ta_del_char(lv_obj_t * ta)
|
||||
#if LV_TXT_UTF8 == 0
|
||||
lv_txt_cut(ext->pwd_tmp, ext->cursor.pos - 1, 1);
|
||||
#else
|
||||
uint32_t byte_pos = txt_utf8_get_byte_id(ext->pwd_tmp, ext->cursor.pos - 1);
|
||||
lv_txt_cut(ext->pwd_tmp, ext->cursor.pos - 1, lv_txt_utf8_size(label_txt[byte_pos]));
|
||||
uint32_t byte_pos = txt_encoded_get_byte_id(ext->pwd_tmp, ext->cursor.pos - 1);
|
||||
lv_txt_cut(ext->pwd_tmp, ext->cursor.pos - 1, lv_txt_encoded_size(&label_txt[byte_pos]));
|
||||
#endif
|
||||
ext->pwd_tmp = lv_mem_realloc(ext->pwd_tmp, strlen(ext->pwd_tmp) + 1);
|
||||
lv_mem_assert(ext->pwd_tmp);
|
||||
@@ -370,7 +370,7 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
|
||||
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
|
||||
if(ext->cursor.pos == pos) return;
|
||||
|
||||
uint16_t len = lv_txt_get_length(lv_label_get_text(ext->label));
|
||||
uint16_t len = lv_txt_get_encoded_length(lv_label_get_text(ext->label));
|
||||
|
||||
if(pos < 0) pos = len + pos;
|
||||
|
||||
@@ -821,12 +821,12 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const lv_area_t * mask, lv_
|
||||
const char * txt = lv_label_get_text(ta_ext->label);
|
||||
uint32_t byte_pos;
|
||||
#if LV_TXT_UTF8 != 0
|
||||
byte_pos = txt_utf8_get_byte_id(txt, cur_pos);
|
||||
byte_pos = txt_encoded_get_byte_id(txt, cur_pos);
|
||||
#else
|
||||
byte_pos = cur_pos;
|
||||
#endif
|
||||
|
||||
uint32_t letter = lv_txt_utf8_next(&txt[byte_pos], NULL);
|
||||
uint32_t letter = lv_txt_encoded_next(&txt[byte_pos], NULL);
|
||||
lv_coord_t letter_h = lv_font_get_height(label_style->text.font);
|
||||
/*Set letter_w (set not 0 on non printable but valid chars)*/
|
||||
lv_coord_t letter_w;
|
||||
@@ -845,8 +845,8 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const lv_area_t * mask, lv_
|
||||
letter_pos.y += letter_h + label_style->text.line_space;
|
||||
|
||||
if(letter != '\0') {
|
||||
byte_pos += lv_txt_utf8_size(txt[byte_pos]);
|
||||
letter = lv_txt_utf8_next(&txt[byte_pos], NULL);
|
||||
byte_pos += lv_txt_encoded_size(&txt[byte_pos]);
|
||||
letter = lv_txt_encoded_next(&txt[byte_pos], NULL);
|
||||
}
|
||||
|
||||
if(letter == '\0' || letter == '\n' || letter == '\r') {
|
||||
@@ -879,7 +879,7 @@ static bool lv_ta_scrollable_design(lv_obj_t * scrl, const lv_area_t * mask, lv_
|
||||
letter_buf[1] = '\0';
|
||||
#else
|
||||
char letter_buf[8] = {0};
|
||||
memcpy(letter_buf, &txt[byte_pos], lv_txt_utf8_size(txt[byte_pos]));
|
||||
memcpy(letter_buf, &txt[byte_pos], lv_txt_encoded_size(&txt[byte_pos]));
|
||||
#endif
|
||||
cur_area.x1 += cur_style.body.padding.hor;
|
||||
cur_area.y1 += cur_style.body.padding.ver;
|
||||
@@ -1073,7 +1073,7 @@ static void pwd_char_hider(lv_obj_t * ta)
|
||||
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
|
||||
if(ext->pwd_mode != 0) {
|
||||
char * txt = lv_label_get_text(ext->label);
|
||||
int16_t len = lv_txt_get_length(txt);
|
||||
int16_t len = lv_txt_get_encoded_length(txt);
|
||||
bool refr = false;
|
||||
uint16_t i;
|
||||
for(i = 0; i < len; i++) {
|
||||
|
||||
Reference in New Issue
Block a user