[pango/parse-color-with-alpha: 2/3] Export pango_parse_color_with_alpha




commit 09111969bd5aef2b424c515a1f41bb857ca436d6
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jul 31 14:28:02 2020 -0400

    Export pango_parse_color_with_alpha
    
    This will be useful to make GdkRGBA support
    hex formats with alpha.

 docs/pango-sections.txt      |  1 +
 pango/pango-attributes.h     |  7 +++-
 pango/pango-color.c          | 86 +++++++++++++++++++++++++++-----------------
 pango/pango-markup.c         |  2 +-
 pango/pango-utils-internal.h |  4 ---
 5 files changed, 61 insertions(+), 39 deletions(-)
---
diff --git a/docs/pango-sections.txt b/docs/pango-sections.txt
index 4648816b7..04b6b442f 100644
--- a/docs/pango-sections.txt
+++ b/docs/pango-sections.txt
@@ -423,6 +423,7 @@ PangoShowFlags
 pango_attr_show_new
 PangoColor
 pango_color_parse
+pango_color_parse_with_alpha
 pango_color_copy
 pango_color_free
 pango_color_to_string
diff --git a/pango/pango-attributes.h b/pango/pango-attributes.h
index 6f6622ab8..dd38aee28 100644
--- a/pango/pango-attributes.h
+++ b/pango/pango-attributes.h
@@ -65,7 +65,12 @@ PANGO_AVAILABLE_IN_ALL
 void        pango_color_free     (PangoColor       *color);
 PANGO_AVAILABLE_IN_ALL
 gboolean    pango_color_parse    (PangoColor       *color,
-                                 const char       *spec);
+                                  const char       *spec);
+PANGO_AVAILABLE_IN_1_46
+gboolean    pango_color_parse_with_alpha
+                                 (PangoColor       *color,
+                                  guint16          *alpha,
+                                  const char       *spec);
 PANGO_AVAILABLE_IN_1_16
 gchar      *pango_color_to_string(const PangoColor *color);
 
diff --git a/pango/pango-color.c b/pango/pango-color.c
index f06756fee..9c044810a 100644
--- a/pango/pango-color.c
+++ b/pango/pango-color.c
@@ -207,15 +207,35 @@ hex (const char *spec,
 }
 
 
-/* Like pango_color_parse, but allow strings of the form
+/**
+ * pango_color_parse_with_alpha:
+ * @color: (nullable): a #PangoColor structure in which to store the
+ *   result, or %NULL
+ * @alpha: (nullable): return location for alpha, or %NULL
+ * @spec: a string specifying the new color
+ *
+ * Fill in the fields of a color from a string specification. The
+ * string can either one of a large set of standard names. (Taken
+ * from the CSS <ulink url="http://dev.w3.org/csswg/css-color/#named-colors";>specification</ulink>), or it 
can be a hexadecimal
+ * value in the
+ * form '&num;rgb' '&num;rrggbb' '&num;rrrgggbbb' or '&num;rrrrggggbbbb' where
+ * 'r', 'g' and 'b' are hex digits of the red, green, and blue
+ * components of the color, respectively. (White in the four
+ * forms is '&num;fff' '&num;ffffff' '&num;fffffffff' and '&num;ffffffffffff')
+ *
+ * Additionally, parse strings of the form
  * '&num;rgba', '&num;rrggbbaa', '&num;rrrrggggbbbbaaaa',
- * if alpha is not NULL. If no alpha component is found
- * in the string, *alpha is set to 0xffff.
+ * if @alpha is not %NULL, and set @alpha to the value specified
+ * by the hex digits for 'a'. If no alpha component is found
+ * in @spec, @alpha is set to 0xffff (for a solid color).
+ *
+ * Return value: %TRUE if parsing of the specifier succeeded,
+ *   otherwise false.
  */
 gboolean
-_pango_color_parse_with_alpha (PangoColor *color,
-                               guint16    *alpha,
-                              const char *spec)
+pango_color_parse_with_alpha (PangoColor *color,
+                              guint16    *alpha,
+                              const char *spec)
 {
   g_return_val_if_fail (spec != NULL, FALSE);
 
@@ -248,49 +268,49 @@ _pango_color_parse_with_alpha (PangoColor *color,
           has_alpha = TRUE;
           break;
         default:
-         return FALSE;
+          return FALSE;
         }
 
       if (!hex (spec, len, &r) ||
-         !hex (spec + len, len, &g) ||
-         !hex (spec + len * 2, len, &b) ||
+          !hex (spec + len, len, &g) ||
+          !hex (spec + len * 2, len, &b) ||
           (has_alpha && !hex (spec + len * 3, len, &a)))
-       return FALSE;
+        return FALSE;
 
       if (color)
-       {
-         int bits = len * 4;
-         r <<= 16 - bits;
-         g <<= 16 - bits;
-         b <<= 16 - bits;
-         while (bits < 16)
-           {
-             r |= (r >> bits);
-             g |= (g >> bits);
-             b |= (b >> bits);
-             bits *= 2;
-           }
-         color->red   = r;
-         color->green = g;
-         color->blue  = b;
-       }
+        {
+          int bits = len * 4;
+          r <<= 16 - bits;
+          g <<= 16 - bits;
+          b <<= 16 - bits;
+          while (bits < 16)
+            {
+              r |= (r >> bits);
+              g |= (g >> bits);
+              b |= (b >> bits);
+              bits *= 2;
+            }
+          color->red   = r;
+          color->green = g;
+          color->blue  = b;
+        }
 
       if (alpha && has_alpha)
         {
-         int bits = len * 4;
+          int bits = len * 4;
           a <<= 16 - bits;
-         while (bits < 16)
-           {
+          while (bits < 16)
+            {
               a |= (a >> bits);
-             bits *= 2;
-           }
+              bits *= 2;
+            }
           *alpha = a;
         }
     }
   else
     {
       if (!find_color (spec, color))
-       return FALSE;
+        return FALSE;
     }
   return TRUE;
 }
@@ -317,5 +337,5 @@ gboolean
 pango_color_parse (PangoColor *color,
                   const char *spec)
 {
-  return _pango_color_parse_with_alpha (color, NULL, spec);
+  return pango_color_parse_with_alpha (color, NULL, spec);
 }
diff --git a/pango/pango-markup.c b/pango/pango-markup.c
index 5375a8e05..b74c1ad4b 100644
--- a/pango/pango-markup.c
+++ b/pango/pango-markup.c
@@ -1199,7 +1199,7 @@ span_parse_color (const char *attr_name,
                  int line_number,
                  GError **error)
 {
-  if (!_pango_color_parse_with_alpha (color, alpha, attr_val))
+  if (!pango_color_parse_with_alpha (color, alpha, attr_val))
     {
       g_set_error (error,
                   G_MARKUP_ERROR,
diff --git a/pango/pango-utils-internal.h b/pango/pango-utils-internal.h
index 563402159..0bc355e07 100644
--- a/pango/pango-utils-internal.h
+++ b/pango/pango-utils-internal.h
@@ -43,10 +43,6 @@ gboolean pango_parse_flags              (GType       type,
 
 char    *_pango_trim_string             (const char *str);
 
-gboolean _pango_color_parse_with_alpha  (PangoColor *color,
-                                         guint16    *alpha,
-                                         const char *spec);
-
 
 G_END_DECLS
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]