[gtk+/wip/cssvalue: 120/165] css: Remove GtkCssNumber



commit 08fd5f1ea056bea3fc0abe0085a1bbbedecf28d4
Author: Benjamin Otte <otte redhat com>
Date:   Wed Apr 4 18:25:43 2012 +0200

    css: Remove GtkCssNumber
    
    It's completely replaced by GtkCssNumberValue now.

 gtk/gtkcssbordervalueprivate.h |    1 +
 gtk/gtkcssnumbervalue.c        |   14 -----
 gtk/gtkcssnumbervalueprivate.h |   11 ++++
 gtk/gtkcssparser.c             |   63 +++++++++++----------
 gtk/gtkcssparserprivate.h      |   13 ----
 gtk/gtkcsstypes.c              |  121 ----------------------------------------
 gtk/gtkcsstypesprivate.h       |   21 -------
 7 files changed, 46 insertions(+), 198 deletions(-)
---
diff --git a/gtk/gtkcssbordervalueprivate.h b/gtk/gtkcssbordervalueprivate.h
index 458462b..704e25c 100644
--- a/gtk/gtkcssbordervalueprivate.h
+++ b/gtk/gtkcssbordervalueprivate.h
@@ -21,6 +21,7 @@
 #define __GTK_CSS_BORDER_VALUE_PRIVATE_H__
 
 #include "gtkcssparserprivate.h"
+#include "gtkcssnumbervalueprivate.h"
 #include "gtkcssvalueprivate.h"
 
 G_BEGIN_DECLS
diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c
index 531942b..aab2bc2 100644
--- a/gtk/gtkcssnumbervalue.c
+++ b/gtk/gtkcssnumbervalue.c
@@ -127,20 +127,6 @@ _gtk_css_number_value_new (double     value,
   return result;
 }
 
-GtkCssValue *
-_gtk_css_number_value_parse (GtkCssParser           *parser,
-                             GtkCssNumberParseFlags  flags)
-{
-  GtkCssNumber number;
-
-  g_return_val_if_fail (parser != NULL, NULL);
-
-  if (!_gtk_css_parser_read_number (parser, &number, flags))
-    return NULL;
-  
-  return _gtk_css_number_value_new (number.value, number.unit);
-}
-
 GtkCssUnit
 _gtk_css_number_value_get_unit (const GtkCssValue *value)
 {
diff --git a/gtk/gtkcssnumbervalueprivate.h b/gtk/gtkcssnumbervalueprivate.h
index 965b06d..ead4115 100644
--- a/gtk/gtkcssnumbervalueprivate.h
+++ b/gtk/gtkcssnumbervalueprivate.h
@@ -26,8 +26,19 @@
 
 G_BEGIN_DECLS
 
+typedef enum /*< skip >*/ {
+  GTK_CSS_POSITIVE_ONLY = (1 << 0),
+  GTK_CSS_PARSE_PERCENT = (1 << 1),
+  GTK_CSS_PARSE_NUMBER = (1 << 2),
+  GTK_CSS_NUMBER_AS_PIXELS = (1 << 3),
+  GTK_CSS_PARSE_LENGTH = (1 << 4),
+  GTK_CSS_PARSE_ANGLE = (1 << 5),
+  GTK_CSS_PARSE_TIME = (1 << 6)
+} GtkCssNumberParseFlags;
+
 GtkCssValue *   _gtk_css_number_value_new           (double                  value,
                                                      GtkCssUnit              unit);
+/* This function implemented in gtkcssparser.c */
 GtkCssValue *   _gtk_css_number_value_parse         (GtkCssParser           *parser,
                                                      GtkCssNumberParseFlags  flags);
 
diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c
index c50a9bb..96c367e 100644
--- a/gtk/gtkcssparser.c
+++ b/gtk/gtkcssparser.c
@@ -18,6 +18,8 @@
 #include "config.h"
 
 #include "gtkcssparserprivate.h"
+
+#include "gtkcssnumbervalueprivate.h"
 #include "gtkwin32themeprivate.h"
 
 #include <errno.h>
@@ -551,9 +553,8 @@ _gtk_css_parser_has_number (GtkCssParser *parser)
   return strchr ("+-0123456789.", parser->data[0]) != NULL;
 }
 
-gboolean
-_gtk_css_parser_read_number (GtkCssParser           *parser,
-                             GtkCssNumber           *number,
+GtkCssValue *
+_gtk_css_number_value_parse (GtkCssParser           *parser,
                              GtkCssNumberParseFlags  flags)
 {
   static const struct {
@@ -576,94 +577,98 @@ _gtk_css_parser_read_number (GtkCssParser           *parser,
     { "s",    GTK_CSS_S,       GTK_CSS_PARSE_TIME   },
     { "ms",   GTK_CSS_MS,      GTK_CSS_PARSE_TIME   }
   };
-  char *end, *unit;
+  char *end, *unit_name;
+  double value;
+  GtkCssUnit unit;
 
-  g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE);
-  g_return_val_if_fail (number != NULL, FALSE);
+  g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), NULL);
 
   errno = 0;
-  number->unit = GTK_CSS_NUMBER;
-  number->value = g_ascii_strtod (parser->data, &end);
+  value = g_ascii_strtod (parser->data, &end);
   if (errno)
     {
       _gtk_css_parser_error (parser, "not a number: %s", g_strerror (errno));
-      return FALSE;
+      return NULL;
     }
   if (parser->data == end)
     {
       _gtk_css_parser_error (parser, "not a number");
-      return FALSE;
+      return NULL;
     }
 
   parser->data = end;
 
   if (flags & GTK_CSS_POSITIVE_ONLY &&
-      number->value < 0)
+      value < 0)
     {
       _gtk_css_parser_error (parser, "negative values are not allowed.");
-      return FALSE;
+      return NULL;
     }
 
-  unit = _gtk_css_parser_try_ident (parser, FALSE);
+  unit_name = _gtk_css_parser_try_ident (parser, FALSE);
 
-  if (unit)
+  if (unit_name)
     {
       guint i;
 
       for (i = 0; i < G_N_ELEMENTS (units); i++)
         {
           if (flags & units[i].required_flags &&
-              g_ascii_strcasecmp (unit, units[i].name) == 0)
+              g_ascii_strcasecmp (unit_name, units[i].name) == 0)
             break;
         }
 
+      g_free (unit_name);
+
       if (i >= G_N_ELEMENTS (units))
         {
-          _gtk_css_parser_error (parser, "`%s' is not a valid unit.", unit);
-          g_free (unit);
-          return FALSE;
+          _gtk_css_parser_error (parser, "`%s' is not a valid unit.", unit_name);
+          return NULL;
         }
 
-      number->unit = units[i].unit;
-      g_free (unit);
+      unit = units[i].unit;
     }
   else
     {
       if ((flags & GTK_CSS_PARSE_PERCENT) &&
           _gtk_css_parser_try (parser, "%", FALSE))
         {
-          number->unit = GTK_CSS_PERCENT;
+          unit = GTK_CSS_PERCENT;
         }
-      else if (number->value == 0.0)
+      else if (value == 0.0)
         {
           if (flags & GTK_CSS_PARSE_NUMBER)
-            number->unit = GTK_CSS_NUMBER;
+            unit = GTK_CSS_NUMBER;
           else if (flags & GTK_CSS_PARSE_LENGTH)
-            number->unit = GTK_CSS_PX;
+            unit = GTK_CSS_PX;
+          else if (flags & GTK_CSS_PARSE_ANGLE)
+            unit = GTK_CSS_DEG;
+          else if (flags & GTK_CSS_PARSE_TIME)
+            unit = GTK_CSS_S;
           else
-            number->unit = GTK_CSS_PERCENT;
+            unit = GTK_CSS_PERCENT;
         }
       else if (flags & GTK_CSS_NUMBER_AS_PIXELS)
         {
           _gtk_css_parser_error_full (parser,
                                       GTK_CSS_PROVIDER_ERROR_DEPRECATED,
                                       "Not using units is deprecated. Assuming 'px'.");
-          number->unit = GTK_CSS_PX;
+          unit = GTK_CSS_PX;
         }
       else if (flags & GTK_CSS_PARSE_NUMBER)
         {
-          number->unit = GTK_CSS_NUMBER;
+          unit = GTK_CSS_NUMBER;
         }
       else
         {
           _gtk_css_parser_error (parser, "Unit is missing.");
-          return FALSE;
+          return NULL;
         }
     }
 
   _gtk_css_parser_skip_whitespace (parser);
 
-  return TRUE;
+  return _gtk_css_number_value_new (value, unit);
 }
 
 /* XXX: we should introduce GtkCssLenght that deals with
diff --git a/gtk/gtkcssparserprivate.h b/gtk/gtkcssparserprivate.h
index faeeda2..d676c28 100644
--- a/gtk/gtkcssparserprivate.h
+++ b/gtk/gtkcssparserprivate.h
@@ -24,16 +24,6 @@
 
 G_BEGIN_DECLS
 
-typedef enum /*< skip >*/ {
-  GTK_CSS_POSITIVE_ONLY = (1 << 0),
-  GTK_CSS_PARSE_PERCENT = (1 << 1),
-  GTK_CSS_PARSE_NUMBER = (1 << 2),
-  GTK_CSS_NUMBER_AS_PIXELS = (1 << 3),
-  GTK_CSS_PARSE_LENGTH = (1 << 4),
-  GTK_CSS_PARSE_ANGLE = (1 << 5),
-  GTK_CSS_PARSE_TIME = (1 << 6)
-} GtkCssNumberParseFlags;
-
 typedef struct _GtkCssParser GtkCssParser;
 
 typedef void (* GtkCssParserErrorFunc) (GtkCssParser *parser,
@@ -93,9 +83,6 @@ gboolean        _gtk_css_parser_try_enum          (GtkCssParser          *parser
                                                    int                   *value);
 
 gboolean        _gtk_css_parser_has_number        (GtkCssParser          *parser);
-gboolean        _gtk_css_parser_read_number       (GtkCssParser          *parser,
-                                                   GtkCssNumber          *number,
-                                                   GtkCssNumberParseFlags flags);
 char *          _gtk_css_parser_read_string       (GtkCssParser          *parser);
 char *          _gtk_css_parser_read_value        (GtkCssParser          *parser);
 GtkSymbolicColor *_gtk_css_parser_read_symbolic_color
diff --git a/gtk/gtkcsstypes.c b/gtk/gtkcsstypes.c
index 3962e2f..e3519a0 100644
--- a/gtk/gtkcsstypes.c
+++ b/gtk/gtkcsstypes.c
@@ -78,124 +78,3 @@ _gtk_css_change_for_child (GtkCssChange match)
   return gtk_css_change_translate (match, table, G_N_ELEMENTS (table)); 
 }
 
-void
-_gtk_css_number_init (GtkCssNumber *number,
-                      double        value,
-                      GtkCssUnit    unit)
-{
-  number->value = value;
-  number->unit = unit;
-}
-
-gboolean
-_gtk_css_number_equal (const GtkCssNumber *one,
-                       const GtkCssNumber *two)
-{
-  return one->unit == two->unit &&
-         one->value == two->value;
-}
-
-double
-_gtk_css_number_get (const GtkCssNumber *number,
-                     double              one_hundred_percent)
-{
-  if (number->unit == GTK_CSS_PERCENT)
-    return number->value * one_hundred_percent * 0.01;
-  else
-    return number->value;
-}
-
-gboolean
-_gtk_css_number_compute (GtkCssNumber       *dest,
-                         const GtkCssNumber *src,
-                         GtkStyleContext    *context)
-{
-  switch (src->unit)
-    {
-    default:
-      g_assert_not_reached();
-      /* fall through */
-    case GTK_CSS_PERCENT:
-    case GTK_CSS_NUMBER:
-    case GTK_CSS_PX:
-    case GTK_CSS_DEG:
-      dest->value = src->value;
-      dest->unit = src->unit;
-      break;
-    case GTK_CSS_PT:
-      dest->value = src->value * 96.0 / 72.0;
-      dest->unit = GTK_CSS_PX;
-      break;
-    case GTK_CSS_PC:
-      dest->value = src->value * 96.0 / 72.0 * 12.0;
-      dest->unit = GTK_CSS_PX;
-      break;
-    case GTK_CSS_IN:
-      dest->value = src->value * 96.0;
-      dest->unit = GTK_CSS_PX;
-      break;
-    case GTK_CSS_CM:
-      dest->value = src->value * 96.0 * 0.39370078740157477;
-      dest->unit = GTK_CSS_PX;
-      break;
-    case GTK_CSS_MM:
-      dest->value = src->value * 96.0 * 0.039370078740157477;
-      dest->unit = GTK_CSS_PX;
-      break;
-    case GTK_CSS_EM:
-      dest->value = src->value * _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_FONT_SIZE), 100);
-      dest->unit = GTK_CSS_PX;
-      break;
-    case GTK_CSS_EX:
-      /* for now we pretend ex is half of em */
-      dest->value = src->value * _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_FONT_SIZE), 100);
-      dest->unit = GTK_CSS_PX;
-      break;
-    case GTK_CSS_RAD:
-      dest->value = 360 * src->value / (2 * G_PI);
-      dest->unit = GTK_CSS_DEG;
-      break;
-    case GTK_CSS_GRAD:
-      dest->value = 360 * src->value / 400.0;
-      dest->unit = GTK_CSS_DEG;
-      break;
-    case GTK_CSS_TURN:
-      dest->value = 360 * src->value;
-      dest->unit = GTK_CSS_DEG;
-      break;
-    }
-
-  return !_gtk_css_number_equal (src, dest);
-}
-
-void
-_gtk_css_number_print (const GtkCssNumber *number,
-                       GString            *string)
-{
-  char buf[G_ASCII_DTOSTR_BUF_SIZE];
-
-  const char *names[] = {
-    /* [GTK_CSS_NUMBER] = */ "",
-    /* [GTK_CSS_PERCENT] = */ "%",
-    /* [GTK_CSS_PX] = */ "px",
-    /* [GTK_CSS_PT] = */ "pt",
-    /* [GTK_CSS_EM] = */ "em",
-    /* [GTK_CSS_EX] = */ "ex",
-    /* [GTK_CSS_PC] = */ "pc",
-    /* [GTK_CSS_IN] = */ "in",
-    /* [GTK_CSS_CM] = */ "cm",
-    /* [GTK_CSS_MM] = */ "mm",
-    /* [GTK_CSS_RAD] = */ "rad",
-    /* [GTK_CSS_DEG] = */ "deg",
-    /* [GTK_CSS_GRAD] = */ "grad",
-    /* [GTK_CSS_TURN] = */ "turn",
-  };
-
-  g_return_if_fail (number != NULL);
-  g_return_if_fail (string != NULL);
-
-  g_ascii_dtostr (buf, sizeof (buf), number->value);
-  g_string_append (string, buf);
-  if (number->value != 0.0)
-    g_string_append (string, names[number->unit]);
-}
diff --git a/gtk/gtkcsstypesprivate.h b/gtk/gtkcsstypesprivate.h
index 730b2fa..9f2b370 100644
--- a/gtk/gtkcsstypesprivate.h
+++ b/gtk/gtkcsstypesprivate.h
@@ -159,30 +159,9 @@ typedef enum /*< skip >*/ {
   GTK_CSS_MS,
 } GtkCssUnit;
 
-typedef struct _GtkCssNumber GtkCssNumber;
-
-struct _GtkCssNumber {
-  gdouble        value;
-  GtkCssUnit     unit;
-};
-
 GtkCssChange    _gtk_css_change_for_sibling                      (GtkCssChange       match);
 GtkCssChange    _gtk_css_change_for_child                        (GtkCssChange       match);
 
-#define GTK_CSS_NUMBER_INIT(_value,_unit) { (_value), (_unit) }
-void            _gtk_css_number_init                            (GtkCssNumber       *number,
-                                                                 double              value,
-                                                                 GtkCssUnit          unit);
-gboolean        _gtk_css_number_equal                           (const GtkCssNumber *one,
-                                                                 const GtkCssNumber *two);
-double          _gtk_css_number_get                             (const GtkCssNumber *number,
-                                                                 double              one_hundred_percent);
-gboolean        _gtk_css_number_compute                         (GtkCssNumber       *dest,
-                                                                 const GtkCssNumber *src,
-                                                                 GtkStyleContext    *context);
-void            _gtk_css_number_print                           (const GtkCssNumber *number,
-                                                                 GString            *string);
-
 
 G_END_DECLS
 



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