From 554dccdb0b08109de860dbd2df79a0b9f8c41088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Briano?= Date: Fri, 24 Apr 2009 04:35:52 +0000 Subject: [PATCH] some formatting SVN revision: 40343 --- .../src/lib/engines/common/evas_font_draw.c | 313 +++++++------- .../src/lib/engines/common/evas_font_main.c | 22 +- .../src/lib/engines/common/evas_font_query.c | 4 +- .../common/evas_intl/evas_intl_arabic.c | 384 +++++++++--------- .../src/lib/engines/common/evas_intl_utils.c | 142 +++---- .../src/lib/engines/common/evas_intl_utils.h | 3 +- 6 files changed, 438 insertions(+), 430 deletions(-) diff --git a/legacy/evas/src/lib/engines/common/evas_font_draw.c b/legacy/evas/src/lib/engines/common/evas_font_draw.c index bc8c4b3a5f..485c7fbdff 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_draw.c +++ b/legacy/evas/src/lib/engines/common/evas_font_draw.c @@ -189,7 +189,7 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font DATA32 *im; int c; int char_index = 0; /* the index of the current char */ - + #ifdef INTERNATIONAL_SUPPORT int bidi_err = 0; /*FIXME: should get the direction by parmater */ @@ -223,175 +223,178 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font /* grrr - this means font face sharing is kinda... not an option if */ /* you want performance */ if ((use_kerning) && (prev_index) && (index) && - (pface == fi->src->ft.face)) { -#ifdef INTERNATIONAL_SUPPORT - /* if it's rtl, the kerning matching should be reversed, i.e prev - * index is now the index and the other way around. */ - if (evas_intl_is_rtl_char(level_list, char_index)) { - if (evas_common_font_query_kerning(fi, index, prev_index, &kern)) - pen_x += kern; - } - else -#endif - + (pface == fi->src->ft.face)) { +#ifdef INTERNATIONAL_SUPPORT + /* if it's rtl, the kerning matching should be reversed, i.e prev + * index is now the index and the other way around. */ + if (evas_intl_is_rtl_char(level_list, char_index)) + { + if (evas_common_font_query_kerning(fi, index, prev_index, &kern)) + pen_x += kern; + } + else +#endif - if (evas_common_font_query_kerning(fi, prev_index, index, &kern)) - pen_x += kern; + { + + if (evas_common_font_query_kerning(fi, prev_index, index, &kern)) + pen_x += kern; + } } - } - pface = fi->src->ft.face; - fg = evas_common_font_int_cache_glyph_get(fi, index); - if (!fg) continue; + pface = fi->src->ft.face; + fg = evas_common_font_int_cache_glyph_get(fi, index); + if (!fg) continue; - if (dc->font_ext.func.gl_new) - { - /* extension calls */ - fg->ext_dat = dc->font_ext.func.gl_new(dc->font_ext.data, fg); - fg->ext_dat_free = dc->font_ext.func.gl_free; - } + if (dc->font_ext.func.gl_new) + { + /* extension calls */ + fg->ext_dat = dc->font_ext.func.gl_new(dc->font_ext.data, fg); + fg->ext_dat_free = dc->font_ext.func.gl_free; + } - chr_x = (pen_x + (fg->glyph_out->left)); - chr_y = (pen_y + (fg->glyph_out->top)); + chr_x = (pen_x + (fg->glyph_out->left)); + chr_y = (pen_y + (fg->glyph_out->top)); - if (chr_x < (ext_x + ext_w)) - { - DATA8 *data; - int i, j, w, h; + if (chr_x < (ext_x + ext_w)) + { + DATA8 *data; + int i, j, w, h; - data = fg->glyph_out->bitmap.buffer; - j = fg->glyph_out->bitmap.pitch; - w = fg->glyph_out->bitmap.width; - if (j < w) j = w; - h = fg->glyph_out->bitmap.rows; -/* - if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays) - && (fg->glyph_out->bitmap.num_grays == 256) - ) - */ - { - if ((j > 0) && (chr_x + w > ext_x)) - { - if ((fg->ext_dat) && (dc->font_ext.func.gl_draw)) - { - /* ext glyph draw */ - dc->font_ext.func.gl_draw(dc->font_ext.data, - (void *)dst, - dc, fg, - chr_x, - y - (chr_y - y) - ); - } - else - { - if ((fg->glyph_out->bitmap.num_grays == 256) && - (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays)) - { - for (i = 0; i < h; i++) - { - int dx, dy; - int in_x, in_w; + data = fg->glyph_out->bitmap.buffer; + j = fg->glyph_out->bitmap.pitch; + w = fg->glyph_out->bitmap.width; + if (j < w) j = w; + h = fg->glyph_out->bitmap.rows; + /* + if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays) + && (fg->glyph_out->bitmap.num_grays == 256) + ) + */ + { + if ((j > 0) && (chr_x + w > ext_x)) + { + if ((fg->ext_dat) && (dc->font_ext.func.gl_draw)) + { + /* ext glyph draw */ + dc->font_ext.func.gl_draw(dc->font_ext.data, + (void *)dst, + dc, fg, + chr_x, + y - (chr_y - y) + ); + } + else + { + if ((fg->glyph_out->bitmap.num_grays == 256) && + (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays)) + { + for (i = 0; i < h; i++) + { + int dx, dy; + int in_x, in_w; - in_x = 0; - in_w = 0; - dx = chr_x; - dy = y - (chr_y - i - y); + in_x = 0; + in_w = 0; + dx = chr_x; + dy = y - (chr_y - i - y); #ifdef EVAS_SLI - if (((dy) % dc->sli.h) == dc->sli.y) + if (((dy) % dc->sli.h) == dc->sli.y) #endif - { - if ((dx < (ext_x + ext_w)) && - (dy >= (ext_y)) && - (dy < (ext_y + ext_h))) - { - if (dx + w > (ext_x + ext_w)) - in_w += (dx + w) - (ext_x + ext_w); - if (dx < ext_x) - { - in_w += ext_x - dx; - in_x = ext_x - dx; - dx = ext_x; - } - if (in_w < w) - { - func(NULL, data + (i * j) + in_x, dc->col.col, - im + (dy * im_w) + dx, w - in_w); - } - } - } - } - } - else - { - DATA8 *tmpbuf = NULL, *dp, *tp, bits; - int bi, bj; - const DATA8 bitrepl[2] = {0x0, 0xff}; + { + if ((dx < (ext_x + ext_w)) && + (dy >= (ext_y)) && + (dy < (ext_y + ext_h))) + { + if (dx + w > (ext_x + ext_w)) + in_w += (dx + w) - (ext_x + ext_w); + if (dx < ext_x) + { + in_w += ext_x - dx; + in_x = ext_x - dx; + dx = ext_x; + } + if (in_w < w) + { + func(NULL, data + (i * j) + in_x, dc->col.col, + im + (dy * im_w) + dx, w - in_w); + } + } + } + } + } + else + { + DATA8 *tmpbuf = NULL, *dp, *tp, bits; + int bi, bj; + const DATA8 bitrepl[2] = {0x0, 0xff}; - tmpbuf = alloca(w); - for (i = 0; i < h; i++) - { - int dx, dy; - int in_x, in_w, end; + tmpbuf = alloca(w); + for (i = 0; i < h; i++) + { + int dx, dy; + int in_x, in_w, end; - in_x = 0; - in_w = 0; - dx = chr_x; - dy = y - (chr_y - i - y); + in_x = 0; + in_w = 0; + dx = chr_x; + dy = y - (chr_y - i - y); #ifdef EVAS_SLI - if (((dy) % dc->sli.h) == dc->sli.y) + if (((dy) % dc->sli.h) == dc->sli.y) #endif - { - tp = tmpbuf; - dp = data + (i * fg->glyph_out->bitmap.pitch); - for (bi = 0; bi < w; bi += 8) - { - bits = *dp; - if ((w - bi) < 8) end = w - bi; - else end = 8; - for (bj = 0; bj < end; bj++) - { - *tp = bitrepl[(bits >> (7 - bj)) & 0x1]; - tp++; - } - dp++; - } - if ((dx < (ext_x + ext_w)) && - (dy >= (ext_y)) && - (dy < (ext_y + ext_h))) - { - if (dx + w > (ext_x + ext_w)) - in_w += (dx + w) - (ext_x + ext_w); - if (dx < ext_x) - { - in_w += ext_x - dx; - in_x = ext_x - dx; - dx = ext_x; - } - if (in_w < w) - { - func(NULL, tmpbuf + in_x, dc->col.col, - im + (dy * im_w) + dx, w - in_w); - } - } - } - } - } - } - c++; - } - } - } - else - break; - pen_x += fg->glyph->advance.x >> 16; - prev_index = index; + { + tp = tmpbuf; + dp = data + (i * fg->glyph_out->bitmap.pitch); + for (bi = 0; bi < w; bi += 8) + { + bits = *dp; + if ((w - bi) < 8) end = w - bi; + else end = 8; + for (bj = 0; bj < end; bj++) + { + *tp = bitrepl[(bits >> (7 - bj)) & 0x1]; + tp++; + } + dp++; + } + if ((dx < (ext_x + ext_w)) && + (dy >= (ext_y)) && + (dy < (ext_y + ext_h))) + { + if (dx + w > (ext_x + ext_w)) + in_w += (dx + w) - (ext_x + ext_w); + if (dx < ext_x) + { + in_w += ext_x - dx; + in_x = ext_x - dx; + dx = ext_x; + } + if (in_w < w) + { + func(NULL, tmpbuf + in_x, dc->col.col, + im + (dy * im_w) + dx, w - in_w); + } + } + } + } + } + } + c++; + } + } + } + else + break; + pen_x += fg->glyph->advance.x >> 16; + prev_index = index; } #ifdef INTERNATIONAL_SUPPORT - if (bidi_err >= 0) { - free(level_list); - free(text); - } + if (bidi_err >= 0) + { + free(level_list); + free(text); + } #endif } @@ -401,13 +404,13 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int int ext_x, ext_y, ext_w, ext_h; int im_w, im_h; int use_kerning; - RGBA_Gfx_Func func; + RGBA_Gfx_Func func; RGBA_Font_Int *fi; Cutout_Rects *rects; Cutout_Rect *r; int c, cx, cy, cw, ch; int i; - + fi = fn->fonts->data; im_w = dst->cache_entry.w; diff --git a/legacy/evas/src/lib/engines/common/evas_font_main.c b/legacy/evas/src/lib/engines/common/evas_font_main.c index e556c7b79a..c8df596658 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_main.c +++ b/legacy/evas/src/lib/engines/common/evas_font_main.c @@ -48,7 +48,7 @@ evas_common_font_ascent_get(RGBA_Font *fn) fi = fn->fonts->data; val = (int)fi->src->ft.face->size->metrics.ascender; if (fi->src->ft.face->units_per_EM == 0) - return val; + return val; dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM; ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv); return ret; @@ -65,7 +65,7 @@ evas_common_font_descent_get(RGBA_Font *fn) fi = fn->fonts->data; val = -(int)fi->src->ft.face->size->metrics.descender; if (fi->src->ft.face->units_per_EM == 0) - return val; + return val; dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM; ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv); return ret; @@ -82,7 +82,7 @@ evas_common_font_max_ascent_get(RGBA_Font *fn) fi = fn->fonts->data; val = (int)fi->src->ft.face->bbox.yMax; if (fi->src->ft.face->units_per_EM == 0) - return val; + return val; dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM; ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv); return ret; @@ -99,7 +99,7 @@ evas_common_font_max_descent_get(RGBA_Font *fn) fi = fn->fonts->data; val = -(int)fi->src->ft.face->bbox.yMin; if (fi->src->ft.face->units_per_EM == 0) - return val; + return val; dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM; ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv); return ret; @@ -116,7 +116,7 @@ evas_common_font_get_line_advance(RGBA_Font *fn) fi = fn->fonts->data; val = (int)fi->src->ft.face->size->metrics.height; if (fi->src->ft.face->units_per_EM == 0) - return val; + return val; dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM; ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv); return ret; @@ -137,11 +137,11 @@ evas_common_font_utf8_get_next(const unsigned char *buf, int *iindex) d = buf[index++]; if (!d) return 0; - + while (buf[index] && ((buf[index] & 0xc0) == 0x80)) index++; len = index - *iindex; - + if (len == 1) r = d; else if (len == 2) @@ -177,7 +177,7 @@ evas_common_font_utf8_get_next(const unsigned char *buf, int *iindex) r <<= 6; r |= (d4 & 0x3f); } - + *iindex = index; return r; } @@ -197,11 +197,11 @@ evas_common_font_utf8_get_prev(const unsigned char *buf, int *iindex) if (index <= 0) return 0; d = buf[index--]; - + while ((index > 0) && ((buf[index] & 0xc0) == 0x80)) index--; len = *iindex - index; - + if (len == 1) r = d; else if (len == 2) @@ -237,7 +237,7 @@ evas_common_font_utf8_get_prev(const unsigned char *buf, int *iindex) r <<= 6; r |= (d4 & 0x3f); } - + *iindex = index; return r; } diff --git a/legacy/evas/src/lib/engines/common/evas_font_query.c b/legacy/evas/src/lib/engines/common/evas_font_query.c index 5ed5c9cfa8..cd269153b6 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_query.c +++ b/legacy/evas/src/lib/engines/common/evas_font_query.c @@ -146,14 +146,14 @@ evas_common_font_query_inset(RGBA_Font *fn, const char *text) index = evas_common_font_glyph_search(fn, &fi, gl); fg = evas_common_font_int_cache_glyph_get(fi, index); if (!fg) return 0; -/* +/* printf("fg->glyph_out->left = %i\n" "fi->src->ft.face->glyph->bitmap_left = %i\n" "fi->src->ft.face->glyph->metrics.horiBearingX = %i\n" "fi->src->ft.face->glyph->metrics.horiBearingY = %i\n" "fi->src->ft.face->glyph->metrics.horiAdvance = %i\n" , - (int)fg->glyph_out->left, + (int)fg->glyph_out->left, (int)fi->src->ft.face->glyph->bitmap_left, (int)fi->src->ft.face->glyph->metrics.horiBearingX >> 6, (int)fi->src->ft.face->glyph->metrics.horiBearingY >> 6, diff --git a/legacy/evas/src/lib/engines/common/evas_intl/evas_intl_arabic.c b/legacy/evas/src/lib/engines/common/evas_intl/evas_intl_arabic.c index 3de2a13ca5..9c7c0acbb1 100644 --- a/legacy/evas/src/lib/engines/common/evas_intl/evas_intl_arabic.c +++ b/legacy/evas/src/lib/engines/common/evas_intl/evas_intl_arabic.c @@ -1,5 +1,5 @@ /* Authors: - * Tom Hacohen (tom@stsob.com) + * Tom Hacohen (tom@stsob.com) */ #include "../evas_intl_utils.h" @@ -73,26 +73,26 @@ #define ARABIC_ISOLATED_YODH 0xFEF1 #define ARABIC_IS_SPECIAL_LETTER(c) ((c) == ARABIC_ISOLATED_ALEPH || \ - (c) == ARABIC_ISOLATED_DALET || \ - (c) == ARABIC_ISOLATED_DAL || \ - (c) == ARABIC_ISOLATED_RESH || \ - (c) == ARABIC_ISOLATED_ZAYIN || \ - (c) == ARABIC_ISOLATED_WAW || \ - (c) == ARABIC_ISOLATED_TA_MARBUTA) + (c) == ARABIC_ISOLATED_DALET || \ + (c) == ARABIC_ISOLATED_DAL || \ + (c) == ARABIC_ISOLATED_RESH || \ + (c) == ARABIC_ISOLATED_ZAYIN || \ + (c) == ARABIC_ISOLATED_WAW || \ + (c) == ARABIC_ISOLATED_TA_MARBUTA) /* from the first to last (including all forms, and special cases * like aleph maqsura in some forms*/ #define ARABIC_IS_CONTEXT(c) (((c) >= ARABIC_ISOLATED_ALEPH && (c) <= ARABIC_ISOLATED_YODH + 3) || \ - ((c) >= ARABIC_ISOLATED_ALEPH_MADDA && (c) <= ARABIC_ISOLATED_ALEPH_MADDA + 3) || \ - (c) == 0xFBE8 || \ - (c) == 0xFBE9) + ((c) >= ARABIC_ISOLATED_ALEPH_MADDA && (c) <= ARABIC_ISOLATED_ALEPH_MADDA + 3) || \ + (c) == 0xFBE8 || \ + (c) == 0xFBE9) #define ARABIC_IS_LETTER(c) ARABIC_IS_CONTEXT(c) /* used for arabic context logic */ /* each value is the offset from the regular char in unicode */ enum _ArabicContext { - ARABIC_CONTEXT_ISOLATED = 0, - ARABIC_CONTEXT_FINAL = 1, - ARABIC_CONTEXT_INITIAL = 2, - ARABIC_CONTEXT_MEDIAL = 3 + ARABIC_CONTEXT_ISOLATED = 0, + ARABIC_CONTEXT_FINAL = 1, + ARABIC_CONTEXT_INITIAL = 2, + ARABIC_CONTEXT_MEDIAL = 3 }; typedef enum _ArabicContext ArabicContext; @@ -110,73 +110,74 @@ _evas_intl_arabic_general_to_isolated(FriBidiChar chr); int evas_intl_arabic_to_context(FriBidiChar *text) { - int i; - int len; - int start_of_context = 1; /* assume the first is special/non arabic */ - int last_is_first = 0; - int last_letter = 0; - - /* check for empty string */ - if (!*text) - return; + int i; + int len; + int start_of_context = 1; /* assume the first is special/non arabic */ + int last_is_first = 0; + int last_letter = 0; - len = _evas_intl_arabic_text_to_isolated(text); - /*FIXME: make it skip vowels */ - for (i = 0 ; i < len ; i++) { + /* check for empty string */ + if (!*text) + return; - if (! ARABIC_IS_LETTER(text[i])) { - /* mark so it won't be touched, - * though start formating */ - if (last_letter && !start_of_context) { - ArabicContext tmp = (last_is_first) ? - ARABIC_CONTEXT_ISOLATED - : - ARABIC_CONTEXT_FINAL; - text[i-1] = _evas_intl_arabic_isolated_to_context( - last_letter, - tmp); - - } - last_is_first = 0; - start_of_context = 1; - last_letter = 0; - continue; - } - /* adjust the last letter */ - last_letter = text[i]; - if (ARABIC_IS_SPECIAL_LETTER(text[i])) { - if (!start_of_context) - text[i] = _evas_intl_arabic_isolated_to_context(text[i], ARABIC_CONTEXT_FINAL); - /* else: leave isolated */ - - start_of_context = 1; - last_is_first = 0; - continue; - } + len = _evas_intl_arabic_text_to_isolated(text); + /*FIXME: make it skip vowels */ + for (i = 0; i < len; i++) + { + if (!ARABIC_IS_LETTER(text[i])) + { + /* mark so it won't be touched, + * though start formating */ + if (last_letter && !start_of_context) + { + ArabicContext tmp = (last_is_first) ? + ARABIC_CONTEXT_ISOLATED : ARABIC_CONTEXT_FINAL; + text[i-1] = _evas_intl_arabic_isolated_to_context( + last_letter, + tmp); + } + last_is_first = 0; + start_of_context = 1; + last_letter = 0; + continue; + } + /* adjust the last letter */ + last_letter = text[i]; + if (ARABIC_IS_SPECIAL_LETTER(text[i])) + { + if (!start_of_context) + text[i] = _evas_intl_arabic_isolated_to_context(text[i], ARABIC_CONTEXT_FINAL); + /* else: leave isolated */ - if (start_of_context) { - text[i] = _evas_intl_arabic_isolated_to_context(text[i], ARABIC_CONTEXT_INITIAL); - last_is_first = 1; - } - else { - text[i] = _evas_intl_arabic_isolated_to_context(text[i], ARABIC_CONTEXT_MEDIAL); - last_is_first = 0; - } - /* spceial chars don't get here. */ - start_of_context = 0; - - } - /* if it's arabic and not isolated, the last is always final */ - i--; - if (last_letter && !start_of_context) { - ArabicContext tmp = (last_is_first) ? ARABIC_CONTEXT_ISOLATED : ARABIC_CONTEXT_FINAL; - /* because it's medial atm, and should be isolated */ - text[i] = _evas_intl_arabic_isolated_to_context( - last_letter, - tmp); - } + start_of_context = 1; + last_is_first = 0; + continue; + } - return len; + if (start_of_context) + { + text[i] = _evas_intl_arabic_isolated_to_context(text[i], ARABIC_CONTEXT_INITIAL); + last_is_first = 1; + } + else + { + text[i] = _evas_intl_arabic_isolated_to_context(text[i], ARABIC_CONTEXT_MEDIAL); + last_is_first = 0; + } + /* spceial chars don't get here. */ + start_of_context = 0; + + } + /* if it's arabic and not isolated, the last is always final */ + i--; + if (last_letter && !start_of_context) + { + ArabicContext tmp = (last_is_first) ? ARABIC_CONTEXT_ISOLATED : ARABIC_CONTEXT_FINAL; + /* because it's medial atm, and should be isolated */ + text[i] = _evas_intl_arabic_isolated_to_context(last_letter, tmp); + } + + return len; } /* I wish I could think about a simpler way to do it. @@ -184,131 +185,136 @@ evas_intl_arabic_to_context(FriBidiChar *text) static FriBidiChar _evas_intl_arabic_general_to_isolated(FriBidiChar chr) { - switch (chr) { - case ARABIC_ALEPH_MADDA: - return ARABIC_ISOLATED_ALEPH_MADDA; + switch (chr) + { + case ARABIC_ALEPH_MADDA: + return ARABIC_ISOLATED_ALEPH_MADDA; - case ARABIC_ALEPH: - return ARABIC_ISOLATED_ALEPH; + case ARABIC_ALEPH: + return ARABIC_ISOLATED_ALEPH; - case ARABIC_TA_MARBUTA: - return ARABIC_ISOLATED_TA_MARBUTA; - case ARABIC_BET: - return ARABIC_ISOLATED_BET; - - case ARABIC_TAW: - return ARABIC_ISOLATED_TAW; + case ARABIC_TA_MARBUTA: + return ARABIC_ISOLATED_TA_MARBUTA; - case ARABIC_TA: - return ARABIC_ISOLATED_TA; - - case ARABIC_GIMEL: - return ARABIC_ISOLATED_GIMEL; - - case ARABIC_HETH: - return ARABIC_ISOLATED_HETH; - - case ARABIC_HA: - return ARABIC_ISOLATED_HA; - - case ARABIC_DALET: - return ARABIC_ISOLATED_DALET; - - case ARABIC_DAL: - return ARABIC_ISOLATED_DAL; - - case ARABIC_RESH: - return ARABIC_ISOLATED_RESH; - - case ARABIC_ZAYIN: - return ARABIC_ISOLATED_ZAYIN; - - case ARABIC_SHIN: - return ARABIC_ISOLATED_SHIN; - - case ARABIC_SH: - return ARABIC_ISOLATED_SH; - - case ARABIC_TSADE: - return ARABIC_ISOLATED_TSADE; - - case ARABIC_DAD: - return ARABIC_ISOLATED_DAD; - - case ARABIC_TETH: - return ARABIC_ISOLATED_TETH; - - case ARABIC_ZA: - return ARABIC_ISOLATED_ZA; - - case ARABIC_AYIN: - return ARABIC_ISOLATED_AYIN; - - case ARABIC_GHAIN: - return ARABIC_ISOLATED_GHAIN; - - case ARABIC_PE: - return ARABIC_ISOLATED_PE; - - case ARABIC_QOPH: - return ARABIC_ISOLATED_QOPH; - - case ARABIC_KAPH: - return ARABIC_ISOLATED_KAPH; - - case ARABIC_LAMED: - return ARABIC_ISOLATED_LAMED; + case ARABIC_BET: + return ARABIC_ISOLATED_BET; - case ARABIC_MEM: - return ARABIC_ISOLATED_MEM; - - case ARABIC_NUN: - return ARABIC_ISOLATED_NUN; - - case ARABIC_HE: - return ARABIC_ISOLATED_HE; - - case ARABIC_WAW: - return ARABIC_ISOLATED_WAW; + case ARABIC_TAW: + return ARABIC_ISOLATED_TAW; - case ARABIC_ALEPH_MAQSURA: - return ARABIC_ISOLATED_ALEPH_MAQSURA; - - case ARABIC_YODH: - return ARABIC_ISOLATED_YODH; - default: - return chr; - } + case ARABIC_TA: + return ARABIC_ISOLATED_TA; + + case ARABIC_GIMEL: + return ARABIC_ISOLATED_GIMEL; + + case ARABIC_HETH: + return ARABIC_ISOLATED_HETH; + + case ARABIC_HA: + return ARABIC_ISOLATED_HA; + + case ARABIC_DALET: + return ARABIC_ISOLATED_DALET; + + case ARABIC_DAL: + return ARABIC_ISOLATED_DAL; + + case ARABIC_RESH: + return ARABIC_ISOLATED_RESH; + + case ARABIC_ZAYIN: + return ARABIC_ISOLATED_ZAYIN; + + case ARABIC_SHIN: + return ARABIC_ISOLATED_SHIN; + + case ARABIC_SH: + return ARABIC_ISOLATED_SH; + + case ARABIC_TSADE: + return ARABIC_ISOLATED_TSADE; + + case ARABIC_DAD: + return ARABIC_ISOLATED_DAD; + + case ARABIC_TETH: + return ARABIC_ISOLATED_TETH; + + case ARABIC_ZA: + return ARABIC_ISOLATED_ZA; + + case ARABIC_AYIN: + return ARABIC_ISOLATED_AYIN; + + case ARABIC_GHAIN: + return ARABIC_ISOLATED_GHAIN; + + case ARABIC_PE: + return ARABIC_ISOLATED_PE; + + case ARABIC_QOPH: + return ARABIC_ISOLATED_QOPH; + + case ARABIC_KAPH: + return ARABIC_ISOLATED_KAPH; + + case ARABIC_LAMED: + return ARABIC_ISOLATED_LAMED; + + case ARABIC_MEM: + return ARABIC_ISOLATED_MEM; + + case ARABIC_NUN: + return ARABIC_ISOLATED_NUN; + + case ARABIC_HE: + return ARABIC_ISOLATED_HE; + + case ARABIC_WAW: + return ARABIC_ISOLATED_WAW; + + case ARABIC_ALEPH_MAQSURA: + return ARABIC_ISOLATED_ALEPH_MAQSURA; + + case ARABIC_YODH: + return ARABIC_ISOLATED_YODH; + default: + return chr; + } } static FriBidiChar _evas_intl_arabic_isolated_to_context(FriBidiChar chr, ArabicContext context) { - if (ARABIC_IS_SPECIAL_LETTER(chr)) { - if (context == ARABIC_CONTEXT_INITIAL) - return chr; - else - return chr + ARABIC_CONTEXT_FINAL; - } - /* HACK AROUND ALIF MAQSURA */ - else if (chr == ARABIC_ISOLATED_ALEPH_MAQSURA && context > 1) { - chr = 0xFBE8; /* the initial form */ - context -= 2; - } - return chr + context; + if (ARABIC_IS_SPECIAL_LETTER(chr)) + { + if (context == ARABIC_CONTEXT_INITIAL) + return chr; + else + return chr + ARABIC_CONTEXT_FINAL; + } + /* HACK AROUND ALIF MAQSURA */ + else if (chr == ARABIC_ISOLATED_ALEPH_MAQSURA && context > 1) + { + chr = 0xFBE8; /* the initial form */ + context -= 2; + } + return chr + context; } static int _evas_intl_arabic_text_to_isolated(FriBidiChar *text) { - int i=0; - while (*text) { - /* if it's not arabic/it's already in context - * it's just returned the same */ - *text = _evas_intl_arabic_general_to_isolated(*text); - text++; - i++; - } - return i; + int i = 0; + while (*text) + { + /* if it's not arabic/it's already in context + * it's just returned the same */ + *text = _evas_intl_arabic_general_to_isolated(*text); + text++; + i++; + } + return i; } -#endif \ No newline at end of file +#endif diff --git a/legacy/evas/src/lib/engines/common/evas_intl_utils.c b/legacy/evas/src/lib/engines/common/evas_intl_utils.c index 8a13fbe033..f7af99ac43 100644 --- a/legacy/evas/src/lib/engines/common/evas_intl_utils.c +++ b/legacy/evas/src/lib/engines/common/evas_intl_utils.c @@ -1,5 +1,5 @@ /* Authors: - * Tom Hacohen (tom@stsob.com) + * Tom Hacohen (tom@stsob.com) */ #include @@ -14,96 +14,96 @@ /* FIXME: fribidi_utf8_to_unicode should use char len and not byte len!*/ char * -evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direction, - FriBidiLevel **embedding_level_list) +evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direction, FriBidiLevel **embedding_level_list) { - FriBidiChar *unicode_in, *unicode_out; - char *text_out; - size_t len; - size_t byte_len; + FriBidiChar *unicode_in, *unicode_out; + char *text_out; + size_t len; + size_t byte_len; - if (!text) - return NULL; + if (!text) + return NULL; - len = evas_string_char_len_get(text); + len = evas_string_char_len_get(text); - /* if there's nothing to do, return text - * one char draws are quite common */ - if (len <= 1) { - *ret_len = len; - *embedding_level_list = NULL; - return strdup(text); - } - - byte_len = strlen(text); /* we need the actual number of bytes, not number of chars */ - - unicode_in=(FriBidiChar *)malloc(sizeof(FriBidiChar)*(len+1)); - if (!unicode_in) { - len = -1; - goto error1; - - } - - len = fribidi_utf8_to_unicode(text, byte_len, unicode_in); - - unicode_out=(FriBidiChar *)malloc(sizeof(FriBidiChar)*(len+1)); - if (!unicode_out) { - len = -2; - goto error2; - - } + /* if there's nothing to do, return text + * one char draws are quite common */ + if (len <= 1) + { + *ret_len = len; + *embedding_level_list = NULL; + return strdup(text); + } - *embedding_level_list=(FriBidiLevel *)malloc(sizeof(FriBidiLevel)*len); - if (!*embedding_level_list) { - len = -3; - goto error3; - - } + byte_len = strlen(text); /* we need the actual number of bytes, not number of chars */ + + unicode_in = (FriBidiChar *)malloc(sizeof(FriBidiChar) * (len + 1)); + if (!unicode_in) + { + len = -1; + goto error1; + } + + len = fribidi_utf8_to_unicode(text, byte_len, unicode_in); + + unicode_out = (FriBidiChar *)malloc(sizeof(FriBidiChar) * (len + 1)); + if (!unicode_out) + { + len = -2; + goto error2; + } + + *embedding_level_list = (FriBidiLevel *)malloc(sizeof(FriBidiLevel) * len); + if (!*embedding_level_list) + { + len = -3; + goto error3; + } #ifdef ARABIC_SUPPORT - /* fix arabic context */ - evas_intl_arabic_to_context(unicode_in); -#endif - if (! fribidi_log2vis(unicode_in, len, direction, - unicode_out, NULL, NULL, *embedding_level_list)) { - len = -4; - goto error3; - - } + /* fix arabic context */ + evas_intl_arabic_to_context(unicode_in); +#endif + if (!fribidi_log2vis(unicode_in, len, direction, + unicode_out, NULL, NULL, *embedding_level_list)) + { + len = -4; + goto error3; + } - text_out = malloc(UTF8_BYTES_PER_CHAR * len + 1); - if (!text_out) { - len = -5; - goto error4; - } + text_out = malloc(UTF8_BYTES_PER_CHAR * len + 1); + if (!text_out) + { + len = -5; + goto error4; + } - fribidi_unicode_to_utf8(unicode_out, len, text_out); - - free(unicode_in); - free(unicode_out); + fribidi_unicode_to_utf8(unicode_out, len, text_out); - *ret_len = len; - return text_out; + free(unicode_in); + free(unicode_out); - /* ERROR HANDLING */ + *ret_len = len; + return text_out; + + /* ERROR HANDLING */ error4: - free(unicode_out); + free(unicode_out); error3: - free(*embedding_level_list); + free(*embedding_level_list); error2: - free(unicode_in); + free(unicode_in); error1: - *ret_len = len; - return NULL; + *ret_len = len; + return NULL; } - int evas_intl_is_rtl_char(FriBidiLevel *embedded_level_list, FriBidiStrIndex i) { - if(embedded_level_list || i < 0) - return 0; - return FRIBIDI_IS_RTL(embedded_level_list[i]); + if(embedded_level_list || i < 0) + return 0; + return FRIBIDI_IS_RTL(embedded_level_list[i]); } #endif diff --git a/legacy/evas/src/lib/engines/common/evas_intl_utils.h b/legacy/evas/src/lib/engines/common/evas_intl_utils.h index 35a8213061..ba859211b2 100644 --- a/legacy/evas/src/lib/engines/common/evas_intl_utils.h +++ b/legacy/evas/src/lib/engines/common/evas_intl_utils.h @@ -22,8 +22,7 @@ int evas_intl_is_rtl_char(FriBidiLevel *embedded_level_list, FriBidiStrIndex i); char * -evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direction, - FriBidiLevel **embedding_level_list); +evas_intl_utf8_to_visual(const char *text, int *ret_len, FriBidiCharType *direction, FriBidiLevel **embedding_level_list); #endif #endif