From 8411db782712e496b94b5a4821c5d7f69aff4743 Mon Sep 17 00:00:00 2001 From: hermet Date: Thu, 3 May 2012 00:34:26 +0000 Subject: [PATCH] elementary/font - function code refactoring git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@70678 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/elm_font.c | 104 ++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 53 deletions(-) diff --git a/src/lib/elm_font.c b/src/lib/elm_font.c index 0cef199..481e8db 100644 --- a/src/lib/elm_font.c +++ b/src/lib/elm_font.c @@ -14,24 +14,25 @@ _elm_font_properties_get(Eina_Hash **font_hash, const char *font) { Elm_Font_Properties *efp = NULL; - char *s1; + char *token = strchr(font, ':'); - s1 = strchr(font, ':'); - if (s1) + if (token && + !strncmp(token, ELM_FONT_TOKEN_STYLE, strlen(ELM_FONT_TOKEN_STYLE))) { - char *s2, *name, *style; + char *name, *subname, *style, *substyle; int len; - len = s1 - font; + /* get font name */ + len = token - font; name = calloc(sizeof(char), len + 1); if (!name) return NULL; strncpy(name, font, len); - /* get subname (should be english) */ - s2 = strchr(name, ','); - if (s2) + /* remove subnames from the font name (should be english) */ + subname = strchr(name, ','); + if (subname) { - len = s2 - name; + len = subname - name; name = realloc(name, sizeof(char) * len + 1); if (name) { @@ -39,60 +40,57 @@ _elm_font_properties_get(Eina_Hash **font_hash, strncpy(name, font, len); } } - if (!strncmp(s1, ELM_FONT_TOKEN_STYLE, strlen(ELM_FONT_TOKEN_STYLE))) - { - style = s1 + strlen(ELM_FONT_TOKEN_STYLE); - if (font_hash) + /* add a font name */ + if (font_hash) + { + efp = eina_hash_find(*font_hash, name); + if (!efp) { - efp = eina_hash_find(*font_hash, name); - if (!efp) - { - efp = calloc(1, sizeof(Elm_Font_Properties)); - if (efp) - { - efp->name = eina_stringshare_add(name); - if (!*font_hash) - *font_hash = eina_hash_string_superfast_new(NULL); - eina_hash_add(*font_hash, name, efp); - } - - } + efp = calloc(1, sizeof(Elm_Font_Properties)); + if (!efp) return NULL; + + efp->name = eina_stringshare_add(name); + if (!*font_hash) + *font_hash = eina_hash_string_superfast_new(NULL); + eina_hash_add(*font_hash, name, efp); } - s2 = strchr(style, ','); - if (s2) + } + + free(name); + + style = token + strlen(ELM_FONT_TOKEN_STYLE); + substyle = strchr(style, ','); + + //TODO: Seems to need to add all styles. not only one. + if (substyle) + { + char *style_old = style; + + len = substyle - style; + style = calloc(sizeof(char), len + 1); + if (style) { - char *style_old; - - len = s2 - style; - style_old = style; - style = calloc(sizeof(char), len + 1); - if (style) - { - strncpy(style, style_old, len); - efp->styles = eina_list_append(efp->styles, - eina_stringshare_add(style)); - free(style); - } + strncpy(style, style_old, len); + efp->styles = eina_list_append(efp->styles, + eina_stringshare_add(style)); + free(style); } - else - efp->styles = eina_list_append(efp->styles, - eina_stringshare_add(style)); } - free(name); + else + efp->styles = eina_list_append(efp->styles, + eina_stringshare_add(style)); } - else + else if ((font_hash) && (!eina_hash_find(*font_hash, font))) { - if ((font_hash) && (!eina_hash_find(*font_hash, font))) - { - efp = calloc(1, sizeof(Elm_Font_Properties)); - if (!efp) return NULL; + efp = calloc(1, sizeof(Elm_Font_Properties)); + if (!efp) return NULL; - efp->name = eina_stringshare_add(font); - if (!*font_hash) *font_hash = eina_hash_string_superfast_new(NULL); - eina_hash_add(*font_hash, font, efp); - } + efp->name = eina_stringshare_add(font); + if (!*font_hash) *font_hash = eina_hash_string_superfast_new(NULL); + eina_hash_add(*font_hash, font, efp); } + return efp; } -- 2.7.4