raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b2f61deb37accb065480b591622415b9b9ff286e

commit b2f61deb37accb065480b591622415b9b9ff286e
Author: ali-alzyod <ali198...@gmail.com>
Date:   Thu Apr 8 02:02:08 2021 +0100

    evas_textblock: update color text parsingUpdate text color parsing for 
rgba(r, g, b, a) for alpha to be value between 0.0 - 1.0 same as CSS.
    
    Summary: ... spam removed ...
    
    Reviewers: woohyun, bowonryu, id213sin, AbdullehGhujeh, devilhorns
    
    Subscribers: raster, cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D12248
---
 src/lib/evas/canvas/evas_object_textblock.c | 40 ++++++++++++++---------------
 src/lib/evas/common/evas_text_utils.c       | 15 ++++++-----
 2 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index f44dfaab5c..ff87db7be0 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -1785,8 +1785,8 @@ _format_command_legacy_only(Evas_Object_Textblock_Format 
*fmt, const char *cmd,
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * backing_color=<color>
@@ -1827,8 +1827,8 @@ _format_command_legacy_only(Evas_Object_Textblock_Format 
*fmt, const char *cmd,
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * underline2_color=<color>
@@ -1849,8 +1849,8 @@ _format_command_legacy_only(Evas_Object_Textblock_Format 
*fmt, const char *cmd,
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * glow2_color=<color>
@@ -2001,8 +2001,8 @@ _format_command_legacy_only(Evas_Object_Textblock_Format 
*fmt, const char *cmd,
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * underline_dash_color=<color>
@@ -2516,8 +2516,8 @@ _format_command(Evas_Object *eo_obj, 
Evas_Object_Textblock_Format *fmt, const ch
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * color=<color>
@@ -2537,8 +2537,8 @@ _format_command(Evas_Object *eo_obj, 
Evas_Object_Textblock_Format *fmt, const ch
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * underline_color=<color>
@@ -2559,8 +2559,8 @@ _format_command(Evas_Object *eo_obj, 
Evas_Object_Textblock_Format *fmt, const ch
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * outline_color=<color>
@@ -2581,8 +2581,8 @@ _format_command(Evas_Object *eo_obj, 
Evas_Object_Textblock_Format *fmt, const ch
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * shadow_color=<color>
@@ -2603,8 +2603,8 @@ _format_command(Evas_Object *eo_obj, 
Evas_Object_Textblock_Format *fmt, const ch
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * glow_color=<color>
@@ -2625,8 +2625,8 @@ _format_command(Evas_Object *eo_obj, 
Evas_Object_Textblock_Format *fmt, const ch
       * @li "#RRGGBBAA"
       * @li "#RGB"
       * @li "#RGBA"
-      * @li "rgb(r,g,b)"
-      * @li "rgba(r,g,b,a)"
+      * @li "rgb(0-255,0-255,0-255)"
+      * @li "rgba(0-255,0-255,0-255,0.0-1.0)"
       * @li "color_name"  like "red"
       * @code
       * strikethrough_color=<color>
diff --git a/src/lib/evas/common/evas_text_utils.c 
b/src/lib/evas/common/evas_text_utils.c
index 99a9c3e3b3..1a0a7a0af2 100644
--- a/src/lib/evas/common/evas_text_utils.c
+++ b/src/lib/evas/common/evas_text_utils.c
@@ -1362,8 +1362,8 @@ Eina_Bool read_byte_color_component(const char* 
source,char ** next,unsigned cha
  * 3. "#RGB"
  * 4. "#RGBA"
  * 5. "color names"
- * 6. "rgb(r,g,b)"
- * 7. "rgba(r,g,b,a)"
+ * 6. "rgb(0-255,0-255,0-255)"
+ * 7. "rgba(0-255,0-255,0-255,0.0-1.0)"
  * TODO (we may use specific color parser)
  * 8. "hsl(H,S,L)"
  * 9. "hsla(H,S,L,A)"
@@ -1422,7 +1422,7 @@ evas_common_format_color_parse(const char *str, int slen,
           }
         else v = EINA_FALSE;
       }
-    else if (slen <= 21)/* search for rgb(),hsv(),colorname, 20 is length of 
rgba(255,255,255,255) */
+    else if (slen <= 25)/* search for rgb(),hsv(),colorname, 25 is length of 
rgba(255,255,255,1.0) */
       {
          /*remove spaces and convert name to lowercase*/
          char color_name[0xFF] = {0};
@@ -1446,20 +1446,23 @@ evas_common_format_color_parse(const char *str, int 
slen,
                    *a = 0xff;
                 }
            }
-         else if ((strncmp(color_name,"rgba(",4) == 0) && color_name[slen-1] 
== ')'&& slen >= 13 && slen <=21) /* rgba() */
+         else if ((strncmp(color_name,"rgba(",4) == 0) && color_name[slen-1] 
== ')'&& slen >= 13 && slen <=25) /* rgba() */
            {
               char * p_color = &color_name[4];
 
               if (
                   (!read_byte_color_component(++p_color,&p_color,r)  || 
!p_color   || *p_color != ',') ||
                   (!read_byte_color_component(++p_color,&p_color,g)  || 
!p_color   || *p_color != ',') ||
-                  (!read_byte_color_component(++p_color,&p_color,b)  || 
!p_color   || *p_color != ',') ||
-                  (!read_byte_color_component(++p_color,&p_color,a)  || 
!p_color   || *p_color != ')')
+                  (!read_byte_color_component(++p_color,&p_color,b)  || 
!p_color   || *p_color != ',')
                  )
                 {
                    *r = *g = *b = *a = 0;
                    v = EINA_FALSE;
                 }
+              else
+                {
+                   *a = (unsigned char)(strtof(++p_color, NULL) * 255);
+                }
            }
          else
            {

-- 


Reply via email to